3 个版本 (破坏性更新)

0.3.0 2024年6月26日
0.2.0 2024年3月5日
0.1.3 2024年2月29日

#743 in 硬件支持

每月41次下载

MIT 许可证

24KB
388

modbus-mapping

基于 tokio-modbus 的 Modbus 寄存器映射 API

Docs.rs crates.io

仓库 URL

用法

请检查 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。

特质

该库定义了

推导宏

为了方便,它提供了推导宏来自动实现这些特质。推导宏依赖于 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 属性是可选的,当读取寄存器时为 InputRegisterMapHoldingRegisterMap 特性提供配置。它 只能 包含以下键值对

  • max_cnt_per_request - 单个 Modbus 请求中可读取的最大寄存器数量;默认值为 123,这是允许的最大值
  • allow_register_gaps - 一个优化标志,允许 Modbus 客户端读取可能包含所需寄存器之间未请求(或未定义)寄存器的更长寄存器块。如果 true,则客户端请求更少但读取更多数据。否则,如果 false,则客户端请求更多但只读取必要的数据。

modbus_doc 属性用于从 modbus 字段属性信息创建文档(通过添加 doc 属性)。

依赖关系

~3–13MB
~136K SLoC