各位高人,大家好,最近看到一段程序,有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,两者有差别么?
图片说明:
最佳答案
一、
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