发布时间: 2026-01-21

3.9.1 Modbus 协议


Modbus 是一种串行通信协议,是 Modicon(现在的施耐德电气 Schneider Electric)于 1979 年为使用可编程控制器(PLC)通信而发表。Modbus 已经成为工业领域通信协议的业界标准(Defacto),并且现在是工业电子设备之间常用的连接方式。

Elite CS 系列支持通过标准的 Modbus TCP 协议获取或者修改机器人的内部数据。其既可作为主站,访问其它支持 Modbus 协议的从站设备;也可作为从站,接受其它 Modbus 主站的访问请求。本节主要阐述其作为从站时具有的一些特性。

  1. 工作原理

Modbus TCP 协议工作在 OSI 网络模型的应用层,使用 TCP 方式进行数据传输。控制柜作为 Server(Modbus 服务器)时,client(客户端)通过 TCP 端口(默认为 502,也可自定义)与其建立连接,并用标准格式的应用层报文进行数据通信。同时,一个 Modbus TCP 从站设备可被多个主站同时访问,以实现高效的数据交换和控制。

提示 1. Modbus 从站设备总是被请求的一方,因此其也被称作 Modbus Server,同理主站设备也被称为 client。 2. 自 V2.14.0 版本起,Modbus TCP 支持自定义设置端口,端口号的范围为 [0, 65535],默认端口为 502。同时,在 Modbus 通信的数据序列化和反序列化过程中,支持对端口号数据的存储和读取。具体可参见 CS 系列脚本手册第 5.1 节 Modbus。

  1. 寄存器说明

CS 系列支持的,可使用 Modbus 协议读写的数据类型为布尔型与无符号短整型(16 位)两种,每种类型分别包含一组输入和一组输出寄存器,因此 Modbus 共有 4 组寄存器可被主站访问。其中,输入型寄存器只允许读操作,输出型寄存器可读可写。有关寄存器协议接口的详细说明,请登陆官网:www.elibot.com,进入“服务与支持 > 技术资料”板块,选择“CS_ 用户手册 V2.14.5 附件”进行查询。

  1. 布尔型寄存器(8 位):主要用于操作数字 I/O,CS 系列目前可访问的输入/输出数字 I/O 寄存器的有效地址范围为 0-63,虽然其值的类型为 bool,但每个 I/O 仍会占用一个字节的空间,所以数字 I/O 共占 2*64 字节。
  2. 无符号短整型(16 位):用于保存和修改机器人的版本,TCP,系统状态等信息;也用于映射数字 I/O。CS 系列目前可访问的输入/输出寄存器的有效地址范围为 0-415。

  3. Modbus 功能码

工具 Modbus 主站设备可通过以下功能码读/写从站寄存器:

  1. 0x01: 读一个或者多个输出数字信号 (read output bits)
  2. 0x02: 读一个或者多个输入数字信号 (read input bits)
  3. 0x03: 读一个或者多个输出寄存器 (read output registers)
  4. 0x04: 读一个或者多个输入寄存器 (read input registers)
  5. 0x05: 写单个输出数字信号 (write output bit)
  6. 0x06: 写单个输出寄存器 (write output register)
  7. 0x0F: 连续写多个输出数字信号 (write multiple output bits)
  8. 0x10: 连续写多个输出寄存器 (write multiple output registers)

  9. Modbus 异常码

异常码和含义如下所示:

-2:断开连接。 -1:正在连接中。 1:信号类型不正确。 2:从站寄存器(线圈)地址不正确。 3:值不正确。 4:从站异常。 5:主站接收到从站可能会超时的信息。 6:从站正忙。 8:从站奇偶校验错误。 10:网关配置错误或网关超载。 11:没有接收到从站的响应,通常意味着从站不在网络中。

  1. 寄存器映射关系与配置说明

(1) 数字 I/O 与寄存器映射

CS 系列的设备中,可操作的输入/输出数字 I/O 分别有 64 个,而前 32 个地址的 I/O 与控制柜主板的通用 I/O 有紧密联系,剩余 32 个保留为后续开发使用。 因此,目前将数字 I/O 映射至 Modbus 寄存器,具体的映射关系为: 标准数字输入————> 寄存器地址:0 可配置数字输入与工具 I/O————> 寄存器地址:1 标准数字输出————> 寄存器地址:2 可配置数字输出与工具 I/O————> 寄存器地址:3

从上述对应关系可以得出:无符号输入/输出寄存器为 16 位,从低到高的每一位上的值实际上代表了一个数字输入/输出信号的状态。例如,无符号寄存器地址为 0 的寄存器的值若是 0x2(第 1 位被置 1),则表示数字输入寄存器中地址为 1 的状态值为 1,而寄存器地址为 0,2-15 的状态值都被置为 0。

提交反馈