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