没有合适的资源?快使用搜索试试~ 我知道了~
首页libmodbus官方手册中文翻译.pdf
libmodbus官方手册中文翻译.pdf
需积分: 5 1.2k 浏览量
更新于2023-05-24
评论 6
收藏 401KB PDF 举报
libmodbusV3.0.6(已加入 3.1.4 版本补充)中文手册PDF,有目录结构,查看方便。
资源详情
资源评论
资源推荐

1
libmodbus 官方手册中文翻译
版本号:V3.0.6(已加入 3.1.4 版本补充)
1、初始化 RTU 指针
2、建立连接
3、设置从站 ID
4、读取保持寄存器/读取输入寄存器/读取位
5、写单寄存器/写多寄存器/写多位数据
6、关闭连接

2
目录
libmodbus 官方手册中文翻译 ................................................................................................................................................. 1
一、libmodbus .......................................................................................................................................................................... 4
特点 ................................................................................................................................................................................... 4
概要 ................................................................................................................................................................................... 4
描述 ................................................................................................................................................................................... 4
环境(contexts) ............................................................................................................................................................... 4
二、RTU 环境 .......................................................................................................................................................................... 5
1、创建 modbus RTU 环境 ............................................................................................................................................. 5
2、设置串口模式 ............................................................................................................................................................. 6
3、TCP(IPv4)环境 ...................................................................................................................................................... 8
4、TCP PI(IPv4 和 IPv6)环境 .................................................................................................................................... 9
三、通用函数: ..................................................................................................................................................................... 11
1、modbus_free .............................................................................................................................................................. 11
2、modbus_set_slave ...................................................................................................................................................... 11
1)若为 RTU 模式 ................................................................................................................................................. 12
2)若为 TCP 模式 .................................................................................................................................................. 12
3、modbus_set_debug .................................................................................................................................................... 12
4、超时设置: ............................................................................................................................................................... 12
1)modbus_get_byte_timeout ................................................................................................................................. 13
2)modbus_set_byte_timeout ................................................................................................................................. 13
3)modbus_get_response_timeout.......................................................................................................................... 13
4)modbus_set_response_timeout .......................................................................................................................... 14
5) modbus_set_error_recovery ................................................................................................................................ 14
6) modbus_set_socket.............................................................................................................................................. 15
7) modbus_get_socket ............................................................................................................................................. 16
8) modbus_get_header_length ................................................................................................................................. 16
5、用于数据操作的宏 ................................................................................................................................................... 16
6、设置或获取浮点数 ................................................................................................................................................... 18
1)modbus_get_float_abcd ..................................................................................................................................... 18
2)modbus_set_float_abcd ..................................................................................................................................... 18
3)modbus_get_float_badc ..................................................................................................................................... 18
4)modbus_set_float_badc ..................................................................................................................................... 18
5)modbus_get_float_cdab ..................................................................................................................................... 18
6)modbus_set_float_cdab ..................................................................................................................................... 19
7)modbus_get_float_dcba ..................................................................................................................................... 19
8)modbus_set_float_dcba ..................................................................................................................................... 19
四、连接 ................................................................................................................................................................................. 20
1、建立连接 int modbus_connect(modbus_t *ctx); ....................................................................................................... 20
2、关闭连接 void modbus_close(modbus_t *ctx); ........................................................................................................ 20
3、冲洗未连接数据 int modbus_flush(modbus_t *ctx); ............................................................................................... 21
五、主机(客户端 Client) .................................................................................................................................................. 22
1、读取数据 ................................................................................................................................................................... 22
1)读取位(读取线圈状态) ............................................................................................................................... 22
2)读取输入位(读取输入状态) ....................................................................................................................... 22
3)读取保持寄存器 ............................................................................................................................................... 22

