Models API
.. py:module:: modscanner.models
Core data models used by ModScanner.
.. py:class:: DataType(*values) :module: modscanner.models
Bases: :py:class:~enum.StrEnum
supported Modbus register interpretations.
.. py:attribute:: DataType.UINT16 :module: modscanner.models :value: ‘uint16’
.. py:attribute:: DataType.INT16 :module: modscanner.models :value: ‘int16’
.. py:attribute:: DataType.UINT32 :module: modscanner.models :value: ‘uint32’
.. py:attribute:: DataType.INT32 :module: modscanner.models :value: ‘int32’
.. py:attribute:: DataType.FLOAT32 :module: modscanner.models :value: ‘float32’
.. py:class:: WordOrder(*values) :module: modscanner.models
Bases: :py:class:~enum.StrEnum
word order for multi-register values.
.. py:attribute:: WordOrder.BIG :module: modscanner.models :value: ‘big’
.. py:attribute:: WordOrder.LITTLE :module: modscanner.models :value: ‘little’
.. py:class:: RegisterArea(*values) :module: modscanner.models
Bases: :py:class:~enum.StrEnum
supported Modbus data areas
.. py:attribute:: RegisterArea.COIL :module: modscanner.models :value: ‘coil’
.. py:attribute:: RegisterArea.DISCRETE_INPUT :module: modscanner.models :value: ‘discrete_input’
.. py:attribute:: RegisterArea.INPUT_REGISTER :module: modscanner.models :value: ‘input_register’
.. py:attribute:: RegisterArea.HOLDING_REGISTER :module: modscanner.models :value: ‘holding_register’
.. py:class:: ResultStatus(*values) :module: modscanner.models
Bases: :py:class:~enum.StrEnum
outcome of reading an individual Modbus address
.. py:attribute:: ResultStatus.OK :module: modscanner.models :value: ‘ok’
.. py:attribute:: ResultStatus.PROTOCOL_ERROR :module: modscanner.models :value: ‘protocol_error’
.. py:attribute:: ResultStatus.TRANSPORT_ERROR :module: modscanner.models :value: ‘transport_error’
.. py:attribute:: ResultStatus.INVALID_RESPONSE :module: modscanner.models :value: ‘invalid_response’
.. py:class:: TcpTarget(host, port=502, device_id=1, timeout=3.0) :module: modscanner.models
Bases: :py:class:object
connection information for a Modbus TCP device
.. py:attribute:: TcpTarget.host :module: modscanner.models :type: str
.. py:attribute:: TcpTarget.port :module: modscanner.models :type: int
.. py:attribute:: TcpTarget.device_id :module: modscanner.models :type: int
.. py:attribute:: TcpTarget.timeout :module: modscanner.models :type: float
.. py:class:: ScanPlan(start, count, block_size=125, area=RegisterArea.HOLDING_REGISTER) :module: modscanner.models
Bases: :py:class:object
description of a contiguous Modbus data-area scan
.. py:attribute:: ScanPlan.start :module: modscanner.models :type: int
.. py:attribute:: ScanPlan.count :module: modscanner.models :type: int
.. py:attribute:: ScanPlan.block_size :module: modscanner.models :type: int
.. py:attribute:: ScanPlan.area :module: modscanner.models :type: ~modscanner.models.RegisterArea
.. py:class:: RegisterResult(address, area, status, value=None, error=None) :module: modscanner.models
Bases: :py:class:object
result for one scanned Modbus register
.. py:attribute:: RegisterResult.address :module: modscanner.models :type: int
.. py:attribute:: RegisterResult.area :module: modscanner.models :type: ~modscanner.models.RegisterArea
.. py:attribute:: RegisterResult.status :module: modscanner.models :type: ~modscanner.models.ResultStatus
.. py:attribute:: RegisterResult.value :module: modscanner.models :type: int | None
.. py:attribute:: RegisterResult.error :module: modscanner.models :type: str | None
.. py:class:: ScanReport(target, plan, results) :module: modscanner.models
Bases: :py:class:object
complete result of a Modbus register scan
.. py:attribute:: ScanReport.target :module: modscanner.models :type: ~modscanner.models.TcpTarget
.. py:attribute:: ScanReport.plan :module: modscanner.models :type: ~modscanner.models.ScanPlan
.. py:attribute:: ScanReport.results :module: modscanner.models :type: tuple[~modscanner.models.RegisterResult, …]
.. py:property:: ScanReport.successful_count :module: modscanner.models :type: int
return the number of successfully read registers
.. py:property:: ScanReport.failed_count :module: modscanner.models :type: int
return the number of registers that could not be read