请教PLC200编程思路

硬件:1*CPU224+2*EM222
实现功能:1~20个电磁阀,用户可在UI界面设定第N1到第N2个电磁阀动作,以及电磁阀动作的时间T,且电磁阀动作为轮流动作。如假设用户设定第N1=3至第N2=8号电磁阀动作,动作时间为T=1min,则上电后,第3号电磁阀开始动作,动作时间1min,依次动作,至8号电磁阀动作完成后,3号电磁阀工作,依次做下一周期循环。

其中:CPU224的输出端是Q0.0~Q0.7、Q1.0~Q1.1(Q1.2~Q1.7为缺省),这样我用循环左/右移指令时,需要分区进行循环扫描,且电磁阀动作有BUG。

请教各位编程思路!
另附上有bug的编程(因水平有限,此程序中,没有实现N1可修改,即默认从一号电磁阀开始动作),请指教!

问题补充:
WWCWWC前辈:您说的反复看了很久,不甚理解。您讲的“解决你缺省值(Q1.2~Q1.7为缺省)的问题确实你可以先用中间变量地址(M),那样就不需要考虑由于cpu输出地址缺省值带来的不便。”怎么替代呢?还有,先不按用户设置的循环时间移位是什么意思呢?

实在是水平太低,还请指教!
另,找答案是不是不支持回复功能啊?怎么回复呢?

图片说明:

请教PLC200编程思路    请教PLC200编程思路    请教PLC200编程思路    请教PLC200编程思路    请教PLC200编程思路   

最佳答案

用移位指令的方法在此是比较切合实际的,采用双字移位指令解决。
解决你缺省值(Q1.2~Q1.7为缺省)的问题确实你可以先用中间变量地址(M),那样就不需要考虑由于cpu输出地址缺省值带来的不便。
用户需要从哪个阀(PLC输出地址开始),可以在用户设置N1数值后,可以先直接将前面的这些位复位,然后根据启动位命令移位(可以先不按用户设置的循环时间移位,这样就可以快速先移动到准备的地址上),当用户按启动后用用户设置的N2时间移位。
看了你的程序,认为你需要换一种方式思考这个问题,移位指令用双字不要用字节,其它的编程方式可以按你的方式也可以,关键是你需要换一种思路编程。希望这个思路能够帮到你,祝你成功。

提问者对于答案的评价:
谢谢解答!用一个非常非常繁琐的方法暂且实现了,时间太紧迫了,后面再慢慢修正吧,还是谢谢!如果您能看到我的问题补充的话,如果方便,可否详细回复一下?实在不知道双字左右移位怎么写,新手,不知道怎么向您提问,谢谢!~

最佳答案作者回复:
用中间变量M替代就是做用户控制程序时不直接用输出地址Q,M变量一一对应输出Q的地址。简单理解为:
LD    M10.0
=      Q0.0
先不使用用户循环的意思是用户在设置开始位的同时用较高的脉冲频率,移动到需要开始的位,这样当用户启动控制程序,就在该位开始移位了。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年12月8日
下一篇 2017年12月8日

相关推荐