3
4)读取输入寄存器 ............................................................................................................................................... 23
5)读取控制器(controller) ................................................................................................................................ 24
2、写数据 ....................................................................................................................................................................... 25
1)写一位数据(强置单线圈) ........................................................................................................................... 25
2)写单寄存器(预置单寄存器) ....................................................................................................................... 25
3)写多位数据(强置多线圈) ........................................................................................................................... 25
4)写多寄存器(预置多寄存器) ....................................................................................................................... 25
3、写和读数据 ............................................................................................................................................................... 25
4、原始请求 ................................................................................................................................................................... 26
1)发送原始请求 ................................................................................................................................................... 26
2)收到确认请求 ................................................................................................................................................... 27
5、回复异常 ................................................................................................................................................................... 27
六、从机(服务器 server) .................................................................................................................................................. 29
1、数据映射 ................................................................................................................................................................... 29
1)分配位(线圈)和寄存器的数组 ................................................................................................................... 29
2)释放 modbus_mapping_t 结构......................................................................................................................... 29
2、接收 ........................................................................................................................................................................... 30
3、回复 ........................................................................................................................................................................... 30
4、发送异常响应 ........................................................................................................................................................... 30
5、错误处理 ................................................................................................................................................................... 31
七、杂项 ................................................................................................................................................................................. 32

4
一、libmodbus
版本号:V3.0.6(已加入 3.1.4 版本补充)
特点
libmodbus 是一个快速、跨平台的 Modbus 库。
概要
#include <modbus.h>
cc `pkg-config --cflags --libs libmodbus` files
描述
libmodbus 是一个与使用 Modbus 协议的设备进行数据发送/接收的库。该库包含各种后端(backends)通过不
同网络进行通信(例如,RTU 模式下的串口或 TCP / IPv6 中的以太网)。
http://www.modbus.org 网站提供了协议规范文档
http://www.modbus.org/specs.php。
libmodbus 提供了较低通信层的抽象,并在所有支持的平台上提供相同的 API。
本文档介绍了了 libmodbus 概念,介绍了 libmodbus 如何从在不同的硬件和平台中实现 Modbus 通信,并为
libmodbus 库提供的函数提供了参考手册。
环境(contexts)
Modbus 协议包含许多变体(例如串行 RTU 或 Ehternet TCP),为了简化变体的实现,该库被设计成为每个变体
使用后端(backends)。后端也是满足其他要求(例如实时操作)的便捷方法。每个后端都提供了一个特定的函数
来创建一个新的 modbus_t 环境。 modbus_t 环境是一个不透明的结构,包含根据所选变体与其他 Modbus 设备建立
连接的所有必要信息。

5
二、RTU 环境
RTU 后端(远程终端单元)用于串口通信,并使用用于协议通信的数据的紧凑的二进制表示形式。RTU 格式遵
循命令/数据,和 CRC(cyclic redundancy check 循环冗余校验)作为错误检查机制,以确保数据的可靠性。Modbus
RTU 是可用于 Modbus 的最常用的实现方式。Modbus RTU 消息必须连续发送,不能有字符间隔(摘自 Wikipedia,
Modbus, http://en.wikipedia.org/wiki/Modbus 截至 2011 年 3 月 13 日,格林尼治时间 20:51)。
Modbus RTU 框架调用一个从站,一个处理 Modbus 请求的设备/服务器,以及一个发送请求的客户端(主站)。
通信始终由主站服务端发起。
许多 Modbus 设备可以在同一个的物理链路上连接在一起(总线结构),因此在发送消息之前,必须使用
modbus_set_slave 设置从站(接收设备 )ID。如果您正在运行一个从站,则其从站号将用于过滤接收的消息。
1、创建 modbus RTU 环境
初试化 RTU 环境指针 modbus_t *modbus_new_rtu(const char *device, int baud, char parity, int data_bit,
int stop_bit)
modbus_t *modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit);
//参考代码:
modbus_t *ctx;
ctx = modbus_new_rtu("/dev/ttyUSB0", 115200, 'N', 8, 1);
if (ctx == NULL) {
fprintf(stderr, "Unable to create the libmodbus context\n");
return -1;
}
这个 modbus_new_rtu()函数会生成并初始化一个 modbus 的结构体来在串行线路中使用 RTU 模式进行通讯。
device 指定 OS 处理的串行端口的名称,比如 /dev/ttyS0 or /dev/ttyUSB0,在 windows 系统上,如果 COM
编 号 大 于 9 , 必 须 要 在 COM 前 加 上 \\.\ , 比 如 \\\\.\\COM10. , 参 照
http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx
baud :指定连接的波特率,比如 9600, 19200, 57600, 115200 等。
剩余31页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0