发布于 2011-08-25 14:18:00
2楼
这个是现在工控论坛的PLC题目:
有5个执行动作其动作顺序可以任意改变,如何编程来实现这5个执行动作能准确无误的执行新的设定顺序?
这是一网友求助帖提出的,原文是:“ 有5个执行动作我转换为操作数,姑且定为D10、D20、D30、D40、D50,它们每一个都可能写入从0 到5的数值。最后执行是从1到5 依次执行输出,是0的不执行跳过,不知如何编,请高手指点,谢谢了!”又“……如这一次是按1/2/3/4/5依次动作,下一次也许设置为按5/3/2/动作,再下一次就1/5/2/3/。。。。。”“两次执行的间隔时间可设定,暂定3秒看设备运转情况而定”
我自己也写了个:
1.建立从vw0开始长度为5的表格,填表后vw4-----vw12对应D10---D50 5个操作数
2.vw30~~vw38对应D10~~D50 5个操作数,建立指向vw30的指针(填表用)
3.填表--采用循环指令和间接寻址的方式,在填表前先清零,填后复位指针
4.m0.1作为设备的启动按钮,每次修改操作数后,需重新启动设备方可生效。
5设备启动后先填表,接着启动定时器(vw60为动作执行间隔,单位:100ms)
6.每次定时器计时到定时值就执行一次查表,查询值:0--5,根据.查询值对应条目可知是哪一个动作
7.执行动作(Q0.0--Q0.4对应要执行的5个动作)
Network 1 // 网络标题
LD SM0.1
MOVW 5, VW0
MOVD &VB30, VD40
Network 2
LD M0.1
EU
CALL SBR0
Network 3
LD M0.1
AN T37
TON T37, VW60
Network 4
LD T37
EU
MOVW 0, VW50
FND= VW2, VW20, VW50
+I 1, VW20
AW= VW20, 6
MOVW 0, VW20
Network 5
LD SM0.0
LPS
AW<> VW20, 0
MOVW VW50, AC0
AENO
MOVB 1, QB0
MOVB 1, QB0
SLB QB0, AC0
LPP
AW= VW20, 0
MOVB 0, QB0
填表子程序
Network 1
LD SM0.0
FILL +0, VW2, 6
Network 2
LD SM0.0
FOR VW44, 1, 5
Network 3
LD SM0.0
ATT *VD40, VW0
+D 2, VD40
Network 4
NEXT
Network 5
LD SM0.0
MOVD &VB30, VD40
生命就是次单程旅行