西安西门子(中国)授权总代理商
外围设备(SER)指令包括串行通信指令RS(FNC80)、八进制数据传送指令PRUN(FNC81)、HEX→ASCII转换指令ASCI(FNC82)、ASCII→HEX转换指令HEX(FNC83)、校验码指令CCD(FNC84)、模拟量输入指令VRRD(FNC85)、模拟量开关设定指令VRSC(FNC86)和PID运算指令PID(FNC88)8条指令。
(1)八进制数据传送指令 八进制数据传送指令(D)PRUN(P)(FNC81)是用于八进制数的传送。如图3-78所示,当X10为ON时,将X0~X17内容送至M0~M7和M10~M17(因为X为八进制,故M9和M8的内容不变)。当X11为ON时,则将M0~M7送Y0~Y7,M10~M17送Y10~Y17。源操作数可取KnX、KnM,目标操作数取KnY、KnM,n=1~8,16位和32位运算分别占5个和9个程序步。
图 3-78 八进制数据传送指令的使用
(2)16进制数与ASCII码转换指令 有HEX→ASCII转换指令ASCI(FNC82)、ASCII→HEX转换指令HEX(FNC83)两条指令
HEX→ASCII转换指令ASCI(P)的功能是将源操作数[S.]中的内容(十六进制数)转换成ASCII码放入目标操作数[D.]中。如图3- 79所示,n表示要转换的字符数(n=1~256)。M8161控制采用16位模式还是8位模式。16位模式时每4个HEX占用1个数据寄存器,转换后每两个ASCII码占用一个数据寄存器;8位模式时,转换结果传送到[D.]低8位,其高8位为0。PLC运行时M8000为ON,M8161为OFF,此时为16位模式。当X0为ON则执行ASCI。如果放在D100中的4个字符为OABCH则执行后将其转换为ASCII码送入D200和D201中,D200高位放A的ASCII码41H,低位放0的ASCII码30H,D201则放BC的ASCII码,C放在高位。该指令的源操作数可取所有数据类型,目标操作数可取KnY、KnM、KnS、T、C和D。只有16位运算,占用7个程序步。
图 3-79 HEX→ASCII码转换指令的使用
ASCII→HEX指令HEX(P)的功能与ASCI指令相反,是将ASCII码表示的信息转换成16进制的信息。如图3-80所示,将源操作数D200~D203中放的ASCII码转换成16进制放入目标操作数D100和D101中。只有16位运算,占7个程序步。源操作数为K、H、KnX、 KnY、KnM、KnS、T、C和D,目标操作数为 KnY、KnM、KnS、T、C、D、V和Z。
图3-80 ASCII→HEX指令的使用
(4)校验码指令 校验码指令CCD(P)(FNC84)的功能是对一组数据寄存器中的16进制数进行总校验和奇偶校验。如图3-81所示,是将源操作数[S.]指定的D100~D102共6个字节的8位二进制数求和并“异或”,结果分别放在目标操作数D0和D1中。通信过程中可将数据和、“异或”结果随同发送,对方接收到信息后,先将传送的数据求和并“异或”,再与收到的和及“异或”结果比较,以此判断传送信号的正确与否。源操作数可取KnX、 KnY、KnM、KnS、T、C和D,目标操作数可取KnM、KnS、T、C和D,n可用K、H或D,n=1~256。为16位运算指令,占7个程序步。
图 3-81 校验码指令的使用
以上PRUN、ASCI、HEX、CCD常应用于串行通信中,配合RS指令。
(5)模拟量输入指令 模拟量输入指令VRRD(P)(FNC85)是用来对FX2N-8AV-BD模拟量功能扩展板中的电位器数值进行读操作。如图3-82所示,当X0为ON时,读出FX2N-8AV-BD中0号模拟量的值(由K0决定),将其送入D0作为T0的设定值。源操作数可取K、H,它用来指定模拟量口的编号,取值范围为0~7;目标操作数可取KnY、KnM、KnS、T、C、D、V和Z。该指令只有16位运算,占5个程序步。
图3-82 模拟量输入指令的使用
(6)模拟量开关设定指令 模拟量开关设定指令VRSC(P)(FNC86)的作用是将FX-8AV中电位器读出的数四舍五入整量化后以0~10之间的整数值存放在目标操作数中。它的源操作数[S.]可取K和H,用来指定模拟量口的编号,取值范围为0~7;目标操作数[D.]的类型与VRRD指令相同。该指令为16位运算,占9个程序步
外部I/0设备指令是FX系列与外设传递信息的指令,共有10条。分别是10键输入指令TKY(FNC70)、16键输入指令HKY(FNC71)、数字开关输入指令DSW(FNC72)、七段译码指令SEGD(FNC73)、带锁存的七段显示指令SEGL(FNC74)、方向开关指令ARWS(FNC75)、ASCII码转换指令ASC(FNC76)、ASCII打印指令PR(FNC77)、特殊功能模块读指令FROM(FNC78)和特殊功能模块写指令T0(FNC79)。
(1)数据输入指令 数据输入指令有10键输入指令TKY(FNC70)、16键输入指令HKY(FNC71)和数字开关输入指令DSW(FNC72)。
10键输入指令(D)TKY的使用如图3-72所示。源操作数[S.]用X0为首元件,10个键X0~X11分别为对应数字0~9。X30接通时执行TKY指令,如果以X2(2)、X9(8)、X3(3)、X0(0)的顺序按键,则[D1.]中存入数据为2830,实现了将按键变成十进制的数字量。当送入的数大于9999,则高位溢出并丢失。使用32位指令DTKY时,D1和D2组合使用,高位大于99999999则高位溢出。
图3-72 10键输入指令的使用
当按下X2后,M12置1并保持至另一键被按下,其它键也一样。M10~M19动作对应于X0~X11。任一键按下,键信号置1直到该键放开。当两个或更多的键被按下时,则首先按下的键有效。X30变为OFF时,D0中的数据保持不变,但M10~M20全部为OFF。此指令的源操作数可取X、Y、M、和S,目标操作数[D.]可取KnY、KnM、KnS、T、C、D、V和Z,[D2.]可取Y、M、S。16位运算占7个程序步,32运算时占13个程序步。该指令在程序中只能使用一次。
16键输入指令(D)HKY的作用是通过对键盘上的数字键和功能键输入的内容实现输入的复合运算。如图3-73所示,[S.]指定4个输入元件,[D1.]指定4个扫描输出点,[D2.]为键输入的存储元件。[D3.]指示读出元件。十六键中0~9为数字键,A~F为功能键,HKY指令输入的数字范围为0~9999,以二进制的方式存放在D0中,如果大于9999则溢出。DHKY指令可在D0和D1中存放*大为99999999的数据。功能键A~F与M0~M5对应,按下A键,M0置1并保持。按下D键M0置0,M3置1并保持。其余类推。如果同时按下多个键则先按下的有效。
图3-73 16键输入指令的使用
该指令源操作数为X,目标操作数[D1.]为Y。[D2]可以取T、C、D、V和Z,[D3.]可取Y、M和S。16位运算时占9个程序步,32位运算时为占17个程序步。扫描全部16键需8个扫描周期。HKY指令在程序中只能使用一次。
数字开关指令DSW的功能是读入1组或2组4位数字开关的设置值。如图3-74所示,源操作数[S]为X,用来指定输入点。[D1]为目标操作数为Y,用来指定选通点。[D2]指定数据存储单元,它可取T、C、D、V和Z。[n]指定数字开关组数。该指令只有16位运算,占9个程序步,可使用两次。图中,n=1指有1组BCD码数字开关。输入开关为X10~X13,按Y10~Y13的顺序选通读入。数据以二进制数的形式存放在D0中。若n=2,则有2组开关,第2组开关接到X14~X17上,仍由Y10~Y13顺序选通读入,数据以二进制的形式存放在D1中,第2组数据只有在n=2时才有效。当X1保持为ON时,Y10~Y13依次为ON。一个周期完成后标志位M8029置1。
图3-74 数字开关指令的使用
(2)数字译码输出指令 数字译码输出指令有七段译码指令SEGD(FNC73)和带锁存的七段显示指令SEGL(FNC74)两条。
七段译码指令SEGD(P) 如图3-75所示,将[S.]指定元件的低4位所确定的十六进制数(0~F)经译码后存于[D.]指定的元件中,以驱动七段显示器,[D.]的高8位保持不变。如果要显示0,则应在D0中放入数据为3FH。
图3-75 七段译码指令的使用
带锁存的7段显示指令SEGL的作用是用12个扫描周期的时间来控制一组或两组带锁存的七段译码显示。
(3)方向开关指令 方向开关指令ARWS(FNC75)是用于方向开关的输入和显示。如图3-76所示,该指令有四个参数,源操作数[S]可选X、Y、M、S。图中选择X10开始的4个按钮,位左移键和右移键用来指定输入的位,增加键和减少键用来设定指定位的数值。X0接通时指定的是*高位,按一次右移键或左移键可移动一位。指定位的数据可由增加键和减少键来修改,其值可显示在7段显示器上。目标操作数[D1]为输入的数据,由7段显示器监视其中的值(操作数可用T、C、D、V、和Z),[D2]只能用Y做操作数,n=0~3其确定的方法与SEGL指令相同。ARWS指令只能使用一次,而且必须用晶体管输出型的PLC。
图3-76 方向开关指令的使用
(4)ASEII码转换指令 ASCII码转换指令ASC(FNC76)的功能是将字符变换成ASCII码,并存放在指定的元件中。如图3-77所示,当X3有效时,则将FX2A变成ASCII码并送入D300和D301中。源操作数是8个字节以下的字母或数字,目标操作数为T,C,D。它只有16位运算,占11个程序步。
图 3-77 ASEII码转换指令说明
特殊功能模块读指令FROM(FNC78)和特殊功能模块写指令T0(FNC79)将在后面介绍