1.1 三菱PLC特殊功能模块与通信协议
1.1.1 FX2N系列PLC的特殊功能模块
现代工业控制给PLC提出了许多新的课题,如果用通用I/O模块来解决,在硬件方面费用太高,在软件方面编程相当麻烦,某些控制任务甚至无法用通用I/O模块来完成。为了增强PLC的功能,扩大其应用范围,PLC厂家开发了品种繁多的特殊用途I/O模块,包括带微处理器的智能I/O模块。
1.特殊功能模块的分类
不断开发各种具有特殊功能的模块,是当代PLC区别于传统PLC的重要标志之一。随着技术的进一步发展,PLC的应用领域正在日益扩大,除传统的顺序控制以外,PLC正在向过程控制、位置控制等方向延伸与发展。
为了扩大应用范围,在PLC中,经常将过程控制、位置控制等场合所需要的特殊控制功能集成于统一的模块内。模块可以直接安装于PLC的基板上,也可以与PLC基本单元的扩展接口进行连接,以构成PLC系统的整体,这样的模块被称为“特殊功能模块”。
特殊功能模块根据不同的用途,其内部组成与功能相差很大。部分特殊功能模块(如位置控制模块)既可以通过PLC进行控制,也可以独立使用,并且还可利用PLC的I/O模块进行输入输出点的扩展。模块本身具有独立的处理器(CPU)、存储器等组件,也可以进行独立的编程,其性能与独立的控制装置相当。
当前,PLC的特殊功能模块大致可以分为A/D、D/A转换类、温度测量与控制类、脉冲计数与位置控制类、网络通信类这4大类。模块的品种与规格根据PLC型号与模块用途的不同而不同,在部分PLC上可以多达数十种。
1)A/D、D/A转换类
A/D、D/A转换类功能模块包括模拟量输入模块(A/D转换)、模拟量输出模块(D/A转换)两类。根据数据转换的输入/输出点数(通道数量)、转换精度(转换位数、分辨率)等的不同,有多种规格可以供选择。
A/D转换功能模块的作用是将来自过程控制的传感器输入信号,如电压、电流等连续变化的物理量(模拟量)直接转换为一定位数的数字量信号,以供PLC进行运算与处理。
D/A转换功能模块的作用是将PLC内部的数字量信号转换为电压、电流等连续变化的物理量(模拟量)输出。它可以用于变频器、伺服驱动器等控制装置的速度、位置控制输入,也可以用来作为外部仪表的显示。
2)温度测量与控制类
温度测量与控制类功能模块包括温度测量与温度控制两类。根据测量输入点数(通道数量)、测量精度、检测元件类型等的不同,有多种规格可以供选择。
温度测量功能模块的作用是对过程控制的温度进行测量与显示,它可以直接连接热电偶、铂电阻等温度测量元件,并将来自过程控制的温度测量输入信号,转换为一定位数的数字量,以供PLC运算、处理使用。
温度控制功能模块的作用是将来自过程控制的温度测量输入与系统的温度给定信号进行比较,并通过参数可编程的PID(比例积分微分)调节与模块的自动调谐功能,实现温度的自动调节与控制。模块可以连接热电偶、铂电阻等温度测量元件,并输出对应的温度控制信号(触点输出、晶体管输出等),以控制加热器的工作状态。
3)脉冲计数与位置控制类
脉冲计数与位置控制类功能模块包括脉冲计数、位置控制两类。根据脉冲输入点数(通道数量)、频率,控制轴数等的不同,有多种规格可以供选择。
脉冲计数功能模块用于速度、位置等控制系统的转速、位置测量,对来自编码器、计数开关等的输入脉冲信号进行计数,从而获得实际控制系统的转速、位置的实际值,以供PLC运算、处理使用。
位置控制功能模块可以实现自动定位控制,模块可以将PLC内部的位置给定值转换为对应的位置脉冲输出,并通过改变输出脉冲的数量与频率,达到改变速度与位置的目的。脉冲输出的形式可以是差动输出、集电极开路晶体管输出或者通过SSCNET高速总线输出,连接的驱动器可以是步进电机驱动器或交流伺服驱动器,但驱动器必须具有位置控制功能,并且能够直接接受位置脉冲输入信号或是总线信号。
4)网络通信类
网络通信类功能模块包括串行通信、远程I/O主站、AS-i主站、Ethernet网络连接、MELSEC NET/H网络连接、CC-Link网络等。根据不同的网络与连接线的形式,有多种规格可以供选择。
2.特殊功能模块的使用与编程
在PLC控制系统中,特殊功能模块一般作为PLC的扩展单元使用,模块的控制与检测需要通过PLC的程序进行。
为了能够方便地实现PLC对特殊功能模块的控制,并减少应用指令的条数,统一应用指令的格式,在三菱PLC的特殊功能模块中设置了专门用于PLC与模块间进行信息交换的缓冲存储器(Buffer Memory,BFM)。缓冲存储器数据中包括了模块控制信号位、模块参数等控制条件,以及模块的工作状态信息、运算与处理结果、出错信息等内容。
PLC对模块的控制,只需要通过PLC的数据输出(TO)指令(FNC79)在模块缓冲存储器的对应控制数据位中写入控制信号即可。同样PLC对模块的状态检测,也只需要通过PLC的数据阅读(FROM)指令(FNC78)读出对应的模块缓冲存储器数据即可。
因此,对于所有的特殊功能模块,PLC的编程事实上只是不断利用PLC的TO与FROM指令对模块缓冲存储器进行读/写操作而已。为此,正确使用PLC的TO与FROM指令,是特殊功能模块编程的前提条件。
1)FROM指令
PLC的FROM指令的作用是将特殊功能模块缓冲存储器的内容读入到PLC中。指令的功能代号为FNC78,指令格式如下:
指令中各元件、操作数代表的意义依次如下。
X0:指令执行启动条件,当X0为“1”时,执行本指令。启动触点可以是输入X□□、输出Y□□、内部继电器M□□等。
DFROMP:指令代码,其中FROM为基本指令代码,代表特殊功能模块缓冲存储器。
阅读指令,带“□”的前缀D与后缀P可以根据情况选择使用,可有可无,前缀D表示32位操作指令,后缀P代表触点上升沿驱动。各种组合所代表的意义如下:
• FROM(无前缀D与后缀P):利用触点X0启动的16位数据阅读指令;
• DFROM(有前缀D,无后缀P):利用触点X0启动的32位数据阅读指令;
• ROMP(无前缀D,有后缀P):利用触点X0的上升沿启动的16位数据阅读指令;
• FROMP(有前缀D,有后缀P):利用触点X0的上升沿启动的32位数据阅读指令。
K1:模块地址常数,用来选择与指定特殊功能模块。如在FX系列PLC中,从基本单元开始,依次向右的第1、2、3……个特殊功能模块,对应的模块地址依次为K1、K2、K3……,在指令的这一区域只能输入常数K□。
K29:模块缓冲存储器的数据地址常数(数据源),K29代表模块缓冲存储器的参数BFM#29。在指令的这一区域只能输入常数K□,具体参数号决定于指令需要阅读的内容。
K4M0:数据在PLC中的存储位置指定(目标位置)。K4代表需要阅读的二进制数位数,以4位(bit)二进制数为单位,K4代表16位,允许输入的值为K1~K8。M0代表数据在PLC中的存储区域的首地址,在16位数据阅读时,若输入M0,代表读入的数据存储于PLC的内部继电器M0~M15中。存储位置也可以是16位数据寄存器D(常用),这时不需要前缀K4。
K1:需要传送的点数,采用FROM、FROMP格式时,以16位二进制数为单位,K1代表阅读16点,K2代表32点等。采用DFROM、DFROMP格式时,以32位二进制数为单位,K1代表阅读32点,K2代表64点等。允许输入的值为K1~K32767。
例如,对于如图1-1所示的各指令,其意义分别如下。
指令①的作用是:当X0为“1”时,将安装于基本单元右侧的第1个特殊功能模块的缓冲存储器的参数BFM#29读入到PLC的M0~M15的16点内部继电器中。
图1-1 FROM指令使用意义
指令②的作用是:在X0为“1”的瞬间,利用X0的上升沿,将安装于基本单元右侧的第1个特殊功能模块的缓冲存储器的参数BFM#29读入到PLC的M0~M15的16点内部继电器中。
指令③的作用是:当X0为“1”时,将安装于基本单元右侧的第1个特殊功能模块的缓冲存储器的参数BFM#29读入到PLC的16位数据存储器D0中。
指令④的作用是:当X0为“1”时,将安装于基本单元右侧的第1个特殊功能模块的缓冲存储器的参数BFM#29、BFM#30读入到PLC的16位数据存储器D0、D1中(32位阅读指令)。
指令⑤的作用是:当X0为“1”时,将安装于基本单元右侧的第1个特殊功能模块的缓冲存储器的参数BFM#29、BFM#30读入到PLC的16位数据存储器D0、D1中(16位阅读指令,但传送点数为连续32点)。
指令⑥的作用是:当X0为“1”时,将安装于基本单元右侧的第1个特殊功能模块的缓冲存储器的参数BFM#29、BFM#30、BFM#31、BFM#32读入到PLC的16位数据存储器D0、D1、D2、D3中(32位阅读指令,传送点数为连续64点)。
2)TO指令
TO指令的作用是将PLC中指定的内容写入特殊功能模块的缓冲存储器中。指令的功能代号为FNC79,指令格式如下:
指令中各元件、操作数代表的意义依次如下。
X0:指令执行启动条件。
DTOP:指令代码,其中TO为基本指令代码,代表特殊功能模块缓冲存储器写入指令,前缀D表示32位操作指令,后缀P代表触点上升沿驱动。
K1:模块地址常数,用来选择与指定特殊功能模块。
K29:模块缓冲存储器的数据地址常数,在TO指令中为目标位置,K29代表模块缓冲存储器的参数BFM#29。
K4M0:源数据在PLC中的存储位置指定。K4代表需要写入的二进制数位数,以4位(bit)二进制数为单位,K4代表16位,允许输入的值为K1~K8。MO代表源数据在PLC中的存储区域的首地址。源数据也可以是16位数据寄存器D(常用),这时不需要前缀K4。
K1:需要传送的点数,允许输入的值为K1~K32767。
指令中各操作数的含义和要求与FROM指令一致。
3.四通道A/D转换模块FX2N-4AD
三菱FX2N-4AD可将外部输入的4点(通道)模拟量(模拟电压或电流)转换为PLC内部处理需要的数字量。FX2N-4AD的模拟量输入可以是双极性的,转换结果为12位带符号的数字量。
1)性能规格
三菱FX2N-4AD四通道A/D转换模块的主要性能参数见表1-1。
表1-1 三菱FX2N-4AD四通道A/D转换模块的主要性能参数
2)模块连接
三菱FX2N-4AD模块通过扩展电缆与PLC基本单元或扩展单元相连接,通过PLC内部总线传送数字量并且需要外部提供DC 24V电源输入。
外部模拟量输入及DC 24V电源与模块间的连接要求如图1-2所示。
3)输出特性
三菱FX2N-4AD模块的A/D转换输出特性如图1-3所示,4通道的输出特性可以不同。
模块的最大转换位数为12位,首位为符号位,对应的数字量输出范围为-2048~2047。同样,为了计算方便,通常情况下将最大模拟量输入(DC 10V或20mA)所对应的数字量输出设定为2000(DC 10V)或1000(20mA)。
图1-2 外部模拟量输入及DC 24V电源与模块间的连接
图1-3 三菱FX2N-4AD模块的A/D转换输出特性
4)编程与控制
三菱FX2N-4AD模块只需要通过PLC的TO指令(FNC79)写入转换控制指令,利用FROM指令(FNC78)读入转换结果即可。
FX2N-4AD常用的参数如下。
(1)转换结果。
转换结果数据在模块缓冲存储器中的存储地址如下:
BFM#5:通道1的转换结果数据(采样平均值);
BFM#6:通道2的转换结果数据(采样平均值);
BFM#7:通道3的转换结果数据(采样平均值);
BFM#8:通道4的转换结果数据(采样平均值);
BFM#9~#12:依次为通道1~4转换结果数据(当前采样值)。
(2)控制信号。
A/D转换的控制信号在模块缓冲存储器中的定义如下。
BFM#0:通道选择与控制字:
“0”:通道模拟量输入为-10~+10V直流电压;
“1”:通道模拟量输入为+4~+20mA直流电流;
“2”:通道模拟量输入为-20~+20mA直流电流;
“3”:通道关闭。
BFM#1~#4:分别为通道1~4的采样次数设定。
BFM#15:通道采样速度设定:
“0”:15ms/通道;
“1”:6ms/通道。
BFM#20:通道控制数据初始化:
“0”:正常设定;
“1”:恢复出厂默认数据。
BFM#21:通道调整允许设定:
“01”:允许改变参数调整增益、偏移量的设定;
“10”:禁止调整增益、偏移量。
(3)模块工作状态输出。
FX2N-4AD可以通过读出内部参数检查模块的工作状态。A/D工作状态信号在模块缓冲存储器中的定义如下。
BFM#29:模块工作状态信息。以二进制数位的状态表示,具体如下。
bit0:“1”为模块存在报警,报警原因由BFM#29bit1~bit39表示(BFM#29bitl~bit39任何一位为“1”,本位总是为“1”);“0”为模块正常工作。
bit1:“1”为模块偏移/增益调整错误;“0”为模块偏移/增益调整正确。
bit2:“1”为模块输入电源错误;“0”为模块电源正常。
bit3:“1”为模块硬件不良;“0”为模块硬件正常。
bit10:“1”为数字量超过允许范围;“0”为数字量输出正常。
bit11:“1”为采样次数超过允许范围;“0”为采样次数设定正常。
bit12:“1”为增益、偏移量的调整被参数禁止;“0”为增益、偏移量的调整允许。
BFM#30:模块ID号。FX2N-4AD模块的ID号为2010。
BFM#23:偏移调整。
BFM#24:增益调整。
5)编程实例
启动并读出通道1、通道2的直流-10~10V模拟量转换数据的PLC控制程序,如图1-4所示。
6)注意事项
(1)三菱FX2N-4AD通过双绞线屏蔽电缆来连接。电缆应远离电源线或其他可能产生电气干扰的电线。
(2)如果输入有电压波动,或在外部接线中有电气干扰,可以在Vin和COM之间接一个平滑电容器(0.1~0.47µF/25V)。
(3)如果使用电流输入,则必须连接V+和I-端子。
(4)如果存在过多的电气干扰,需要将电缆屏蔽层与FG端连接,并连接到FX2N-4AD的接地端。
(5)连接FX2N-4AD的接地端与主单元的接地端。可行的话,在主单元使用3级接地。
图1-4 FX2N-4AD编程实例
1.1.2 三菱PLC编程口通信协议
三菱PLC有串口(RS-232C、RS-485)通信协议,功能很强,但较复杂,其内容可参阅它的说明书(如FX通信用户手册)。三菱还有编程口通信协议,也可用于RS-232C口。现对编程口通信协议作简要介绍。
1.命令帧格式
图1-5所示为FX协议发送通信命令帧格式。
图1-5 FX协议发送通信命令帧格式
此帧格式中各个部分的含义如下。
STX为开始字符,其ASCII码十六进制数值为02H。
CMD为命令码,命令码有读或写等,占1字节。读ASCII码为30H,写ASCII码为31H。读、写的对象可以是FX的数据区。
ADDR为起始地址,十六进制数表示,占4字节,不足4字节高位补0。
NUM为读或写的字节数,十六进制数表示,占2字符,不足2字符高位补0,最多可以读、写64字节的数据。读可以为奇数字节,而写必须为偶数字节。
DATA为写数据,在此填入要写的数据,每字节两个字符。如字数据,则低字节在前,高字节在后。用十六进制数表示,所填的数据个数应与NUM指定的数相符。
ETX为结束字符,其ASCII码十六进制数值为03H。
SUM为累加和,从命令码开始到结束字符(包含结束字符)的各个字符的ASCII码,进行十六进制数累加。累加和超过两位数时,取它的低两位,不足两位时高位补0,也用十六进制数表示。其计算公式为
SUM=CMD+ADDR+NUM+DATA1+DATA2+…+ETX
2.响应帧格式
响应帧格式与所发的命令相关。
对写命令:如写成功,则应答ACK,一个字符,其ASCII码的值是06H;如写失败,则应答NAK,一个字符,其ASCII码的值为15H。
对读命令:如读失败,也是应答NAK。如成功,其响应帧格式如图1-6所示。
图1-6 FX协议读命令响应帧格式
DATA1、DATA2……为读出的数据,字节个数由命令帧格式中的NUM决定。
读数据或写数据总是低字节在前,高字节在后。如按字处理此数据,必须作相应处理。最多可以读取64字节的数据。
3.地址计算
协议中地址ADDR的计算比较复杂,各个数据区算法都不同,分别说明如下。
1)对于D区
如地址ADDR小于8000,则
ADDR=1000H+ADDR0×2 (ADDR0为实际地址值,200~1023)
如ADDR大于等于8000,则
ADDR=0E00H+(ADDR0-8000)×2
如寄存器D100的地址算法:100×2为200,十进制数200转成十六进制数是C8H,C8H+1000H是10C8H,10C8H再转成ASCII码为31 30 43 38,即ADDR=31 30 43 38。
2)对于C区
(1)对于C区(字或双字)。
如地址ADDR小于200,则
ADDR=0A00H+ADDR0×2
如ADDR大于等于200(为可双字逆计数器),则
ADDR=0C00H+(ADDR0-200)×4 (ADDR0从200~255)
(2)对于C区(位)。
如地址ADDR小于200,则
ADDR=01C0H+ADDR0×2
3)对于T区
(1)对于T区(字)。
ADDR=0800H+ADDR×2 (ADDR0从0~255)
(2)对于T区(位)。
ADDR=00C0H+ADDR×2 (ADDR0从0~255)
4)对于M区
如地址ADDR小于8000,则
ADDR=0100H+ADDR0/8 (ADDR0从0~3071)
如ADDR大于等于8000,则
ADDR=01E0H+(ADDR0-8000)/8
5)对于Y区
要先把地址转换成十进制数,再按下式计算。
ADDR=00A0H+ADDR0/8 (ADDR0从0~最大输出点数)
6)对于X区
要先把地址转换成十进制数,再按下式计算。
ADDR=0080H+ADDR0/8 (ADDR0从0~最大输入点数)
7)对于S区
ADDR=ADDR0/8 (ADDR0从0~899)
表1-2所示为三菱FX系列PLC用于读写时X、Y、S、C区的位地址表。
表1-2 三菱FX系列PLC用于读写时X、Y、S、C区的位地址表
表1-3所示为三菱FX系列PLC用于读写时T、M、D区的位地址表。
表1-3 三菱FX系列PLC用于读写时T、M、D区的位地址表
4.强制置位与复位
图1-7所示为FX协议强制置位与复位命令帧格式。
图1-7 FX协议强制置位与复位命令帧格式
此帧格式中各部分的含义如下。
STX为开始字符,其ASCII码十六进制数值为02H。
CMD为命令码,命令码有读或写,占1字节。强制置位ASCII码为37H,强制复位ASCII码为38H。其对象为位数据区。
ADDR为地址,十六进制数表示,占4字节,不足4字节高位补0。
ETX为结束字符,其ASCII码十六进制数值为03H。
SUM为累加和,从命令码开始到结束字符(包含结束字符)的各个字符的ASCII码,进行十六进制数累加。累加和超过两位数时,取它的低两位,不足两位时高位补0,也用十六进制数表示。
累加和计算公式为SUM = CMD+ADDR+ETX。
表1-4所示为用于强制置位与复位时的位地址。
表1-4 强制置位与复位时的位地址
表1-5所示为用于三菱FX2N-32MR PLC强制置位与复位时的位地址。
表1-5 三菱FX2N-32MR PLC强制置位与复位时的位地址
地址具体表达时是后两位先送,其次为前两位。按照这个表与规则,如实际地址Y000,其计算地址为0500,ASCII码值为30 35 30 30;而表达此地址为0005,发送指令的ASCII码值为30 30 30 35。这种地址表达,与字读写是不同的。
5.读写指令示例
【例1】 读取PLC的D10、D11数据。D10实际值为ABCD,D11实际值为EF89。
发送读指令的获取过程如下。
开始字符STX:02H。
命令码CMD(读):0,ASCII码值为30H。
起始地址:10×2为20,转成十六进制数为14H,则
ADDR=1000H+14H=1014H(其ASCII码值为31H 30H 31H 34H)
字节数NUM:4,ASCII码值为30H 34H。
结束字符EXT:03H。
累加和SUM:30H+31H+30H+31H+34H+30H+34H+03H=15DH。
累加和超过两位数时,取它的低两位,即SUM为5DH,5DH的ASCII码值为35H 44H。
对应的读命令帧格式为02 30 31 30 31 34 30 34 03 35 44
PLC接收到此命令,如未正确执行,则返回NAK码(15H)。如正确执行返回应答帧如下:
02 43 44 41 42 38 39 45 46 03 46 44
D10实际值为ABCD,用ASCII码值表示为41 42 43 44,在返回的应答帧中低字节在前,高字节在后,即43 44 41 42;D11实际值为EF89,用ASCII码值表示为45 46 38 39,在返回的应答帧中低字节在前,高字节在后,即38 39 45 46。(因为NUM=04H,所以返回2个数据)
【例2】 从PLC的D123开始读取4字节数据。D123中的数据为3584。
发送读指令的获取过程如下:
开始字符STX:02H。
命令码CMD(读):0,ASCII码值为30H。
起始地址:123×2为246,转成十六进制数为F6H,则
ADDR=1000H+F6H=10F6H(其ASCII码值为31H 30H 46H 36H)
字节数NUM:2,ASCII码值为30H 32H。02H表示往1个寄存器发送数值,04H表示往2个寄存器发送数值,依此类推。
结束字符EXT:03H。
累加和SUM:30H+31H+30H+46H+36H+30H+32H+03H=172H。
累加和超过两位数时,取它的低两位,即SUM为72H,72H的ASCII码值为37H 32H。
对应的读命令帧格式为02 30 31 30 46 36 30 32 03 37 32
PLC接收到此命令,如未正确执行,则返回NAK码(15H)。如正确执行返回应答帧如下:
02 38 34 33 35 03 44 36
D123中的数据为3584,用ASCII码值表示为33 35 38 34,在返回的应答帧中低字节在前,高字节在后,即38 34 33 35。(因为NUM=02H,所以返回1个数据)
【例3】 向PLC的D0、D1写4字节。要求写给D0的数为1234,写给D1的数为5678。
发送写指令的获取过程如下。
开始字符STX:02H。
命令码CMD(写):1,ASCII码值为31H。
起始地址
ADDR=1000H+0×2=1000H(其ASCII码值为31H 30H 30H 30H)
字节数NUM:4,ASCII码值为30H 34H。
数据DATA(低字节在前,高字节在后):写给D0的数为3 (33H) 4 (34H) 1 (31H) 2 (32H);写给D1的数为7 (37H) 8 (38H) 5 (35H) 6 (36H)。
结束字符EXT:03H。
累加和SUM:
31H+31H+30H+30H+30H+30H+34H+33H+34H+31H+32H+37H+38H+35H+36H+03H=2FDH。
累加和超过两位数时,取它的低两位,即SUM为FDH,FDH的ASCII码值为46H 44H。
对应的写命令帧格式为
02 31 31 30 30 30 30 34 33 34 31 32 37 38 35 36 03 46 44
PLC接收到此命令,如正确执行,则返回ACK码(06H),否则返回NAK码(15H)。
【例4】 向D123开始的两个存储器中写入1234和ABCD。
发送写指令的获取过程如下。
开始字符STX:02H。
命令码CMD(写):1,ASCII码值为:31H。
起始地址:123×2为246,转成十六进制数为F6H,则
ADDR=1000H+F6H=10F6H(其ASCII码值为31H 30H 46H 36H)
字节数NUM:4,ASCII码值为30H 34H。
数据DATA(低字节在前,高字节在后):写给D123的数为3 (33H) 4 (34H) 1 (31H) 2 (32H) C (43H) D (44H) A (41H) B (42H)。
结束字符EXT:03H。
累加和SUM:
31H+31H+30H+46H+36H+30H+34H+33H+34H+31H+32H+43H+44H+41H+42H+03H=349H。
累加和超过两位数时,取它的低两位,即SUM为49H,49H的ASCII码值为34H 39H。
对应的写命令帧格式为
02 31 31 30 46 36 30 34 33 34 31 32 43 44 41 42 03 34 39
PLC接收到此命令,如正确执行,则返回ACK码(06H),否则返回NAK码(15H)。
【例5】 从PLC的X10~X17读取1字节数据,反映X10~X17的状态信息。
发送读指令的获取过程如下。
开始字符STX:02H。
命令码CMD(读):0,ASCII码值为30H。
寄存器X10~X17的位地址为0081H,其ASCII码值为30H 30H 38H 31H。
字节数NUM:1,ASCII码值为30H 31H。
结束字符EXT:03H。
累加和SUM:30H+30H+30H+38H+31H+30H+31H+03H=15DH。
累加和超过两位数时,取它的低两位,即SUM为5DH,5DH的ASCII码值为35H 44H。
因此,对应的读命令帧格式为
02 30 30 30 38 31 30 31 03 35 44
PLC接收到命令,如正确执行返回应答帧,如“02 38 31 03 36 43”。返回的应答帧中黑体字“38 31”表示X10~X17的状态,其十六进制数为81,81的二进制数为10000001,表明触点X10和X17闭合,X11~X16触点断开。如未正确执行,则返回NAK码(15H)。
同理,可以读取寄存器X0~X7的数据,其位地址为0080H,对应的读命令帧格式为
02 30 30 30 38 30 30 31 03 35 43
PLC接收到命令,如正确执行返回应答帧,如“02 30 34 03 36 37”。返回的应答帧中黑体字“30 34”表示X0~X7的状态,其十六进制数为04,04的二进制数为00000100,表明触点X2闭合,其他触点断开。
【例6】 将PLC的Y10,Y17置位成1,再复位成0。
发送写指令的获取过程如下。
开始字符STX:02H。
命令码CMD(写):1,ASCII码值为31H。
寄存器Y10~Y17的位地址为00A1H,其ASCII码值为30H 30H 41H 31H。
字节数NUM:2,ASCII码值为30H 32H。
将PLC的Y10,Y17置位成1, 其状态值为10000001,转换为十六进制数为81,其ASCII码值为38H 31H 30H 30H。
结束字符EXT:03H。
累加和SUM:31H+30H+30H+41H+31H+30H+32H+38H+31H+30H+30H+03H=231H。
累加和超过两位数时,取它的低两位,即SUM为31H,31H的ASCII码值为:33H 31H。
因此,对应的写命令帧格式为
02 31 30 30 41 31 30 32 38 31 30 30 03 33 31
PLC接收到命令,如正确执行返回应答帧06H,继电器Y10和Y17闭合,对应指示灯亮。如未正确执行,则返回NAK码(15H)。
将PLC的Y10,Y17复位成0, 其状态值为00000000,转换为十六进制数为00,其ASCII码值为30H 30H 30H 30H。
累加和SUM:31H+30H+30H+41H+31H+30H+32H+30H+30H+30H+30H+03H=228H。
累加和超过两位数时,取它的低两位,即SUM为28H,28H的ASCII码值为32H 38H。
因此,对应的写命令帧格式为
02 31 30 30 41 31 30 32 30 30 30 30 03 32 38
PLC接收到命令,如正确执行返回应答帧06H,继电器Y10和Y17断开,对应指示灯灭。如未正确执行,则返回NAK码(15H)。
同理,将PLC的Y0,Y7置位成1,其位地址为00A0H,对应的写命令帧格式为
02 31 30 30 41 30 30 32 38 31 30 30 03 33 30
将PLC的Y0,Y7复位成0,其位地址为00A0H,对应的写命令帧格式为
02 31 30 30 41 30 30 32 30 30 30 30 03 32 37
【例7】 将Y10位强制置位成1,再强制复位成0。
发送写指令的获取过程如下。
开始字符STX:02H。
命令码CMD:强制置位为7,ASCII码为37H;强制复位为8,ASCII码为38H。
地址:实际地址为Y10,计算地址为0508,因后两位先送,前两位后送,则表达地址为0805,其ASCII码值为30H 38H 30H 35H。
结束字符EXT:03H。
强制置位的累加和SUM:37H+30H+38H+30H+35H+03H=107H,累加和超过两位数时,取它的低两位,即SUM为07H,07H的ASCII码值为30H 37H。
强制复位的累加和SUM:38H+30H+38H+30H+35H+03H=108H,累加和超过两位数时,取它的低两位,即SUM为08H,08H的ASCII码值为30H、38H。
对应的强制置位写命令帧格式为02 37 30 38 30 35 03 30 37。
对应的强制复位写命令帧格式为02 38 30 38 30 35 03 30 38。
PLC接收到此命令,如正确执行,则返回ACK码(06H),否则返回NAK码(15H)。