marp: true theme: gaia
Johannes Müller 2022
Hersteller | Steuerungstyp | Dezentrale Peripherie | Feldbus |
---|---|---|---|
Siemens | SIMATIC S7-1500 | SIMATIC ET 200SP | Profinet |
Allen-Bradley | Compact Logix | Point IO | EtherNet/IP |
Mitsubishi | MELSEC iQ-R | CC-Link IE Field EthetNet/IP |
Voraussetzungen:
git clone https://gogs.justprojects.de/Master/smart-energy-monitor.git
cd smart-energy-monitor/box-pc
sudo docker-compose build
sudo docker-compose up -d
Voraussetzungen:
pip
snap7
-Server auf Port 102)influxdb
-Servergit clone https://gogs.justprojects.de/Master/smart-energy-monitor.git
cd smart-energy-monitor/box-pc/plc-connector
python -m pip install -r requirements.txt
python main.py -c config.yml
Inputs:
# Definiton des ersten Moduls
# ClassName: Name der Python-Klasse des Moduls
# path.to.module: relativer Importpfad des Input-Moduls
- ClassName: path.to.module
# Ob das Modul geladen werden soll
# Default: True
enabled: True
# Parameter, die an den Konstruktor des Moduls übergeben werden
param1: "value 1"
param2: "value 2"
# Definition weiterer Module
- ClassName2: path.to.module2
enabled: True
als aktiver Partner
Inputs:
- SiemensCPU: siemens.snap7_connect
enabled: True
host: "192.168.0.10"
als passiver Partner
Inputs:
- SiemensServer: siemens.snap7_server
enabled: True
port: 102
Middlewares:
# Definiton des ersten Moduls
# ClassName: Name der Python-Klasse des Moduls
# path.to.module: relativer Importpfad des Middleware-Moduls
- ClassName: path.to.module
enabled: False
- TimeCorrelation: time_correlation
# Zwischenmodule können geschachtelt werden, so dass
# sie die Ergebnisse des überliegenden Moduls weiterverarbeiten
submodules:
- PrintStats: print_stats
# Standardmäßig werden die Ergebnisse von Middleware-Modulen
# ohne Untermodulen für die Ausgabe gesammelt und dedupliziert
Beispiel für die Filterung
Middlewares:
- TimeCorrelation: time_correlation
submodules:
- MatchAny: filters
series: plant
enable_output: False
table_move_up: 1
- ComplexFilter: filters
predicate: "measurement_480v and measurement_24v and avg(measurement_24v.current) > 0.6"
submodules:
- ComplexSelector: selectors
selector: "avg(measurement_480v.current)"
enable_output: True
Beispiel für die Aggregation
Middlewares:
- TimeCorrelation: time_correlation
- Aggregate: aggregators
series: 24v
timespan: 0.1
avg:
- voltage
min:
- status
- overload
submodules:
- PrintStats: debug
enable_output: True
Outputs:
# Ausgabemodule zum Schreiben von Ergebnisse in eine beliebige Anzahl von Datenbanken
# Definiton des ersten Moduls
# ClassName: Name der Python-Klasse des Moduls
# path.to.module: relativer Importpfad des Output-Moduls
- CSVStorage: csv_file
path: logs
- InfluxDB: influxdb
url: "http://localhost:8086"
token: "<token>"
org: "laempe"
bucket: "energy-monitor"