下面我们以英威腾GD200A系列变频器为例给大家介绍如何通过Modbus协议进行通讯控制,在此之前简单给大家做一些前提工作。
Mdobus协议内容变频器接线变频器参数设置Modbus通讯数据格式变频器通讯地址
Modbust协议
关于Modbus通讯协议这块我们参考英威腾变频器的说明手册进行简单理解
变频器采用Modbus 通讯协议进行的主从通讯可通过 PC/PLC、控制上位机等实现集中控制(设定变频器控制命令、运行频率、相关功能码参数的修改,变频器工作状态及故障信息的监控等),以适应特定的应用要求。
Modbus 协议是一种软件协议,是应用于电子控制器上的一种通用语言。通过此协议,控制器可以经由传输线路和其它设备进行通讯。它是一种通用工业标准,有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
Modbus 协议有两种传输模式:ASCII 模式和 RTU(远程终端单元,Remote Terminal Units)模式。在同一个 Modbus 网络中,所有的设备传输模式、波特率、数据位、校验位、停止位等基本参数必须一致。
Modbus 网络是一种单主多从的控制网络,即同一个 Modbus 网络中只有一台设备是主机,其它设备都为从机。主机可以单独地对某台从机通讯,也可以对所有从机发布广播信息。对于单独访问的命令,从机都应返回一个回应信息;对应主机发出的广播信息,从机无需反馈回应信息给主机。
简单来说就是在Modbus通讯中变频器作为从站,我们的PLC或者其他控制器作为主站进行通讯,发送的数据格式这里使用RTU或者ASCII来完成传输,因为在大多数的中低端型号的变频器中Modbus是支持最广泛的一种通讯。
Modbust接线
关于它的接线很简单使用两根线缆即可完成通信,采用RS485接口实现通讯,接口类型形式有许多,比如普通端子类型、RJ45网口、RJ11电话接口等类型。RS485 接口工作于半双工,数据信号采用差分传输方式,使用一对双绞线来完成。端子定义名称通常也不统一的。例如A(+)、B(-),有SG+、SG-,DX+、DX-,SDA(RDA)、SDB(RDB)等等,只要正的与485+连接,负的与485-连接即可,可通过变频器手册来进行定义查询。英威腾变频器的RS485接口的端子定义就是485+和485-,我们只需要把控制器的对应的通信线接入即可。
变频器参数设置
变频器的最主要的控制就是频率命令与运行命令的设定,简单来讲就是调速与开关的控制,这个参数通常位于基本参数组,这里我们只设置常用的一些参数。通讯参数一般需要设置站号、波特率(传输速度)、数据位校验设置、通讯超时等。
后面的内容我们依次使用PC上的串口通信助手、三菱FX3G系列PLC、西门子200smart系列的PLC以及HMI触摸屏来演示对英威腾变频器的控制。
变频器参数设置如下:
P00.01运行指令通道选择2通讯运行指令通道P00.06A频率指令选择8MODBUS通讯设定P00.09设定源组合方式选择0A,当前频率设定A频率指令P14.00本机通讯地址设定站号1P14.01通讯波特率设置为3(9600)P14.02数据位校验设置为3无校验(N,8,2)for RTU或者15无校验(N,8,2)for ASCII
其中波特率与数据校验可随意设置,需要与控制器设置一致即可。
Modbus数据格式
RTU帧的标准结构
帧头START
T1-T2-T3-T4(3.5个字节的传输时间)
从机地址域ADDR
通讯地址:0~247(十进制)
功能域CMD
03H:读从机参数
06H:写从机参数
数据域
DATA(N-1)
. . .
DATA(0)
2*N个字节的数据,该部分为通讯的主要内容,也是通讯中,数据
交换的核心
CRC CHK 低位
检测值:CRC校验值(16BIT)
CRC CHK 高位
帧尾END
T1-T2-T3-T4(3.5个字节的传输时间)
从机地址就是变频器的站号,功能码这里介绍两个06H(写) 03H(读),数据就是要写入的数据或者读取数据的个数,例如设置变频器频率50.00Hz,发送的数据就是13 88(16进制数据,按照高低8位),如果要读取变频器的频率,发送的数据就是00 01(读取2个字节的数据)。校验码指的是整个数据校验,RTU格式使用CRC校验,ASCII格式使用LRC校验,这个校验码可通过串口助手计算或者编程完成。其计算原理我们在后续的PLC程序进行讲解。
ASCII帧的标准结构
帧头
起始字符‘:’(0x3A)
从机地址地址高位
通讯地址:
8-bit 地址由2个ASCII码组合
从机地址地址低位
功能码高位
功能码:
8-bit 地址由2个ASCII码组合
功能码低位
数据域
DATA(N-1)
. . .
DATA(0)
数据内容:
nx8-bit 数据内容由2n个ASCII码组合
n<=16,最大32个ASCII码
LRC CHK高位
LRC检查码:
8-bit 检验码由2个ASCII码组合
LRC CHK低位
帧尾高位
结束符:
END Hi=CR(0x0D),END Lo=LF(0x0A)
帧尾低位
在ASCII数据中每个 16 进制都需要进行对应字符的ASCII码的转换如下表:
字符
“0”
“1”
“2”
“3”
“4”
“5”
“6”
“7”
ASCII码
30H
31H
32H
33H
34H
35H
36H
37H
字符
“8”
“9”
“A”
“B”
“C”
“D”
“E”
“F”
ASCII码
38H
39H
41H
42H
43H
44H
45H
46H
这其中RTU和ASCII的编码系统与数据格式在这里不做详细说明,对于我们来讲也不太需要,我们只要了解与变频器通讯需要发送那些数据,工程数据与通讯数据是如何转换的即可,下面我们分别以RTU与ASCII为例说明通讯的数据发送过程。
将5000(十进制)数据写入到站号为2地址0004(16进制)的变频器当中,首先我们需要把5000的十进制数据转换为16进制的1388H(数字后跟一个“H”或者前缀“0x”表示 16 进制数字),因为数据都是8位发送的,所以有1388H拆分为高为13H与低位88H依次发送。那么按照RTU的标准格式:
RTU发送
站号
02H
功能码(发送)
06H
变频器数据地址高位
00H
变频器数据地址低位
04H
发送数据的高位
13H
发送数据的低位
88H
校验码CRC低位
C5H
校验码CRC高位
6EH
这里我们需要注意CRC校验码的顺序是先低位后高位,在计算CRC的结果后需要进行高低位转换。
ASCII发送
字符→ASCII
STX起始符
3AH
站号
“0”→30H
“2”→32H
数据地址高位
“0”→30H
“0”→30H
数据地址低位
“0”→30H
“4”→34H
发送数据高位
“1”→31H
“3”→31H
发送数据低位
“8”→31H
“8”→31H
校验码LRC低位
“5”→35H
校验码LRC高位
“9”→39H
结束符高位
0DH
结束符低位
0AH
变频器通讯地址
所谓的通讯地址就是要知道通讯数据的地址定义,用于控制变频器的运行、获取变频器状态信息及变频器相关功能参数设定等,这里我们介绍常用的几个地址。
控制功能
地址定义
数据说明
读写特性
正转命令
2000H
0001H
W/R
反转命令
2000H
0002H
W/R
停止命令
2000H
0001H
W/R
频率设定
2001H
0~Fmax(位:0.01Hz)
变频器状态
2100H
0001H:正转运行
0001H:反转运行
0001H:停机
0001H:故障
R
运行频率
3000H
设定范围:0.00Hz~P00.03
R
输出电压
3003H
设定范围:0~1200V
R
输出电流
3004H
设定范围:0.0~5000.0A
R
R/W 特性表示该功能是读/写特性,R代表可进行读取操作,W代表可进行写入操作,W/R表示可读取和写入操作。
以上几部分就是做Modbus通讯的前提内容,后面的内容我们将通过PC上的串口通讯、PLC以及触摸屏依次演示与英威腾变频器的通讯控制。