120 lines
5.7 KiB
Text
120 lines
5.7 KiB
Text
## --- "request" configuration style ---
|
|
|
|
## Per request definition
|
|
##
|
|
|
|
## Define a request sent to the device
|
|
## Multiple of those requests can be defined. Data will be collated into metrics at the end of data collection.
|
|
[[inputs.modbus.request]]
|
|
## ID of the modbus slave device to query.
|
|
## If you need to query multiple slave-devices, create several "request" definitions.
|
|
slave_id = 1
|
|
|
|
## Byte order of the data.
|
|
## |---ABCD -- Big Endian (Motorola)
|
|
## |---DCBA -- Little Endian (Intel)
|
|
## |---BADC -- Big Endian with byte swap
|
|
## |---CDAB -- Little Endian with byte swap
|
|
byte_order = "ABCD"
|
|
|
|
## Type of the register for the request
|
|
## Can be "coil", "discrete", "holding" or "input"
|
|
register = "coil"
|
|
|
|
## Name of the measurement.
|
|
## Can be overridden by the individual field definitions. Defaults to "modbus"
|
|
# measurement = "modbus"
|
|
|
|
## Request optimization algorithm.
|
|
## |---none -- Do not perform any optimization and use the given layout(default)
|
|
## |---shrink -- Shrink requests to actually requested fields
|
|
## | by stripping leading and trailing omits
|
|
## |---rearrange -- Rearrange request boundaries within consecutive address ranges
|
|
## | to reduce the number of requested registers by keeping
|
|
## | the number of requests.
|
|
## |---max_insert -- Rearrange request keeping the number of extra fields below the value
|
|
## provided in "optimization_max_register_fill". It is not necessary to define 'omitted'
|
|
## fields as the optimisation will add such field only where needed.
|
|
# optimization = "none"
|
|
|
|
## Maximum number register the optimizer is allowed to insert between two fields to
|
|
## save requests.
|
|
## This option is only used for the 'max_insert' optimization strategy.
|
|
## NOTE: All omitted fields are ignored, so this option denotes the effective hole
|
|
## size to fill.
|
|
# optimization_max_register_fill = 50
|
|
|
|
## Field definitions
|
|
## Analog Variables, Input Registers and Holding Registers
|
|
## address - address of the register to query. For coil and discrete inputs this is the bit address.
|
|
## name *1 - field name
|
|
## type *1,2 - type of the modbus field, can be
|
|
## BIT (single bit of a register)
|
|
## INT8L, INT8H, UINT8L, UINT8H (low and high byte variants)
|
|
## INT16, UINT16, INT32, UINT32, INT64, UINT64 and
|
|
## FLOAT16, FLOAT32, FLOAT64 (IEEE 754 binary representation)
|
|
## STRING (byte-sequence converted to string)
|
|
## length *1,2 - (optional) number of registers, ONLY valid for STRING type
|
|
## bit *1,2 - (optional) bit of the register, ONLY valid for BIT type
|
|
## scale *1,2,4 - (optional) factor to scale the variable with
|
|
## output *1,3,4 - (optional) type of resulting field, can be INT64, UINT64 or FLOAT64.
|
|
## Defaults to FLOAT64 for numeric fields if "scale" is provided.
|
|
## Otherwise the input "type" class is used (e.g. INT* -> INT64).
|
|
## measurement *1 - (optional) measurement name, defaults to the setting of the request
|
|
## omit - (optional) omit this field. Useful to leave out single values when querying many registers
|
|
## with a single request. Defaults to "false".
|
|
##
|
|
## *1: These fields are ignored if field is omitted ("omit"=true)
|
|
## *2: These fields are ignored for both "coil" and "discrete"-input type of registers.
|
|
## *3: This field can only be "UINT16" or "BOOL" if specified for both "coil"
|
|
## and "discrete"-input type of registers. By default the fields are
|
|
## output as zero or one in UINT16 format unless "BOOL" is used.
|
|
## *4: These fields cannot be used with "STRING"-type fields.
|
|
|
|
## Coil / discrete input example
|
|
fields = [
|
|
{ address=0, name="motor1_run" },
|
|
{ address=1, name="jog", measurement="motor" },
|
|
{ address=2, name="motor1_stop", omit=true },
|
|
{ address=3, name="motor1_overheating", output="BOOL" },
|
|
{ address=4, name="firmware", type="STRING", length=8 },
|
|
]
|
|
|
|
[inputs.modbus.request.tags]
|
|
machine = "impresser"
|
|
location = "main building"
|
|
|
|
[[inputs.modbus.request]]
|
|
## Holding example
|
|
## All of those examples will result in FLOAT64 field outputs
|
|
slave_id = 1
|
|
byte_order = "DCBA"
|
|
register = "holding"
|
|
fields = [
|
|
{ address=0, name="voltage", type="INT16", scale=0.1 },
|
|
{ address=1, name="current", type="INT32", scale=0.001 },
|
|
{ address=3, name="power", type="UINT32", omit=true },
|
|
{ address=5, name="energy", type="FLOAT32", scale=0.001, measurement="W" },
|
|
{ address=7, name="frequency", type="UINT32", scale=0.1 },
|
|
{ address=8, name="power_factor", type="INT64", scale=0.01 },
|
|
]
|
|
|
|
[inputs.modbus.request.tags]
|
|
machine = "impresser"
|
|
location = "main building"
|
|
|
|
[[inputs.modbus.request]]
|
|
## Input example with type conversions
|
|
slave_id = 1
|
|
byte_order = "ABCD"
|
|
register = "input"
|
|
fields = [
|
|
{ address=0, name="rpm", type="INT16" }, # will result in INT64 field
|
|
{ address=1, name="temperature", type="INT16", scale=0.1 }, # will result in FLOAT64 field
|
|
{ address=2, name="force", type="INT32", output="FLOAT64" }, # will result in FLOAT64 field
|
|
{ address=4, name="hours", type="UINT32" }, # will result in UIN64 field
|
|
]
|
|
|
|
[inputs.modbus.request.tags]
|
|
machine = "impresser"
|
|
location = "main building"
|