documentation

This commit is contained in:
Wolfgang Hottgenroth 2021-08-24 13:55:51 +02:00
parent 1c8a3a2093
commit fc78dc7f4d
Signed by: wn
GPG Key ID: 6C1E5E531E0D5D7F

53
readme.md Normal file
View File

@ -0,0 +1,53 @@
# DigitalTwin1
## Digital twin for Beckhoff BK-9000 Modbus-TCP coupler (and compatible Wago device)
### Overview
This tool connects to a Modbus-TCP coupler, reads it process image and publishes
* the new state of a discrete input register (digital input) after a change
* the new value of an input register (analog input) after a change
* periodically publishes the current values of all input registers (analog inputs)
using MQTT messages. The topic is built from a configured prefix and the index of the particular registers.
Furthermore it subscribes to MQTT messages related to the coils for the setup and anytime a message is received, it set the particular coils accordingly.
### Configuration
Configuration is done using a configuration file
[modbus]
client = 172.16.2.157
scanrate = 0.25
[mqtt]
broker = 172.16.2.16
digitalOutputTopicPrefix = dt1/coil
digitalInputTopicPrefix = dt1/di
analogInputEventTopicPrefix = dt1/ai/event
analogInputPeriodicTopicPrefix = dt1/ai/periodic
analogInputPublishPeriod = 10.0
### Operation details
While the input and discrete input registers are scanned with the configured scanrate, an action on a coil according to a received message is issued immediately. At the same time the all input registers are scanned.
The MQTT messages related to change events of input or discrete input registers are marked as //retained//.
### Usage
The tool is simply started using
python digitaltwin1.py
On default it searches the configuration file at ``$PWD/config``. This can be changed using the commandline argument ``-f``.
The Python modules ``pymodbus``, ``loguru`` and ``paho-mqtt`` are required.
A docker image with the required dependencies, the tool and a prepared default configuration in a volume is provided at ``registry.hottis.de/wolutator/digitaltwin1``.