libmodbus 手册翻译

源文档libmodbus

版本号:V3.1.4

特点:

     libmodbus是一个快速、并且跨平台的Modbus库

概要

 #include

cc `pkg-config --cflags --libs libmodbus` files

描述

libmodbus是一个与使用Modbus协议的设备进行数据发送/接收的库。该库包含各种后端通过不同网络进行通信(例如,RTU模式下的串口或TCP / IPv6中的以太网)。http://www.modbus.org网站提供的协议规范文档http://www.modbus.org/specs.php。

libmodbus提供了较低通信层的抽象,并在所有支持的平台上提供相同的API。

本文档概述了libmodbus概念,介绍了libmodbus如何从不同的硬件和平台中提取Modbus通信,并为libmodbus库提供的功能提供了参考手册。

环境(上下文)

Modbus协议包含许多变体(例如串行RTU或Ehternet TCP),为了简化变种的实现,该库旨在为每个变体使用后端。后端也是满足其他要求(例如实时操作)的便捷方式。每个后端都提供了一个特定的功能来创建一个新的modbus_t上下文。所述modbus_t上下文是包含所有必需的信息,根据所选择的变体,以建立与其他Modbus设备的连接的不透明结构。

RTU环境

RTU后端(远程终端单元)用于串行通信,并利用协议通信数据的连续的二进制表示形式。RTU格式遵循命令/数据CRC(cyclic redundancy check循环冗余校验)和作为错误检查机制,以确保数据的可靠性。Modbus RTU是可用于Modbus的最常用的实现方式。必须连续发送Modbus RTU消息,而不会出现字符间间断http://en.wikipedia.org/wiki/Modbus(截至2011年3月13日,20:51 GMT))。

Modbus RTU框架调用从站,一个处理Modbus请求的设备/服务,以及一个发送请求的客户端。通信始终由服务端发起。

许多Modbus设备可以在相同的物理链路上连接在一起(附注:总线结构),因此在发送消息之前,必须使用modbus_set_slave(3)设置从站(接收设备 )ID。如果您正在运行一个从站,则其从站号将用于过滤接收的消息。

RTU的libmodbus实现不是按照原始Modbus规范中所述的时间顺序,而是所有字节都尽可能快地发送,并且当接收到所有预期字符时,响应或指示被认为是完整的。此实现提供了非常快速的通信,但是您必须小心设置从站的响应超时小于主站的响应超时(否则其他从站可能忽略其中一个从站未响应时的主站请求)。

1.   创建一个modbus RTU 环境

modbus_new_rtu(3)

2.   设置串口模式

modbus_rtu_get_serial_mode(3)modbus_rtu_set_serial_mode(3)modbus_rtu_get_rts(3)modbus_rtu_set_rts(3)modbus_rtu_set_custom_rts(3)modbus_rtu_get_rts_delay(3)modbus_rtu_set_rts_delay(3)

TCP(IPv4)环境

TCP后端实现了用于通过TCP / IPv4网络进行通信的Modbus对象。它不需要校验和计算,因为底层TCP已经实现相同功能。

创建Modbus TCP环境

modbus_new_tcp(3)

TCP PI(IPv4和IPv6)环境

TCP PI(独立协议)后端实现了用于通过TCP IPv4和IPv6网络进行通信的Modbus对象。它不需要校验和计算,因为下层照顾相同。

TCP TCP后端与TCP IPv4仅后端相反,提供主机名解析,但它消耗大约1Kb的附加内存。

创建ModbusTCP独立协议环境

modbus_new_tcp_pi(3)

共通

在使用任何libmodbus函数之前,调用者必须使用上述功能分配和初始化 modbus_t环境,然后提供以下函数来修改和释放环境:

释放libmodbus环境

modbus_free(3)

设置从站ID

modbus_set_slave(3)

启用调试模式

modbus_set_debug(3)

超时设置

modbus_get_byte_timeout(3)modbus_set_byte_timeout(3)modbus_get_response_timeout(3)modbus_set_response_timeout(3)

错误恢复模式

modbus_set_error_recovery(3)

设置/获取内部Socket

modbus_set_socket(3)modbus_get_socket(3)

数据头信息

modbus_get_header_length(3)

数据操作的宏

处理位和字节

连接

提供以下功能来建立和关闭与Modbus设备的连接:

建立连接

modbus_connect(3)

关闭连接

modbus_close(3)

冲洗连接

modbus_flush(3)

客户端

Modbus协议定义了从远程设备读取和写入数据的不同数据类型和功能。客户端使用以下功能发送Modbus请求:

读取数据

modbus_read_bits(3)modbus_read_input_bits(3)modbus_read_registers(3)modbus_read_input_registers(3)modbus_report_slave_id(3)

写数据

modbus_write_bit(3)modbus_write_register(3)modbus_write_bits(3)modbus_write_registers(3)

写和读数据

modbus_write_and_read_registers(3)

原始请求

modbus_send_raw_request(3)modbus_receive_confirmation(3)

回复例外

modbus_reply_exception(3)

服务器正在等待来自客户端的请求,并且在请求时需要回答。libmodbus提供以下功能来处理请求:

数据映射:modbus_mapping_new(3)modbus_mapping_free(3)

接收

modbus_receive(3)

回复

modbus_reply(3)modbus_reply_exception(3)

错误处理

libmodbus功能使用POSIX系统上的标准约定处理错误。一般来说,这意味着一旦发生故障,libmodbus函数将返回一个NULL值(如果返回一个指针)或一个负值(如果返回一个整数),并且实际的错误代码将被存储在errno变量中。

提供modbus_strerror()函数将libmodbus特定的错误代码转换为错误消息字符串; 详细信息请参考modbus_strerror(3)。

杂项

该LIBMODBUS_VERSION_STRING表示libmodbus版本的程序已编译对应版本。变量libmodbus_version_major, libmodbus_version_minor,libmodbus_version_micro给出程序链接的版本。

作者

libmodbus 文档作者

Stéphane Raimbault

资源

主页:http://www.libmodbus.org/

提交问题http://github.com/stephane/libmodbus/issues.

版权协议

根据GNU通用公共许可证(LGPLv2.1 +)的条款,免​​费使用此软件。有关详细信息,请参阅COPYING.LESSERlibmodbus发行版随附的文件。

你可能感兴趣的:(libmodbus 手册翻译)