关于EM235模拟量在组态王显示的问题

使用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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