基于WinCC实现生产线产品条码扫描及打印的应用
在WinCC中打印趋势和报表的技巧 - _20150928_144722
如何使用WinCC DataMonitor基于Web发布浏览Excel报表文档
1.WinCC DataMonitor是什么?DataMonitor 是SIMATIC WinCC 工厂智能中用于数据显示和分析的一个组件,它基于WinCC 的实时、历史数据进行车间管理级的数据汇总和分析,借助标准工具(例如微软的IE 浏览器或者MS Office Excel)可以显示并分析WinCC 上的过程信息和历史数据。
1.1 简介SIMATIC WinCC/DataMonitor 提供用于显示交互数据及分析当前过程状态和历史数据的分析工具集合。
DataMonitor 客户端是纯粹用于显示和评估来自WinCC 的过程值或来自WinCC 长期归档服务器的数据的系统。
1.2 WinCC DataMonitor 的主要功能•"Published Reports"V6.2版本已发布的报表,查询浏览WinCC 的PDF 文件打印作业和已发布的Excel 工作簿,执行打印功能。
基于时间进行周期或定时打印文件,也可以基于WinCC的变量事件触发输出打印文件。
•“Excel Workbooks”V6.2版本使用WinCC DataMonitor 的"Excel Workbooks",可以通过Excel 表格显示WinCC 项目的过程或归档变量的消息和值。
除当前值外,还可以显示其它信息,如变量的时间戳或质量代码。
WinCC 数据可以在Excel 中进一步处理,或者在报表中以图形方式准备(例如,平均值计算、趋势显示)和汇总。
但是对于DataMonitor V7.0 版本开始,"Published Reports"和“Excel Workbooks”都合并到“报表”组件中。
组件“报表”允许在Internet Explorer 中组态和运行报表模板。
创建的报表可以通过电子邮件或Internet Explorer 中的“下载”进行分发。
报表提供许多功能,如下图所示包括:•创建DataMonitor Excel Workbook 或WinCC Reports 中的模板。
WinCC脚本案例保留
WinCC脚本案例保留2010-09-16 16:44最近做一个WinCC跟ERP通讯的一个小项目,将脚本语言保留下来,以备不时之需!仅仅是保留,各位看官如发现不妥之处请加以指教.1.通过扫描枪扫描到ID号传给PLC,WinCC读取到ID号从ERP数据库中查找相关数据,写回到PLC,并给PLC一个写完成确认信号.(数据库是SqlServer2000)Dim DB240trigger,db241triggerdb240trigger=HMIRuntime.Tags("db240itrigger").Readdb241trigger=HMIRuntime.Tags("DB241itrigger").ReadDim ss,strstr=HMIRuntime.Tags("DB240szcoil_ID").Readss=CStr(str)If (db240trigger=1 And db241trigger=0 ) ThenDim sPro,sDsn,sSer,sCon,sSqlDim oRsMaterial,conn,oCom,oItem,oRsSCHEMADim database,server,uid,pwdsCon ="driver=sql server;server=10.51.103.96;DATABASE=brgs_release;uid=sa;pwd=pasword"Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.OpenSet oRsMaterial = CreateObject("ADODB.Recordset")sSql= "SELECT * FROM dbo.BRGS_GP_Material where MkNo='" & CStr(ss) & "'"oRsMaterial.open ssql,conn,1,1Dim m,nm=oRsMaterial.recordcountIf m<>1 ThenMsgBox "这个ID号找不到唯一的一条参数信息,请手动输入信息!"Exit FunctionEnd IfDim sCon2,sSql2Dim oRsnftz,conn2sCon2="driver=sql server;server=10.51.103.115;DATABASE=db_01;uid=sa;pwd=12345"Set conn2 = CreateObject("ADODB.Connection")conn2.ConnectionString = sCon2conn2.OpenDim LASTLAST=orsMaterial.fields("LastProcedure").valueLAST=LAST+1Set oRsnftz = CreateObject("ADODB.Recordset")sSql2= "SELECT * FROM MF_TZ where ZC_ITM=" & CInt(LAST) & " And MO_No='" & orsMaterial.fields("MO_NO").value & "'" oRsnftz.open ssql2,conn2,1,1Dim GJID,PIHAO,PANHAO,GANGZHONG,ZHIJING,ZHONGLIANG,PDim PPPP=oRsnftz.fields("ZC_NO").valueIf (Left(PP,1) = "P") ThenHMIRuntime.Trace "P"HMIRuntime.Tags("visible_error").Write 0,1ElseHMIRuntime.Trace "not p ,will exit!"HMIRuntime.Tags("DB241szCOIL_ID").Write "error state",1HMIRuntime.Tags("error_text").Write PP,1HMIRuntime.Tags("visible_error").Write 1,1MsgBox "该材料现在不在P处理模式,请核实,或者手动输入信息!"Exit FunctionEnd IfGJID=HMIRuntime.Tags("DB240szcoil_ID").ReadPIHAO=orsMaterial.fields("Mo_No").valuePANHAO=orsMaterial.fields("Plant_No").valueGANGZHONG=orsMaterial.fields("Snm").valueZHIJING=orsMaterial.fields("CardSPC").valueZHONGLIANG=orsMaterial.fields("CurrentWeight").valueHMIRuntime.Tags("DB241iProg_NO").Write P,1HMIRuntime.Tags("DB241rDiameter").Write ZHIJING,1HMIRuntime.Tags("DB241rWeight").Write ZHONGLIANG,1HMIRuntime.Tags("DB241szSTEELGRADE").Write GANGZHONG,1HMIRuntime.Tags("DB241szPRODUNCTION_NO").Write PIHAO,1HMIRuntime.Tags("DB241szCOIL_NO").Write PANHAO ,1HMIRuntime.Tags("DB241szCOIL_ID").Write GJID,1HMIRuntime.Tags("DB241itrigger").Write 1,1oRsMaterial.CloseSet oRsMaterial = NothingoRsnftz.CloseSet oRsnftz = Nothingconn.CloseSet conn = Nothingconn2.CloseSet conn2 = NothingEnd If2.开始上料程序PLC接受到上料按钮的命令,将处理数据传给相应的DB数据块,并产生一条开始处理记录.插入到ERP的数据库中.Dim a,b,c,d,itrigger1,itrigger2itrigger1=HMIRuntime.Tags("DB242itrigger").Readitrigger2=HMIRuntime.Tags("DB243itrigger").ReadIf (itrigger1=1 And itrigger2<>1 ) Thena=HMIRuntime.Tags("DB242szCOIL_ID1").Readb=HMIRuntime.Tags("DB242szCOIL_ID2").Readc=HMIRuntime.Tags("DB242szCOIL_ID3").Readd=HMIRuntime.Tags("DB242szCOIL_ID4").ReadHMIRuntime.Tags("DB243szCOIL_ID1").Write a,1HMIRuntime.Tags("DB243szCOIL_ID2").Write b,1HMIRuntime.Tags("DB243szCOIL_ID3").Write c,1HMIRuntime.Tags("DB243szCOIL_ID4").Write d,1HMIRuntime.Tags("DB243itrigger").Write 1,1End If/////插入记录的程序Dim sPro,sDsn,sSer,sCon,sSqlDim oRsMaterial,conn,conn2,oCom,oItem,oRsSCHEMADim database,server,uid,pwdDim ss,strstr=HMIRuntime.Tags("MKNO").Readss=CStr(str)Dim lianjiezifuchuan,shujuku,shanchusqllianjiezifuchuan ="driver=sql server;server=127.0.0.1\WINCC;DATABASE=Master;uid=;pwd="Set shujuku = CreateObject("ADODB.Connection")shujuku.ConnectionString = lianjiezifuchuanshujuku.Openshanchusql= "Delete from load_unload WHERE shangxia=1 and MkNo='"& ss &"'"Dim minglingSet mingling =CreateObject("mand")With mingling.ActiveConnection=shujuku.ComMandText=shanchusqlEnd Withmingling.ExecuteSet mingling=Nothingshujuku.CloseSet shujuku = NothingIf (ss<> "" )Then'sCon ="driver=sql server;server=10.51.103.96;DATABASE=brgs_release;uid=sa;pwd=pasword"sCon ="driver=sql server;server=PC-201003161557\WINCC;DATABASE=brgs_release;uid=sa;pwd=123456" Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.OpenSet oRsMaterial = CreateObject("ADODB.Recordset")sSql= "SELECT * FROM dbo.BRGS_GP_Material where mkNo='" & CStr(ss) & "'"oRsMaterial.open ssql,conn,1,1Dim mmmm= oRsMaterial.recordcountIf mm<1 ThenMsgBox "条码"& sS & "查询不到相关的数据,请检查"Exit SubEnd IfIf mm>1 ThenMsgBox "条码"& sS & "查询到相关的数据不止一条,请检查"Exit SubEnd IfDim STRStateSTRState=oRsMaterial.fields("MaterialState").valueIf STRState<>20 ThenMsgBox "条码"& sS & "查询到的材料状态不是20,请检查!"Exit SubEnd IfDim intlastprocedure,intlastprocedure2,cailiaohaointlastprocedure=orsMaterial.fields("LastProcedure").valueintlastprocedure2=intlastprocedure+1cailiaohao=orsMaterial.fields("Material_No").valueSet conn2 = CreateObject("ADODB.Connection")conn2.ConnectionString = sConconn2.OpensSql= "SELECT * FROM dbo.BRGS_GP_SCHEMA where UseFlag=0 and MkSeq= " & intlastprocedure2 & " And Material_NO='" & CStr(cailiaohao) & "'"Set oRsSCHEMA = CreateObject("ADODB.Recordset")oRsSCHEMA.open ssql,conn2,1,1Dim nn=oRsSCHEMA.recordcountIf n>1 ThenMsgBox "条码"& sS & "查询到的调度信息不止一条,请检查"Exit SubEnd IfIf n<1 ThenMsgBox "条码"& sS & "查询不到调度信息,请检查"Exit SubEnd IfDim gonghao,banzu,shikegonghao=HMIRuntime.Tags("gonghao").Readbanzu=HMIRuntime.Tags("banzu").Readshike=HMIRuntime.Tags("shike").ReadDim s1,s2,s3,s4,s5,s6,s7Dim A1,A2,A3,A4,A5,A6,A7,A8,A9,A10Dim A11,A12,A13,A14,A15,A16,A17,A18,A19,A20Dim A21,A22,A23,A24,A25,A26,A27,A28,A29,A30Dim A31,A32,A33,A34,A35,A36,A37,A38,A39,A40A1=orsMaterial.fields("Material_No").value ''引用自BRGS_GP_Material表A2=orsMaterial.fields("Plant_No").value ''从BRGS_GP_MATERIAL表中Plant_No中复制过来A3=orsMaterial.fields("Stuff_No").value ''从BRGS_GP_MATERIAL表中Stuff_no中复制过来A4=orsMaterial.fields("MaterialPre_No").value ''从BRGS_GP_MATERIAL表中MaterialPre_No中复制过来A28=orsMaterial.fields("BfNo").value ''从BRGS_GP_MATERIAL表中Bf_No中复制过来A20=orsMaterial.fields("MkNo").value ''这个就是条码上的内容//////这个要确定A5=orsMaterial.fields("Snm").value ''钢种,从BRGS_GP_MATERIAL表中Snm中复制过来A29=orsMaterial.fields("FirstSPC").value ''原料规格,从BRGS_GP_MATERIAL表中FirstSPC中复制过来A30=orsMaterial.fields("CardSPC").value ''开工时的标称规格,从BRGS_GP_MATERIAL表中CardSPC中复制过来A31=orsMaterial.fields("CardSPC").value ''完工时的标称规格,从BRGS_GP_MATERIAL表中CardSPC中复制过来A32=orsMaterial.fields("RealSPC").value ''开工时的实测规格,从BRGS_GP_MATERIAL表中RealSPC中复制过来A33=orsMaterial.fields("RealSPC").value ''完工时的实测规格,从BRGS_GP_MATERIAL表中RealSPC中复制过来A7=orsMaterial.fields("Mo_No").value ''制令单号,从BRGS_GP_MATERIAL表中Mo_No中复制过来''''''''''''''''''''''''''''''''''''''from schema table''''''''''''''''''''''''''''''''''''''A8=oRsSCHEMA.fields("SUnit").value ''制程代码,从BRGS_GP_SCHEMA表中的SUnit读取A9=oRsSCHEMA.fields("TzNo").value ''通知单号,从BRGS_GP_SCHEMA表中的TzNo读取A10=oRsSCHEMA.fields("ZcNo").value ''制程名称,从BRGS_GP_SCHEMA表中的ZcNo读取A11=oRsSCHEMA.fields("ZcRem").value ''制程说明,从BRGS_GP_SCHEMA表中的ZcRem读取A21=oRsSCHEMA.fields("SUnit").value ''计划机台,从BRGS_GP_SCHEMA表中的SUnit读取A37=oRsSCHEMA.fields("rowid").value ''调度号,对应BRGS_GP_SCHEMA中的主键,表明本次操作,对应那一个调度A12="401202J" ''工作的机组,对于自动酸洗线是401202JA34="" ''拉丝模具号,这里为空字符串A35="" ''酸洗的吊钩号,这里为空A13=1 ''始终为1A14=CStr(shike) ''开工时间A15=CStr(gonghao) ''开工操作员工号A16="" ''完工时间A17="99999" ''完工操作员工号A25=CStr(banzu) ''开工的班组A27="" ''完工的班组A19=0 ''切头切尾量,不理会,设置为0A22=1 ''质检标志,永远为1A23="system" ''质检人员,永远为SystemA24="" ''质检时间,与完工时间一致,暂时未空A36=21 ''工序的类型,对于酸洗,永远是21A38=0 ''在插入时设置为0,后面的操作不要更动这个字段A40="" ''在插入时设置为空串,后面的操作不要更动这个字段A39=0 ''设置为0A6="" ''未作说明,设置为0A18=0 ''ENDWEIGHTA26=0 ''BeginWeightsSql= "insert into BRGS_GP_PROCEDURE values(133,'" & A1 & "','" & A2 & "','" & A3 & "','" & A4 & "','" & A5 & "','" & A6 & "','" & A7 & "','" & A8 & "','" & A9 & "','" & A10 & "','" & A11 & "','" & A12 & "',"& CInt(A13) &",'" & CStr(A14)& "','" & A15 & "','" & CStr(A16)& "','" & A17 & "',"& CInt(A13) &","& CInt(A19) &",'" & A20 & "','" & A21 & "',"& CInt(A22) &",'" & A23 & "','" & CStr("")& "',N'" & A25 & "',"& CInt(A26) &",'" & A27 & "','" & A28 & "','" & A29 & "','" & A30 & "','" & A31 & "','" & A32 & "','" & A33 & "','" & A34 & "','" & A35 & "',"& CInt(A36) &","& CInt(A37) &"," & A38 & "," & A39 & ",'" & A40 & "')"Dim objCommandSet objCommand=CreateObject("mand")With objCommand.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand.ExecuteDim objCommand2Set objCommand2=CreateObject("mand")sSql= "update dbo.BRGS_GP_Material set MaterialState='22',Region='401202J',LastProcedure=" & intlastprocedure2 & " where mkNo='" & CStr(ss) & "'"With objCommand2.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand2.ExecuteDim objCommand3Set objCommand3=CreateObject("mand")sSql= "update dbo.BRGS_GP_SCHEMA set UseFlag=1 where UseFlag=0 and MkSeq= " & intlastprocedure2 & " And Material_NO='" & CStr(cailiaohao) & "'"With objCommand3.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand3.ExecuteSet objCommand=NothingSet objCommand2=NothingSet objCommand3=NothingoRsMaterial.CloseSet oRsMaterial = NothingoRsSCHEMA.CloseSet oRsSCHEMA = Nothingconn.CloseSet conn = NothingEnd If3.下料程序PLC接收到下料按钮的信号,更新ERP数据库中的信息,并将相关的ID号回传做二次对比.Dim a,b,c,d,itrigger1,itrigger2Dim id2itrigger1=HMIRuntime.Tags("DB244itrigger").Readitrigger2=HMIRuntime.Tags("DB245itrigger").ReadIf (itrigger1=1 And itrigger2<>1 And id2=0) Thena=HMIRuntime.Tags("DB244szCOIL_ID1").Readb=HMIRuntime.Tags("DB244szCOIL_ID2").Readc=HMIRuntime.Tags("DB244szCOIL_ID3").Readd=HMIRuntime.Tags("DB244szCOIL_ID4").ReadHMIRuntime.Tags("DB245szCOIL_ID1").Write a,1HMIRuntime.Tags("DB245szCOIL_ID2").Write b,1HMIRuntime.Tags("DB245szCOIL_ID3").Write c,1HMIRuntime.Tags("DB245szCOIL_ID4").Write d,1HMIRuntime.Tags("DB245itrigger").Write 1,1End If/////更新ERP中相关的数据Dim sPro,sDsn,sSer,sCon,sSqlDim oRsMaterial,conn,conn2,oCom,oItem,oRsSCHEMADim database,server,uid,pwdDim ss,strstr=HMIRuntime.Tags("MKNO").Readss=CStr(str)Dim lianjiezifuchuan,shujuku,shanchusqllianjiezifuchuan ="driver=sql server;server=127.0.0.1\WINCC;DATABASE=Master;uid=;pwd="Set shujuku = CreateObject("ADODB.Connection")shujuku.ConnectionString = lianjiezifuchuanshujuku.Openshanchusql= "Delete from load_unload WHERE shangxia=2 and MkNo='"& ss &"'"Dim minglingSet mingling =CreateObject("mand")With mingling.ActiveConnection=shujuku.ComMandText=shanchusqlEnd Withmingling.ExecuteSet mingling=Nothingshujuku.CloseSet shujuku = NothingIf (ss<> "") Then'sCon ="driver=sql server;server=10.51.103.96;DATABASE=brgs_release;uid=sa;pwd=password"sCon ="driver=sql server;server=PC-201003161557\WINCC;DATABASE=brgs_release;uid=sa;pwd=123456"Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.OpenDim gonghao,banzu,shikegonghao=HMIRuntime.Tags("gonghao").Readbanzu=HMIRuntime.Tags("banzu").Readshike=HMIRuntime.Tags("shike").ReadDim objCommandSet objCommand=CreateObject("mand")sSql= "update dbo.BRGS_GP_PROCEDURE set QCTime='" & CStr(shike)& "', EndTime='" & CStr(shike) & "',EndEmpNo='"& CStr(gonghao) & "',EndShift='"& CStr(banzu) & "' where endempno='99999' and mkNo='" & CStr(ss) & "'"With objCommand.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand.ExecuteSet oRsMaterial = CreateObject("ADODB.Recordset")sSql= "SELECT * FROM dbo.BRGS_GP_Material where mkNo='" & CStr(ss) & "'"oRsMaterial.open ssql,conn,1,1Dim mmmm= oRsMaterial.recordcountIf mm<=0 ThenMsgBox "下料的扫描号码为"& str & "没有在数据库中找到上料信息"Exit SubEnd IfDim intlastprocedure,intlastprocedure2,cailiaohaointlastprocedure=orsMaterial.fields("LastProcedure").valueintlastprocedure2=intlastprocedure+1cailiaohao=orsMaterial.fields("Material_No").value'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Set conn2 = CreateObject("ADODB.Connection")conn2.ConnectionString = sConconn2.OpensSql= "SELECT * FROM dbo.BRGS_GP_SCHEMA where UseFlag=0 and MkSeq= " & intlastprocedure2 & " And Material_NO='" & CStr(cailiaohao) & "'"Set oRsSCHEMA = CreateObject("ADODB.Recordset")oRsSCHEMA.open ssql,conn2,1,1Dim nn=oRsSCHEMA.recordcountIf n>1 ThenMsgBox "调度表中关于条码" & ss &"的数据大于一条,请检查"Exit SubEnd IfDim sql_last,rst_last,x_last,xxxx_last=0sql_last= "SELECT * FROM dbo.BRGS_GP_SCHEMA where MkSeq>= " & intlastprocedure2 & " And Material_NO='" &CStr(cailiaohao) & "' order by mkseq asc"Set rst_last = CreateObject("ADODB.Recordset")rst_last.open sql_last,conn2,1,1xxx=rst_last.recordcountIf xxx=0 Thenx_last=100Elserst_last.movefirstEnd IfDim yDo While (Not rst_last.eof)If rst_last.fields("UseFlag").value=0 Theny=100rst_last.movenextEnd Ifrst_last.movenextLoopx_last=y-x_lastDim strzctype,zctypewritestrzctype=oRsSCHEMA.fields("ZcType").valueIf strzctype=21 Thenzctypewrite=20End IfIf strzctype=22 Thenzctypewrite=40End IfIf strzctype=23 Thenzctypewrite=30End IfIf x_last=100 Thenzctypewrite=50End IfDim objCommand2Set objCommand2=CreateObject("mand")sSql= "update dbo.BRGS_GP_Material set Region='BLQ',MaterialState=" & CStr(zctypewrite) & " where mkNo='" & CStr(ss) & "'"With objCommand2.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand2.ExecuteIf x_last=100 ThenDim objCommand3Set objCommand3=CreateObject("mand")sSql= "update dbo.BRGS_GP_Material set IsProduct=1,ProductShift='" & CStr(banzu)& "',ProductMan='" &CStr(gonghao)& "',ProductTime='" & CStr(shike)& "',MaterialState=" & CStr(zctypewrite) & " where mkNo='" & CStr(ss) & "'"With objCommand3.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand3.ExecuteEnd IfSet objCommand=NothingSet objCommand2=NothingSet objCommand3=Nothingrst_last.closeSet rst_last=NothingoRsMaterial.CloseSet oRsMaterial = NothingoRsSCHEMA.CloseSet oRsSCHEMA = Nothingconn.CloseSet conn = NothingEnd If4.缓冲信息系统具备多个上料按钮,也就是说操作人员按下每个上料按钮的时间很短,而处理上料这块的程序又比较大,根据网络情况,有时候需要1分钟左右,这样,有可能会丢失信息,这个是不允许的,因为信息丢失后,在ERP中就反应不出来,材料的状态就不会发生改变,到下一步工序时,材料就没有办法进行处理,同样下料也是.所以我做了一个缓冲数据库,.按下上料或者下料按钮时,缓冲数据库只记录上料时的ID号,班组号以及上料时间等简单数据.然后系统定时(1分钟)从缓冲数据库中取出一个最先插入的数据进行处理,更具ID号跟ERP进行通讯,处理相关程序,这样做到了异步处理(一个上料处理到下料的过程需要30分钟左右)./////上料插入程序,使用本机自带的SqlServer2000数据库Dim conn,scon,ssqlDim database,server,uid,pwdDim ss1,ss2,ss3,ss4,str1,str2,str3,str4Dim id1Dim uesr,banzuuesr=HMIRuntime.Tags("uesr").Readbanzu=HMIRuntime.Tags("banzu").Readid1=HMIRuntime.Tags("ID1").Readstr1=HMIRuntime.Tags("DB242szCOIL_ID1").Readstr2=HMIRuntime.Tags("DB242szCOIL_ID2").Readstr3=HMIRuntime.Tags("DB242szCOIL_ID3").Readstr4=HMIRuntime.Tags("DB242szCOIL_ID4").Readss1=CStr(str1)ss2=CStr(str2)ss3=CStr(str3)ss4=CStr(str4)sCon ="driver=sql server;server=127.0.0.1\WINCC;DATABASE=Master;uid=;pwd="Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.OpenDim A1,A2,A3If (ss1<> "" And id1=0 )ThenA1=ss1A2=1 ''1:load 2:unloadA3=CStr(Now())sSql= "insert into load_unload values('" & A1 & "'," & A2 & ",'" & uesr &"',N'"& banzu &"','" & A3 & "')"Dim objCommand1Set objCommand1=CreateObject("mand")With objCommand1.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand1.ExecuteSet objCommand1=NothingEnd IfIf (ss2<> "" And id1=0 )Then..............End IfIf (ss3<> "" And id1=0 )Then.........End IfIf (ss2<> "" And id1=0 )Then..........End Ifconn.CloseSet conn = NothingHMIRuntime.Tags("ID1").Write 1,1/////下料插入程序,使用本机自带的SqlServer2000数据库Dim conn,scon,ssqlDim database,server,uid,pwdDim ss1,ss2,ss3,ss4,str1,str2,str3,str4Dim id1Dim uesr,banzuuesr=HMIRuntime.Tags("uesr").Readbanzu=HMIRuntime.Tags("banzu").Readid1=HMIRuntime.Tags("ID2").Readstr1=HMIRuntime.Tags("DB244szCOIL_ID1").Readstr2=HMIRuntime.Tags("DB244szCOIL_ID2").Readstr3=HMIRuntime.Tags("DB244szCOIL_ID3").Readstr4=HMIRuntime.Tags("DB244szCOIL_ID4").Readss1=CStr(str1)ss2=CStr(str2)ss3=CStr(str3)ss4=CStr(str4)sCon ="driver=sql server;server=127.0.0.1\WINCC;DATABASE=Master;uid=;pwd="Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.OpenDim A1,A2,A3If (ss1<> "" And id1=0 )ThenA1=ss1A2=2 ''1:load 2:unloadA3=CStr(Now())sSql= "insert into load_unload values('" & A1 & "'," & A2 & ",'" & uesr &"',N'"& banzu &"','" & A3 & "')"Dim objCommand1Set objCommand1=CreateObject("mand")With objCommand1.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand1.ExecuteSet objCommand1=NothingEnd IfIf (ss2<> "" And id1=0 )Then.......End IfIf (ss3<> "" And id1=0 )Then..........End IfIf (ss4<> "" And id1=0 )Then...............End Ifconn.CloseSet conn = NothingHMIRuntime.Tags("ID2").Write 1,15.定时一分钟处理的处理/////具体上料和下料程序就是前面的第一条和第二条Dim Connectstring,con,rst,sql,rstcount,x,MKNO,gonghao,banzu,shikeConnectsTring ="driver=sql server;server=127.0.0.1\WINCC;DATABASE=Master;uid=;pwd=" Set con = CreateObject("ADODB.Connection")con.ConnectionString = connectstringcon.OpenSet rst = CreateObject("ADODB.Recordset")sql= "SELECT * FROM load_unload order by ID ASC"rst.open sql,con,1,1rstcount=rst.recordcountIf (rstcount<1) Then Exit Function End Ifrst.movefirstx=rst.fields("shangxia").valueMKNO=rst.fields("MKNO").valuegonghao=rst.fields("gonghao").valuebanzu=rst.fields("banzu").valueshike=CStr(rst.fields("shijian").value)HMIRuntime.Tags("MKNO").Write MKNO,1HMIRuntime.Tags("gonghao").Write gonghao,1HMIRuntime.Tags("banzu").Write banzu,1HMIRuntime.Tags("shike").Write shike,1If (x=1) ThenCall procedure1()End If'If (x=2) ThenCall procedure5()End Ifrst.CloseSet rst = Nothingcon.CloseSet con = Nothing程序的界面就是这么样,很简单,这个一般不需要人去操作,只是换班的时候账号什么的动动就行了,然后上料的时候那个扫描枪扫描条码就可以了,简化了操作人员的劳动强度,以前可是需要操作人员那个条码牌到触摸屏上去一个一个参数输入的哦.令附一个账号密码的简单程序(不用wincc的,很简单的一个程序,wincc那个设置复杂,维护的人员闲麻烦):////登陆账号im ZH,MM,BZZH=HMIRuntime.Tags("ZH").ReadMM=HMIRuntime.Tags("MM").ReadDim sPro,sDsn,sSer,sCon,sSqlDim oRs,connDim database,server,uid,pwdsCon ="driver=sql server;server=127.0.0.1\WINCC;DATABASE=Master;uid=;pwd="Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.OpenSet oRs = CreateObject("ADODB.Recordset")sSql= "SELECT * FROM mmb where ZH='" & CStr(ZH) & "' And MM='" & CStr(MM) & "'"oRs.open ssql,conn,1,1Dim mm=oRs.recordcountIf m<1 ThenMsgBox "账号或者密码不正确,请重新输入!"Exit SubDim uesr,banzuuesr=ors.fields("ZH").valueDim asdasd=HMIRuntime.Tags("t").ReadIf asd=1 Then banzu="甲班" enD ifIf asd=2 Then banzu="乙班" enD ifIf asd=4 Then banzu="丙班" enD ifIf aSd=8 Then banZu="丁班" enD ifDim SS=HMIRuntime.Tags("uesr").ReadIf (Left(S,1) = "A") ThenHMIRuntime.Tags("vis").Write 1,1banZu="管理员"ElseHMIRuntime.Tags("vis").Write 0,1End IfHMIRuntime.Tags("uesr").write uesr,1HMIRuntime.Tags("banzu").write banzu,1oRs.CloseSet oRs = Nothingconn.CloseSet conn = NothingHMIRuntime.Tags("MM").write "",1////////增加账号和删除账号的程序Dim ZH,MM,BZZH=HMIRuntime.Tags("ZH").ReadMM=HMIRuntime.Tags("MM").ReadDim sPro,sDsn,sSer,sCon,sSqlDim oRs,connDim database,server,uid,pwdsCon ="driver=sql server;server=127.0.0.1\WINCC;DATABASE=Master;uid=;pwd="Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConSet oRs = CreateObject("ADODB.Recordset")sSql= "SELECT * FROM mmb where ZH='" & CStr(ZH) & "'"oRs.open ssql,conn,1,1Dim mm=oRs.recordcountIf m>=1 ThenMsgBox "账号已经存在"Exit SubEnd IfIf ZH="" ThenMsgBox "账号不能为空"End IfIf MM="" ThenMsgBox "密码不能为空"End IfDim objCommand3Set objCommand3=CreateObject("mand")sSql= "insert into MMB VALUES('"& ZH & "','" & MM & "')"With objCommand3.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand3.ExecuteSet objCommand3=NothingoRs.CloseSet oRs = Nothingconn.CloseSet conn = NothingDim ZH,MM,BZZH=HMIRuntime.Tags("ZHZH").ReadDim sPro,sDsn,sSer,sCon,sSqlDim oRs,connDim database,server,uid,pwdsCon ="driver=sql server;server=127.0.0.1\WINCC;DATABASE=Master;uid=;pwd="Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.OpenSet oRs = CreateObject("ADODB.Recordset")sSql= "SELECT * FROM mmb where ZH='" & CStr(ZH) & "'"oRs.open ssql,conn,1,1Dim mm=oRs.recordcountIf m<1 ThenMsgBox "工号不存在"Exit SubEnd IfDim objCommand3Set objCommand3=CreateObject("mand")sSql= "delete from MMB where ZH='"& ZH & "'"With objCommand3.ActiveConnection=Conn.ComMandText=ssqlEnd WithobjCommand3.ExecuteSet objCommand3=Nothing。
组态软件WinCC在化工厂自动监控系统中的应用
组态软件WinCC 在化工厂自动监控系统中的应用仝 维,何军红,吴旭光(西北工业大学航海学院,陕西西安710072)Application of Configuration Software WinCC in Chemical Plant Automation Monitor SystemT ONG Wei ,HE Jun 2hong ,WU X u 2gu ang(College of Marine ,Northwestern Polytechnical University ,Xi ’an 710072,China ) 摘要:针对某化工厂煤运控制系统,介绍了自动监控系统的软硬件构成。
该系统的主要任务是设计一套符合煤运控制系统的工艺要求,采用现场总线技术实现监控功能的PL C 控制系统。
着重研究了利用组态软件WinCC 设计工业自动监控系统的方法,并对开发过程中遇到的问题和解决途径进行了讨论,在工程中得到了实现。
关键词:组态软件WinCC ;PL C ;Profibus 中图分类号:TP277文献标识码:A文章编号:100122257(2008)0320072203收稿日期:2007209217Abstract :According to t he cool 2t ransport sys 2tem in a chemical plant ,t his paper int roduces soft 2ware and hardware configurations for automation monitor system.This project is designed mainly to a PL C co nt rolling system which according wit h cool 2t ransport system craft s request and adopting field bus.This paper discusses t he met hods of de 2signing industrial automation monitor system wit h configuration software WinCC and ways to resol 2ving p roblems encountered during t he p rocess of develop ment ,and we come t rue t his blue print.K ey w ords :configuration software WinCC ;PL C ;Profibus0 引言输煤系统的可靠性、稳定性及其自动化程度,直接关系到化工厂燃煤机组和气化装置的正常运转。
基于WINCC的条形码自动比对控制系统设计
基于WINCC的条形码自动比对控制系统设计
傅雪磊;郭栋;王柏雄;王文昌;何红;陶海东;李萌;朱代辉
【期刊名称】《包装工程》
【年(卷),期】2017(38)5
【摘要】目的设计一套应用于包装生产线的比对控制系统,达到简化控制流程、保证控制的精度与速度的目的。
方法首先对系统的结构组成进行设计,然后设置硬件之间的通讯连接,最后建立数据库和编写比对程序,并通过实例对系统进行测试和对操作流程进行说明。
结果该系统借助WINCC工控组态软件和SQL数据库系统可实现对生产线上产品以50个/min的速度对条形码信息进行准确读取和反馈给PLC去执行相应的操作。
结论由于系统的组成硬件个数少、软件结构简单,所以可靠性高、维护方便、操作简单灵活,对不同的自动化生产线有很强的适应性。
【总页数】5页(P152-156)
【关键词】WINCC;SQL数据库;PLC;条形码;比对
【作者】傅雪磊;郭栋;王柏雄;王文昌;何红;陶海东;李萌;朱代辉
【作者单位】北京化工大学;乐普(北京)医疗器械股份有限公司;教育部工程研究中心
【正文语种】中文
【中图分类】TP273
【相关文献】
1.基于PLC与WinCC的引信自动装配机控制系统设计 [J], 刘猛;焦志刚;崔瀚;李富民
2.浅谈基于PLC和WinCC技术的自动化系统设计与实现 [J], 刘岩
3.基于WINCC组态的污水处理PLC自动控制系统设计研究分析 [J], 徐红秋;查安平
4.基于S7-300PLC和WinCC组态软件的自动打料控制系统设计 [J], 张伟;周鹏飞
5.基于PLC和WinCC的液体混合自动控制系统设计 [J], 孙杰;郑长山
因版权原因,仅展示原文概要,查看原文内容请购买。
西门子 WINCC WEB 使用手册
1.5
安装 WebNavigator 诊断客户端......................................................................................26
1.6
WebNavigator 演示项目.................................................................................................27
1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5
安装 WebNavigator 客户端.............................................................................................19 安装 WebNavigator 客户端.............................................................................................19 用户权限和用户组...........................................................................................................21 Internet Explorer 设置.....................................................................................................22 从 DVD 进行安装............................................................................................................23 通过 Intranet/Internet 安装..............................................................................................24
OPC技术在条码扫描系统中的应用
OPC技术在条码扫描系统中的应用曹松;孔德帮;罗晟;余坤【摘要】OPC(OLE for Process Control,用于过程控制的OLE)是一个工业标准,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁,使不同供应厂商的设备和应用程序之间的数据交换更加简单化.该文阐述了一种基于OPC技术的条码扫描系统.系统采用西门子S7-300PLC控制倍加福VB14N-300-R条码阅读器进行条形码的扫描,西门子IPC477D面板式工业PC作为OPC服务器实现PLC与条码扫描器之间的数据交互,扫描到的条码信息存入SQL Server数据库,并按照要求比对处理.【期刊名称】《有色金属设计》【年(卷),期】2017(044)001【总页数】8页(P64-71)【关键词】OPC;条形码;OPC服务器;数据交互【作者】曹松;孔德帮;罗晟;余坤【作者单位】昆明鼎承科技有限公司,云南昆明650400;昆明鼎承科技有限公司,云南昆明650400;昆明鼎承科技有限公司,云南昆明650400;昆明鼎承科技有限公司,云南昆明650400【正文语种】中文【中图分类】TP39基于OPC技术的条形码扫描系统使用西门子S7-1500PLC为下位控制单元,使用德国倍加福VB14N-300-R条码扫描器作为扫码设备,西门子IPC477D工业PC最为上位控制终端,处理PLC和扫码器之间的数据交换和存储。
同时,IPC内安装了西门子Wincc组态软件,作为系统操作终端。
整套系统采用模块化设计,灵巧可靠,作为组能使用时可轻松嵌入各类系统,亦可单独作为扫码系统使用。
1.1 硬件组成硬件配置见表1。
西门子S7-1500PLC用于控制扫码器进行条码扫描,扫码器的所有指令均来源于PLC。
西门子IPC477D面板式工业PC,体积小,便于安装,触控操作。
安装Wincc后作为扫码系统的操作终端,并且IPC上安装了SQL SERVER数据库,用于存储数据。
实验项目设计-基于WinCC的耐火材料生产线的监控设计
实验项目设计项目名称:基于WinCC的耐火材料生产线的监控年级: 2006级学生专业:自动化学生学号:指导教师:学生姓名:2010.01.10基于WinCC的耐火材料生产线的监控摘要该设计使用西门子上位机组态软件WinCC实现了对耐火材料生产线的监控,并仿真其生产工艺,具备报警记录,相关参数的趋势显示及归档,用户管理等功能。
关键字西门子组态软件WinCC 耐火材料生产线一、课题目的及设计要求1、课程目的:通过测试联系能够系统掌握WinCC的使用。
2、基本要求:①按照工艺要求设计监控画面;②具备报警记录功能;③具备相关参数的趋势显示及归档;④具备用户管理功能。
⑤使用C动作或VBS脚本仿真生产工艺;⑥具备报表功能。
二、工艺具体设计与实现1、耐火材料监控生产线分为三部分:称重配料、提升混合、包装。
监控主画面如图1所示:图1 监控主画面2、系统实现的监控功能配方设定及用户管理初始画面如图2所示,储料罐料位报警记录主画面如图3所示,变量趋势显示及归档主画面如图4所示:图2 配方设定及用户管理初始画面图3 储料罐料位报警记录主画面图4 变量趋势显示及归档主画面①称重配料工段包括大小储料罐(每一个储料罐中盛放一种料)各六个,下面分别接有给料设备及给料速率控制设备,以保证配料精确度。
控制过程:先设定A、B、C中所要盛装的各物料的重量(配方量),后由对应给料设备为配料秤给料,达到配方额定值80%时,给料设备及速率控制设备启动,控制给料量,达到100%时,对应给料设备及速率控制设备停止,配方全部完成,然后配料秤自动放料于1号皮带机。
监控要求:在此过程中包含储料罐的下料位监控。
当储料罐中的料量低于10%时,产生报警。
并在趋势中显示出来储料罐中料位的变化,并对储料罐中料位值进行归档。
对储料罐中的料量设置用户权限,只有特定权限才能修改储料罐中料量的设定量。
在此工段设置状态指示,例如工段启动、停止指示,给料速率控制设备启动、停止指示。
wincc 打印作业
wincc 打印作业随着工业自动化程度的不断提高,计算机监控系统在生产过程中的作用越来越重要。
WinCC 是 Siemens 公司的工业自动化系统中的一个重要组成部分,它提供了全面的实时数据库和基于窗口的人机界面,能够实现对生产过程的实时监控、数据存储和报表打印等功能。
本文将介绍如何在 WinCC 中创建打印作业,以及如何将数据以报表的形式输出并打印出来。
一、安装打印机驱动程序在开始创建打印作业之前,需要确保打印机已经正确安装,并且与计算机成功连接。
同时,需要安装打印机驱动程序,以便 WinCC 能够正确识别并控制打印机。
二、创建打印作业在 WinCC 中,可以通过创建一个打印作业来实现报表打印功能。
具体步骤如下:1. 打开 WinCC 画面,选择“工具”菜单下的“打印作业”选项。
2. 在弹出的“新建打印作业”对话框中,输入打印作业的名称和描述信息。
3. 根据需要选择打印机和打印参数,如纸张大小、打印质量等。
4. 在“添加页面”区域中添加需要打印的页面内容,包括文本、图表、图像等。
5. 确认无误后,点击“确定”按钮创建打印作业。
三、设置打印作业属性创建完打印作业后,需要设置一些属性以适应实际应用需求。
具体步骤如下:1. 在 WinCC 画面中选择已创建的打印作业,进入打印作业属性设置界面。
2. 根据需要设置打印作业的打印顺序、重复打印次数、打印份数等参数。
3. 可以根据需要对打印内容进行排序和分组,以便按需打印。
4. 确认无误后,保存设置并关闭属性界面。
四、发布打印作业完成打印作业的设置后,需要将其发布到 WinCC 的报表生成器中,以便在监控画面中调用。
具体步骤如下:1. 在 WinCC 画面中选择已创建的打印作业,点击右键选择“发布”选项。
2. 在弹出的对话框中选择报表生成器作为发布目标,并设置相关参数,如报表名称、发布路径等。
3. 确认无误后,点击“确定”按钮发布打印作业。
五、在监控画面中调用打印作业完成发布操作后,即可在 WinCC 的监控画面中调用已发布的打印作业进行报表打印。
WINCC实现打印时间选择教程
WINCC实现打印时间选择教程打印时间选择教程1.报表编辑器-〉布局,新建动态对象中的动态表格。
然后连结表格。
2.取消时间范围的选择,并建立好变量选择,这里的变量应该是变量记录中的归档变量,其采集时间是从归档变量中设置的。
3.完成后退出并新建打印作业。
取消启动参数的选择,选择时间范围中的绝对时间。
4.实现打印功能最关键的是一个新建的项目函数,西门子的教程上有例子。
我已将条是调试通过。
/****************************************************** ***********************/// 函数名:ModifyPrintJob// 功能:修改打印作业的绝对时间/****************************************************** ***********************/BOOL ModifyPrintJob(SYSTEMTIME st1, SYSTEMTIME st2, charjobname[200]){BOOL fRet;PCMN_ERROR pError;HPROPERTIES hProp;LPVOID ptr1, ptr2;DWORD typ;DWORD dwVal;charpropname1[200],propname2[200];TCHAR g_szProj[MAX_PATH+1];typ = VT_DATE;strcpy( propname1, "ABSOLUTESELECTIONFROM" );strcpy( propname2, "ABSOLUTESELECTIONTO" );ptr1 = (LPVOID)&st1;ptr2 = (LPVOID)&st2;if( !DMGetRuntimeProject( g_szProj, MAX_PATH, pError ) ) {printf( "Error DMGetRuntimeProject(...)" );return FALSE;}hProp = RPJCreatePropertyHandle( g_szProj, pError );if( !hProp ){printf( "Error RPJCreatePropertyHandle(...)" );return FALSE;}if( !RPJGetJobProps( hProp, jobname, pError ) ){printf( "Error RPJGetJobProps(...)" );RPJDeletePropertyHandle( hProp, pError );return FALSE;}if( !RPJSetProperty( hProp, propname1, ptr1, (VARTYPE)typ,200, pError ) ){printf( "Error RPJSetProperty(...)" );RPJDeletePropertyHandle( hProp, pError );return FALSE;}if( !RPJSetJobProps( hProp, jobname, pError ) ){printf( "Error RPJSetJobProps(...)" );RPJDeletePropertyHandle( hProp, pError );return FALSE;}if( !RPJGetJobProps( hProp, jobname, pError ) ){printf( "Error RPJGetJobProps(...)" );RPJDeletePropertyHandle( hProp, pError );return FALSE;}if( !RPJSetProperty( hProp, propname2, ptr2, (VARTYPE)typ, 200, pError ) ){printf( "Error RPJSetProperty(...)" );RPJDeletePropertyHandle( hProp, pError );return FALSE;}if( !RPJSetJobProps( hProp, jobname, pError ) ){printf( "Error RPJSetProps(...)" );RPJDeletePropertyHandle( hProp, pError );return FALSE;}fRet = RPJDeletePropertyHandle( hProp, pError );return TRUE;}/****************************************************** ***********************/// 函数名:TimeFrom// 功能:打印时间的开始时间/****************************************************** ***********************/SYSTEMTIME TimeFrom(){SYSTEMTIME st;st.wYear = GetTagWord("FromYear");st.wMonth = GetTagWord("FromMonth");st.wDay = GetTagWord("FromDay");st.wHour = GetTagWord("FromHour");st.wMinute = GetTagWord("FromMinute");st.wSecond = GetTagWord("FromSecond");return st ;}/****************************************************** ***********************/// 函数名:TimeTo// 功能:打印时间的结束时间/****************************************************** ***********************/SYSTEMTIME TimeTo(){SYSTEMTIME st;st.wYear = GetTagWord("ToYear");st.wMonth = GetTagWord("ToMonth");st.wDay = GetTagWord("ToDay");st.wHour = GetTagWord("ToHour");st.wMinute = GetTagWord("ToMinute");st.wSecond = GetTagWord("ToSecond");return st ;}以上的这些函数都是新建立的项目函数(可以直接粘贴使用,已经过调试)。
用wincc创建配方实例
用wincc创建配方实例
标题,使用WinCC创建配方实例。
在工业生产中,配方管理是非常重要的一环。
配方管理可以帮
助企业准确地控制原材料的使用,确保产品质量的稳定性,并提高
生产效率。
而在自动化控制系统中,WinCC是一个常用的软件平台,可以帮助工程师们创建配方实例,实现配方管理的自动化控制。
下面我们将介绍如何使用WinCC来创建配方实例:
1. 打开WinCC软件并创建一个新的工程。
2. 在工程中创建一个配方管理模块,并添加所需的配方参数,
例如原材料的种类、比例、混合时间等。
3. 在配方管理模块中,可以设置不同的配方实例,例如A、B、C等,每个配方实例都可以包含不同的配方参数。
4. 在生产过程中,操作员可以通过WinCC界面选择所需的配方
实例,并启动生产过程。
5. WinCC可以实时监控生产过程中的配方参数,确保生产过程的稳定性和质量。
6. 通过WinCC软件,工程师可以随时修改配方参数,以适应不同的生产需求。
总的来说,使用WinCC创建配方实例可以帮助企业实现配方管理的自动化控制,提高生产效率,确保产品质量。
同时,配方实例的灵活性也可以满足不同的生产需求,为企业的生产提供了更大的便利和灵活性。
基于WinCC的自动化生产线监控系统
基于WinCC的自动化生产线监控系统张学辉【摘要】According to the device of the automatic production line, this paper introduces software and hardware configurations of automation monitor system, and analyzes the communication principle between WinCC and PLC. The design method of the automation monitor system using the configuration software WinCC, and the encountered problem and solution methods during the process of development are also discussed in this paper.%本文针对自动化生产线设备,介绍了自动监控系统的软硬件构成,分析了WinCC与PLC之间的通讯机制,并对利用组态软件WinCC 设计自动监控系统的方法以及开发过程中遇到的问题和解决途径进行了讨论。
【期刊名称】《自动化博览》【年(卷),期】2015(000)001【总页数】4页(P96-99)【关键词】组态软件;WinCC;PLC;生产线【作者】张学辉【作者单位】辽宁轨道交通职业学院,辽宁沈阳110036【正文语种】中文【中图分类】TP273自动化生产线是集电气控制技术、PLC技术、传感器技术、气动技术、伺服电机驱动技术及工业网络技术于一体,在结构设计上改变传统的控制系统各工作站间单一的串行结构模式,通过传输带为桥梁,实现工作站间的串行与并行综合的结构模式。
从根本上克服串行结构“牵一发而动全身”的弊端,增强系统工作的可靠性和柔性,并应用总线技术实现网络化控制。
Wincc软件在济南将军烟草集团链条炉中的应用
Wincc软件在济南将军烟草集团链条炉中的应⽤⼀、摘要:本⽂系统地叙述了控制系统Wincc软件及⽹络控制技术应⽤,介绍了Wincc软件实际应⽤的功能和开发及⼯程括况。
⼆、关键词:Wincc ⽹络功能控制三、概述:过去国内主控系统都普遍采⽤DCS技术,包括除灰系统、除渣系统、化⽔系统、输煤系统等采⽤的是独⽴、分散的常规控制系统,由于各系统⼯艺有其不同的特性,所以采⽤的控制系统配置不同、技术⽔平、监控⽅式各异,这就势必对每个系统都需配备相当的运⾏⼈员,使劳动⽣产率不能进⼀步提⾼。
因此,在系统中采⽤⽹络控制技术,⽤先进、成熟、可靠的技术来实现更新换代是时代发展的必然趋势。
济南锅炉⼯程采⽤上位机+PLC⽹络监控⽅式,⾃动化⽔平有较⼤的提⾼;使系统的监控⽔平逐步提⾼。
控制系统全部采⽤上位机、可编程控制器(西门⼦PCS7—300)、⽹络控制⽅式,结合⼯艺系统和地理位置的情况组成两个⽹络控制系统,监控软件采⽤西门⼦公司的Wincc版本(运⾏版和开发版)。
四、Wincc应⽤软件包的主要特性:上位机的监控软件采⽤西门⼦公司的Wincc版本,它是基于多任务,多平台,实时性好,开放性好的集成软件包。
Wincc软件包含了⼤量强⼤的图形化⼯具,允许⽤户能够快速直观地建⽴⾯向过程的实时窗⼝,使⽤户能够快速简单地开启系统,⽽且Wincc软件提供了⼯业界最为强⼤的功能,包括实时过程的监视和监督控制,报警和报警管理,历史趋势,统计过程控制,基于⽤户的安全系统,⽅便的系统扩展,⽹络等。
它集成了COM/DCOM、OPC、VBA、ActiveX等最先进的现代软件技术,使所有的应⽤组件都有可以⽆缝集成到⼀个系统中,并且数据可以很⽅便地在⽹络上共享。
Wincc包括两个全集成的环境,组态环境和运⾏环境,它提供了开发和显⽰的画⾯,调度报表和C语⾔程序,并与实时数据交互⼯作,组态提供了所有图形,⽂本,数据及动态和趋势图形⼯具,通过这些⼯具⽣成容易操作和理解的画⾯,在运⾏和组态环境之间可快速完成测试对画⾯的修改,同时保持实时报警和数据采集。
基于WinCC实现生产线产品条码扫描及打印的应用
基于WinCC实现生产线产品条码扫描及打印的应用【摘要】在工业生产中通过条码扫描设备识别相应产品进行归档处理,查看车间生产能力,因其准确可靠并大大降低人工成本而得到广泛的应用。
本文简要介绍利用西门子ET200S串口模块提供的串口通信功能对条码扫描器进行串口控制,介绍通过symbol固定式条码扫描仪进行产品的识别归档,应用VB脚本连接SQL数据库通过intermec条码打印机进行报表打印。
【关键词】条码扫描;串口模块;VBS脚本;用户归档1.引言近年来,条码检测技术在汽车制造行业被广泛采用。
通过上位机条码监控系统对采集的条码信息处理并进行管理。
某大型汽车制造企业在车轴上下料控制系统生产车间通过WinCC中VBS脚本实现对数据库的查询、筛选、用户归档及触发条码打印机的打印功能,实现对产品在生产过程中的质量数据进行跟踪。
2.控制系统简介车间有两条车轴加工生产线,主控系统采用西门子S7-400 PLC,在ET200S 远程站上通过1SI 3964/ASCII串口模块连接symbol固定式条码扫描器MS4404进行车轴端面条码扫描,在上料工位安装条码扫描器,当车轴进入检测区域时,通过传感器信号触发条码扫描器,扫描到的条码以ASCII的形式通过串口模块传到S7-400 PLC控制器中,PLC通过工业以太网将数据传送到上位机数据库,当工件运行到下料机构时通过传感器信号触发intermec条码打印机工作,实现对工件的全程监控。
3.系统硬件配置及接线硬件组态中组态模块地址,传输率、数据位、停止位及校验方式等参数和条码扫描设备设置一致。
PLC程序调用S_RECV_SI标准串口数据接收功能块FB2,S7-400通过PROFIBUS DP连接ET200S远程站,由于远程站和条码扫描工位的距离在15米以内,串口模块选用RS-232传输接口。
RS-232采用9 pin引脚,接口连接如图1所示。
4.上位机监控软件设计上位机选用西门子WinCC组态软件,监控整条生产线的运行。
wincc 软件智能工具使用
第十二章智能工具使用WinCC时智能工具是非常有帮助的,主要包括:简易语言(EasyLanguage),变量导出/导入,变量模拟器,动态向导编辑器,文档阅读器,WinCC交叉索引助手,注册表文件OnlOff和OnlOn,通讯组态器,WinCC组态工具,WinCC归档组态工具等。
简易语言是将依赖于语言的对象导出和导入WinCC过程画面的工具,提供了对创建多语言画面的支持,它允许从WinCC过程画面中导出依赖于语言的对象,以在WinCC外部对其进行翻译。
EasyLanguge简易语言不处理由WinCC文本库管理的对象以及自定义对象。
变量导出/导入:程序将来自当前打开项目的所有连接、数据结构和变量导出到相应的ASCII文件;然后可以将它们再导入第二个项目。
ASCII格式允许文件在导入之前由电子表格程序进行处理。
变量模拟器用来模拟内部变量和过程变量。
变量模拟器可以在不连接过程外围设备或连接了过程外围设备但过程没有运行的情况下,对组态进行检测。
对于已连接的过程外围设备,过程变量的值将由变量模拟器直接提供,可以使用户用原有的硬件对HMI系统进行功能测试。
变量值的刷新时间为1秒。
只有在功能激活或项目文件夹改变时,所作的修改才能生效。
可以组态的变量多达300个。
动态向导编辑器是一个用于创建自己的动态向导的工具。
通过动态向导,可以自动重复组态序列。
WinCC报表系统的打印作业可以传递到一个文件中。
对于较大量的数据,将为每一个报表页面生成一个文件。
借助WinCC文档阅读器,这些文件可以被显示并且打印出来。
WinCC交叉索引助手是一个在脚本中浏览画面名称和变量脚本并补充相关脚本的工具,以便使WinCC组件交叉索引查找画面名称和变量,并在交叉索引列表中列出它们。
选项包“过程控制运行系统”包括一个启动界面,其中有一个按钮,可以用来在运行时调用在线帮助。
通过在线帮助可以执行Windows系统操作,即使它们已被锁定。
通过文件“OnlOff.reg”,对Windows系统操作的访问可以通过隐藏用于激活在线帮助的按钮来锁定。
基于LabVIEW的条码自动打印系统设计
基于LabVIEW的条码自动打印系统设计周先飞;李敏;杨会伟【摘要】汽车行业中各个设备都来自不同的供应商,要实现产品溯源需从条码去区别。
针对汽车大灯产品检测系统之后的自动打印条码,实现检测过程的自动化要求。
提出了采用单片机制作的数据采集卡和LabVIEW建立的上位机软件,实现对检测完好的产品进行条码的自动打印输出,在上位机中可以对不同型号的产品进行条码的切换,在生产线上具有完全自动化功能,经现场使用,稳定性良好。
%In automotive industry ,each equipment comes from different suppliers ,it needs bar codes to distinguish the products. Towards the automatic printing of bar codes after testing of headlight product , the paper realizes the automation of testing process. This paper presents MCU for DAQ and labVIEV for upper computer softwave ,to realize the automatic printing of bar codes tested ,it can change the bar codes in upper computer for differen products. The system has automation function ,and has good stability proved by field use.【期刊名称】《江汉大学学报(自然科学版)》【年(卷),期】2016(044)002【总页数】5页(P126-130)【关键词】虚拟仪器;自动打印;数据采集;LabVIEW【作者】周先飞;李敏;杨会伟【作者单位】芜湖职业技术学院,安徽芜湖 241000;芜湖职业技术学院,安徽芜湖 241000;芜湖职业技术学院,安徽芜湖 241000【正文语种】中文【中图分类】TP273.5随着汽车工业的不断发展,汽车行业中各个部件都分属不同企业生产,当某一批次产品发生问题后,必须能尽快找到问题所在。
wincc限制输入输出域范围
wincc限制输入输出域范围
WinCC是Siemens公司推出的一款工业自动化监控软件,可实现对生产线的监控与控制。
在使用WinCC时,用户可以通过限制输入输出域范围来保证数据的有效性和安全性。
限制输入输出域范围是指,用户可以设置一定的范围,使得输入或输出的数据只能在这个范围内。
例如,设置一个温度输入域为0-100°C,如果用户输入的数值不在这个范围内,系统会自动进行报错处理。
在使用WinCC时,限制输入输出域范围可以避免数据误操作,提高生产线的稳定性和安全性。
同时,通过设置不同的权限,管理员可以对不同的用户进行不同级别的限制,保证数据的安全性。
总之,限制输入输出域范围是WinCC中一个非常重要的功能,可以对生产线的安全性和稳定性起到很大的保障作用。
- 1 -。
SIEMENS WinCC V6.0 VBS 脚本在自动汽车检测与识别系统中的应用
SIEMENS WinCC V6.0 VBS 脚本在自动汽车检测与识别系统中的应用摘要:本文描述了如何运用西门子上位监控软件WinCC V6.0集成的VBS脚本在自动汽车检测与识别系统中将实时车体信息记录到数据库中,并最终通过用户查询,以报表的形式打印出来。
关键词:WinCC V6.0,VBS,AVIAbstractThis paper introduces that how to store and query the datum by using VBScript -Editor integrating SIEMENS HMI software WinCC V6, then output datum as report styleauto-matically.Key Words:WinCC V6.0,VBS,AVI一、项目简介项目的所在地位于山东省烟台市经济技术开发区内的上海通用东岳汽车有限公司。
其油漆车间新上的一套AVI(自动汽车识别)系统通过采用安装在车体滑撬上的西门子MOBY传感器将实时车体信息传递到主控PLC中,再由上位监控计算机采集存入数据库并最终由用户有选择的以报表形式将信息打印输出。
各AVI信息采集站除装有MOBY自动读写头外,还各有一套ET200S远程站和操作员面板采集现场其它信号。
整套AVI系统的现场级均采用西门子PROFIBUS-DP总线来传递信息,PLC与上位监控计算机采用工业以太网进行实时通讯。
二、系统介绍2.1 工艺需求由于油漆车间有其自身的生产工艺,诸如:电泳,喷漆,烘房等,因此各车辆的车体信息会在其进入油漆车间之前被自动存储在车体所对应的滑撬上的MOBY存储单元中。
当车体到达首个固定的AVI读写站时,自动条码扫描枪会读取贴在车体上的条形码信息,同时,MOBY读写头会自动从滑撬上的MOBY存储单元中读出车体信息并与扫描枪扫到的信息进行比对,如果两者比较结果一致,则主控PLC会返回机运线放行信号将此车辆放行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于WinCC实现生产线产品条码扫描及打印的应用
作者:高伟王磊
来源:《电子世界》2013年第05期
【摘要】在工业生产中通过条码扫描设备识别相应产品进行归档处理,查看车间生产能力,因其准确可靠并大大降低人工成本而得到广泛的应用。
本文简要介绍利用西门子ET200S 串口模块提供的串口通信功能对条码扫描器进行串口控制,介绍通过symbol固定式条码扫描仪进行产品的识别归档,应用VB脚本连接SQL数据库通过intermec条码打印机进行报表打印。
【关键词】条码扫描;串口模块;VBS脚本;用户归档
1.引言
近年来,条码检测技术在汽车制造行业被广泛采用。
通过上位机条码监控系统对采集的条码信息处理并进行管理。
某大型汽车制造企业在车轴上下料控制系统生产车间通过WinCC中VBS脚本实现对数据库的查询、筛选、用户归档及触发条码打印机的打印功能,实现对产品在生产过程中的质量数据进行跟踪。
2.控制系统简介
车间有两条车轴加工生产线,主控系统采用西门子S7-400 PLC,在ET200S远程站上通过1SI 3964/ASCII串口模块连接symbol固定式条码扫描器MS4404进行车轴端面条码扫描,在上料工位安装条码扫描器,当车轴进入检测区域时,通过传感器信号触发条码扫描器,扫描到的条码以ASCII的形式通过串口模块传到S7-400 PLC控制器中,PLC通过工业以太网将数据传送到上位机数据库,当工件运行到下料机构时通过传感器信号触发intermec条码打印机工作,实现对工件的全程监控。
3.系统硬件配置及接线
硬件组态中组态模块地址,传输率、数据位、停止位及校验方式等参数和条码扫描设备设置一致。
PLC程序调用S_RECV_SI标准串口数据接收功能块FB2,S7-400通过PROFIBUS DP连接ET200S远程站,由于远程站和条码扫描工位的距离在15米以内,串口模块选用RS-232传输接口。
RS-232采用9 pin引脚,接口连接如图1所示。
4.上位机监控软件设计
上位机选用西门子WinCC组态软件,监控整条生产线的运行。
画面中应用Microsoft FlexGrid Control控件,条码查询画面如图2所示。
连接数据库,建立SQL表格,在WinCC中“人工输入条码”框连接文本变量8位字符集内部变量tag1,输入条码“确定”按钮脚本中将其读取到Db(0),VBS脚本如下
显示已加工所有信息“确定”按钮中SQL语句改为:strSQL=”select * from line1 Where 上料时间between’”&Db(2)&”’and’”&Db(3)&”’”
显示已加工所有信息“确定”按钮中SQL语句为strSQL=”select * from line1”
输入条码“打印”按钮通过C脚本RPTJobPreview实现,ODBC数据库表中SQL语句为select * from table_1 where 条码=’$tag1$’;显示加工信息“打印”按钮中ODBC数据库表中SQL 语句为select * from table_1 where 上料时间between ‘$tag2$’ and ‘$tag3$’’
人工输入条码后“删除”按钮中SQL语句为
显示加工信息“删除”按钮中改为:is_SQL=”Delete from line1 where 上料时间
betwee n’”&Db(2)&”’and’”&Db(3)&”’”即可
在PLC程序中使用SFC 1”READ_CLK”读取当前CPU系统时钟,使上位机报表时间与PLC一致,方便以后故障的排查。
WinCC中建立6个无符号8位数变量,分别与PLC系统时钟的年月日时分秒相连,在类型转换中选择ByteToUnsignedByte,WinCC将以十六进制数显示,建立文本变量8位字符集C11用于存储PLC粗车1条码信息,粗车1全局脚本中触发信号设置为Line1.C1_EStatus,将采集到的时间连接成字符串后存储到Db(0)内,C11存储到Db(18)内,连接数据库后SQL语句为at_SQL=”Update Table_1 Set 粗车1时间=’”&Db(0)&”’Where 条码=’”&Db(18)&”’”。
在条码软件BarTender中建立一个新文件并记录地址,设定二维码的共享名称为barcode。
在打印功能的全局脚本中触发信号为Line1.XL_EStatus,将读取内容存储到Db(0),脚本如下:
5.结论
车间生产线采用了条码自动扫描打印后,实现了产品的回溯跟踪,避免了人工贴码打印的操作失误,大大提高了车间生产效率。
参考文献
[1]崔坚.西门子工业网络通信指南(下册)[M].机械工业出版社,2006.
[2]陈鸿.现代物流管理系统架构与条码技术[M].清华大学出版社,2008.
[3]刘志妩.基于VB和SQL的数据库编程技术[M].清华大学出版社,2008.
[4]周鹤良.电气工程师手册[M].中国电力出版社,2008.
作者简介:高伟(1984—),男,辽宁沈阳人,学士,电气设计工程师,现供职于沈阳新松机器人自动化股份有限公司。