回复:建议版主像工控网那样搞点擂台

icegrave

  • 帖子

    249
  • 精华

    2
  • 被关注

    8

论坛等级:侠客

注册时间:2011-03-04

普通 普通 如何晋级?

发布于 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
生命就是次单程旅行
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。