|
本人用wincc时间不长,在变量建立的过程中对数据类型和线性标定出现误解,绕了好大弯子,分享出来,希望其他新手别再犯同样的错误了。
驱动:modbus TCP
寄存器地址:40200 16bit 有符号数据
寄存器数值:实际测量温度值的10倍 数值范围:-200~1000 对应-20℃~100℃
希望画面上IO域显示为浮点数:-20.0~100.0
错误的变量组态:
正确的组态
误解的原因:
以前用过其他组态软件,整型数据缩小10倍只要IO域组态为浮点,移动小数点位置就能以浮点数形式显示整数,比如寄存器内是1234,IO域可以显示为123.4;
但wincc内不是这个规则,IO域即使组态成浮点数格式,配置了小数点后的位数,但关联的变量数据类型如果是整型的话,那么小数点后面始终是0,结果1234经过线性标定后在IO域内只能显示123.0,小数部分丢失了
如果希望modbus寄存器内的整数在winccIO域中以浮点数形式显示出来,在变量组态时数据类型一定要要选32位浮点数,格式调整选 FloatToSignedWord 或者 FloatToUnsignedWord ,再做线性标定,这时IO域关联此变量以后就能正常显示小数部分了。
此方法对于其他驱动协议应该也适用,不过我还没测试。 只要涉及到把整型数据转浮点数需要线性标定的应该都可以,但是把整型数据放大倍数显示的话,没必要。因为小数部分肯定始终都是0.
|
|