3 个版本 (破坏性更新)
| 0.3.0 | 2024年6月26日 |
|---|---|
| 0.2.0 | 2024年3月5日 |
| 0.1.3 | 2024年2月29日 |
#743 in 硬件支持
每月41次下载
24KB
388 行
modbus-mapping
基于 tokio-modbus 的 Modbus 寄存器映射 API
用法
请检查 examples 文件夹以了解用法。
设备和客户端示例必须在两个不同的终端中同时运行。RTU 示例假设已事先创建虚拟串行端口
socat -d -d pty,raw,echo=0,link=/tmp/ttys001 pty,raw,echo=0,link=/tmp/ttys002
开发
请查看 justfile。
lib.rs:
基于 tokio-modbus 的高级别 Modbus 寄存器映射 API。
特质
该库定义了
core::InputRegisterMap和core::HoldingRegisterMap特质,用于批量从(和写入)Modbus 寄存器,以及simulator::InputRegisterModel和simulator::HoldingRegisterModel特质,用于模拟 Modbus 设备
推导宏
为了方便,它提供了推导宏来自动实现这些特质。推导宏依赖于 modbus 字段属性。
请参阅 examples/ 了解简单用法。
可以将 modbus 属性 添加 到结构体字段中,以将它们与 Modbus 寄存器映射条目关联起来。然后,字段 modbus 必须 包含以下键值对
addr- 输入或保持寄存器起始地址,u16整数,ty- Modbus 数据类型,可以是以下之一:"i16"、"i32"、"i64"、"u16"、"u32"、"u64"、"f16"、"f32"或"raw(size)",ord- 字节顺序,可以是"be"表示大端或"le"表示小端,x- 缩放因子;将存储的值乘以它以获得实际值unit- 实际值的测量单位(即实际值 = 存储值 x 缩放因子)
结构体 modbus 属性是可选的,当读取寄存器时为 InputRegisterMap 和 HoldingRegisterMap 特性提供配置。它 只能 包含以下键值对
max_cnt_per_request- 单个 Modbus 请求中可读取的最大寄存器数量;默认值为123,这是允许的最大值allow_register_gaps- 一个优化标志,允许 Modbus 客户端读取可能包含所需寄存器之间未请求(或未定义)寄存器的更长寄存器块。如果true,则客户端请求更少但读取更多数据。否则,如果false,则客户端请求更多但只读取必要的数据。
modbus_doc 属性用于从 modbus 字段属性信息创建文档(通过添加 doc 属性)。
依赖关系
~3–13MB
~136K SLoC