例2:
教材例4-5第118页
2、区间比较指令ZCP(FNC11)
用以确定一个数落在由二个数值构成的闭区间的何处。
例:
S1比S2小
上例中,C10的当前值落在区间[100,120]的左方时,M0ON;落在区间内部时,M1ON;落在区间的右方时,M2ON。
3、触点比较指令(FNC224~FNC246)
CMP指令的结果是等待处理的,若要直接使用比较结果,可用触点比较指令,即把比较结果表示为一个触点状态,直接在程序中作逻辑运算。
比较结果更细化:
包括“=”,“>”,“<”,“<>”,“≤”,“≥”等6种;逻辑运算可采用LD(FNC224~FNC230)、AND(FNC232~FNC238)、OR(FNC240~FNC246)。
例:
前面练习题求最大值的一个方法
用D10存放最大值,比较前使(D0)→(D10),在FOR/NEXT中执行下面比较程序:
㈡传送类
传送操作的基本意义在于把源数据传送到指定的目标,可能在传送过程中伴随着其他某些操作,例如
•先完成源数据内部的某些处理,例如逐位取反后再传送(CMLFNC14);
•把一块连续区域的数据成批地传送到另一块连续区域(BMOVFNC15)
•把一个数据传送到一块连续区域(FMOVFNC16)
•使数据在指定的目标元件之间交换(XCHFNC17)
•进行源数据的数码变换然后传送到目标元件(BCDFNC18和BINFNC19)
1、传送指令MOV(FNC12)(DMOVD0D2,D0D1组合放到D2D3)
例:
教材例4-4
•指令的功能是把源数据传送到指定的目标。
•注意:
目标操作数可以是所有字元件,或除输入元件外的位元件组合。
采用位元件组合作为操作数应注意的问题
执行二进制传送,即自动把源操作数转换为二进制数,然后再传送。
2、块传送BMOV(FNC15)教材116页
•BMOV实现把一块连续区域的数据成批地传送到另一块连续区域的功能。
•程序执行时,数据逐个传送,系统自动解决源数据区域与目标区域有重叠引起的问题。
3、数据变换指令:
实现数据的BCD码与BIN码之间的变换,其中,BCD指令(FNC18)将源中的二进制数变换为BCD码并传送到目标元件中。
BIN指令(FNC19)将源元件中的BCD数据变换为二进制数并传送到目标元件中。
例BCD码369369每位转成2进制
001101101001
00+29+28+26+25+23+20=873(BIN码2进制转为10进制)
⑴十进制数的BCD码表示
⑵使用16位的BCD指令应注意的源元件的数应在K0~9999范围,否则出错
⑶使用BIN指令应注意的源元件的数据必须是BCD码,否则出错
⑷BCD指令和BIN指令的实际应用:
①BCD数字开关②用BCD码作输入的数码管电路
4、SMOV指令实现源元件的BCD数据按分配传送,实现数据组合。
这条指令同样要求源元件的数据必须是能转换为BCD码的。
应用例子:
某过程控制系统需要2个由外部设定的时间参数,它们都不超过十位数,若用4位拨码开关作为PLC的输入设定,试设计程序,使输入数据能指定2个定时器T0和T1的设定值。
四、算术运算与逻辑运算类指令
㈠算术运算指令
1、算术运算指令实现2个带符号整数进行四则运算(+,-,×,÷),结果送到目标元件的操作。
⑴加法ADD(FNC20)和减法SUB(FNC21)指令
①由于系统进行运算时,数据长度的被限制,“+”,“-”运算可能出现向高位进位或位的情况,需要用标志位(M8020~M8022)标识。
M8020零标志、M8021借位标志、M8022进位标志。
②源和目标可以用相同的元件号。
但须注意,此时若采用连续执行方式,结果会在每个扫描周期都会改变。
⑵乘法MUL指令(FNC22)(DMULDOD2D10,把DO、D1组合乘D2、D3组合放到D10、D11、D12、D13)
①目标元件的长度增加一倍,即16位运算时,D为32位,32位运算时,D为64位。
②采用变址功能确定元件号时,Z只有16乘法时能用,32位不可用。
⑶除法DIV指令(FNC23)注意,除数为零运算错误,PLC停机。
2、加1和减1指令:
INC和DEC指令分别是当条件满足时将指定的元件内容加强和减1,因此,如果使用连续方式,会每一扫描周期都作一次加1或减1运算;这种情况应避免。
INC与ADD、DEC与SUB使用时主要区别是:
INC和DEC不使用标志位。
脉冲执行INCP
例:
交通灯控制实验
㈡逻辑运算类指令
逻辑运算类指令通过对两个源操作数按位进行逻辑运算(与、或、异或等),把结果送指定元件,达到屏蔽数据的某些位、保留某些位,或实现某些校验功能的目的。
例:
某设备有6台电机,要求在手动方式下,每台电机均用一个按钮控制其直接启动/停止。
设手动/自动选择开关信号连接到X10端,6个按钮信号从X0起按顺序连接。
方法1:
用逻辑与(WAND)和逻辑异或指令(WXOR)实现
方法2:
用交替输出指令ALTP(FNC66)
⑴交替输出指令ALTP(FNC66)属于方便类指令,是FX系列PLC用于专门用于实现由一个按钮控制负载的启动和停止,如下图所示,当X0由OFF到ON时,Y0的状态改变一次。
注意,若用连续的ALT指令则每个扫描周期Y0均改变一次。
ALT指令也常用于信号分频上。
⑵用于本例的程序仅需6条ALTP指令
五、循环与移位指令
㈠循环与移位指令可分为三种:
⑴循环移位和带进位的循环移位指令,实现目标元件内部各位数据的回转,主要用于对采用循环码编码的数据进行处理的场合。
⑵位移位和字移位指令。
位移位指令实现目标位元件的状态成组地向右(或向左)移动,字移位指令则是位移位指令功能的推广。
⑶按先进先出(FIFO)原则进行控制的数据移位写入和读出指令
㈡位移位指令:
以位右移指令为例
•特例:
n2=1的位移指令。
天塔之光控制实验:
塔顶上放置9盏灯,要求系统启动
后,各灯按一定规律发亮、熄灭,时间间隔为1秒。
㈢FIFO移位写入和读出指令
1、FIFO移位写入指令SFWR(FNC38)
2、FIFO移位读出指令SFRD(FNC39)
例:
按产品入库顺序,要求按先入先出原则输出要取出的产品的编号。
设产品按16制编号(小于等于4位),允许最大库存量是99件。
产品编号由X000~X017输入并送到D256。
将D257作指针,D258~D356的99个数据寄存器用来存储产品的编号。
根据出库的要求,将最先入库的产品的编号送到D357,要取出的产品的编号以4位16进制数形式输出到Y000~
Y017.
六、数据处理指令
与FNC10~FNC39的基本功能指令相比,FNC40~FNC49指令能进行更复杂的处理或作为满足特殊用途的指令使用。
㈠使用区间复位指令ZRST(FNC40)应注意问题
㈡译码和编码指令
1、译码指令DECO(P)(FNC41)
⑴功能说明
计算源元件中n位二进制数值,使目标元件中与计算结果对应编号的位置位。
注意:
①源元件可以是位元件,也可以是字元件,对于位源元件,n指定了进行数值计算的位元件个数(从低向高编号),n的取值范围为n=1~8;对于字源元件,n指定了进行数值计算的位数(第0位开始)。
②目标元件可以是位元件(Y、M、S),也可以是字元件(K、H、T、C、V和Z)。
对于位目标元件,其个数为2n,例如:
n=8,则为256个。
对于字目标元件,位数被限制为16,因此n的取值范围被限制为n≤4。
⑵例:
教材例4-13用DECO指令实现步进电动机的正反转和调速控制。
①被控对象:
三相六拍步进电动机,故有A、B、C三相功放电路,PLC产生脉冲序列,作为步进电动机驱动电源的输入。
脉冲正序列:
A-AB-B-BC-C-CA,脉冲反序列:
CA-C-BC-B-AB-A。
②步进电动机的速度取决于脉冲序列的频率,本实验要求为1~10步/秒。
脉冲产生方法:
用1ms积算定时器T246
若T246设定值为K200~K1000,可达到速度要求。
速度的调整:
每100ms使T246设定值加1或减1,实现减速或加速。
③步进工步的产生和脉冲分配:
用DECOP指令实现工步计数器的值译码为对应位状态,根据脉冲正序列和脉冲反序列组合各步应驱动的输出。
各工步输出驱动如下:
工步号
正转(A-AB-B-BC-C-CA)
反转(CA-C-BC-B-AB-A)
M10
Y0
Y0、Y2
M11
Y0、Y1
Y2
M12
Y1
Y2、Y1
M13
Y1、Y2
Y1
M14
Y2
Y1、Y0
M15
Y2、Y0
Y0
由上表容易各输出驱动的梯级图,例如A相驱动的梯级图:
2、编码指令ENCO(FNC42)
编码操作是译码操作的逆过程,但须注意,ENCO指令只是将源操作数中为1的最高位的位编号编码成二进制数写入目标元件。
㈢报警器置位(ANSFNC46)和复位(ANRFNC47)指令
①FX2NPLC规定的信号报警器S900~S999:
固定掉电保持特性
②ANS指令采用报警条件满足后延时置位报警器的方式。
定时器限定为T0~T199,在子程序调用中也能使用该指令。
③ANR指令的使用:
从最低编号的报警元件开始复位。
七、时钟运算指令(FNC160~FNC169)
1、FX2N的特殊辅助寄存器D8013~D8019
①存放实时数据,存放顺序按秒、分、时、日、月、年、星期的顺序。
②掉电保持和读/写特性
2、时钟数据读取指令TRD(FNC166)和写入指令TWR(FNC167)
注意:
①读取和写入的顺序是年、月、日、时、分、秒、星期
②使用TWR指令时,须预先设定由源元件号起始的7个字元件,并注意数据范围和格式。
如果要把年设定2000年以后,应M8002↑用MOV指令把K2000传送到D8018。
3、时钟数据比较指令TCMP(FNC160)
TCMP指令仅比较时、分、秒3个数据,注意三个源数据的设定范围
例1:
例2:
教材例4-14PLC在隧道射流风机上的应用