西门子变频器V20如何通过Modbus通信访问所有参数?
发布日期:
2023-07-04

在小型自动化系统中,Modbus通信有着较广泛的应用。西门子SINAMICS V20系列变频器支持基于RS485的Modbus RTU通信。

通过西门子的USS通信协议,上位机可以直接访问V20变频器的所有参数。而V20的Modbus协议目前还不支持所有变频器参数的直接访问,仅常用参数可以直接通过独立的寄存器地址访问。

V20 Modbus寄存器映射表中包含可以通过Modbus RTU访问的寄存器及其对应的变频器参数号。在映射表的末尾,有549~558几个寄存器,通过它们可以间接访问所有变频器参数。

西门子变频器V20如何通过Modbus通信访问所有参数?

具体步骤如下:

1. 用FC16功能码(写多个寄存器)向寄存器549写入要访问的参数号,向寄存器550写入要访问的参数下标。

2. 如果是要修改变频器参数值,则通过FC16功能码向寄存器553和554写入参数值。如果是要读取变频器参数值,则通过FC3功能码读取寄存器557和558的值。

 以S7-200 SMART + V20为例,V20变频器通信相关参数设置如下:

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

初始化程序用于初始化Modbus通信,设置通信波特率为9600bps,偶校验,采用PLC集成RS485端口,1000ms响应时间。

调用一个MBUS_MSG程序块,发送一帧请求报文,用于写入要访问的变频器参数号和下标。

西门子变频器V20如何通过Modbus通信访问所有参数?

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

西门子变频器V20如何通过Modbus通信访问所有参数?

报文分析

实例1. 修改V20参数值p2201[0]=65.5%

步骤1:向VW10写入参数号2201,向VW12写入参数下标0,将V1.0修改为1发送一帧报文。用状态表实现如下:

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

此时查看变频器p2201[0]参数,发现已经被修改为65.5%。

实例2. 读取V20参数值p1070[1]

步骤1:向VW10写入参数号1070,向VW12写入参数下标1,将V1.0修改为1发送一帧报文。用状态表实现如下:

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

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

西门子变频器V20如何通过Modbus通信访问所有参数?

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

声明:部分内容来源于网络,如侵权请后台留言联系删除。