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] of Int。
先设置接口,见截图
程序如下:
IF #Enable THEN
    FOR #i := 1 TO 99 DO
        #array_in[#i + 1] := #array_in[#i];
    END_FOR;
END_IF;

图片说明:

SCL做循环字移功能  

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

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

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc158132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月7日
下一篇 2017年6月7日

相关推荐