西门子变频器MODBUS通讯

西门子plc
西门子plc
西门子plc
1976
文章
127
评论
2019年1月6日19:18:41 评论 3,708 阅读

概述

在 MODBUS 通讯中,只有主站可以发起通讯,从站应答。 主站可使用两种方式向从站 发送消息。 一种是单播模式(地址为 1 至 247),此模式下主站直接寻址一个从站;另 一种是广播模式(地址为 0),此模式下主站寻址所有从站。

当从站被寻址并收到消息后,可以通过功能代码得知要执行的任务。从站接收的某些数据 对应由功能代码定义的任务。 此外还包含一个用于错误检测的 CRC(循环冗余校验)码。

MODBUS 从站在接收并处理一个单播消息之后会发送应答,此前提是接收的消息中未检 测到错误。 如果发生处理错误,从站会发送错误消息进行应答。 消息中有如下固定的成 帧字符不可被更改:8 个数据位、1 个奇偶校验位以及 1 个或 2 个停止位。

西门子变频器MODBUS通讯

支持的功能代码

SINAMICS V20 仅支持三种功能代码。 如果收到带有未知功能代码的请求,从站会返回 错误消息。

FC3 - 读保持寄存器

当接收的消息带有 FC = 0 x 03 时,则为 4 字节数据,即 FC3 有 4 字节数据:

  • 2字节为寄存器的起始地址
  • 2字节为寄存器数量
字节 1 字节 2 字节 3 字节 4 字节 5 字节 6 字节 7 字节 8
地址 FC

(0x03)

起始地址 寄存器数 CRC

变频器的响应

字节 1 字节 2 字节 3 字节 4 字节 5 ... 字节 N*2

- 1

字节 N*2 字节 N*2

+ 1

字节 N*2

+ 2

地址 FC

(0x03)

字节数 寄存器 1 的值 ... 寄存器 N 的值 CRC

FC6 - 写单一寄存器

当接收的消息带有 FC = 0x06 时,则为 4 字节数据,即 FC6 有 4 字节数据:

  • 2字节为寄存器的起始地址
  • 2字节为寄存器值
字节 1 字节 2 字节 3 字节 4 字节 5 字节 6 字节 7 字节 8
地址 FC

(0x06)

起始地址 新寄存器值 CRC

变频器的响应

字节 1 字节 2 字节 3 字节 4 字节 5 字节 6 字节 7 字节 8
地址 FC

(0x06)

起始地址 新寄存器值 CRC

FC16 - 写多寄存器

当接收的消息带有 FC = 0x10 时,则为 5 + N 字节数据,即 FC16 有 5 + N 字节数据:

  • 2字节为寄存器的起始地址
  • 2字节为寄存器数量
  • 1字节为字节计数
  • N字节为寄存器值

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

异常响应

 如果在 MODBUS 请求处理时检测到错误,从站会返回请求的功能代码进行响应,但数据 域中只包含功能代码的高位以及异常代码。 但是,在全局地址 0 上检测到的任何错误 都不会产生响应,因为所有从站不能同时进行响应。

如果在接收到的消息中检测到错误(例如,奇偶校验错误、CRC 错误等),从站不会向 主站发送响应。

请注意,如果收到带有 FC16 的请求且其中包含一个变频器无法执行的写指令(包括向零 条目中写入),从站即使发送异常响应也仍然会执行其他有效的写指令。

SINAMICS V20 支持以下 MODBUS 异常代码:

异常代码 MODBUS 名称 含义
01 非法功能代码 不支持的功能代码 – 仅支持 FC3、FC6 和

FC16

02 非法数据地址 查询无效地址。
03 非法数据值 识别到无效的数据值。
04 从站装置故障 从站装置在进行处理操作时发生不可恢复的 错误。

下表列出了异常代码所对应的错误情况:

错误描述 异常代码
未知功能代码 01
读寄存器,不在范围内 02
写寄存器,不在范围内 02
过多寄存器(>125)的读请求 03
过多寄存器(>123)的写请求 03
消息长度不正确 03
向只读寄存器中写入 04
写寄存器,参数访问错误 04
读寄存器,参数管理器错误 04
向零条目中写入 04
未知错误 04

变频器基本设置

参数 功能 设置
P0010 调试参数 = 30: 恢复出厂设置
P0970 工厂复位 可能的设置:

= 1: 所有参数(不包括用户默认设置)复位至默认 值

