刚学S7-200,调用子函数问题,为什么总有输出

SM0.0虽然一直通的,但后面我接了个i0.0,我第一次i0.0接通导致Q0.0一直接通。我把i0.0断开,子函数Q0.0应该也断
理论上说,i0.0接通。Q0.0,Q0.2,Q0.3得电,I0.0断开,上面全部不导通熄灭。但实际上,
我试验结果是:i0.0接通,i0.0一直接通。Q0.2,Q0.3得电,
i0.0断开,Q0.2,Q0.3断开,但I0.0一直接通?为什么?

图片说明:

刚学S7-200,调用子函数问题,为什么总有输出    刚学S7-200,调用子函数问题,为什么总有输出   

最佳答案

你要理解PLC的扫描和执行机制
当I0.0通的时候先调用子程序,子程序执行的时候,Q0.0因I0.0通而置1,向下执行到ret指令返回,剩下的Q0.1指令就不执行了,返回后Q0.2 Q0.3因I0.0通置1,所以是Q0.0 Q0.2 Q0.3通
当I0.1断开的时候,子程序因I0.1断开,不调用,不调用的意思是直接跳过了,不管子程序里面是啥,所以Q0.0保持执行子程序的状态,Q0.2 Q0.3因I0.0不通置零,最后结果是Q0.0通 Q0.2 Q0.3不通
感觉说的比较直白了,能明白吧?
关于CPU的执行,参考手册:
S7-200 可编程序控制器 系统手册
https://support.industry.siemens.com/cs/cn/zh/view/1109582
37页 PLC的基本概念
里面的内容
初学200的话,这本手册应该仔细看看,关于200的资料,里面基本上都全了

提问者对于答案的评价:
谢谢各位!不错!理解不少

专家置评

已阅,最佳答案正确。

单键启停参考
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=136244&cid=1028
最佳答案评论里的例子

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月2日 下午11:39
下一篇 2017年6月2日 下午11:39

相关推荐