O(
L DB100.DBD 2
L TOD#5:59:0.000
>=D
)
A(
L DB100.DBD 2
L TOD#11:59:0.000
<=D
)
O(
L DB100.DBD 2
L TOD#17:59:0.000
>=D
)
A(
L DB100.DBD 2
L TOD#23:59:0.000
<=D
)
= #TEMP37
最佳答案
修改后:
这段程序有点像是排班的时间表:
早上6点到中午12点
晚上18点到24点
经过模拟这段程序是可行;即:早上6点到中午12点 或者晚上18点到24点 置位 = #TEMP37
分析,首先:DB100.DBD2是个日计时的时间格式,那么DB100.DBD2都是小于TOD#23:59:0.000的所以,最后一个
A(
L DB100.DBD 2
L TOD#23:59:0.000
<=D
)
一直为1;
就是说
O(
L DB100.DBD 2
L TOD#5:59:0.000
>=D
) //早上6点后
A(
L DB100.DBD 2
L TOD#11:59:0.000
<=D
) //早上12点前
//以上程序是表示在,早上的6点到12点,成立时 # TEMP 37就为1
只要进入到18点,# TEMP 37也为1
O M2.1
A M2.2
O M2.3
A M2.4
= M2.5 //M2.1与M2.2都为1时,只要M2.4为1 M2.5就为1
M2.3与M2.4都为1时,M2.5就为1
楼主可以模拟或者监控看看,最后一个时间的比较块是否一直为1 "O"为1时,STA和RLO都为1,可以写写程序监控看看;
之前的解答有点不对;
提问者对于答案的评价:
感谢细心讲解,主要是对O,A的运用还是不够哈,最近才看STL的东西,这个没有从脑子里转换成梯形图,我感就是O相当于隐形的加了个中括号吧,这样我就能理解了。。。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc224324.html