模块3-5:其它功能指令教学内容:主要介绍数据变换指令、译码指令和编码指令、外部I/0设备指令等三类指令的格式、功能和应用方法。重点:数据变换指令、译码指令和编码指令、外部I/0设备指令的格式、功能和实际应用的思路及方法。难点:译码指令和编码指令的理解与应用。课时:2学时。1、数据变换指令在其它功能指令中主要介绍数据变换指令、译码指令和编码指令、外部I/0设备指令等三类指令的格式、功能和应用方法。1、数据变换指令数据变换指令有BIN变换BCD和BCD变换BIN两种互换形式,它们都二进制数的两种表达方式。(1)BCD变换指令?BCD(P)指令是将源元件[S.]中的二进制数转换成BCD码后,送到目标元件[D.]中。BCD指令格式为:BCD+[S.]+[D.]注意:BCD码变换指令可将PLC的二进制数据变为LED七段显示码所需的BCD码,直接用于带译码器的LED数码显示。1、数据变换指令BCD指令使用方法,如图3-30所示。若指令进行16位操作时,则执行结果超出0~9999范围,将会出错;若指令进行32位操作时,执行结果超过0围,也将出错。因此,在PLC中内部的运算均为二进制运算,用BCD指令将二进制数变换为BCD码输出到七段显示器。1、数据变换指令(2)BIN变换指令BIN(P)指令是将源元件[S.]中的BCD数据转换成二进制数据后,送到目标元件[D.]中。BIN变换指令格式为:BIN+[S.]+[D.]BIN指令使用方法:如图3-31所示。说明:如果源操作数不是BCD码,则会出错;常数K不能作为本指令的操作元件,因为,PLC在处理任何数据之前,常数K能自动进行二进制变换后,方能再完成其后面的各种操作;BCD码范围:16位时为0-9999,32位时为0(3)注意:在使用BCD/BIN指令时,①源操作数可取KnK、KnY、KnM、KnS、T、C、D、V和Z中任意一种数据类型,目标操作数只能取KnY、KnM、KnS、T、C、D、V和Z中任意一种数据类型;②若处理16位数据时,则运算占5个程序步,处理32位数据时,则运算占9个程序步。2、译码指令和编码指令(1)译码指令译码指令(DECO(P))是将指定源操作元件[S.]中某n位,编译成对应的二进制数,结果送入目标元件[D.]中。译码指令格式为:DECO+[S.]+[D.]+n译码指令使用方法,如图3-32所示。2、译码指令和编码指令在如图3-32所示中,当n=3,则表示对源操作数[S.]中的3位数据,即将X0、X1、X2的状态转换为二进制数。若当前值为011时,相当于十进制3,则由目标操作数M7~M0组成的8位二进制数,只需要将第三位M3置1,其余各位为0。若为001,则M0置1,其余各位为0。在使用译码指令时,应注意:①位源操作数可取X、T、M和S,位目标操作数可取Y、M和S,字源操作数可取K,H,T,C,D,V和Z,字目标操作数可取T,C和D。②若[D.]指定目标元件是字元件T、C、D,则n≦4;若[D.]指定目标元件是位元件Y、M、S,则n=1~8;若用译码指令处理16位操作数,则占7个程序步。③当n=0时,不处理;当执行条件为OFF时,指令也不执行,编码指令的输出状态保持不变。2、译码指令和编码指令2)编码指令编码指令是根据n个输入位的状态进行编码,将结果存放到目标元件[D.]中。编码指令格式为:ENCO+[S.]+[D.]+n编码指令的使用方法,如图3-33所示。2、译码指令和编码指令在如图3-33所示中,当X1有效时,执行编码指令,将[S.]中最高位为1的所在位数(M3)放入目标元件[D.]的D10中去,即把011存放入D10的低3位。或当X10为ON时,执行编码操作,即将源元件M7~M0的状态(M3为1),编码为3位的二进制数011,送到目标元件[D.]中D10的低3位。若在此例中M0为1,则执行编码指令后,D10中的数据为0;当M7~M0的状态出现全部为0,被视为运算错误。在使用编码指令时,应注意:①编码指令的源操作数[S.]和目标操作数[D.]可以是位元件,也可以是字元件。当操作数为字元件时,应使用n≦4;当位元件时,则n=1~8。编码指令处理16位数据时,则运算占7个程序步。②当n=0时,不处理;当执行条件为OFF时,指令也不执行,编码指令的输出状态保持不变。③若指定源操作数中有多个1,则只有最高位的1有效。3、外部I/0设备指令外部I/0