WinCC显示和更改PLC中的"时间变量"
一. Step7中的两种时间变量 TIME 和 S5TIME
#TIME格式的时间变量: 占4字节, 本质上是一个interger型变量, 单位ms.
S5#TIME格式的时间变量: 占2字节, 表示成16进制为 W#16# wxyz , 其中w表示时基: w=0,1,2,3时, 对应的时基依次为10ms, 100ms, 1s,10s,xyz以BCD码格式表示数值: xyz=123就表示123个时基.范围0~999.
二. WinCC中显示和修改 #TIME 格式变量.
新建32位浮点变量, 调整格式选 FloatToUnsignedDWord. 地址选中PLC中#TIME变量地址, 即可! 此时, 浮点变量是以ms为单位的时间值. 如需以s位单位, 线性标定里, 修改量程 使倍数为1000倍.
画面中配置IO文本域, 关联到新建的浮点变量, 即可显示并修改.
三. WinCC中显示和修改 #S5#TIME 格式变量值.
新建32位浮点数变量,调整格式选 FloatToSimaticBCDTime, 地址选中PLC中S5TIME地址, 即可! 此时, 浮点变量是以ms为单位的时间值. 如需以s位单位, 线性标定里, 修改量程 使倍数为1000倍.
画面中配置IO文本域, 关联到新建的浮点变量, 即可正常显示. 经测试, 不把IO文本域的"输出格式"属性修改为"字符串"(保持缺省的"10进制"格式), 同样可以正确修改.
需要注意的是, 由于S5TIME的限制, 并不能始终精确到10ms. 根据输入的值, WinCC会自动将之整定到对应的时基上. 比如: 输入100.5s时,已经不能用100ms时基(在范围0-99.9s范围可用), 只能用1s的时基, 所以WinCC将输入整定为100.0s并写入PLC.
四. WinCC中定义变量窗口分析.
变量值: 选32位浮点数,4字节, 此处指WinCC中新建的变量为32位浮点型. 调整格式: 选FloatToSimaticBCDTime, 说明此Float变量, 经转化为 SimaticBCDTime(ms为单位)类型后,与PLC中S5TIME变量相关联.所谓格式调整, 调整方向为: 变量值--->过程值.过程值地址选择: 此处指PLC中 S5TIME变量的地址.
线性标定: 指定 "变量值"(WinCC中变量) 与"过程值"(PLC中变量值并经转化为临时float型) 的线性转化关系,所谓的上下限, 并不是说要限制不能超限, 仅仅是为了得到"线性因子"和"线性偏移量".因此,设定成 [0, 1000] -->[0,1.000] (零点不偏移, 转化因子1000倍),与设定成 [0, 9990]-->[0,9.990](也是因子1000), 二者效果是完全相同的!
上面的设置, 显示时的数据流为:
PLC中S5Time变量值 ---> 从SimaticBCDTime到Float的类型转换(以ms为单位的数值)--->Float值(ms为单位)线性转化,即缩小1000倍 ----> 转化结果赋值给 TimeTag2变量(32位浮点型)
写入PLC时数据流方向刚好相反:
TimeTag值 ---> 扩大1000倍的线性转化 ---> 转化结果进行类型转换: 从float到SimaticBCDTime--->转化得到的S5Time格式, 更新到PLC对应内存.
在建变量的时候 数据类型:选择“无符号16位”
地址:按你的需要设置
主要的是“改变格式”要选择“wordtoBCDword”
你在画面上输入的时间若为“y”则在PLc中的时间就是“y*10ms”了