回复:西门子300PLC如何编写一段关于筛选的程序

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2015-01-31 08:52:57

7楼

按照Zane版移位的提示和思路,试着写了一下,应该能满足楼主要求。当然也有其它方法,有兴趣的朋友也可以写点代码。

L 0
T MW 104 //将计数器清零
L MD 100 //装载当前20个bool量的状态,(20个bool量从第0位开始,向高位连续排列)
T LD 22 //将20个bool量的状态暂存到临时变量中(主要用于循环体内的移位运算)

L 20 //装载循环次数(20次)
NEXT: T LW 20 //将循环次数暂存到临时变量
L L#1 //装载长整数1(其实就是二进制数第0位为1)
L LD 22 //装载bool量的状态
AD //双字的与操作(ACCU1&ACCU2)取第0位的状态
==D //判断与的结果(ACCU1的内容)第0位是否等于1
JCN M001 //如果第0位是1,往下执行;如果第0位是0,跳转到M001
L MW 104 //装载当前计数器的累计值
+ 1 //计数器自加1
T MW 104 //存储计数器当前值(累计bool量个数)
L 4 //装载常数4
>=I //判断计数器当前值是否大于等于4
= M 106.0 //将当前的逻辑结果RLO赋给M106.0(输出)
JC OUT //如果计数器当前值大于等于4,跳转到OUT离开循环体,否则往下执行
M001: L LD 22 //装载bool量的状态到ACCU1
SRD 1 //ACCU1里面的内容右移一位,为判断下一个位做准备
T LD 22 //暂存右移一位后的bool量的状态
L LW 20 //装载当前的循环次数
LOOP NEXT //跳转到NEXT标签,循环次数减1,至0时,离开循环往下执行
OUT: NOP 0
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54774条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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