Wolfgang Hottgenroth 4ea85f3c7e
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
change config to env, add ci-script
2024-01-11 14:52:36 +01:00
2021-08-20 21:50:57 +02:00
2024-01-11 14:52:36 +01:00
2021-08-22 23:58:42 +02:00
2021-08-24 09:49:00 +02:00
2021-08-24 10:12:31 +02:00

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
disableAnalogInputEventPublishing = true

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.

Using a configuration option it is possible to disable the publishing of analog change event - if only periodic information (like for a thermometer or so) is required.

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.

Description
No description provided
Readme 72 KiB
Languages
Python 97.3%
Dockerfile 2.7%