当前位置: 主页 > PLC控制

SCL做循环字移功能

各位高手大神:

由于需要,我需要做循环字移功能,要求如下:

1:数据存储区为DB1,内部建立约100个int格式字,DB1.DBW0、DB1.DBW2、DB1.DBW4………

2:移位的条件由我自己定义,可能是某个信号位=1的上脉冲触发(例如:x0=1)

3:移位规则:当X0=1上升沿时,开始移位,将DBW0中的值移位到DBW2中,同时将DBW2中的值移位到DBW4中,将DBW4中的值移位到DBW6中,如此循环,将我定义的100组int格式的字全部移动一次(这些移位动作对于我建立的那100个int变量来说是同时移动的)

4:我是1200系列的PLC,不支持STL,只支持scl,请问用SCL如何能达到我上述功能?

最佳答案

你在全局数据块建立一个数组,元素从1到100,即数据类型填Array[1..100]ofInt。
设置接口,见截图
程序如下:
IF#EnableTHEN
FOR#i:=1TO99DO
#array_in[#i+1]:=#array_in[#i];
END_FOR;
END_IF;

图片说明:

SCL做循环字移功能SCL做循环字移功能

提问者对于答案的评价:
感谢你的帮助,但是这个循环还是不行,enable的条件我是用的上升沿,比如,当我的数组中的第一个字的值为123,当条件满足后,数组中的第一个字值123会移动到第二个字中,第二个字中的值会移动到第三个字中……如此类推,现在的结果是,当条件满足后,数组中所有的字的值都是123

最佳答案作者回复:
抱歉,之前写的匆忙点。下面我测试了下。
IF#EnableTHEN
FOR#i:=1TO99DO
#array_in[100–#i+1]:=#array_in[100-#i];
END_FOR;
#array_in[1]:=0;清零首个元素(可选)
END_IF;

  • 关注微信

猜你喜欢

微信公众号