3.3.2 应用指令系统
在3.1节中已对FX系列PLC的应用指令作了一些介绍,Q系列PLC在FX系列PLC的基础上对指令系统作了一定的扩充,这里将主要对Q系列PLC中常用的扩充部分的应用指令作一说明。
3.3.2.1 基本应用指令
(1)基本应用指令分类
基本应用指令可以参见附录,这些指令大致可以分为以下几类,如表3-80所示。
表3-80 基本应用指令分类表
(2)常用指令说明
①LD=、LD<>、LD>、LD<、LD>=、LD<=指令 该组指令是用来比较操作用的指令,当执行条件满足时,执行相应的操作。如在图3-139中,当[S1.]=[S2.]时,执行LD操作,Y0接通。
图3-139 LD类指令说明
对于LD<>、LD>、LD<、LD>=、LD<=指令以及AND和OR类的比较指令,使用方法类似。
②BIN16位四则运算指令 该组指令是BIN16位加、减、乘、除法运算的指令,当执行条件满足时,执行相应的算术运算操作,并将运算结果存储到指定的元件中。如在图3-140中,当执行条件满足时,将由[S1.]指定的BIN16位数据与由[S2.]指定的BIN16位数据相加,并将结果存储在由[D.]指定的编程元件中。
图3-140 四则运算指令说明
减法、乘法和除法的操作方式与加法类似。
编程应用举例如图3-141所示,当X1变为ON时,将D3的内容与D0的内容相加,并将结果存储存D5中。
图3-141 四则运算应用举例
③EMOV、$MOV指令 该组指令属于传送类指令,其功能都是将源数据中的数据传送到目标数据中,所不同的只是传送的对象不一样而已。EMOV传送的是浮点型实数,而$MOV传送的是字符串。如图3-142所示,当X1变为ON时,将实数1.02存储在D0和D1中,其中,D0中存储小数部分,D1中存储整数部分。
图3-142 EMOV、$MOV指令说明
④CJ、SCJ、JMP指令 该组指令为指针分支指令,主要用在程序的跳转中。对于CJ指令而言,当跳转命令为ON时,在同一程序文件内执行指定指针号码的程序。当跳转命令为OFF时,执行程序的下一步,如图3-143所示。
图3-143 CJ指令说明
而SCJ指令则有所不同,当跳转命令从OFF变为ON时,从下一个扫描周期开始在同一程序文件内执行指定指针号码的程序。当跳转命令为OFF或者从ON变为OFF时,执行程序的下一步,如图3-144所示。
图3-144 SCJ指令说明
JMP指令是强制跳转的指令,在同一文件内无条件地执行指针号码所指定的程序。
使用该指令应当注意以下几点:
a.如果使用CJ、SCJ或JMP指令强制跳转到OUT指令,那么扫描时间会缩短;
b.CJ、SCJ或JMP指令可用于跳转到当前正执行的步骤之前的某一步;
c.已通过CJ、SCJ或JMP实现了跳转的编程元件不发生变化;
d.跳转指令只可用于同一程序文件内的指针号码;
e.在跳转运算期间,如果跳转到跳转范围内的一个指针号码,那么程序将从跳转目标的指针号码开始继续执行。
3.3.2.2 数据链接指令
(1)数据链接指令分类
常用的数据链接指令可以参见附录,这些指令大致可以分为以下几类,如表3-81所示。
表3-81 数据链接指令分类
(2)常用指令说明
①ZCOM指令 ZCOM指令是在顺控程序执行的任何时间执行刷新的指令。指令说明如图3-145所示,执行该指令可以对Jn或者Un指定的号码执行刷新操作,其中Jn表示自动网络号,Un表示自动网络起始I/O号。当执行条件满足时,执行ZCOM指令,CPU模块在指令执行期间暂时停止处理顺控程序,而执行有Jn或者Un指定的网络模块的刷新处理。ZCOM指令可以进行MELSEC NET/H刷新、CC-Link的自动刷新和智能功能模块的自动刷新等。当在远程主站使用ZCOM刷新指令时,链接刷新在ZCOM指令执行点执行,并且在链接刷新结束时执行链接扫描。因此,在远程主站使用ZCOM指令可以加速远程I/O站的发送或接收处理速度。该指令在顺控程序中可以无限量使用。
图3-145 ZCOM指令说明
图3-146为ZCOM指令使用示例,当X0变为ON时,对网络号为5的网络模块进行链接刷新操作。
图3-146 ZCOM指令使用示例
②READ、WRITE指令 该组指令分别为读和写操作的指令。其中READ指令是指从另一个站中读字元件数据的指令。指令说明如图3-147所示,图中,Jn指自动网络号;Un指网络模块自站的起始I/O号;[S1.]指自动存储控制数据的起始元件号;[S2.]指读取数据所存储站的起始元件号;[D1.]指自动存储取数据的起始元件号;[D2.]指传送结束后,在一个扫描周期内变为ON的元件。JP.READ指令不能用在CC-Link和A(1S)J71QC24中。
图3-147 READ指令说明
WRITE是将数据写入到MELSEC NET/10网络中的指令。指令说明如图3-148所示,图中,Jn指自动网络号;Un指网络模块自站的起始I/O号;[S1.]指自动存储控制数据的起始元件号;[S2.]指写入数据正在被存储的自站起始元件号;[D1.]指目标站的起始元件号;[D2.]指传送结束后,在一个扫描周期内变为ON的元件。JP.WRITE指令不能用在CC-Link和A(1S)J71QC24中。
图3-148 WRITE指令说明
③SEND、RECV指令 该组指令是用来传送和接收数据的指令。SEND指令是在联网过程中用来将数据传送到其他站点的指令,指令说明如图3-149所示,当执行条件满足时,执行SEND指令。图中,Jn指自动网络号;Un指自动链接模块的起始I/O号;[S1.]指存储控制数据的起始元件号;[S2.]指存储将要传送的数据的起始元件号;[D.]指传送结束后,在一个扫描周期内变为ON的元件。JP.SEND指令不能用在CC-Link和A(1S)J71QC24中。
图3-149 SEND指令说明
RECV指令是在联网过程中用来接收其他站点的数据的指令,指令说明如图3-150所示,当执行条件满足时,执行RECV指令。图中,Jn指自动网络号;Un指自动链接模块的起始I/O号;[S1.]指存储控制数据的起始元件号;[D1.]指存储传送数据的起始元件号;[D2.]指传送结束后,在一个扫描周期内变为ON的元件。JP.RECV指令不能用在CC-Link和A(1S)J71QC24中。
图3-150 RECV指令说明
3.3.2.3 QCPU操作及冗系系统指令
QCPU指令、冗余指令都是Q系列PLC中增加的功能。QCPU指令主要用于存储器的读出、写入和删除等操作,冗余指令主要用于冗余系统控制。
(1)指令分类
该指令的分类及含义如表3-82所示。
表3-82 基本应用指令分类表
(2)常用指令说明
①UNIRD指令 该指令属于QCPU指令,通过该指令的使用从指定的I/O起始号中读取模块信息。指令说明如图3-151所示。图中,[n1.]指将要从模块信息被读取的模块开始的起始I/O号整除16所获得的值;[D.]指存储模块信息的元件起始号:[n2.]指读取数据的点数(0~256)。根据PLC具体型号的不同,以上数据的范围也有所差异。UNIRD为连续执行型指令,UNIRDP为脉冲执行型指令。
图3-151 UNIRD指令说明
[D.]所指定的模块信息的细节描述如表3-83所示。
表3-83 [D.]所指定的模块信息的细节描述
②TRACE、TRACER指令 该组指令为追踪置位和复位指令。TRACE指令说明如图3-152所示,当TRACE指令执行时,SM803为ON。TRACE指令执行后,采样通过采样追踪的指定数字进行重复,然后数据锁定,追踪结束。TRACER指令是用来复位TRACE的指令,当TRACER指令执行后,SM803~SM805为OFF,TRACE指令复位。
图3-152 TRACE、TRACER指令说明
③PLOADP、PUNLOADP指令 该组指令是用来装载或卸载内存中的程序的指令。PLOADP指令是将存储在内存卡或标准ROM中的程序转移到程序内存中的指令,指令说明如图3-153所示。图中,[S.]表示存储要装载程序的驱动号码,文件名的字符串数据或者存储字符串数据的元件的起始号;[D.]指传送结束后,在一个扫描周期内变为ON的元件。PUNLOADP指令是用来卸载内存中程序的指令,用法与PLOADP指令相似。该组指令为脉冲执行型指令。
图3-153 PLOADP、PUNLOADP指令说明
应用举例如图3-154所示,当X2为ON时,程序装载存储在驱动4中的文件“ABCD.QPG”到驱动0,同时程序处于备用状态。
图3-154 PLOADP、PUNLOADP指令应用举例
④操作模式设定指令S.STMODE、S.CGMODE指令 该组指令为冗余系统指令,用于冗余系统的控制。S.STMODE是CPU启动过程中的操作模式设定指令。指令说明如图3-155所示,图中,[S1.]为操作模式的设定数据,[S2.]指初始启动切换电源超时。
图3-155 S.STMODE指令说明
在[S1.]里通过设定0或1确定启动模式,当[S1.]设为0时表示初始启动模式(清除锁存范围外的编程元件),当[S1.]设为1时表示热启动模式(不清除变址寄存器和信号流)。[S2.]的设定范围是0~65535,单位为s。
当控制器从控制系统切换到备用系统时,由S.CGMODE指定CPU编程元件是被清除和切换或者不消除和切换。指令说明如图3-156所示,图中,[S1.]指定操作模式设定参数,当[S1.]设定为0时表示初始启动模式(清除闭锁范围外的编程元件);当[S1.]设定为1时表示热启动模式。
图3-156 S.CGMODE指令说明
S.STMODE的应用举例如图3-157所示,当电源打开同时设定暂时转换电源超出时间为15s时,程序在热启动模式下启动CPU模块。
图3-157 S.STMODE的应用举例
⑤S.TRUCK指令 该指令为冗余系统指令中用于数据追踪的指令,只适用于Q4ARCPU中。指令说明如图3-158所示,图中,[S1.]指示参数块起始编程元件,对于每个通过这个指令执行的扫描,在END处理的过程中,Q4ARCPU跟踪由[S1.]指定的元件中存储的参数块数据内容,执行编程元件数据存储追踪。
图3-158 S.TRUCK指令说明1
追踪其实就是将一个控制系统Q4ARCPU编程元件存储转移到备用系统Q4ARCPU编程元件系统的功能,如图3-159所示。
图3-159 S.TRUCK指令说明2
3.3.2.4 其他应用指令
(1)其他应用指令分类
常用的其他应用指令可以参见附录,这些指令大致可以分为以下几类,如表3-84所示。
表3-84 其他应用指令分类
(2)常用指令说明
①BSETP、BRSTP指令 该组指令是字编程元件的位设定和复位指令,可以用来对数据寄存器的某一位进行置复位操作。和分别为BSET和BRST的脉冲执行型指令。如在图3-160中,当X1为ON时,执行BSETP指令,将D10的b6位置ON。BRST是BSET的逆运算,它是将指定位进行复位操作。但应当注意的是K所指定的值应在0~15。
图3-160 BSETP、BRSTP指令说明
BSETP、BRSTP指令的应用举例如图3-161(a)所示。当X11为ON时,将D3的第3位置1;当X11为OFF时,将D3的第4位置0。当然该程序也可以用SET和RST指令来编写,如图3-161(b)所示,其功能与图3-161(a)程序的功能一样。
图3-161 BSETP、BRSTP指令的应用举例
②TEST、指令 该组指令是位测试指令。指令的功能说明如图3-162所示,其中,[S1.]为存储被提取的位数据的编程元件数,[S2.]为被提取的位数据的位置(0~15或者0~31),[D.]为存储提取的位数据的编程元件数。当[S2.]指定的相关编程元件为“0”时,[D.]所指定的位编程元件为OFF;当[S2.]所指定的相关编程元件为“1”时,[D.]所指定的位编程元件为ON。当在[S2.]中指定了大于规定值(16或者32)的数据时,则目标是n除以16或者32的余数指定的位置的位数据。例如,对于16位数据,当在[S2.]中指定n=18时,因为18除以16的余数为2,所以目标为b2处的数据。当b2=1时,[D.]所指定的编程元件为ON。DTEST为32位元件的测试指令。
图3-162 TEST、指令说明
TEST、指令的应用举例如图3-163所示。当X11为ON时,执行TEST指令。若D10的b10为“0”,则M0变为OFF;若b10为“1”,则M0变为ON。
图3-163 TEST、指令的应用举例1
当然,在Q系列PLC中也可以将以上程序改写为如图3-164所示程序。应当注意在FX系列PLC中,数据寄存器D没有单独的常开或常闭触点,而在Q系列PLC中,数据寄存器D的常开、常闭触点可以像辅助继电器的触点一样无限次使用。
图3-164 TEST、指令的应用举例2
③DIS、UNI指令DIS与UNI为分离与合并指令,DIS指令的功能说明如图3-165(a)所示。[S.]指存储要分离的数据的编程元件的第一个编程元件号,[D.]指存储已分离的数据的编程元件的第一个编程元件号,[n]指分离数(1~4)。如果分离数[n]为0,则不执行任何处理。当执行该指令时,如图3-165(b)所示。当X1为ON时,将[S.]指定的16位数据的低4位存储在从[D.]指定的编程元件开始的n点的低4位,而[D.]指定的编程元件的高12位(b4~b15)变为0。DIS为连续执行型指令,为脉冲执行型指令。
图3-165 DIS指令说明
UNI指令的功能说明如图3-166(a)所示。[S.]指存储要链接的数据的编程元件的第一个编程元件号;[D.]指存储已链接的数据的编程元件的第一个编程元件号;[n]指链接数(1~4),如果链接数为0,则不执行任何处理。当执行该指令时,如图3-166(b)所示,将从[S.]指定的编程元件开始的n点中的16位数据的低4位链接到[D.]指定的16位编程元件。[D.]指定的编程元件的高位(4~n)数字的各位变为0。UNI为连续执行型指令,为脉冲执行型指令。
图3-166 UNI指令说明
DIS指令的应用举例如图3-167所示。当X1为ON时,执行DIS指令,PLC将D0中的16位数据分离成4位一组,并存储在D10~D13中。
图3-167 DIS指令的应用举例
在图3-168中,当X1为ON时,执行UNIP指令,程序链接D0~D2中数据的低4位,并将它们存储在D10中。
图3-168 UNIP指令应用举例
④MAX、MIN指令 该组指令为最大、最小查找指令,MAX指令的功能说明如图3-169所示,[S.]指用于查找最大值的编程元件的起始号,[D.]指用于存储最大值查找结果,[n]指查找的数据块数量。当执行该指令时,程序从[S.]指定的元件开始的n块16位数据中查找最大值,并将该值存储在[D.]指定的编程元件中。在[D.]+1中存储该元件号距离元件[S.]的点数,在[D.]+2中存储最大值的数目。MAX为连续执行型指令,为脉冲执行型指令。
图3-169 MAX、MIN指令说明
MIN指令的功能为查找最小值,使用方法与MAX指令相似。MIN为连续执行型指令,为脉冲执行型指令。
MAX、MIN指令的应用举例如图3-170所示。当执行条件X1为ON时,以下程序将从D10开始的元件中的数据加到从R10开始的元件中的数据上,再从该计算的结果中查找最小值,并将它存储在D150~D152中。
图3-170 MAX、MIN指令的应用举例
⑤COM指令 该指令为刷新指令。这里介绍的COM指令仅适用于功能版本为A的基本型QCPU以及系列号为“04011”或更早的高性能型QCPU和过程控制CPU。
当需要提高远程I/O站的传送/接收处理速度时,或者要在执行数据链接期间确保与使用不同扫描周期的其他站之间进行可靠的数据传送/接收时,可以使用该指令。功能说明如图3-171所示。
图3-171 COM指令说明
注意:a.特殊继电器SM775的状态会影响COM指令的处理。当SM775为ON时,仅进行一般的数据处理;当SM775指令为OFF时,除了进行一般的数据处理外,还进行CC-Link、智能功能模块和MELSEC NET/10H的自动刷新操作。
b.在即将执行COM指令的时候,CPU模块将暂停顺控程序的处理,而进行与END处理期间智能功能模块的一般数据处理和自动刷新(包括链接刷新)相同的操作,但是不进行低速的MELSEC NET/10H或MELSEC NET/H循环刷新。
c.COM指令可以在顺控程序中任意次使用。
⑥IX、IXEND指令 该组指令是用于梯形图变址修改的指令。指令功能说明如图3-172所示,该组指令可以将梯形图内从IX指令到IXEND指令的所有编程元件进行元件号变址修改。其中[S.]是用来存储变址修改数据的编程元件的起始元件号。在制作PLC程序过程中,IX与IXEND指令必须一起使用,并且在IX指令之后、IXEND指令之前不可以执行END、FEND、GOEND或者STOP指令,否则会出现错误。
图3-172 IX、IXEND指令说明
在程序扩展过程中,通过IX和IXEND指令建立的变址修改梯形图将被转换成使用变址寄存器(Zn)的梯形图。当使用基本型QCPU时,变址修改表和对应的变址寄存器号如表3-85所示。
表3-85 基本型QCPU变址修改表
当使用高性能型QCPU、过程CPU或者QnACPU时,变址修改表和对应的变址寄存器号如表3-86所示。
表3-86 高性能型QCPU、过程CPU或者QnACPU变址修改表
IX、IXEND指令的应用举例如图3-173所示。
图3-173 IX、IXEND指令的应用举例
⑦SIN、COS指令 该组指令是用于三角函数正弦和余弦计算的指令。SIN指令功能说明如图3-174所示,该指令的使用可以将源数据[S.]所指定的角度进行SIN(正弦)计算然后将计算结果存储到目标地址[D.]中。在实际运用中,[S.]所指定的值必须是以弧度单位来设置的角度值,所以在指定[S.]时首先要将需要计算的值转化为弧度单位再计算,具体可以按以下步骤进行:
图3-174 SIN指令说明
a.将需要进行运算的数据(BCD)转换成BIN格式;
b.将上一步获得的BIN数据转换为浮动小数点类型实数;
c.将角度转换为弧度值;
d.对转换后的弧度值执行正弦运算。
SIN指令为连续执行型指令,指令为脉冲执行型指令。余弦(COS)以及正切(TAN)使用类似。
SIN指令的应用举例如图3-175所示。其程序将存储在X20~X2F的4个BCD位数中的角度执行SIN运算,并且将运算结果以浮点类型实数存储在D0和D1中。
图3-175 SIN指令的应用举例
⑧LOG指令 LOG指令是求以e为底、由[S.]指定的数据的自然对数的指令,并且将LOG指令的运算结果存储在[D.]指定的编程元件中。指令使用说明如图3-176所示,指令可以将源数据[S.]所指定的数据进行LOG运算,然后将运算结果存储到目标地址[D.]中。应当注意的是,[S.]所指定的值必须为正数。
图3-176 LOG指令说明
使用该指令时一般可以通过以下步骤进行:
a.将需要进行运算的数据(BCD)转换成BIN格式;
b.将上一步获得的BIN数据转换为浮动小数点类型实数;
c.对转换后的数值执行LOG运算。
LOG指令为连续执行型指令,指令为脉冲执行型指令。
⑨LIMIT、指令 该组指令为数值高低限制指令。LIMIT指定的数据为BIN16位数据,而指令指定的数据为BIN32位数据。指令说明如图3-177所示,在图中,[S1.]指最低限值,[S2.]指最高限值,[S3.]表示需要进行比较的对象,[D.]表示输出值。当输入条件满足时,执行LIMIT指令,此时,检查由[S3.]指定的输入值,确认[S3.]是否在[S1.]和[S2.]指定的低限值和高限值之间,并且根据检查结果控制[D.]的输出值。LIMIT指令为连续执行型指令,指令为脉冲执行型指令。
图3-177 LIMIT、DLIMIT指令说明
当[S1.]≥[S3.]时,[D.]=[S1.]。
当[S1.]≤[S3.]时,[D.]=[S2.]。
当[S1.]>[S3.]>[S2.]时,[D.]=[S3.]。
注意:a.对于LIMIT指令而言,源数据所指定的数值必须是在-32768~32767的值;而对于指令,源数据所指定的数值必须是在-2147483648~2147483647的值。
b.当仅需限制高限值时,在LIMIT指令中,将源数据指定的低限位[S1.]置为-32768;在指令中,将源数据指定的低限位[S1.]置为-2147483648。
c.当仅需限制低限值时,在LIMIT指令中,将源数据指定的高限位[S2.]置为32768;在指令中,将源数据指定的高限位[S2.]置为2147483647。
d.由[S1.]指定的低限值不可以比[S2.]指定的高限值大。
LIMIT、应用举例如图3-178所示。当执行条件X0为ON时,程序对从X20~X2F的设置为BCD值的数据执行从1000到3000的限制控制,并且将运算结果存储在D1中。
图3-178 LIMIT、应用举例
当D0≤1000时,则D1变为1000。例如:若D0=500,则D1=1000。
当1000<D0<3000时,则D1变为D0的值。例如:若D0=2000,则D1=2000。
当D0≥3000时,则D1变为3000。例如:者D0=4000,则D1=3000。