恭喜,你发布的帖子
发布于 2024-01-16 11:13:12
13楼
大家所说的 PLC 扫描 从上往下、从左往右。在一段程序内也遵循这个原则。
但是,对于输入输出还有一个原则也要遵循。如截图所示:
在每一个扫描周期先执行 Q 输出,再执行 I 输入,然后才执行程序。
所以,你的程序代码会遇到问题:
当执行了 Q1.5 为 1 的时候,并没有真正输出到 Q 端(要等到下一个扫描周期才会)。紧接着你又调用了 Q1.5 常开触点,此时它还为 0。因此,下面通过上升沿给 Q0.7 置 1 的指令也要到下一个扫描周期才会执行!
下面的链接是前一段时间有人提过相关的问题,供你参考:
https://www.ad.siemens.com.cn/service/answer/solved_300116_1072.html
1)您发的图片是1200的上电启动到运行过程。
2)【当执行了 Q1.5 为 1 的时候,并没有真正输出到 Q 端(要等到下一个扫描周期才会)。紧接着你又调用了 Q1.5 常开触点,此时它还为 0。因此,下面通过上升沿给 Q0.7 置 1 的指令也要到下一个扫描周期才会执行!】
2.1、对于Q点(含I点),有【映像存储区】与【物理点】两个概念;
2.2、程序扫描中Q的常开与常闭点,读取的是【相应的 映像存储区】,而非【物理点】;
2.3、程序全部扫描后,统一将【相应的 映像存储区】传至【物理点】
2.4、【立即输出】指令除外。执行立即输出指令时,物理输出点(位)立即被设置为等于能流状态。新值将写入物理输出点和相应的过程映像寄存器地址。这不同于非立即地址引用仅将新值写入过程映像寄存器。
2.5、因此:
2.5.1、本贴中【当执行了 Q1.5 为 1 的时候,该【输出】线圈指令将输出位的新值1,写入【过程映像寄存器】。并没有真正输出到【物理点】 Q 端;
2.5.2、紧接着(下面。即:程序执行扫周期的后面)又调用 Q1.5 常开触点,此时它为1,不是0。因为程序扫描读取的是Q1.5的【映像存储区】,不是【物理点】;
3)楼主的应该是SMART200:
图片2
请填写推广理由:
分享
只看
楼主