玉林西门子内存卡一级代理商玉林西门子内存卡一级代理商
湖北西门子PLC代理商,荆门西门子触摸屏代理商,上海西门子变频器代理商
北京西门子交换机供应商,江苏CPU模块代理商,浙江西门子S7-200,S7-300,S7-1500,S7-1200系列代理商,
广州西门子电机代理商,湖北西门子电缆代理商,武汉西门子通讯电缆代理商,上海西门子模块代理商。西门子授权一级代理商
深圳西门子授权总代理商,浔之漫智控技术(上海)有限公司,西门子CN模块授权代理商,西门子电缆授权一级代理商,欢迎致电浔之漫智控技术上海有限公司采购
一、循环移位指令ROR、ROL
ROR指令和ROL指令中的R、L分别表示右移和左移,R、L的含义类似我们的耳机,戴左耳的标有字母L,戴右耳的标有字母R。
ROR指令和ROL指令都是对字元件中的二进制位进行移位。从上图的编程手册截图可
以看到,它们有连续执行型和脉冲执行型,可以用于16位,也可用于32位。把一个字元件看成有16个位置,ROR指令和ROL指令可以对这16个位置进行调整。那它又是怎么调整的呢?
我们以ROR右移指令为例,如上图所示,当驱动条件X0接通后,执行指令ROR D0 K4,把D0的16个二进制数依次向右移动4位,右边为低位,也就是说,移出了低4位。 移出的低4位二进制数循环进入到D0的高位(左边),后移出的1位二进制数同时被传送到进位标志位M8022,如上图“0001”中的“0”。
每执行1次ROR D0 K4指令D0的数据就右移4位,这是一个循环的过程。显然,执行4次该指令后,D0的数据又变得和原来一样。所以,在用到移位指令时,好用脉冲执行型RORP、ROLP。
左移指令ROL和右移指令ROR大同小异,如下图所示,执行指令ROL D0 K4,把D0的数据一次向左移4位,左边为高位,也就是说,移出了高4位。
移出的高4位二进制数循环进入到D0的低位(右边),后移出的1位二进制数同时被传送到进位标志位M8022,如上图“0110”中的“0”。
另外要注意的一点是,在ROR指令和ROL指令中,当终址D是16位的组合位元件时,n=K4;当终址D是32位的组合位元件时,n=K8,否则指令不执行。
知道了ROR指令、ROL指令后,我脑海里立即浮现几种不同的控制信号灯轮流点亮的梯形图,具体怎么实现,我就不在此班门弄斧了,自己私底下悄咪咪地尝试,错了也不至于被耻笑。
ROR指令、ROL指令理解起来相对简单,接下来的这对指令就没这么简单了。
二、带进位循环移位指令RCR、RCL
同样的,RCR指令和RCL指令都是对字元件中的二进制位进行移位。从上图的编程手册截图可以看到,它们有连续执行型和脉冲执行型,可以用于16位,也可用于32位。其中RCR指令和RCL指令中的R、L和上文的含义一样,一个表示右移,一个表示左移。
所谓“带进位”,是指在移位的同时,捎带上进位标志位M8022。那又是在怎样捎带的呢?我们以RCR右移指令为例。
当驱动条件X0接通,执行指令RCR D0 K4,类似于ROR指令,但不一样的是,用胶水把进位标志位M8022和D0粘起来,此时右边的4位,显然不仅仅是属于D0,还有1位是属于M8022。
执行指令RCR D0 K4,进位标志位M8022的数首先被右移,再轮到把D0的16个二进制数依次向右移动。移出的4位二进制数(包括先被右移的进位)循环进入到D0的高位(左边)。显然,移动4位后,M8022的值恰好为D0中b3的值。
同理,带进位左移指令RCL的执行我们直接以下图展示。执行指令RCL D0 K4,同样把进位标志位和D0粘连起来,此时M8022的值依然是首先被移动的那位,它也太可怜了吧。另外,执行完指令后,此时M8022的值为D0中b12的值。
和ROR指令和ROL指令一样,在RCR指令、RCL指令中,当终址D是16位的组合位元件时,n=K4;当终址D是32位的组合位元件时,n=K8,否则指令不执行,且在用到移位指令时,好用脉冲执行型RCRP、RCLP。
以上两种指令,都是基于字元件的二进制位移动,接下来我们继续看位元件组合的位移动。
三、位元件的位移指令SFTR、SFTL
根据编程手册的截图,SFTR指令、SFTL指令的操作数有4个,其中源址S指所移动的位元件组合的首址,终址D指被移入数值的位元件组合的首址,S、D的适用软元件为位元件。n1指终址D的长度(位数),n2指S的位数,且n2<n1<1024。< span="" style="padding: 0px; margin: 0px; box-sizing: border-box; font-family: "PingFang SC", "Lantinghei SC", "Microsoft YaHei", "HanHei SC", "Helvetica Neue", "Open Sans", Arial, "Hiragino Sans GB", 微软雅黑, STHeiti, "WenQuanYi Micro Hei", SimSun, sans-serif;">
SFTR指令、SFTL指令操作数不少,看得人头皮发麻,那它们的具体执行到底是怎样的呢?我们以SFTR指令为例。
当驱动条件X10接通,执行指令SFTR X0 M0 K12 K4。根据定义,X的位元件组合X3~X0为源操作数,共4位,目的操作数为M的位元件组合M11~M0,共12位。
指令执行后,X3~X0的0110分别向M11~M0右移,顺便把M3~M0原来的值1001给挤掉。显然,在指令执行完毕后,X3~X0的值保持不变,而M11~M0中的M11~M8的值被X3~X0的0110覆盖,且M3~M0原来的值1001被舍去,变为0110。
知道了右移是怎么一回事,对左移的理解想必也是不在话下。我们直接用一张图概括。
当驱动条件X10接通,执行指令SFTL X0 M0 K12 K4。指令执行后,X3~X0的0110分别向M3~M0左移,顺便把M11~M9原来的值0101向左给挤掉。显然,在指令执行完毕后,X3~X0的值保持不变,M3~M0的值被X3~X0的0110覆盖,且M11~M9原来的值0101被舍去,变为0110。
在应用SFTR指令、SFTL指令时,好使用脉冲执行型SFTRP、SFTLP。另外,源址S、终址D可以用同种位元件,此时应注意它们的编号不能重叠,否则会发生运算错误。
知道了位元件的位移指令是怎么回事之后,还有两个指令正在嗷嗷待哺,等着我们去学习呢!事不宜迟,我们继续往下看。
四、字元件移动指令WSFR、WSFL
跟据编程手册的截图,WSFR指令、WSFL指令的操作数也有4个,其中源址S指所移动的字元件组合的首址,终址D指被移入数值的字元件组合的首址,S、D的适用软元件为字元件。n1指终址D的长度(元件个数),n2指S的元件个数,且n2<n1<512。< span="" style="padding: 0px; margin: 0px; box-sizing: border-box; font-family: "PingFang SC", "Lantinghei SC", "Microsoft YaHei", "HanHei SC", "Helvetica Neue", "Open Sans", Arial, "Hiragino Sans GB", 微软雅黑, STHeiti, "WenQuanYi Micro Hei", SimSun, sans-serif;">
类似于SFTR指令和SFTL指令,WSFR指令、WSFL指令的差别在于其操作软元件为字元件,而SFTR指令和SFTL指令操作软元件是位元件。
WSFR指令、WSFL指令的执行和位元件的位移指令非常相似,我们以SFTR指令为例。
当驱动条件X10接通,执行指令WSFR D20 D0 K12 K4。根据定义,D的字元件组合D23~D20为源操作数,共4个,目的操作数为D的位元件组合D11~D0,共12个。
指令执行后,D23~D20的数据分别向D11~D0右移,顺便把D3~D0原来的数据给挤掉。显然,在指令执行完毕后,D23~D20的值保持不变,而D11~D0中的D11~D8的值被D23~20的数据覆盖,且D3~D0原来的数据被舍去。显然和SFTR指令的执行大同小异。看到这里,关于WSFL指令的执行,我想不用我说,大家也已经知道了。为了成双成对,我在这里也给出WSFL指令的执行图示如下。
还是同样的道理,在应用WSFR指令、WSFL指令时,好使用脉冲执行型WSFRP、WSFLP。另外,源址S、终址D可以用同种字元件,此时应注意它们的编号不能重叠,否则会发生运算错误。
- 西门子S7-400模块供应CPU416F-2 2023-11-04
- 西门子全国代理6AV2123-2DB03-0AX0 2023-11-04
- 西门子CPU200416F-2代理商 2023-11-04
- 西门子CPU224XPCN紧凑型单元 2023-11-04
- 贵港西门子CPU一级代理商 2023-11-04
- 西门子CPU模块416F-2模块控制器 2023-11-04
- 雅安西门子S7-1200代理商 2023-11-04
- 西门子CPU224XPCN模块控制器 2023-11-04
- 深圳触摸屏供应6AV2123-2GB03-0AX0 2023-11-04
- 眉山西门子S7-1200代理商 2023-11-04