【变频】Modbus通信访问V20变频器所有参数
简介
在小型自动化系统中,Modbus通信有着较广泛的应用。西门子SINAMICS V20系列变频器支持基于RS485的Modbus RTU通信。
概述
通过西门子的USS通信协议,上位机可以直接访问V20变频器的所有参数。而V20的Modbus协议目前还不支持所有变频器参数的直接访问,仅常用参数可以直接通过独立的寄存器地址访问。
V20 Modbus寄存器映射表中包含可以通过Modbus RTU访问的寄存器及其对应的变频器参数号。在映射表的末尾,有549~558几个寄存器,通过它们可以间接访问所有变频器参数。

具体步骤如下:
1. 用FC16功能码(写多个寄存器)向寄存器549写入要访问的参数号,向寄存器550写入要访问的参数下标。
2. 如果是要修改变频器参数值,则通过FC16功能码向寄存器553和554写入参数值。如果是要读取变频器参数值,则通过FC3功能码读取寄存器557和558的值。
实例
以S7-200 SMART + V20为例,V20变频器通信相关参数设置如下:

S7-200 SMART调用Modbus主站库程序。初始化程序如下:

初始化程序用于初始化Modbus通信,设置通信波特率为9600bps,偶校验,采用PLC集成RS485端口,1000ms响应时间。
调用一个MBUS_MSG程序块,发送一帧请求报文,用于写入要访问的变频器参数号和下标。


调用一个MBUS_MSG程序块,发送一帧请求报文,用于写入要修改的变频器参数值。


调用一个MBUS_MSG程序块,发送一帧请求报文,用于读取变频器参数值。


报文分析
实例1. 修改V20参数值p2201[0]=65.5%
步骤1:向VW10写入参数号2201,向VW12写入参数下标0,将V1.0修改为1发送一帧报文。用状态表实现如下:

此时PLC发送报文和变频器响应报文如下(16进制):

步骤2:向VD20写入浮点数65.5,将V2.0修改为1发送一帧报文。用状态表实现如下:

此时PLC发送报文和变频器响应报文如下(16进制):

此时查看变频器p2201[0]参数,发现已经被修改为65.5%。
实例2. 读取V20参数值p1070[1]
步骤1:向VW10写入参数号1070,向VW12写入参数下标1,将V1.0修改为1发送一帧报文。用状态表实现如下:

此时PLC发送报文和变频器响应报文如下(16进制):

步骤2:将V3.0修改为1,发送报文从寄存器557, 558读取参数值,结果存放在VW30和VW32中。用状态表实现如下:

此时PLC发送报文和变频器响应报文如下(16进制):

从变频器响应报文可以看到,读取回的参数值高位字为755,低位字为1,即755.1。查看变频器p1070[1]参数,实际数值也是755.1