顺序控制指令共有7条,分别是顺序器装载指令(SQL)、顺序器输出指令(SQO)和顺序器比较指令(SQC)、FIFO装入(FFL)及FIFO卸出(FFU)、LIFO装入(LFL)和LIFO卸出(LFU)。
1.顺序器装入(SQL)
SQL指令的梯形图符号表示为
顺序器装入指令将源地址中的数据装入文件中,装入的个数由长度参数设置。对顺序器装入指令编程时需要输入下列参数:
1)文件(File):输入顺序器文件的起始地址,用于存储装入的16位数值。
2)源(Source):输入源文件的地址,装入文件的来源。可以是PLC的输入文件,也可以是N7整数文件。
3)控制(Control):用于存储顺序器文件指令的状态字和长度值等信息的控制字。顺序器指令控制文件的结构见表4-20。
4)长度(Length):是顺序器队列的长度,不包含起始地址在内,如果长度是4,起始地址是N7:0,则整个队列是N7:1、N7:2、N7:3、N7:4,一共是4个。
5)位置(Position):显示指令的位置指针值。
如果起动指令时的位置指针值等于0,则控制器从编程模式变为运行模式时,指令根据第一次扫描时梯级条件的真或假执行下列操作:第一次扫描时如果梯级条件为真,顺序装载指令将源数据装载到队列的首地址处,也就是位置“0”指向的队列地址(N7:0);第一次扫描时如果梯级条件为假,当条件由假变真时,将向位置“1”(N7:1)指向的队列地址上装入源文件的数值,N7:0中的数据不变。
表4-20 顺序器控制指令控制文件结构
例如,在图4-25中顺序器装载指令要装载的源文件是I:0.0,也就是PLC输入端子中位于0槽的第0个输入字(从端子I:0/0到端子I:0/15,一共16个输入端子),将源文件装载到队列中,其中队列的长度是3,N7:1是队列的首地址,依次是N7:2、N7:3、N7:4。控制字是R6:1。程序执行时,当按钮由OFF变到ON时,将端口I:0.0的值装入队列一次,装入位置可以根据队列的位置指针得到。当I:0.0/1闭合3次后,位置值Position为3,N7:2、N7:3、N7:4中的数值均为2,R6:1/DN为真,O:0/1有效。若位置值Posi-tion为2,当前I:0.0/0已经闭合有效,此时再闭合I:0.0/1,I:0.0中的数据为3,这时装入到N7:4中的数据是3。
图4-25 顺序器指令应用举例
2.顺序器输出(SQO)
SQO指令的梯形图符号表示为
SQO指令将文件队列中的16位整数依次输出到目的文件中。对顺序器输出指令编程时需要输入下列参数:
1)文件(File):输入将要传送的队列的首地址。此处输入的是16位数据的地址。
2)掩码(Mask):输入掩码,掩码的作用是将队列中的数值传送到目的地址时,对数据进行处理,只有对应的掩码位为1时,传送数据的该位才能通过,对应的掩码位为0时,传送数据的该位不能通过。
3)目的(Dest):队列中的数据需要传送到的目的地址。
4)控制(Control):用于存储顺序器文件指令的状态字和长度值等信息的控制字。顺序器指令控制文件的结构见表4-20。
5)长度(Length):顺序器队列的长度,不包含起始地址在内,如果长度是4,起始地址是N7:0,则整个队列是N7:1、N7:2、N7:3、N7:4,一共是4个。
6)位置(Position):显示指令的位置指针值。
如果启动指令时的位置值等于0,则控制器从编程模式变为运行模式时,指令根据第一次扫描时梯级条件的真或假执行下列操作:如果梯级条件为真,则指令将向目标地址传送队列的首地址处的数值,也就是位置“0”指向的地址中的数据(N7:40);如果梯级条件为假,当条件由假变真时,将向目标地址传送位置“1”(N7:41)指向的地址中的数值。
例如,图4-26中,该梯形图程序实现了单按钮的起/停控制。在顺序器输出指令SQO中,队列的长度是2,首地址是N7:0,掩码是0001H,只有最低位可以输出,也就是队列中的最低位可以输出到O:0/0。设置N7:1=0001H,N7:2=0000H。第1次按下按钮时,将N7:1中的数据传送到输出端口O:0.0,因为除最低位外,所以位都被屏蔽,所以只有O:0.0位被置位,其余各个输出位被清0;第2次按下按钮时,将N7:2中的数据送到输出端口,O:0.0被清0。
图4-26 顺序器输出指令SQO指令应用举例(www.xing528.com)
3.顺序器比较(SQC)
SQC指令的梯形图符号表示为
SQC指令将队列中的数据中没有屏蔽的位依次与源数据进行比较,如果没有屏蔽的位与源数据中的位依次匹配时,指令发现位FD被置位。SQC中的其他参数与顺序器输出指令SQO和顺序器装载指令SQL相同。
通过数据监控设置数据N7:1=1;N7:2=3;N7:3=6;N7:9=19。在图4-27所示梯形图程序中,将文件中的3个数据N7:1、N7:2、N7:3依次与N7:9比较,其中8个位被屏蔽,只比较剩余的8个位,即高8位中的低4位和低8位中的低4位。当按钮0第1次出现从OFF到ON的跳变时,比较N7:1与N7:9;按钮0第2次出现从OFF到ON的跳变时,比较N7:2与N7:9;按钮0第3次出现从OFF到ON的跳变时,比较N7:3与N7:9;当按钮0第4次出现从OFF到ON的跳变时,位置值显示1,又指向队列比较开始的数据N7:1,再次比较N7:1与N7:9。根据设置的数值,只有比较N7:2与N7:9时,经过掩码0F0FH,屏蔽掉低8位中的高4位后,两个数据匹配,FD状态位被置位。
图4-27 SQC顺序器比较指令应用举例
4.FIFO装入(FFL)和FIFO卸出(FFU)
FFL指令和FFU指令的梯形图符号表示为
FFL和FFU指令是成对使用的。使用它们用来保存数据、取出数据。FFL指令把数据装入用户创建的FIFO堆栈文件内,FFU指令将装载的数据从FIFO堆栈中移出来。它们对堆栈内的数据操作时遵循先进先出的原则。
对于FFL指令,当梯级条件由假变真时,指令将源数据装入堆栈中由位置参数指定的相对偏移地址上,然后位置值增加1,直到堆栈满为止。当堆栈满时,状态位DN被置位,禁止原值再装入堆栈。
对于FFU指令,当梯级条件由假变真时,指令将堆栈中起始地址上的数值卸载到目标地址,然后堆栈中的所有数值都向起始地址方向移动一个元素,位置值减1,直到堆栈空为止,当堆栈空时,堆栈空位EM被置位。
当使用FFL和FFU指令时,对于同一个堆栈,指令中的FIFO参数和控制参数及长度参数设置需要相同。
图4-28所示的梯形图程序中,设定堆栈的起始地址是N7:1,堆栈长度是8个字,即堆栈从N7:1开始到N7:8结束,控制字是R6:0。当按钮0由OFF变到ON时,将源地址N7:0处的数据装入堆栈N7:1,按钮0再次有效时,将N7:0中的数据装入N7:2,N7:1中的数据保持不变。每装入一次,位置值增加1,当位置值等于8时,状态位DN被置位,此时,堆栈已满,FFL指令被终止。
当按钮1由OFF变到ON时,堆栈中起始位置的数据被卸载到目标地址,堆栈中所有数据都向前移动一个元素,即N7:2上的数据移动到N7:1,N7:3上的数据移动到N7:2,依次类推,N7:8上的数据移动到N7:7,N7:8被清0,并且位置值减1,当堆栈空时,状态位EM被置位,此时停止出栈操作。
图4-28 FFL和FFU堆栈指令应用举例
5.LIFO装入(LFL)和LIFO卸出(LFU)
LFL指令和LFU指令的梯形图符号表示为
LFL和LFU指令是成对使用的。使用它们用来保存数据、取出数据。LFL指令把数据装入用户创建的LIFO堆栈文件内,LFU指令将装载的数据从LIFO堆栈中移出来。它们对堆栈内的数据操作时遵循先进后出,后进先出的原则。
对于LFL指令,当梯级条件由假变真时,指令将源数据装入堆栈中由位置参数指定的相对偏移地址上,然后位置值增加1,直到堆栈满为止。当堆栈满时,状态位DN被置位,禁止原值再装入堆栈。
对于LFU指令,当梯级条件由假变真时,指令将堆栈中由位置参数指定的相对偏移地址上的数据卸载到目标地址,然后位置值减1,直到堆栈空为止。当堆栈空时,状态位EM被置位。
当使用LFL和LFU指令时,对于同一个堆栈,指令中的LIFO参数和控制参数及长度参数设置需要相同。
图4-29所示的梯形图程序中,设定的堆栈起始地址是N7:1,堆栈长度是8个字,即堆栈从N7:1开始到N7:8结束,控制字是R6:0。当按钮0由OFF变到ON时,将源地址N7:0处的数据装入堆栈N7:1,按钮0再次有效时,将N7:0中的数据装入N7:2,N7:1中的数据保持不变。每装入一次,位置值增加1,当位置值等于8时,状态位DN被置位,此时,堆栈已满,停止执行装载LFL指令。
当按钮1由OFF变到ON时,堆栈N7:8中的数据首先被装载到目标地址N7:20中,当按钮1再次有效时,N7:7中的数据被装载到N7:20中,体现后进先出的原则。每装载一次,位置值减1,直到位置值为8,LFU指令被终止。被装载堆栈中的数据保持不变(N7:1~N7:8)。
图4-29 LFL和LFU指令应用举例
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。