我用s7200,在工艺流程中有一段,有九台电机启动顺序有优先级,在触摸屏中可以设定0-9共10个优先级,设为0时电机不启动,设定不为0的电机按1到9的顺序启动。这段程序不会写,请求高手指点。。
问题补充:
各位大侠:
程序怎么对优先级变量进行排序呢?
还有就是 在子程序中的输出变量OUT最多可以设定几个?
最佳答案
答:根据你的提问,经考虑用一个简单的方法来解决问题(用轮询的方法)。
首先定义:
1. 电机序号:将10台电机编号为1~10号,设置10个变量VW100~VW118,分别对应1~ 10号电机。将触摸屏上设置的1~10号电机的启动优先级分别写入VW100~VW118。
2. 启动序号:由变量VW200产生。
3. M1.0:开始启动电机指令。
4. Q0.0~Q0.7、Q1.0~Q1.1:输出1~10号电机启动的指令。
由于不知道你整个程序对电机的控制逻辑,所以无法给你更多的帮助,只能提供编程思 路,由你自己根据控制逻辑进行修改和完善,希望能对你有所帮助。
注意:
1. M1.0只能闭合1次,即只能向VW200传送1次“1”。
2. 要有根据控制逻辑对Q0.0~Q0.7、Q1.0~Q1.1进行复位的环节(在网络3里是只有当前一个电机启动的指令(Q点)复位后,才能启动下一个电机)。
程序如下:
网络1 开始启动电机
当开始启动电机指令M1.0=1时,向VW200中写入“1”,开始按优先级启动电机。
LD M1.0
MOVW 1, VW200
网络2 启动次数累计
启动第1个电机后开始计数,以后每启动一个电机VW200加1(给出启动序号,当VW200=n 时,启动第n台电机)。
LD SM0.0
LD Q0.0
O Q0.1
O Q0.2
O Q0.3
O Q0.4
O Q0.5
O Q0.6
O Q0.7
O Q1.0
O Q1.1
ALD
INCW VW200
网络3 按触摸屏上设定的电机启动顺序依次启动9台电机
将启动序号VW200与设定的电机启动优先级号(VW100~VW118)做比较,符合启动条件 的电机则启动。
LDN Q0.0
AN Q0.1
AN Q0.2
AN Q0.3
AN Q0.4
AN Q0.5
AN Q0.6
AN Q0.7
AN Q1.0
AN Q1.1
LPS
AW= VW100, VW200
S Q0.0, 1
LRD
AW= VW102, VW200
S Q0.1, 1
LRD
AW= VW104, VW200
S Q0.2, 1
LRD
AW= VW106, VW200
S Q0.3, 1
LRD
AW= VW108, VW200
S Q0.4, 1
LRD
AW= VW110, VW200
S Q0.5, 1
LRD
AW= VW112, VW200
S Q0.6, 1
LRD
AW= VW114, VW200
S Q0.7, 1
LRD
AW= VW116, VW200
S Q1.0, 1
LPP
AW= VW118, VW200
S Q1.1, 1
网络4 将VW200设置为初始状态
当启动完第9台电机后,将VW200置为“0”,为下一次依顺序启动电机做准备。
LDW= VW200, 9
-I VW200, VW200
图片说明:
提问者对于答案的评价:
谢谢!和我的想法差不多!
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc293266.html