使用S7-200、EM235、温度变送器(0-150度)去测量PT100的温度,再将温度显示在组态王上,程序逻辑如下:
LD SM0.0
MOVW AIW0, VW0
ITD VW0, VD4
DTR VD4, VD8
MOVR 150.0, VD12
/R 32000.0, VD12
MOVR VD12, VD16
*R VD8, VD16
在组态王的数据词典上设置好温度变量,寄存器为VD16,数据类型为FLOAT,变量类型I/O实数,在画面一内设置一文本符号####,用来显示温度值,在模拟量动画连接上,设置输出格式为二位整数,一位小数,表达式为温度,显示值为十进制,进入运行系统后,温度值显示为零,实际上我这温度有10度,将温度的寄存器改为VW0,可以显示四位数值,但后面又挂了一个小数点0(已将数据类型改为SHORT),请各位专家帮我解决这个问题!
最佳答案
除了位变量之外,其他如VB、VW、VD等,在组态王变量定义界面的寄存器上没有区别(这似乎是组态王的一个不怎么样的特征)。这点类似于指针寻址。
不同变量通过数据类型选项区分开来。
有Bit、BYTE、SHORT、USHORT,BCD、LONG、LONGBCD、FLOAT这些类型。
数据定义应该保证PLC数据类型与组态王变量定义类型的统一。
另外需要注意的是:最小值、最大值与最小原始值、最大原始值之间的关系,组态王提供了这样一种转换(相当于模拟量量程变换),如果用好了很方便,但是常常会有意外的数据定义造成组态王显示与PLC数据的不一致。
也就是说,你的程序完全可以写成:
MOVW AIW0, VW0
组态王定义为I/O实数,然后定义变量寄存器为V0,类型为SHORT,最小值=0,最大值=150,最小原始值=0(如果是有20%偏移量时,该值为6400),最大原始值=32000。
组态王界面照样可以显示为实际温度。
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc304414.html