Crate modbus_mapping

source ·
Expand description

A high-level API for Modbus Register Maps based on tokio-modbus.

§Traits

The library defines

§Derive macro

For convenience it provides derive macros to implement the traits automatically. The derive macros depends on modbus field attribute.

The modbus attributes can be added to struct fields to link them with modbus register mapping entries. Then, the field modbus must contain the following key-values pairs:

  • addr - input or holding register start address, u16 integer,
  • ty - modbus data type, one of "i16", "i32", "i64", "u16", "u32", "u64", "f16", "f32" or "raw(size)",
  • ord - word order, either "be" for big-endian or "le" for little-endian,
  • x - scale factor; multiply the stored value by it to get the actual value
  • unit - measurement unit of the actual value (i.e. actual value = stored value x scale factor)

The struct modbus attribute is optional and provides configuration for InputRegisterMap and HoldingRegisterMap traits when reading registers. It can only contain these key-value pairs:

  • max_cnt_per_request - maximum number of registers to read in a single Modbus request; default value is 123 which is the maximumum allowed value
  • allow_register_gaps - an optimization flag to allow Modbus client to read longer register blocks which possibly contain unrequested (or undefined) registers in between the required ones. If true, the client makes less requests but read more data. Otherwise, if false, the client makes more requests but read only the necessary data.

The modbus_doc attribute is to create documentation (by adding doc attribute) from modbus field attributes information.

Modules§

  • Utilities for encoding from and decoding to Modbus registers
  • Core traits to read from and write to Modbus registers

Attribute Macros§

Derive Macros§

  • Re-export. Derive macro to implement modbus_mapping::core::HoldingRegisterMap
  • Re-export. Derive macro to implement modbus_mapping::core::HoldingRegisterModel
  • Re-export. Derive macro to implement modbus_mapping::core::InputRegisterMap
  • Re-export. Derive macro to implement modbus_mapping::core::InputRegisterModel