内容正文:
第6章 可编程控制器的指令
6.1 概述
6.2 基本逻辑指令
6.3 步进顺控指令
6.4 功能指令简介
第6章 可编程控制器的指令
6.1 概述
用户程序的三种形式:梯形图、指令表和状态转移图(SFC)。
1.梯形图语言
在继电器控制系统中常用的接触器、继电器梯形图的基础上演变而来,与继电器控制系统原理图相呼应。
PLC梯形图使用的内部继电器、定时/计数器等,都由软件实现。主要特点是使用方便、修改灵活,是传统继电器控制系统梯形图的硬件接线所无法比拟的。
典型的梯形图见图6-1。
左右两条垂直线称作左母线和右
母线。在左、右两母线之间,触
点在水平线上相串联,相邻的线
也可以用一条垂直线连接起来,
作为逻辑的并联。
图6-1 典型的梯形图
第6章 可编程控制器的指令
“能流”概念:图6-1中,把左母线假想为电源“相线”,而把右母线假想为电源“零线”。如果有“能流”从左至右流向线圈,则线圈被激励。如没有“能流”,则线圈未被激励。
强调:引入“能流”概念,仅用于说明如何理解梯形图各输出点的动作,实际并不存在这种“能流”。
2.指令表语言
类似于计算机的助记符语
言,可编程控制器最基础
的编程语言。
指令表编程:用一个或几
个容易记忆的字符来代表
可编程控制器的某种操作
功能。
指令表编程举例见图6-2示.
图6-2 基本指令应用举例
第6章 可编程控制器的指令
3.状态转移图(即顺序功能流程图)语言
一种较新的编程语言。用顺序功能流程图来表达一个顺序控制过程。
用状态转移图实现钻孔顺控举例见图6-3示.
图6-3 状态转移图编程例
图中,每一方框表示一个状态,方框中的数字代表顺序步,每一状态对应于一个控制任务,每个状态的转移条件以及每个状态执行的功能可以写在方框右边。
第6章 可编程控制器的指令
6.2 基本逻辑指令
6.2.1 逻辑取指令和输出指令(LD/LDI/OUT)
符号、名称、功能、梯形图、可用软元件见表6-1(P199)。
LD:从输入公共线(左母线)开始,取用常开触点。
LDI:从输入公共线(左母线)开始,取用常闭触点。
OUT:用于对Y、M、S、T、C的线圈的驱动指令,不能用于X。
例:应用如图6-4示.
图6-4 LD、LDI、OUT指令的应用
说明:
1、LD、LDI指令用于输入公共线相连之触点,也可与ANB、ORB指令配合用于分支回路开头。
第6章 可编程控制器的指令
2. OUT指令用于输出继电器、辅助继电器、定时器及计数器。不能用于输入继电器。
3.串联的OUT指令可连续使用任意次。
4.对定时器、计数器使用OUT指令之后,必须跟常数K。
6.2.2 触点串联指令(AND/ANI)
符号、名称、功能、梯形图、可用软元件见表6-2(P200)。
AND:用于单个常开触点的串联。
ANI:用于单个常闭触点的串联。
例:指令应用见图6-5示。
图6-5 AND、ANI指令的应用
第6章 可编程控制器的指令
说明:
1.AND、ANI是单个触点串联连接指令,可连续使用。
2.若需串联由多个触点组合回路(如并联回路),须用ANB(与块)指令。
3.如电路设计正确,可任意次重复使用OUT指令。
4.串联触点个数原则上无限制,但在使用图形编程器和打印机时,每行触点个数应少于10个。连续输出不超过24行。
6.2.3 触点并联指令(OR/ORI)
符号、名称、功能、梯形图、可用软元件见表6-3(P201)。
OR:用于单个常开触点并联。
ORI:用于单个常闭触点并联。
例:指令应用见图6-6示。
说明:
1.只能作为一个接点的并联联接指令,紧接在LD、LDI指令后使
用,可连续使用。
2.将二个以上触点的串联回路与其它回路并联时,须用ORB(或块)指令。
第6章 可编程控制器的指令
图6-6 OR、ORI指令的应用
6.2.4 串联电路块并联指令(ORB)
符号、名称、功能、梯形图见表6-4(P202)。
用于串联电路块(回路)的并联联接。
例:指令应用见图6-7示。
说明:
1.几个串联回路并联时,支路起点以LD、LDI开始,支路终点用ORB指令。
2.如需多个回路并联,在每一回路后面加ORB指令。
第6章 可编程控制器的指令
图6-7 ORB指令的应用
3.也可将所有要并联的回路全部写出,再连续使用与支路个数相同的ORB指令,但不得超过8次。
6.2.5并联电路块串联指令(ANB)
符号、名称、功能、梯形图见表6-5(P202)。
用于并联电路块(回路)的串联联接。
例:指令应用见图6-8示。
说明:
1.各并联回路区段的开头,使用LD或LDI指令;构成各并联回路区段后,再用ANB指令与前面回路串联.
第6章 可编程控制器的指令
图6-8 ANB指令的应用
2.如有多个并联回路区段,可顺次用与块指令与前面回路联接,回路数量无限制。但连续使用与块指令,不得超过8次。
若将图6-8(a)改成图6-8(b)形式,梯形图功能不变,但可减少指令条数。
ANB、ORB指令的混合使用见图6-9示。
第6章 可编程控制器的指令
图6-9 ANB、ORB指令的混合使用
6.2.6 多重输出电路指令(MPS/MRD/MPP)
符号、名称、功能、梯形图见表6-6(P204)。
MPS:进栈
MRD:读栈 作用:将联接点先存贮,用于连接后面的电路。
MPP:出栈
PLC中有11个用于存贮运算中间结果的栈存贮器。
说明:
第6章 可编程控制器的指令
1)使用一次MPS指令,该时刻运算结果就推入栈的第一段;再次使用MPS,当时的运算结果推入栈的第一段,先推入的数据依次向栈的下一段推移。
2)使用MPP指令,各数据依次向上段压移,最上段的数据在读出后从栈内消失。
3) MRD是最上段所存最新数据的读出专用指令,栈内数据不发生下压或上托。
例:指令应用见图6-10示。
图6-10 MPS、MRD、MPP指令的应用
第6章 可编程控制器的指令
6.2.7 主控触点指令(MC/MCR)
符号、名称、功能、梯形图见表6-7(P205)。
MC:主控指令(主控电路块起点)
MCR:主控复位(主控电路块终点) 成对使用
例:指令应用见图6-11示。
图6-11 MC、MCR指令的应用
第6章 可编程控制器的指令
说明:
1.输入X000接通时,执行MC与MCR间指令;X000断开时,从MC到MCR间的指令无效。此时若触点X001、X002闭合,线圈Y000、T0均不得电,线圈Y002也不会在1s后得电。
2.MC指令后,母线(LD、LDI)移至MC触点之后,返回原来母线的指令是MCR。MC、MCR必须成对使用。
3.使用不同的Y、M元件号,可多次使用MC指令。特殊辅助继电器不能用作MC的操作元件。
4. 在MC指令内再使用MC指令时,嵌套级N的编号顺次增大,返回时用MCR指令,从大的嵌套级开始解除。
嵌套举例:见图6-12示。
注:最大嵌套层数为8层(0~7).
6.2.8自保持与解除指令(SET/RST)
符号、名称、功能、梯形图和可用软元件见表6-8(P207)。
SET:置位,令元件自保持ON;
RST:复位,清除动作保持,寄存器清零。
用于输出继电器Y、状态器S、辅助继电器M等作置位和复位操作。
例:指令应用见图6-13示。
第6章 可编程控制器的指令
图6-12 含有嵌套的MC、MCR指令的应用
第6章 可编程控制器的指令
图6-13 自保持与解除指令的应用
说明:
1.X000一接通,即使再断开,Y000也保持接通;X001接通后,即使再断开,Y000也保持断开,对M、S也同样。
2.对同一元件可多次使用SET、RST指令,但最后执行的一条才有效。
3.RST指令也可使数据寄存器D、变址寄存器V、Z的内容清零。
6.2.9定时器、计数器指令(OUT/RST)
符号、名称、功能、梯形图和可用软元件见表6-9(P207)。
OUT:驱动定时器、计数器线圈;
RST:复位输出触点,并将当前数据清“0”。
1.定时器的应用
图6-14中,T0是普通定时器,当触点X000闭合后,定时器T0开始计时,10s后触点T0闭合,线圈Y000得电;若触点X000断开,不论在定时中途,
第6章 可编程控制器的指令
还是在定时时间到后,定时器T0均被复位。T250是积算型定时器,当触点X001闭合后,定时器T250开始计时,在计时过程中,即使触点X001断开或停电,定时器T250仍保持已计时的时间。当触点X00l再次闭合后,定时器T250在原计时时间的基础上继续计时,直到10s时间到。当触点X002闭合,定时器T250被复位。
图6-14 定时器的应用
2.计数器的应用
图6-15中,C0是普通计数器,利用触点X011从断开到闭合的变化,驱动
第6章 可编程控制器的指令
计数器C0计数。触点X0ll闭合一次,计数器C0的当前值加l,直到其当前
值为5,触点C0闭合。以后即使继续有计数输入,计数器的当前值不变。当触点X010闭合,执行RST C0指令,计数器C0被复位,当前值为0,触点C0断开,输出继电器线圈Y001失电。
普通计数器与停电保持计数器区别:PLC掉电后,普通计数器的当前值被清除,而停电保持用计数器则可存储计数器在停电前的计数值。当恢复供电后,停电保持用计数器可在上一次保存的计数值上累计计数。
图6-15 计数器的应用
6.2.10脉冲输出指令(PLS/PLF)
符号、名称、功能、梯形图和可用软元件见表6-10(P209)。
第6章 可编程控制器的指令
又称微分输出指令。用于输出继电器Y、辅助继电器M(特殊继电器除外)的短时间的脉冲输出。
PLS:上升沿微分输出;
PLF:下降沿微分输出。
例:指令应用见图6-16示.
图6-16 脉冲输出指令的应用
说明:
1)PLS、PLF指令作用:将脉宽较宽的输入信号变成脉宽等于PC扫描周期的触发脉冲信号,而信号周期不变。
2)为积算定时器、计数器等提供复位脉冲信号,避免因脉冲过宽(对计数器而言,可能屏蔽掉正常输入信号)或过窄(不能可靠复位)等问题。
第6章 可编程控制器的指令
6.2.11 脉冲式触点指令
符号、名称、功能、梯形图和可用软元件见表6-11(P209)。
说明:
一组与LD、AND、OR指令相对应的脉冲式触点指令。指令中P代表上升沿检测,它表示在指定的软元件触点闭合(上升沿)时,被驱动的线圈得电一个扫描周期T;F代表下降沿检测,它表示在指定的软元件触点断开(下降沿)时,被驱动的线圈得电一个扫描周期T。
脉冲检测指令可用图6-17(P210)形象地说明。波形图中的高电平表示触点闭合。
图6-17 脉冲检测指令的应用
6.2.12 逻辑运算结果取反指令
符号、名称、功能、梯形图、可用软元件见表6-12(P210)。
第6章 可编程控制器的指令
说明:
1.INV指令是把指令所在位置当前逻辑运算结果取反,取反后的结果仍可继续运算。INV指令无操作元件。
2.使用INV指令,在AND或ANI,ANDP,ANDF指令的相同位置处编程。
3.不能象OR,0RI,ORP,ORF指令那样单独使用,也不能象LD,LDI,LDP,LDF那样与母线单独连接。
INV指令的应用如图6-18(P211)示。
在图6-18中,如果X0断开,则Y0接通;如果X0接通,则Y0断开。
图6-18 INV指令的应用
6.2.13 空操作指令(NOP)
符号、名称、功能、梯形图、可用软元件见表6-13(P211)。
第6章 可编程控制器的指令
NOP:空操作,无具体动作,用于程序修改。
例:指令应用指令见图6-19示。
图6-19 NOP指令的应用
说明:
1、在修改或增加程序时,插入NOP指令,可使步序号的改变减到最少。
2、用NOP取代已写入的指令,可改变电路。
3.若将LD、LDI、ANB、ORB等指令改为NOP,程序构成会发生很大变化。
4.执行程序全清操作后,全部指令都变成NOP。
6.2.14 程序结束指令(END)
符号、名称、功能、梯形图、可用软元件见表6-14(P212)。
END:用于程序结束,返回第“0”步。
第6章 可编程控制器的指令
说明:
1.PLC的用户程序存贮区很大,若在
程序最后写入END指令,对END后面的
程序步不再执行。如无END指令,PLC
扫描整个存贮区,程序运行周期加长。
2.调试程序时,将END指令插入各程
序段,便于查找故障和调试。
不同型号PLC,指令系统有差异。PLC功能越强,指令越丰富。
6.3 步进顺控指令
利用IEC标准的流程图(SFC)语言编制步进控制程序,初学者很容易编写复杂的步进控制程序,工作效率大大提高。
SFC语言:一种通用的流程图语言。三菱小型PLC在基本逻辑指令之外增加两条简单的步进梯形指令(STL,RET),同时辅之以大量状态元件,就可用类似于SFC语言的状态转移图方式编程。
步进梯形指令(STL):利用内部软元件进行工序步进式控制的指令。
返回指令(RET):指状态(S)流程结束,用于返回主程序(母线)的指令。
第6章 可编程控制器的指令
6.3.1 状态转移图
1.状态转移图的基本概念
又称功能图或功能流程图,一种描述顺序控制系统的图形表示方法,专用于工业顺序控制程序设计的一种功能性说明语言。
主要由“状态”、“转移条件”、“转移方向”、等元素组成。
(1)状 态
状态的符号如图6-21示。矩形框中可写上该状态的编号或代码。
①初始状态
功能图运行的起点,一个控制系统至少有一个初始状态。图形符号为双线的矩形框,如图6-22示.
图6-21 状态的图形符号 图6-22 初始状态的图形符号
②工作状态
根据系统是否运行,状态可分为动态和静态两种。动状态是指当前正在
第6章 可编程控制器的指令
运行的状态,静状态是没有运行的状态。
③与状态对应的动作
表示方法如图6-23示。
(2)转 移
用一个有向线段表示转移的方向。两个状态之间的有向线段上再用一段横线表示这一转移。转移的符号如图6-24示.
图6-23 状态下动作的表示 图6-24 转移符号
转移条件:指使系统从一个状态向另一个状态转移的必要条件,通常用文字、逻辑方程及符号来表示。
2.状态的功能
称为“状态”的软元件是构成状态转移图的重要元素。FX2N系列可编程控制器的软元件中有900点状态(S0-S899)可用于构成状态转移图。
第6章 可编程控制器的指令
每个状态具有驱动负载、指定转移方向以及指定转移条件三个功能。
图6-25中:①状态S20有效时,输出Y0,Y1动作,程序等待转移条件X10动作。②X10瞬时接通,动作状态就从S20向S2l转移,同时S20自动断开。③S20转到S2l,使Y0 置OFF,Y2置 ON。在上一状态中由SET指令驱动的Y1保持接通。状态转移图、步进顺控图和助记符指令如图6-25示。
编程顺序:先进行负载的驱动处理,接着进行转移处理。
图6-25 状态的功能
3.状态转移图的构成规则
(1)状态与状态不能相连,必须用转移分开;
(2)状态与转移、转移与状态之间的连接采用有向线段,从上向下画时,可以省略箭头;当有向线段从下向上画时,必须画上箭头,以表示方向;
(3)一个状态转移图至少要有一个初始状态。
第6章 可编程控制器的指令
举例:某冲压机状态转移图。
工作顺序分为三个状态:初始、
下冲和返回。
初始位置是冲头抬起,处于高位;
按动启动按钮时,冲头向工件冲
击;到最低位置时,触动低位行
程开关;然后冲头抬起,回到高
位,触动高位行程开关,停止运
行。 图6-26 冲压机状态转移图
注意:初始状态到下冲状态的转移须满足启动信号X0和高位行程开关信号X2同时为ON;从下冲状态到返回状态,须满足低位行程开关X1为ON。
6.3.2 编程方法
1.单序列状态转移图的编程方法
图6-27中,旋转工作台用凸轮和限位开关实现运动控制。初始状态时,左限位开关X3为ON,按下启动按钮X0,Y0变为ON,电机驱动工作台沿顺时针正转,转到右限位开关X4所在位置时暂停5s(用T0定时),定时时间到时Y1变为ON,工作台反转,回到限位开关X3所在的初始位置时停止转动,系统回到初始状态。
第6章 可编程控制器的指令
图6-27 状态转移图与步进梯形图
工作台一个周期的运动由图中自上而下的4个状态组成,它们分别对应于S0,S20~S22,S0是初始状态。
第6章 可编程控制器的指令
使用STL指令应注意:
(1)与STL触点相连的触点应使用LD或LDI指令.
(2)STL触点可以直接驱动或通过别的触点驱动Y,M,S,T等元件的线圈和应用指令.
(3)由于PLC只执行活动状态对应的电路块,使用STL指令时允许双线圈输出.
(4)在活动状态转移过程中,相邻的两个状态元件会同时ON一个扫描周期,可能会引发瞬时的双线圈问题。
(5)OUT指令与SET指令均可用于活动状态的转移.
在STL区内的OUT指令用于状态转移图中的跳转。如果想跳回已经处理过的步,或向前跳过若干步,可对状态继电器使用OUT指令(见图6-28)。OUT指令还可以用于远程跳转,即从状态转移图中的一个序列跳到另外一个序列(见图6-29)。
(6)STL指令不能与MC/MCR指令一起使用。
(7)并行序列或选择序列中分支处的支路数不能超过8条,总的支路数不能超过16条。
(8)在转移条件对应的电路中,不能使用ANB,ORB,MPS,MRD和MPP指令。
第6章 可编程控制器的指令
图6-28 状态转移图中的跳转 图6-29 远程跳转
(9)与条件转移指令(CJ)类似,PLC不执行处于断开状态的STL触点驱动的电路块中的指令.
(10)M2800~M3071是单操作标志,当图6-30中M2800的线圈通电时,只有它后面第一个M2800的边沿检测触点(2号触点)能工作,而M2800的1号和3号脉冲触点不会动作。M2800的4号触点是使用LD指令的普通触点,M2800的线圈通电时,该触点闭合。
借助单操作标志可用一个转移条件实现多次转移。图6-31中,当S20为活动状态,X0的常开触点闭合时,M2800的线圈通电,M2800的第一个上升沿检测触点闭合一个扫描周期,实现状态S20到状态S21的转移。 X0的常
第6章 可编程控制器的指令
开触点下一次由断开变为接通时,因为S20是不活动状态,没有执行图中的第一条LDP M2800指令,S21的STL触点之后的M2800触点闭合一个扫描周期,系统由状态S21转移到状态S22。
图6-30 单操作标志 图6-31 单操作标志的使用
6.3.3选择序列的编程方法
复杂控制系统的状态转移图由单序列、选择序列和并行序列组成,掌握选择序列和并行序列的编程方法,可将复杂的状态转移图转换为梯形图。
自动门控制系统的状态转移图和梯形图见图6-32。
工作过程:人靠近自动门时,感应器X0为ON,Y0驱动电机高速开门,碰到开门减速开关X1时,变为低速开门。碰到开门极限开关X2时电机停转,开始延时。若在0.5s内感应器检测到无人,Y2起动电机高速关门。碰到
第6章 可编程控制器的指令
关门减速开关X4时,改为低速关门,碰到关门极限开关X5时电机停转。
在关门期间若感应器检测到有人,停止关门,T1延时0.5s后自动转换为高速开门。
图6-32 自动门控制系统梯形图
第6章 可编程控制器的指令
1.选择序列分支的编程方法
图6-32中状态S23之后有一个选择序列的分支。当状态S23是活动状态(S23为ON)时,如果转移条件X0为ON(检测到有人),将转移到状态S25;如果转移条件X4为ON,将进入状态S24。
如果某一状态的后面有N条可选择的分支序列,则该状态的STL触点开始的电路块中应有N条分别指明各转移条件和转移目标的并联电路。
2.选择序列的合并的编程方法
图6-32中状态S20前有一个由两条支路组成的选择序列的合并,当S0为活动状态,转移条件X0得到满足,或者状态S25为活动状态,转移条件T1得到满足,都使状态S20变为活动状态,同时系统程序将状态S0或状态S25复位为不活动状态。
设计梯形图时,只要正确确定每一步的转移条件和转移目标,就能“自然地”实现选择序列的合并。
6.3.4 并行序列的编程方法
举例:某专用钻床加工圆盘状工件上均匀分布孔示意图见图6-33(a)示,控制系统状态转移图见图6-33(b)。
第6章 可编程控制器的指令
图6-33 组合钻床的状态转移图
工作过程:放好工件后,按下启动按钮X0,Y0变为ON,工件被夹紧,夹紧后压力继电器X1为ON,Y1和Y3使两只钻头同时开始向下进给。大钻头钻到由限位开关X2设定的深度时,Y2使它上升,升到由限位开关X3设定的
第6章 可编程控制器的指令
起始位置时停止上升。小钻头钻到由限位开关X4设定的深度时,Y4使它上升,升到由限位开关X5设定的起始位置时停止上升,同时设定值为3的计数器C0的当前值加1。两个都到位后,Y5使工件旋转120O,旋转到位时X6为ON,旋转结束后又开始钻第二对孔。3对孔都钻完后,计数器的当前值等于设定值3,转移条件C0满足。Y6使工件松开,松开到位时,限位开关X7为ON,系统返回初始状态。
注意:状态S2l之后,有一个选择序列的合并,还有一个并行序列的分支。在状态S29之前,有一个并行序列的合并,还有一个选择序列的分支。在并行序列中,两个子序列中的第一个状态S22和S25是同时变为活动状态的,两个子序列中的最后一个状态S24和S27不是同时变为不活动状态的。
图6-33(b)中,当状态S21是活动状态,并且转移条件X1 ON时,状态S22和S25同时变为活动状态,两个序列开始同时工作。在梯形图中,用S21的STL触点和X1的常开触点组成的串联电路来控制SET指令对S22和S25同时置位,系统程序将前级状态S2l变为不活动状态。
图6-33(b)中并行序列合并处的转移有两个前级状态S24和S27,根据转移实现的基本规则,当它们均为活动状态并且转移条件满足,将实现并行序列的合并。
图6-34是用STL指令编制的步进梯形图。
第6章 可编程控制器的指令
图6-34 组合钻床的步进梯形图
图6-34中,S27的STL触点出现了两次,如果不涉及并行序列的合并,同一状态继电器的STL触点只能在梯形图中使用一次。串联的STL触点的个数不能超过8个,即一个并行序列中的序列数不能超过8个。
6.4 功能指令简介
6.4.1 FX系列PLC功能指令的表示方法与数据结构
1.功能指令的表示方法
第6章 可编程控制器的指令
FX系列PLC采用计算机通用的助记符形式表示功能指令。一般用指令的英文名称或缩写作为助记符.例如,图6-35中的BMOV表示数据块传送指令。
图6-35 功能指令示例
图中,[S]表示源操作数,[D]表示目标操作数。源操作数或目标操作数不止一个时,可表示为[S1],[S2],[Dl],[D2]等。n或m表示其它操作数,它们常用来表示常数,或源操作数和目标操作数的补充说明。
指令助记符占一个程序步,每一个16位操作数和32位操作数分别占2个和4个程序步。
图中给出了应用指令BMOV的指令表和步序号,指令中的SP表示在用编程器输入时,在两个操作数之间要按标有“SP”的空格键。
指令功能:常开触点X0接通时,将3个(n=3)数据寄存器D10~D12中的数据传送到D20~D22中去。
第6章 可编程控制器的指令
2.32位指令与脉冲执行指令
(1)32位指令
图6-35中,助记符MOV之前的“D”表示处理32位(bit)数据,这时相邻的两个数据寄存器组成数据寄存器对,该指令将D11,D10中的数据传送到D13,D12中去,D10中为低16位数据,D11中为高16位数据。
处理32位数据时,为避免出现错误,建议使用首地址为偶数的操作数。没有“D”时表示处理16位数据。
(2)脉冲执行指令
图6-35中,MOV后面的“P”表示脉冲执行,即仅在X1由OFF→ON状态时执行一次。如果没有“P”,在X1为ON的每一扫描周期指令都要被执行,称为连续执行。INC(加1)、DEC(减1)和XCH(数据交换)等指令一般应使用脉冲执行方式。
(3)数据格式
① 位元件与位元件的组合
位元件用来表示开关量的状态,如常开触点的通、断,线圈的通电和断电,分别用二进制数1和0表示,或称为该编程元件处于ON或OFF状态。X,Y,M和S为位元件。
第6章 可编程控制器的指令
功能指令中的操作数可取K(十进制常数),H(十六进制常数),如KnX,KnY,KnM,KnS,T,C,D,V和Z。
② 字元件
一个字由16个二进制位组成,字元件用来处理数据.
例如,定时器和计数器的设定值寄存器、当前值寄存器和数据寄存器D都是字元件,位元件X,Y,M,S等也可组成字元件进行数据处理。
(4)变址寄存器V,Z
在传送、比较指令中,变址寄存器V,Z用来修改操作对象的元件号,在循环程序中常使用变址寄存器。
对于32位指令,V为高16位,Z为低16位。
32位指令中V,Z自动组对使用。这时变
址指令只需指定Z,Z就能代表V和Z的组
合。
变址寄存器的使用见图6-36.各触点接
通时,常数10送到V0,常数20送到Z1,
ADD(加法)指令完成运算(D5V0)+(D15Z1)
→(D40Z1),即(D15)+(D35)→(D60)。 图6-36 变址寄存器的使用
第6章 可编程控制器的指令
6.4.2 程序流控制指令
1.条件跳转指令(FNC00)
指针P用于分支和跳转程序。在梯形图中,指针放在左侧母线的左边。FX2N系列有64点分支用指针(P0~P63)。
条件跳转指令CJ用于跳过顺序程序中的某一部分,以控制程序的流程。
图6-37中,X0为ON时,程序跳到指针P8处; 如果X0为OFF,不执行跳转,程序按原顺序执行。跳转时,不执行被跳过的那部分指令。
2.子程序调用与子程序返回指令
子程序调用指令CALL(FNC01)的操作数为P,子程序返回指令SRET(FNC02)无操作数。
图6-37 CJ指令的应用 图6-38 子程序调用
第6章 可编程控制器的指令
图6-38中,X10为ON时,CALL指令使
程序跳到指针P8处,子程序被执行,
执行完SRET指令后返回到104步。
子程序中调用子程序称为嵌套调用,
最多可嵌套5级。图6-39中的CALL(P)
P11指令仅在X0由OFF变为ON时执行一
次。在执行子程序1时,如果X1为ON,
CALL P12指令被执行,程序跳到P12
处,嵌套执行子程序2。执行第二条
SRET指令后,返回子程序1中CALL
P12指令的下一条指令,执行第一条
SRET指令后返回主程序中CALL P11
指令的下一条指令。 图6-39 子程序的嵌套调用
3.中断指令
FX2N系列PLC的中断事件包括输入中断、定时中断和高速计数器中断.发生中断时,CPU停止执行当前的工作,立即执行预先写好的相应的中断程序.
第6章 可编程控制器的指令
中断返回指令IRET、允许中断指令EI和禁止中断指令DI的指令编号分别为FNC03~FNC05,均无操作数,分别占用一个程序步。
PLC通常处于禁止中断状态,指令EI和DI之间的程序段为允许中断的区间,当程序执行到该区间时,如果中断源
产生中断,CPU将停止执行当前程序,
转去执行相应的中断子程序,执行到
中断子程序中的IRET指令时,返回原
断点,继续执行原来的程序。
如有多个中断信号依次发出,则优先
级按发生的先后为序.若同时发生多个
中断信号,则中断指针号小的优先.
图6-40 中断指令的使用
4.主程序结束指令(FNC06)
主程序结束指令FEND无操作数,占用一个程序步,表示主程序结束和子程序区的开始。执行到FEND指令时,PLC进行输入输出处理、监控定时器刷新,完成后返回第0步。
第6章 可编程控制器的指令
5.监控定时器指令(FNC07)
监控定时器指令WDT无操作数,占用一个程序步。
监控定时器又称看门狗,在执行FEND和END指令时,监控定时器被刷新(复位).PLC正常工作时扫描周期(从0步到FEND或END指令的执行时间)小于它的定时时间。如外部干扰使PLC偏离正常的程序执行路线,监控定时器不再被复位,定时时间到时,PLC将停止运行,CPU-E发光二极管点亮.
6.循环指令
FOR(FNC08)指令用来表示循环区的起点,它的源操作数N用来表示循环次数(N=1~32767),可以取任意的数据格式。如果N为负数,当作N=1处理,循环可嵌套5层。
NEXT(FNC09)是循环区终点指令,无操作数。
FOR与NEXT之间的程序被反复执行,执行次
数由FOR指令的源操作数设定。执行完后,
执行NEXT后面的指令。
图6-41:外层循环程序A嵌套了内层循环B,
循环A执行5次,每执行一次循环A,就要执 图6-41 循环程序
第6章 可编程控制器的指令
行10次循环B,因此循环B一共要执行50次。利用循环中的CJ指令可跳出FOR-NEXT之间的循环区。
FOR与NEXT指令总是成对使用的,FOR指令应放在NEXT的前面.
6.4.3 传送、比较指令
1.比较指令
比较指令包括CMP(比较)和ZCP(区间比较),比较结果用目标元件的状态表示。待比较的源操作数[S1],[S2]和[S3](CMP只有两个源操作数)可取任意的数据格式,目标操作数[D]可取Y,M和S,占用连续的3个元件。
(1)比较指令(FNCl0)
比较指令CMP比较源操作数[S1]和[S2],
比较的结果送到目标操作数[D]中。图
6-42中的比较指令将十进制常数100与
计数器C10的当前值比较,比较结果送
到M0~M2。 图6-42 比较指令的使用
(2)区间比较指令(FNCll)
区间比较指令的助记符为ZCP.图6-43中的X2为ON时,执行ZCP指令,将T3的当前值与常数100和150相比较,比较结果送到M3~M5,源数据[S1]不能大于[S2]。
第6章 可编程控制器的指令
图6-43 区间比较指令的使用
(3)触点型比较指令(FNC224~FNC246)
触点型比较指令相当于一个触点,执行时比较源操作数[S1]和[S2],满足比较条件则触点闭合,源操作数可取所有的数据类型。
图6-44:C10的当前值等于20时,Y10被驱动,D200的值大于-30且X0为ON时,Y11被SET指令置位。
图6-45:M27为ON或C20的值等于146时,M50的线圈通电.
图6-44 LD触点型比较指令 图6-45 AND/OR触点型比较指令
第6章 可编程控制器的指令
2.传送指令(FNC12~FNCl6)
传送指令包括MOV(传送)、SMOV(BCD码移位传送)、CML(取反传送)、BMOV(数据块传送)和FMOV(多点传送)以及XCH(数据交换)指令。
MOV和CML指令的源操作数可取所有的数据类型,SMOV指令可取除K,H以外的其它类型的操作数。它们的目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。
(1)传送指令(FNCl2)
传送指令MOV将源数据传送到指定目标.
图6-46:X1为ON时常数100被传送到D10,并自动转换为二进制数。
图6-46 传送指令与块传送指令
(2)移位传送(FNCl3)
第6章 可编程控制器的指令
移位传送指令SMOV将4位十进制源数据[S]中指定位数的数据,传送到4位十进制目的操作数中指定的位置。
(3)取反传送指令(FNCl4)
取反传送指令CML将源元件中的数据逐位取反(1→0,0→1),并传送到指定目标。
(4)块传送指令(FNCl5)
块传送指令BMOV的源操作数可取KnX,KnY,KnM,KnS,T,C,D,V,Z和文件寄存器,目标操作数可取KnY,KnM,KnS,T,C,D,V,Z和文件寄存器。该指令将源操作数指定的元件开始的n个数据组成的数据块传送到指定的目标,n可取K,H和D。
传送顺序见图6-46示。
(5)多点传送指令(FNCl6)
多点传送指令FMOV将单个元件中的数据传送到指定目标地址开始的n个元件中,传送后n个元件中的数据完全相源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,n为常数,n≤512。
图6-47:X2为ON时将常数0送到D5~D14这10个(n=10)数据寄存器中。
第6章 可编程控制器的指令
图6-47 多点数据传送与数据交换
(6)数据交换指令(FNCl7)
执行数据交换指令XCH时,数据在指定的目标元件之间交换,一般采用脉冲执行方式(见图6-47)。
目标操作数可取KnY,KnM,KnS,L C,D,V和Z。
3.数据变换指令
数据变换指令包括BCD(二进制数转换成BCD码并传送)和BIN(BCD码转换为二进制数并传送)指令(见图6-48)。源操作数可取KnX,KnY,KnM,KnS,T,C,D,V和Z,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。
(1)BCD变换指令(FNCl8)
BCD变换指令将源元件中的二进制数转换为BCD码并送到目标元件中。
可以用BCD指令将二进制数变换为BCD数后输出到7段显示器。
M8032为ON时,双字将被转换为科学计数法格式。
第6章 可编程控制器的指令
(2)B1N变换指令(FNCl9)
将源元件中的BCD码转换为二进制数
后送到目标元件中。
可以用BIN指令将BCD数字拨码开关提
供的设定值输入到PLC.M8032为ON时,
将科学计数法格式的数转换为浮点数。 图6-48 BCD变换与BIN变换
6.4.4 循环移位、移位指令
1.循环移位指令
(1)右、左循环移位指令
右、左循环移位指令分别为ROR(FNC30)和ROL(FNC31)。它们只有目标操作数,可取KnY,KnM,KnS,T,C,D,V和Z.
执行这两条指令时,各位数据向右(或向左)循环移动n位(n为常数),16位指令和32位指令中n应分别小于16和32,每次移出来的那一位同时存入进位标志M8022中(见图6-49和图6-50)。
若在目标元件中指定位元件组的组数,只有K4(16位指令)和K8(32位指令)有效,例如K4Y10和K8M0。
第6章 可编程控制器的指令
图6-49 右循环 图6-50 左循环
(2)带进位的循环移位指令
带进位右、左循环移位指令的指令代码分别为RCR(FNC32)和RCL(FNC33)。目标操作数、程序步数和n的取值范围与循环移位指令相同.
执行这两条指令时,各位数据与进位位M8022一起(16位指令时共17位)向右(或向左)循环移动n位。在循环中移出的位送入进位标志,后者又被送回到目标操作数的另一端。
2.移位指令
(1)位右移和位左移指令
位右移SFTR(FNC34)与位左移SFTL(FNC35)指令使位元件中的状态成组地向右或向左移动,由n1指定位元件组的长度,n2指定移动的位数,常数n2≤n1≤1024。
(2)字右移和字左移指令
第6章 可编程控制器的指令
字右移WSFR(FNC36)、字左移WSFL(FNC37)指令将n1个字成组地右移或左移n2个字(n2≤n1≤512)。
(3)移位寄存器写入与读出指令
移位寄存器又称为FIFO(先入先出)堆栈,堆栈长度范围为2~512个字。写入指令SFWR(FNC38)和读出指令SFRD(FNC39)用于FIFO堆栈的读写,先写入的数据先读出。
6.4.5 数据处理指令
1.区间复位指令(FNC40)
区间复位指令ZRST将[D1],[D2]指定的
元件号范围内的同类元件成批复位(见
图6-51),目标操作数可取T,C和D(字
元件)或Y,M,S(位元件).
2.解码与编码指令 图6-51 区间复位与解码、编码指令
设图6-51的解码指令DECO(FNC41)的源操作数X2~X0组成的二进制数为N,该指令将M10开始的目标操作数M10~M17(共8位,2n = 8)中的第N位置为l,其余各位置0,相当于数字电路中译码电路的功能。
第6章 可编程控制器的指令
图6-51:编码字指令ENCO(FNC42)将源操作数M20~M27(共8位,2n = 8)中为ON的最高位的位数(二进制)存放在目标元件D10的低3位中,n=1~4。
3.求置ON位总数与ON位判别指令
求置ON位总数指令SUM(FNC43)统计源操作数中为ON的位的个数,并将它送入目标操作数。
ON位判别指令BON(FNC44)用来检测指定元件中的指定位是否为ON。若为ON,则位目标操作数变为ON.
4.报警器置位复位指令
应用指令ANS(信号报警器置位)和ANR(信号报警器复位)时,状态标志S900~S999可用作外部故障诊断的输出。
(1)报警器置位指令ANS(FNC46)
ANS的源操作数为T0~T199,目标操作数为S900~S999,n=1~32767(定时器以100ms为单位的设定值)。
图6-52:M8000的常开触点一直接通,使M8049的线圈通电,特殊数据寄存器D8049的监视功能有效,D8049用来存放S900~S999中处于活动状态且元件号最小的状态继电器的元件号。
第一条ANS指令可实现如下功能:在驱动工作台前进的输出继电器Y0变为
第6章 可编程控制器的指令
ON后,100ms定时器T0开始定时,如果检测前进的限位开关X0在10s内未动作(n = 100),S900变为ON。如果S900~S999中任意一个的状态为ON,特殊辅助继电器M8048为ON,使指示故障的输出继电器Y10变为ON。
若第一条ANS指令的输入电路断开,定时器T0复位,而S900仍保持为ON.
(2)报警器复位指令ANR(FNC47)
ANR无操作数,图6-52中用故障复位按钮X5和ANR指令将用于故障诊断的状态继电器复位,每按一次复位按钮,按元件号递增的顺序将—个故障报警器状态复位。
5.平均值指令MEAN(FNC45)
MEAN用来求1~64个源操作数的代数和被n除的商,余数略去(见图6-53).
图6-52 信号报警器置位与复位指令 图6-53 MEAN、SQR、FLT指令
第6章 可编程控制器的指令
6.二进制平方根指令SQR(FNC48)
SQR的源操作数[S]应大于零,可取K,H,D,目标操作数为D。图6-53中的X2为ON时,将存放在D45中的数开平方,结果存放在D123内.
计算结果舍去小数,只取整数。M8023为ON时,将对32位浮点数开方,结果为浮点数。
源操作数为整数时,将自动转换为浮点数。如果源操作数为负数,运算错误标志M8067将会ON。
7.二进制整数与浮点数转换指令FLT(FNC49)
FLT的源操作数和目标操作数均为D。
图6-53:X4为ON,且M8023(浮点数标志)为OFF时,该指令将存放在源操作数D10中的数据转换为浮点数,并将结果存放在目标寄存器D13和D12中。
M8023为ON时,将浮点数转换为整数。
用于存放浮点数的目标操作数应为双整数,源操作数可以是整数或双整数。
第6章 可编程控制器的指令
$$