有几个项目用了wincc7.3用户归档记录投料数据
1、使用PLC变量job=6触发wincc用户归档记录数据,用户归档job=PLC变量job,写入成功后,wincc会复位job=0,也就是复位PLC变量job=0,但是有时候会记录两条相同的数据。
2、怀疑是wincc与PLC变量之间不同问题,后改成变量触发wincc vb脚本,新建wincc内部变量job,用户归档触发job=内部变量job,脚本触发周期1秒或2秒,判定PLC变量job是否为6,是则触发内部变量job=6,触发后plc变量job复位,这样写还是会时不时的记录两条相同的数据。
3、后来再改加了一个wincc内部变量Lock,脚本如下。
Dim objtag,Lock
Set objtag = HMIRuntime.Tags("UserData_Job")
Set Lock = HMIRuntime.Tags("Lock")
objtag.Read
Lock.Read
If objtag.Value=6 And Lock.Value=0 Then
HMIRuntime.Tags("ID").Write -1
HMIRuntime.Tags("Job").Write 6
HMIRuntime.Tags("UserData_Job").Write 0
HMIRuntime.Tags("Lock").Write 1
End If
If objtag.Value=0 And Lock.Value=1 Then
HMIRuntime.Tags("Lock").Write 0
End If
写入用户归档一次后,锁住用户归档,待PLC变量"UserData_Job"清零后解锁Lock,但发现数据是记录了,但是PLC变量"UserData_Job"不为0,有时候一直是6。这样Lock就复位不了,第二次想写入数据就写不了。
4、后又改脚本如下:
Dim objtag,Lock,Job
Set objtag = HMIRuntime.Tags("UserData_Job")
Set Lock = HMIRuntime.Tags("Lock")
objtag.Read
Lock.Read
Set Job= HMIRuntime.Tags("Job")
Job.Read
If objtag.Value=6 And Lock.Value=0 Then
HMIRuntime.Tags("ID").Write -1
HMIRuntime.Tags("Job").Write 6
HMIRuntime.Tags("UserData_Job").Write 0
HMIRuntime.Tags("Lock").Write 1
End If
If Job.Value=0 And Lock.Value=1 Then
HMIRuntime.Tags("Lock").Write 0
HMIRuntime.Tags("UserData_Job").Write 0
End If
用wincc内部变量Job做判定复位Lock和清零"UserData_Job"
总感觉不对劲,没找到PLC变量"UserData_Job"不清零的原因,只是增加了进一步复位PLC变量"UserData_Job"。一时间也不知道怎么办才好。



目前PLC程序如图所示,ID=-1和Job=6触发了记录,Job=-1的话会有另外的报警和复位,大多数情况下都是触发后用户归档都能正常的记录数据,偶尔未知原因触发了重复。块是FB,#投料启停状态 是input,#M0和#M1都是Static