回复:求教:loop循环指令

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2011-08-02 23:09:28

4楼

前段时间看到几个坛友问传说中跑马灯的故事!今晚刚好闲暇无事,也等于锻炼锻炼脑子,不至于生锈!就用绝对地址写了段代码,仿真测试通过!不知能否满足楼主的要求。望大家多指正,有兴趣的朋友可以将其写成一个FC,还是比较好玩的,呵呵.......
此段跑马灯程序Q点输出范围定义成Q0.5到Q13.0共100个Q点,按照楼主的要求,跑了100个马灯!可以按照自己的需要修改!也可以在连续Q区段(Q0.0-Q4095.0)内跑马灯!如果PLC光跑马灯的话,估计跑三万两千多匹马应该没有问题!兄弟们让你去指挥这千军万马哈......
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬跑马灯的过程╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
A M 6.1 //跑马灯的启动标志位M6.1=1启动,M6.1=0停止
FP M 6.2 //如果跑马灯启动时
JC M001 //跳转到初始化地址寄存器1和指定的Q区
A M 6.1 //跑马灯的启动标志位M6.1=1启动,M6.1=0停止
FN M 6.2 //如果跑马灯停止时
JC M001 //跳转到初始化地址寄存器1和指定的Q区
L MD 7
L L#105 //★定义Q点的结束(返回)地址(105/8=Q13.0)
>=D
JC M001 //返回跑马灯的起始地址
JU M002
M001: L L#5 //★定义Q点的起始地址(5/8=Q0.5)
T MD 7
LAR1 MD 7 //初始化一下地址寄存器1
L 100 //★★跑马灯区域Q点个数(105-5=100)
NEXT: T LW 20 //(Q点的结束地址减去起始地址)
SET
R Q [AR1,P#0.0] //将跑马灯区域Q点全部复位
+AR1 P#0.1
L LW 20
LOOP NEXT
L L#5 //★定义Q点的起始地址(5/8=Q0.5)
T MD 7
M002: LAR1 MD 7 //再初始化一下地址寄存器1
A T 1
A M 6.1 //跑马灯的启动标志位
FP M 6.3
S Q [AR1,P#0.0] //T1上升沿到来时,置位当前的Q点
A T 1
A M 6.1 //跑马灯的启动标志位
FN M 6.4
R Q [AR1,P#0.0] //T1下降沿到来时,复位当前的Q点
JC M003
JU M004
M003: L MD 7
+ L#1
T MD 7 //跑马灯地址往前逐步推进
//╬╬╬╬╬╬╬╬╬╬╬T1相当于5S的高电平,一个扫描周期的低电平╬╬╬╬╬╬╬╬╬╬╬╬
M004: AN T 1 //产生一个5s的“同步”脉冲源
A M 6.1 //跑马灯的启动标志位M6.1=1启动,M6.1=0停止
L S5T#5S //★时间改小一点,跑马速度会快一点。
SE T 1 //跑马灯开始,启动定时器。
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54699条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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