TIA博途软件位移指令能将将累加器的内容逐位向左或者向右移动。移动的位数由N决定,向左移N位相当于累加器的内容乘以2N,向右移相当于累加器的内容处理2N。移位指令在逻辑控制中使用也很方便。
(3)循环左移指令(ROL)
当循环左移指令(ROL)的EN位为高电平“1”时,将执行双字循环左移指令,将IN端指定的内容循环左移N端指定的位数,然后写入OUT端指令的目的地址中。循环左移指令(ROL)和参数见下图1。
图1
注意:可以从指令框的“>”下拉列表中选择该指令的数据类型。
用一个例子来说明循环左移指令(ROL)的应用,梯形图如图2所示。
图2
当I0.0闭合时,激活双字循环左移指令,IN中的双字存储在MD10中,假设这个数为2#1001110111111011 1001 1101 1111 1011,除最高4位外,其余各位向左移4位后,双字的最高4位,循环到双字的最低4位,结果是OUT端的MD10中的数是2#1101 1111 1011 1001 1101 1111 10111001,其示意图如下图3所示。
图3
【例】有32盏灯,上电时,1~4盏亮,1s后5~8盏亮,1~4盏灭,如此不断循环,请编写程序。
【解】M0.5是设定的1s脉冲信号,M1.0是首次扫描闭合脉冲,梯形图如图4所示。可以看出,用循环指令编写程序很简洁。此题还有多种解法,请读者自己思考。
图4