菜鸟问:
现有一套PLC200系统,含10个电磁阀,轮流动作,一个动作周期结束后,重新轮询,动作的电磁阀个数N(N≤10)为可变,每个电磁阀动作时间相同,均为T(T可变)。
现在拟定方案为:用T1、T2......Tn来表示每个电磁阀的动作时间,通过修改电磁阀动作时间来修改电磁阀的动作个数。部分程序如下,通过控制VW0~VW18是否为0来决定对应的电磁阀是否动作。
LD SM0.0
S Q0.0, 1
LD Q0.0
TON T37, T1
LD T37
R Q0.0, 1
S Q0.1, 1
问题:1. 照上述方案,有几个电磁阀就要有几倍上述的编程量,比较繁琐,貌似PLC200中没有类似C的for循环语句,怎么样编写会比较简洁呢?有没有类似轮询的函数?
2. 电磁阀动作时间T用组态王来修改,单位为s,但200的T37~T63基准为100ms,所以T的输入值需*10,这个修改放在PLC程序中还是放在组态王中?哪个比较合适?
甲:
动作时间相同,那间隔时间呢?既然时间相同,为什么还要有T1 T2 T3 Tn?
菜鸟:
多谢解答!~~
动作时间相同,电磁阀是依次动作,所以间隔时间可以理解为动作时间;
设置T1、T2、T3....Tn,是十个电磁阀每个循环周期,动作总个数不一定为10,就是十个电磁阀不一定都动作,若第十个电磁阀不动作,可调节T10=0。
大虾:
楼主,你先要会用“笨”方法实现你的要求。如果笨方法都不行,那是做不到简洁的。
菜鸟:
现在是用笨方法实现了,但程序实在太繁琐了,而且老觉得自己编程思路有问题,一直都是用笨方法,所以上了跟各位前辈讨教~
高手:
可以做一个子程序,然后在主程序里调用。定时器可以用累计SM0.5脉冲个数与设定时间相比较。