1、
数据传送指令
数据传送指令包括MOV(传送)、SMOV(BCD码移位传送)、CML(取反传送)、BMOV(数据块传送)、FMOV(多点传送)、XCH(数据交换)。这里主要介绍MOV(传送)指令。
传送指令MOV将源操作数据传送到指定目标,其指令代码为FNC12,源操作数[S·]可取所有的数据类型,即K、H、KnX、KnY、KnM、KnS、T、C、D、V、Z,其目标操作数[D·]为KnY、KnM、KnS、
T、C、D、V、Z。
如图1所示,,当X0为ON时,执行连续执行型指令,数据100被自动转换成二进制数且传送给D10,当X0变为OFF时,不执行指令,但数据保持不变;当X1为ON时,T0当前值被读出且传送给D20;当X2为ON时,数据100传送给D30,定时器T20的设定值被间接指定为10秒,当M0闭合时,T20开始计时;MOV(P)为脉冲执行型指令,当X5由OFF变为ON时指令执行一次,(D10)的数据传送给(D12),其它时刻不执行,当X5变为OFF时,指令不执行,但数据也不会发生变化;X3为ON时,(D1、D0)的数据传送给(D11、D10),当X4为ON时,将(C235)的当前值传送给(D21、D20)。注意:运算结果以32位输出的应用指令、32位二进制立即数及32位高速计数器当前值等数据的传送,必须使用(D)MOV或(D)MOV(P)指令。
如图2所示,可用MOV指令等效实现由X0~X3对Y0~Y3的顺序控制。
2、比较指令
比较指令有比较(CMP)、区域比较(ZCP)两种,CMP的指令代码为FNC10,ZCP的指令代码为FNC11,两者待比较的源操作数[S·]均为K、
H、KnX、KnY、KnM、KnS、T、C、D、V、Z,其目标操作数[D·]均为Y、M、S。
CMP指令的功能是将源操作数[S1·]和[S2·]的数据进行比较,结果送到目标操作元件[D·]中。在图3中,当X0为ON时,将十进制数100与计数器C2的当前值比较,比较结果送到M0~M2中,若100>C2的当前值时,M0为ON,若100=C2的当前值时,M1为ON,
若100<C2的当前值时,M2为ON。当X0为OFF时,不进行比较,M0~M2的状态保持不变。
ZCP指令的功能是将一个源操作数[S·]的数值与另两个源操作数[S1·]和[S2·]的数据进行比较,结果送到目标操作元件[D·]中,源数据[S1·]不能大于[S2·]。在图4中,当X1为ON时,执行ZCP指令,将T2的当前值与10和150比较,比较结果送到M0~M2中,若10>T2的当前值时,M0为ON,若10≤T2的当前值≤150时,M1为ON,若150<T2的当前值时,M2为ON。当X1为OFF时,ZCP指令不执行,M0~M2的状态保持不变。
3、加1指令和减1指令
加1指令INC和减1指令DEC的操作数均可取KnY、KnM、KnS、T、C、D、V、,它们不影响零标志、借位标志和进位标志。INC的指令代码为FNC24,DEC的指令代码为FNC25。INC指令的功能是将指定的目标操作元件[D·]中二进制数自动加1,DEC指令的功能是将指定的目标操作元件[D·]中二进制数自动减1,
如图5所示,当X0每次由OFF变为ON时,D20中的数自动增加1,当X1每次由OFF变为ON时,D21中的数自动减1。
若用连续执行型加1指令INC或连续执行型减1指令DEC,当条件成立时,在每个扫描周期内指定的目标操作元件[D·]中数据要自动加1或自动减1。16位数据运算时,+32767再加1就变为-32768,-32768再减1就变为+32767。32位数据运算时,+2147483647再加1就变为-2147483648,-2147483648再减1就变为+2147483647。