发表于:2011/3/26 21:52:44
#0楼
0. 引言
那天有一位问起“循环移位”指令,因为其新设备里有PLC,他看了一点资料;我告之,多的我也不知道,但移位指令可以说一说。
有计算机基础知识、或学过汇编语言的,对PLC移位指令很好理解。而于上了年纪又无基础者,则须通俗易懂地去解说。
今特把所述内容整理了一下,以供后续参考;目标PLC选用台达ES2。
1.循环移位的概念
1)用绳子将一列珠子串起来,然后将绳子两头系在一起,珠子就可构成一个环;若用手推动珠子,珠子就可以沿着绳子“循环”移动。
若选珠子为16颗、绳子足够长,则可把环拉直,而使珠子排成一排;推动珠子仍可循环,但循环后仍使珠子成为一条直线。若假设这16颗珠子对应16位二进制数,这就相当于PLC中的一个数据“字”。
如果能通过某种方法,使“字”中的位像珠子一样移动,那么就是数据位“循环”;实现这种移动的指令,就是循环指令。
2)数据位的移动,与珠子的移动,当然不会完全相同;通常,在做循环移位运算时,会把移动的最末一位记入进位标志M1022。
当进位标志M1022不参与循环时,就称为不带进位,其指令就是不带进位的指令;若进位标志M1022参与循环,就是带进位循环,其指令就是带进位循环指令。
2.PLC中的循环移位
1)循环右移一位的情况。参见附图1,先使最右边一位(b0位)为1,其余为0。设每次循环右移一位,则移位一次后,“1”就被移出并转移到了b15位。
同时,被移出的最末一位的值,将送到M1022;此处仅移一位,则就是原b0位→M1022。
为加深印象,下面结合具体的指令来进行讲解。
2)循环右移4位的情况。参见附图2,首先仍使b0位为1,其余为0。移位一次后,原b0位的“1”,到了b12位。
但附图2的“过程示意”并不准确;因为,数据的位并没有被“移出”在外,而是如串在绳子上的珠子一般,逐位顺序移动的。
此时,M1022的值,是原b3的值,因为它是被最末移出的。
3.一个简单示例(ROR)
1)右循环移位指令ROR。该指令的目标元件,可以是字元件、也可以是由位组合成的字,故不妨使用K4M0来进行试验,并通过D0来观察其值(梯形图监控时),程序参见附图3。
PLC上电运行时,使M0置1,如附图1的情况;接通一次X0,稍作延时后,M20接通一个脉冲周期,作为移位信号。接通X1,清零K4M0,相当于停止信号。
该程序,用台达WPLSoft编程软件编制。
2)运行程序,监控梯形图,D0显示为H1(调整为十六进制显示);第一次接通X0,D0显示H8000,说明b15为1,其余为0,与附图1的演示相同。以后依此类推,其运行结果可参见附图4。
第16次移位后,又回到了起始状态,可以继续下一个循环。
4.结语
这是一个非常简单的介绍,不知对入门者有无参考作用。其余移位指令,可仿此试验理解。
本件可作为《自学自会PLC指令——三菱FX2N编程技术及应用》一书的补充材料。
本文同时贴于“中华工控网”博客。
(莫其麟,于20110326)
那天有一位问起“循环移位”指令,因为其新设备里有PLC,他看了一点资料;我告之,多的我也不知道,但移位指令可以说一说。
有计算机基础知识、或学过汇编语言的,对PLC移位指令很好理解。而于上了年纪又无基础者,则须通俗易懂地去解说。
今特把所述内容整理了一下,以供后续参考;目标PLC选用台达ES2。
1.循环移位的概念
1)用绳子将一列珠子串起来,然后将绳子两头系在一起,珠子就可构成一个环;若用手推动珠子,珠子就可以沿着绳子“循环”移动。
若选珠子为16颗、绳子足够长,则可把环拉直,而使珠子排成一排;推动珠子仍可循环,但循环后仍使珠子成为一条直线。若假设这16颗珠子对应16位二进制数,这就相当于PLC中的一个数据“字”。
如果能通过某种方法,使“字”中的位像珠子一样移动,那么就是数据位“循环”;实现这种移动的指令,就是循环指令。
2)数据位的移动,与珠子的移动,当然不会完全相同;通常,在做循环移位运算时,会把移动的最末一位记入进位标志M1022。
当进位标志M1022不参与循环时,就称为不带进位,其指令就是不带进位的指令;若进位标志M1022参与循环,就是带进位循环,其指令就是带进位循环指令。
2.PLC中的循环移位
1)循环右移一位的情况。参见附图1,先使最右边一位(b0位)为1,其余为0。设每次循环右移一位,则移位一次后,“1”就被移出并转移到了b15位。
同时,被移出的最末一位的值,将送到M1022;此处仅移一位,则就是原b0位→M1022。
为加深印象,下面结合具体的指令来进行讲解。
2)循环右移4位的情况。参见附图2,首先仍使b0位为1,其余为0。移位一次后,原b0位的“1”,到了b12位。
但附图2的“过程示意”并不准确;因为,数据的位并没有被“移出”在外,而是如串在绳子上的珠子一般,逐位顺序移动的。
此时,M1022的值,是原b3的值,因为它是被最末移出的。
3.一个简单示例(ROR)
1)右循环移位指令ROR。该指令的目标元件,可以是字元件、也可以是由位组合成的字,故不妨使用K4M0来进行试验,并通过D0来观察其值(梯形图监控时),程序参见附图3。
PLC上电运行时,使M0置1,如附图1的情况;接通一次X0,稍作延时后,M20接通一个脉冲周期,作为移位信号。接通X1,清零K4M0,相当于停止信号。
该程序,用台达WPLSoft编程软件编制。
2)运行程序,监控梯形图,D0显示为H1(调整为十六进制显示);第一次接通X0,D0显示H8000,说明b15为1,其余为0,与附图1的演示相同。以后依此类推,其运行结果可参见附图4。
第16次移位后,又回到了起始状态,可以继续下一个循环。
4.结语
这是一个非常简单的介绍,不知对入门者有无参考作用。其余移位指令,可仿此试验理解。
本件可作为《自学自会PLC指令——三菱FX2N编程技术及应用》一书的补充材料。
本文同时贴于“中华工控网”博客。
(莫其麟,于20110326)
[此贴子已经被jint于2013/12/16 15:58:48编辑过]