位移位指令在ST编程中的指令格式: 等同于LAD中的SFTL指令如下图所示: 通过下面的示例来进行讲解: 示例的功能要求: 通过一个按钮控制三组灯。要求每按一次按钮点亮一组灯,在三组灯全部点亮后,在每按一次按钮,一次熄灭一组灯,长按按钮大于5s,灯全部熄灭。 具体程序如下: 具体讲解下上面语句的思路: 1、首先判断判断灯是否全部点亮,即用LIGHT_3来判断。 2、之后进行位移位。每使能一次START,则左移一位。 3、调用一个定时器,当START使能大于5s,则定时器得电,TS1=1。 4、使用定时器线圈TS1,复位所有灯。 重点说的就是位移位指令的使用: SFTLP( START , M11 , K3 , K1 , LIGHT_1); 这条语句什么意思呢? 就是说每当START使能一次,同时M11为1,则将1依次赋值给LIGHT_1、LIGHT_2、LIGHT_3。当M11位0,则将0依次赋值给LIGHT_1、LIGHT_2、LIGHT_3。 下面看看仿真结果: 第一次按按钮,点亮一组灯: 第二次按按钮,再点亮一组灯: 第三次按按钮,再点亮一组灯: 第四次按按钮,熄灭一组灯 当常按按钮超过5s,灯全部熄灭: |
|