= 21: 所有参数以及所有用户默认设置复位至工厂复 位状态

说明: 参数 P2010、P2021、P2023 的值不受工厂 复位影响。

P0003 用户访问级别 = 3
P0700 选择命令源 = 5: RS485 上的 USS / MODBUS

工厂缺省值: 1(操作面板)

P2010[0] USS / MODBUS 波特率 可能的设置:

= 6: 9600 bps(工厂缺省值)

= 7: 19200 bps

= 8: 38400 bps

...

= 12: 115200 bps

P2014[0] USS / MODBUS 报文间断时间

[ms]

时间设为 0 时不发生故障(即看门狗被禁止)。
P2021 Modbus 地址 设置变频器的**地址。

范围: 1 至 247(工厂缺省值:1)

P2022 Modbus 应答超时[ms] 范围: 0 至 10000(工厂缺省值:1000)
P2023 RS485 协议选择 = 2: Modbus

工厂缺省值: 1(USS)

说明: 在更改 P2023 后,须对变频器重新上电。 在此过程中,请在变频器断电后等待数秒,确保 LED 灯熄灭或显示屏空白后方可再次接通电源。 如 果通过 PLC 更改 P2023,须确保所做出的更改已通 过 P0971 保存到 EEPROM 中。

参数 功能 设置
r2024[0]

... r2031[0]

USS / MODBUS 错误统计 无论 P2023 中选择何种通讯协议,都可以报告

RS485 上的报文信息状态。

r2018[0...7] CO:通过 RS485 上的 USS / MODBUS 接收的 PZD 显示通过 RS485 上的 USS/MODBUS 接收的过程 数据。
P2019[0...7] CI:通过 RS485 上的 USS / MODBUS 发送的 PZD 显示通过 RS485 上的 USS/MODBUS 发送的过程 数据。
P2034 RS485 上的 MODBUS 奇偶校验 设置 RS485 上 MODBUS 报文的奇偶校验。 可能的设置:

= 0: 无奇偶校验

= 1: 奇校验

= 2: 偶校验

P2035 RS485 上的 MODBUS 停止位 设置 RS485 上 MODBUS 报文中的停止位数。 可能的设置:

= 1: 1 个停止位

= 2: 2 个停止位

映射表

 SINAMICS V20 变频器支持两组寄存器(40001 至 40062、40100 至 40522),如下表 所示。 “访问类型”一列中的“R”、“W”、“R/W”分别代表读、写、读/写。

HSW(转速设定值)、HIW(实际转速)、STW(控制字)、ZSW(状态字)为控制数 据。

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

西门子变频器MODBUS通讯

编程举例

 以下程序为计算 MODBUS RTU 的 CRC 的示例。

unsigned int crc_16 (unsigned char *buffer, unsigned int length)

{

unsigned int i, j, temp_bit, temp_int, crc; crc = 0xFFFF;

for ( i = 0; i < length; i++ )

{

temp_int = (unsigned char) *buffer++; crc ^= temp_int;

for ( j = 0; j < 8; j++ )

{

temp_bit = crc & 0x0001; crc >>= 1;

if ( temp_bit != 0 ) crc ^= 0xA001;

}

}

}


参数定标

 由于受到 MODBUS 协议中整数数据的限制,在发送变频器参数值之前有必要将其进行换 算。 通过定标可实现这一换算,参数定标是用一个系数乘以带有一位小数的参数值,从 而去除其小数部分。 具体的定标系数见上表。

BICO 参数

在参数处理的过程中会同时在后台进行 BICO 参数的更新。 由于受到寄存器值的限制, 只能向 BICO 参数中写入‘0’或‘1’。 这就表示 BICO 输入始终为静态值‘0’或‘1’。 而其先前 与另一参数的连接则会丢失。 读取 BICO 参数即返回当前的 BICO 输出值。

例如: MODBUS 寄存器号 40200。向该寄存器中写入值 0 或 1 即使其 BICO 输入 P0731

静态等于所写的值。 读取参数即返回 BICO 输出,该输出值存储于 r0747.0。

故障

满足以下三个条件时,变频器会显示故障 F72:

  • P2014(USS/MODBUS 报文间断时间)参数值不等于0。
  • 变频器启动后已从主站接收过程数据。
  • 两次连续的过程数据报文接收的间隔时间超出P2014参数值。
继续阅读
weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: