上一节内容我们介绍了Modbus通讯的前提内容包括协议、接线、变频器参数设置、数据格式、变频器通讯地址。今天我们使用电脑上的串口通讯助手软件向变频器发送控制指令,主要有硬件连接、通讯设置、指令讲解、现场演示验证。使用到的硬件、软件如下:
- PC(电脑)一台
- 英威腾GD200A变频器一台
- 三相异步电机一台
- USB转RS485转换器一台
- 串口通讯助手软件
硬件连接
由于笔记本电脑没有串口,因此需要一个USB转串口的工具与变频器的RS485接口进行连接,这个转换器在网上就可以购买到,变频器驱动一台三相异步电机,控制其进行正反转的运行、调频以及运行状态的监控,具体连接实物图如下:
变频器使用的英威腾GD200A系列的,串口通讯助手最好下载带有校验码计算的方便我们计算CRC与LRC数值,转换器的A+与变频器的485+连接,B-与变频器的485-连接,负载是一台普通三相电机,所有的控制都通过通讯来完成,电气原理图如下:
通讯设置
按照上一节的参数设置进行变频器调节,频率指令与运行指令都由Modbus通讯控制,具体参数设置如下表:
参数 | 名称 | 参数说明 |
P00.01 | 运行指令通道 | 2:通讯运行指令 |
P00.06 | 频率指令选择 | 8:MODBUS通讯设定 |
P14.00 | 本机通讯地址 | 1:站号设定01 |
P14.01 | 波特率 | 3:9600BPS |
P14.02 | 数据为校验 | 3:无校验(N,8,2)for RTU 15:无校验(N,8,2)for ASCII |
根据变频器参数的设置,串口助手软件的通讯设置与变频器一致包括波特率、数据位、校验位和停止位,串口设置如下图所示,设置完成后点击“打开串口”在左下角回显示串口的通讯参数。
端口号可通过电脑上的设备管理器进行查询如下图标注:
指令讲解
3.1 RTU数据格式
参照上节内容我们需要给变频器发送的指令有:
- 电机正转控制
- 电机反转控制
- 电机停止控制
- 频率设定控制(50Hz、30Hz、10Hz)
- 运行频率读取
- 输出电压读取
- 输出电流读取
首先我们再来回顾下变频器的通讯地址:
控制功能 | 地址定义 | 数据说明 | 读写特性 |
正转命令 | 2000H | 0001H | W/R |
反转命令 | 2000H | 0002H | W/R |
停止命令 | 2000H | 0001H | W/R |
频率设定 | 2001H | 0~Fmax(位:0.01Hz) | |
运行频率 | 3000H | 设定范围:0.00Hz~P00.03 | R |
输出电压 | 3003H | 设定范围:0~1200V | R |
输出电流 | 3004H | 设定范围:0.0~5000.0A | R |
按照RTU数据帧与变频器的通讯地址列出与之相对应的指令:
1频率设定
指令功能 | 指令内容 |
设定频率10Hz | 01 06 20 01 03 E8 D3 74 |
设定频率30Hz | 01 06 20 01 0B B8 D4 88 |
设定频率50Hz | 01 06 20 01 13 88 DE 9C |
我们以第一个指令说明:
变频器地址 写命令 参数地址 发送数据 CRC
01代表变频器的站号,06代表写入功能,2001代表变频器设定频率的地址(分高低8位依次发送),03E8是10.00Hz(1000的16进制数),D374代表CRC校验码。
2运行控制
指令功能 | 指令内容 |
电机正转 | 01 06 20 00 00 01 43 CA |
电机反转 | 01 06 20 00 00 02 03 CB |
电机停止 | 01 06 20 00 00 05 42 09 |
3状态读取
指令功能 | 指令内容 |
运行频率 | 01 03 30 00 00 01 8B 0A |
输出电压 | 01 03 30 03 00 01 7B 0A |
输出电流 | 01 03 30 04 00 01 CA CB |
对于读取指令来讲,01代表变频器的站号,03代表读取功能,3000代表变频器设定频率的地址(分高低8位依次发送),0001是表示读取数据个数,8B 0A代表CRC校验码。
3.2 ASCII数据格式
1频率设定
指令功能 | 指令内容 |
设定频率10Hz | 01 06 20 01 03 E8 ED ASCII:3A 30 31 30 36 32 30 30 31 30 33 45 38 45 44 0D 0A |
设定频率30Hz | 01 06 20 01 0B B8 15 ASCII:3A 30 31 30 36 32 30 30 31 30 42 42 38 31 35 0D 0A |
设定频率50Hz | 01 06 20 01 13 88 3D ASCII:3A 30 31 30 36 32 30 30 31 31 33 38 38 33 44 0D 0A |
我们看下第一条指令,按照ASCII的数据格式,字符0 1 0 6 2 0 0 1 0 3 E 8 E D转换为ASCII就是3A 30 31 30 36 32 30 30 31 30 33 45 38 45 44 0D 0A,其中最前的3A是起始符,后面的0D和0A是结束符。
2运行控制
指令功能 | 指令内容 |
电机正转 | 01 06 20 00 00 01 D8 ASCII:3A 30 31 30 36 32 30 30 30 30 30 30 31 44 38 0D 0A |
电机反转 | 01 06 20 00 00 02 D7 ASCII:3A 30 31 30 36 32 30 30 30 30 30 30 32 44 37 0D 0A |
电机停止 | 01 06 20 00 00 05 D4 ASCII:3A 30 31 30 36 32 30 30 30 30 30 30 35 44 34 0D 0A |
3状态读取
指令功能 | 指令内容 |
运行频率 | 01 03 30 00 00 01 CB ASCII:3A 30 31 30 33 33 30 30 30 30 30 30 31 43 42 0D 0A |
输出电压 | 01 03 30 03 00 01 C8 ASCII:3A 30 31 30 33 33 30 30 33 30 30 30 31 43 38 0D 0A |
输出电流 | 01 03 30 04 00 01 C7 ASCII:3A 30 31 30 33 33 30 30 34 30 30 30 31 43 37 0D 0A |
现场演示
先介绍下串口助手界面,左上方是串口通讯设置,左下方是接收和发送设置包括数据显示方式是字符(ASCII)和16进制(HEX)、换行显示、数据保存等,右上方黑色背景的是命令接收框,黄色箭头向右的表示发送数据,黄色箭头向左的表示接收数据,右侧最下方就是命令输入的地方。
下面我们分别列举几个命令发送的界面
50Hz频率写入(RTU)
正转运行(RTU)
运行电压监控(RTU)
写入操作中串口助手向变频器发送的指令与变频器返回的指令是一样的,而读取操作中是不一致的,例如上图中的输出电压,返回的指令是01 03 02 01 7A 38 37,其中01代表站号,03代表读取功能,02代表数据个数,017A的十六进制数转换十进制就是378代表输出电压是378V,后两位是CRC校验码。
30Hz频率写入(ASCII)
反转运行(ASCII)
运行频率监控(ASCII)
需要注意的是与RTU格式相比,ASCII码返回的数据需要反向转换,例如上图中的输出电压31 33 38 38先转换为1388的16进制数然后再转为10进制的5000,由于其单位是0.01Hz,所以最后的运行频率就是50.00Hz。
在ASCII格式中串口通讯助手除了选择16进制数据外,还可以直接发送ASCII的字符,此时不需要发送结束符OD和0A,如果使用字符输入切记不能输入空格,第一个字符是":",两种输入方式效果是一样的如下图所示:
通过串口助手软件的演示,我们可以清楚的观察到变频器Modbus通讯时指令的发送过程及返回,能够很好的理解它的通讯格式、数据内容的转换。
通过这节内容的学习,我们掌握了Modbus通讯需要哪些数据,数据与指令之间是如何相互转换的,下一节内容在此次学习的基础上使用PLC来完成对变频器的Modbus通信。