s7-300简单的STL语句比较指令咨询

各位高人,大家好,最近看到一段程序,有2处地方看不明白,还请指教:
第一处
A

L     DB310.DBD154
L     0
==I

=    L    27.2
第二处
A
(
L     DB310.DBD86
L     0
==R
)
O      M21.7

图片中的左边,是我用梯形图,右边是STL语句的。
我的问题是
1、第一处中,数据采用双整的地址,DBD154,但是采用的是整数的比较指令,我想问,实际参与预算的是DBW154,还是DBW156,还是DBD154与实数比较?
2、第二处中,数据采用双整的地址,DBD86,但常数采用0,用的是实数的比较指令,如果用梯形图,常数的表达方式是0.0000+e000,两者有差别么?

图片说明:

s7-300简单的STL语句比较指令咨询    s7-300简单的STL语句比较指令咨询   

最佳答案

一、
1、是DBW156与常数0比较:
A

L     DB310.DBD154//DBW154为高字节,DBW156为低字节。
L     0
==I   //累加器 2 中低字的内容与累加器 1 中低字的内容进行比较。累加器 2 和累加器 1 低字的内容都作为 16 位整数。

=    L    27.2
2、两者没有差别
二、
给出的程序编制得不规范,应为:
1、第一处,比较两个双整数(32位),所比较的两个数据的类型要一致:
A

L     DB310.DBD154   //取 DB310.DBD154双整数(32位)数据
L     L#0   //取32位长整型常数
==D    // 比较两个双整数(32位)

=    L    27.2
2、第一处,比较两个实数(浮点数),所比较的两个数据的类型要一致:
A
(
L     DB310.DBD86//取 DB310.DBD154实数(浮点数)数据
L     0.0  //取实数(浮点数)常数。系统会自动转换为0.000000e+000
==R   //比较两个实数(浮点数)
)
O      M21.7

提问者对于答案的评价:
周末的时候,用仿真器模拟了一下,还是发现很多有趣的地方。
如阿鸣大师所说,这套程序,确实有很多地方不完善,不单单这一处~。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc243117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午10:24
下一篇 2018年12月1日 下午10:25

相关推荐