您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 5循环及移位指令解析
项目:彩灯的循环控制现有16个彩灯,摆放成圆形,按下启动按钮,彩灯以顺时针方向间隔1秒轮流点亮,循环三次后彩灯转换成逆时针方向间隔2秒轮流点亮,循环三次后自动停止工作。按下停止按钮,立即停止工作。如何完成控制要求?(1)利用基本指令完成编程。(2)利用步进指令完成编程。(3)利用移位指令完成编程。•利用基本指令完成编程,程序如下:•利用步进指令完成编程任务,参考程序如下:•利用移位指令完成编程任务,参考程序如下:1.助记符、指令代码•循环右移:ROR,DROR,RORP,DRORP。(16/32)•循环左移:ROL,DROL,ROLP,DROLP。(16/32)2.源、目标操作数:•D:KnY,KnM,KnS,T,C,D,V,Z•N:K,H=[D.]的位数。一、循环移位:3.指令格式及功能(1)循环右移说明(一)(1)循环右移说明(二)执行条件成立,[D.]循环右移n位。[D.]高位n位右移,[D.]中原高位n位同时右移,以此类推,[D.]中低位n位移至[D.]中的高位n位。每次执行循环右移n位的最后一位影响标志位M8022(进位标志)。(3)执行图5-45,当X0闭合,D10的值为245。图5-46给出运行的情况,图(a)中,当X1闭合1次,执行ROR指令1次,D10右移3位。此时D10=-24546。同时进位标志M8022为“1”。当X1再闭合1次,再执行ROR指令1次,D10右移3位。此时D10=-11261。同时进位标志M8022为“1”。图(b)中,当X2闭合,执行ROL指令1次,D10的各位左移2位,此时D10=980。同时进位标志M8022为“0”X2再闭合,再执行ROL指令1次,D10的再左移2位,此时D10=3920。同时进位标志M8022为“0”。图5-45循环右移和循环左移图5-46图5-454.举例例1,分析程序,填写D0的数值。例2,分析X1合上,X2重复合上三次后,D11的值为多少?假如ROR指令改成ROL指令?D11初始值变化?K3改变?X1合上,D11的值___________________________;X2第一次合上,D11的值___________________________;X2第二次合上,D11的值___________________________;X2第三次合上,D11的值___________________________;例3,现有16个彩灯,摆放成圆形,按下启动按钮,彩灯以顺时针方向间隔0.5秒轮流点亮,循环两次后彩灯转换成逆时针方向间隔0.5秒轮流点亮,循环两次后自动停止工作。按下停止按钮,立即停止工作。二、字移位指令1、助记符,指令代码字右移:WSFR,WSFRP,FNC36(16)字左移:WSFL,WSFLP,FNC37(16)2、源、目标操作数:[S.]:KnX,KnY,KnM,KnS,T,C,D;[D.]:KnY,KnM,KnS,T,C,D;n1、n2:K,H,n2≤n1≤512。3、操作格式及功能(1)操作格式:(2)操作功能:WSFR:在[S.]中的n2个字元件右移至[D.]开始的n1个字元件中,高字移进,低字溢出。WSFL:在[S.]中的n2个字元件左移至[D.]开始的n1个字元件中,低字移进,高字溢出。(3)WSFR说明:当X0合上,D10~D25单元的变化,如图所示。(4)WSFL说明:当X0合上,D26~D41字单元的变化,如图所示。4、举例,分析程序,说明Y0的工作情况。图5-48带进位的循环3.说明(1)每次执行RCR指令,目标元件(D)中的位带进位循环右移n位,最后被移出的位放入到进位标志M8022中。在运行下一次RCR指令时,M8022中的位首先进入目标元件中。带进位循环右移和循环左移(RCR,RCL)(2)每执行一次RCL指令,目标元件(D)中的位带进位循环左移n位,最后被移出的位放入进位标志M8022中。在运行下一次RCR指令时,M8022中的位首先进入目标元件中。(3)图5-48执行情况如图5-49所示。图(a)为带进位循环右移4位,执行情况如下:X0接通,D1=0000000011111111=255,M8022=0X1接通第1次,D1=1110000000001111=-8177,M8022=1X1接通第2次,D1=1111111000000000=-512,M8022=1X1接通第3次,D1=0001111111100000=8160,M8022=0图(b)为带进位循环左移4位,执行情况如小:X0接通,D1=0000000011111111=255,M8022=0X2接通第1次,D1=0000111111110000=4080,M8022=0X2接通第2次,D1=1111111100000000=-256,M8022=0X2接通第3次,D1=1111000000000111=-4089,M8022=1图5-49图5-485.5.3位右移和位左移(SFTR,SFTL)1.位右移和位左移指令的助记符和功能,见表5-22图5-50SFTR和SFTL3.(1)SFTR命令有4个操作数,如图5-50所示。当X10接通,以源(S.)X0开始的n2(K2)位,向右移入以目标(D.)M0开始的n1(K8)位元件中去。每当X10从OFF→ON,移位一次。移位后,如果源为1,则目标置位,而源复位。(2)SFTL命令也有4个操作数,其动作原理与(1)(3)图5-51解释了图5-50的动作情况。对图(a),如果X0=X1=1,则当X10闭合一次,X1、X0的状态移入M7、M6,此时M7、M6均为1。当X10再闭合一次,M7、M6的状态移入M5、M4,此时M5、M4为1,而M7、M6复位为零,一直到X10第五次闭合,其状态溢出。图(b)的情况与图(a)相似,不同的是图(b)是向左移。(a)往右移的意义(b)往左移的意义图5-51SFTR和SFTL(4)利用SFTR、SFTL命令,可以实现步进顺控。步进顺控时一般都是每次移动一个状态,如例5-8所示。3.指令格式及功能:SFTRPSFTLP(1)位右移说明:当操作条件满足时,位右移指令在n1个指定目标位元件中,右移n2个指定的源元件位元件状态。即n2位[S.]状态右移到n1位[D.],从n1位目标元件的高位进去,而其低位溢出。上述的示例程序操作。位右移的目标元件为:M10~M25,源元件为:X0~X1,当X1由“0”变“1”时,X1、X0的状态传到M25、M24,原来的M25、M24移到M23、M22…以此类推,M11、M10丢失。由图示的方法说明状态的变化。由于连续型操作,每个扫描周期都进行操作,合上一瞬间,就把原操作数状态都移位了。建议使用SFTRP,SFTLP,便于控制。总结•移位控制指令包含:移位:SFTR,SFTL;循环移位:ROR,ROL;字移位:WSFR,WSFL;先入先出(FIFO):SFWR,SFWL。•移位指令为非循环移位,数据移出部分丢失,数据移入部分从其它数据获得。•循环移位:数据在字或双字内的移位,是一种环形的移动。•字移位:字数据在存储空间中的位置调整等功能。•先入先出FIFO:数据管理。例1,当X0合上,分析Y0~Y17工作起情况;当X0断开?例2,分析Y0~Y17的工作情况例5-8某生产过程如下:按起动按钮,电机M1启动工作,延时3s,M1停止,同时电机M2起动运行。前进碰行程开关SQ1,M2停止,M3起动。前进碰行程开关SQ2,M3停止,M4起动。M4运行3s,M1、M2、M3、M4同时工作,又延时3s后全部停止。试用SFTL指令编程。图5-52为I/O分配图,图中X0为起动按钮,X4为停止按钮。图5-53为其梯形图。图5-52例5-8的I/O图图5-53例5-8图5-53中使用了SFTL指令。以M0元件1位向左移入以M10起始的6位元件中去。SFTL的控制触而首次控制M0,必须在M10,M11,…M15得电时闭合,故此在程序的第0行用了一系列的常闭串联触点去控制M0。第43行至58行,为驱动电路。当M10得电,驱动Y0及T0。T0延时时间到,产生移位,M11得电,而M10复位失电。M11得电,驱动Y1,机器运行到触压行程开关SQ1,X1闭合,产生新的移位,M12得电,而M11失电。M12得电,驱动Y2,机器运行到触压行程开关SQ2,X2闭合,产生新的移位。M13得电,而M12失电。M13得电,驱动Y3及定时器T1,延时3s时间到,T1触点闭合,产生新的移位,M14得电,而M13失电。M14得电,驱动Y0、Y1、Y2、Y3,驱动T0。当T0延时3s时间到,产生新的移位,M15得电,而M14失电。M15得电驱动ZRST指令使从M10~M15均失电,程序停止。而再按X0,程序又会进行另一循环。例5-9用SFTL指令编写广告灯光闪烁电路,如例4-6所示。要求有连续,单周,单步控制。I/O图分配如图5-54所示。图中X0为启动,X1为停止,X2为单周/连续切换,X3为单步/连续切换。图5-55为梯形图。图5-54广告灯光I/O分配图中第33行中X3作为单步/连续的控制。当X3关合时,程序为连续动作。S20的状态从左向右移位。当X3断开,每次移位,必须按起动按钮X0图中第10行中X2为单周/连续的控制。当X2闭合时,为连续动作。当X2断开,每次运行到S30时,由于X2断开,不能自动地使S20~S30复位,故为单周。图5-555.5.4字右移、字左移(WSFR,WSFL)1.字左移和字左移命令的助记符和功能如表5-23所示:3.(1)如图5-56所示,WSFR命令的意义是:当X1闭合一次,将以源(S.)D0为首址的4位(n2=K4)元件的数据向右移到目标(D.)以D10为首址的16位(n1=K16)WSFL命令的意义是当X3闭合一次,将以源(S.)D0为首址的4位(n2=K4)元件的数据向左移入到目标(D.)以D10为首址的16位(n1=K16)图5-57字右移和字左移命令(2)执行图5-57,为X0闭合,D3、D2、D1、D0的值分别为40、30、20、10。当X1闭合一次,执行WSFR命令,D25、D24、D23、D22分别为40、30、20、10;X1再闭合一次,则D21、D20、D19、D18分别为40、30、20、10,而D25~D22保持原移入值不变。当X1再闭合一次,则D17、D16、D15、D14分别为40、30、20、10,而D25~D18保持原移入值不变,当X1再闭合一次,D13、D12、D11、D10分别为40、30、20、10。而D25~D14保持原移入值不变。(3)WSFL执行情况与(2)相同,但当X3闭合一次,X0、X1、X2、X3分别为10、20、30、40(4)WSFR、WSFL控制触点,最好采用脉冲触点指令,如图5-57所示5.5.5先进先出(FIFO)(SFWR,SFWD)1.FIFO命令的助记符和功能如表2-24所示:2(1)FIFO为:First-in/First-out(先进先出)(2)SFWR指令为FIFO写入,如图5-58所示,源(S.)D0存放数据,X10每闭合1次,源DO数据写入目标以(D.)D1为首址的10位(n=K10)元件中,其中D1存放指针,X0闭合1次,D1为1,D0数据送D2;当X0第二次闭合,D1为2,D0数据送D3;…。D0数据可每次改变。(3)SFRD为FIFO读出指令。当使用SFRD指令形成FIFO堆栈之后,执行1次SFRD指令,即X20第1次闭合,图5-58中,将以源(S.)D1为首址的10位(n=K10)的FIFO堆栈中D2的数据送目标(D.)D20,指针D1减1。当X2第2次闭合,D3的数据送目标D20,指针D1再减1,……一直到D1数值为0(4)SFWR与SFRD一起使用,且参数n必须相同。图5-59FIFO指令(5)执行图5-59,当X0闭合,D0为100。执行SFWR指令,当X1第1次闭合,D2为100,D1为1;当X1第2次闭合,D3为100,D1为2,…,当X1第9次闭合,D
本文标题:5循环及移位指令解析
链接地址:https://www.777doc.com/doc-3979122 .html