subDesTagesMitExtraKaese vor 2 Jahren
Ursprung
Commit
559b6a1553

+ 3 - 1
.gitignore

@@ -33,4 +33,6 @@ __pycache__/
 *.RData
 
 references/*.pdf
-references/*.bib~*
+references/*.bib~*
+
+out/diagrams/common

+ 17 - 0
10_Grundlagen.md

@@ -7,6 +7,23 @@ Die Kernschießmaschinen von Laempe arbeiten komplett automatisch und können me
 
 ## Problemstellung
 
+Mit dieser Arbeit werden diverse Konzepte zur Überwachung maschineller Anlagen erforscht. Dabei soll ein autonomes Meldesystem aufgebaut werden, welches auf schleichende Probleme aufmerksam machen kann bzw. zur Optimierung des Betriebsablaufes beiträgt. Um dies zu erreichen müssen Messwerte erhoben, analysiert und schließlich gespeichert werden. Die möglichen Auslegungen dieser Teilfunktionen sind im [2. Kapitel Theorie](20_Theorie.md) aufgelistet. Folgende Darstellung zeigt die Bestandteile des entwickelten Monitoring-Systems: 
+
+![Übersicht](out/diagrams/uebersicht/uebersicht.svg)
+
+Die Aggregation der Messwerte soll unabhängig von Modell und Auslegung der Anlage möglich sein. Es werden verschiedene Wege in Betracht gezogen und schießlich einer von diesen an einer echten Anlage getestet. Die dafür notwendigen Komponenten sollten leicht in den bestehenden Aufbau integrierbar sein. 
+Zunächst sollen die elektrische Versorgung, die Ströme einzelner Baugruppen und der Status der zentralen Steuerung der Anlage erfasst werden. Der dabei verwendete Messintervall sollte klein genug sein, um zwischen den Prozessschritten der Anlage unterscheiden zu können.Während der Entwicklung ist es auch sinnvoll die Rohwerte der Messungen zu sichern, um den Analyseschritt mit Hilfe von echten Messwerten exemplarisch zu testen.
+
+Für die Übertragung von den Sensoren zur datenverarbeitenden Einheit werden Kommunikationsbusse eingesetzt, welche bereits in den Kernschießmaschinen verwendet werden. Es soll nach Möglichkeit kein weiterer Feldbus einer anderen Technologie hinzugefügt werden, um die Kosten für die Integration möglichst gering zu halten. Die einzubauenden Sensoren werden am bestehenden Feldbus angeschlossen, welcher wiederum zu einem Interfacemodul führt. Für die Koordination der Interfacemodule ist in jeder Anlage bereits eine zentrale Steuerungseinheit (SPS oder CPU genannt) zuständig. Diese Steuerungen verwenden ein meist auf Ethernet basiertes Kommunikationsprotokoll, um mit dem Rest der Anlage zu kommunizieren. [] Ihre Kommunikationspartner können zum Beispiel Interfacemodule, Human-Machine-Interfaces (HMI) oder andere Steuerungen aus anderen Anlagen sein.
+
+Bei der Erhebung der Messwerte entstehen viele Datenpunkte, die einzeln betrachtet keine große Aussagekraft besitzen. Der Schritt der Datenverarbeitung kombiniert die eingehenden Datenströme und extrahiert für den Endnutzer relvante Informationen. 
+
+Je präziser die Datenverarbeitung angesetzt ist, desto weniger Daten müssen anschließend gespeichert werden. In allen Fällen sind die zu speichernden Werte periodische Kennzahlen der einzelnen Prozessschritte, welche in einer zeitbasierten Datenbank abgelegt werden müssen. Nur wenn eine Kennzahl ein festgelegtes Limit überschreitet ist eine direkte Meldung des Wertes notwendig. 
+
+Um eine zuverlässige Speicherung zu garantieren sollten die Daten möglichst auf mehreren unabhängigen Systemen gespeichert werden. Hierzu wird ein modularer Aufbau verwendet, der es auch ermöglicht unterschiedlichste Speichermethoden gleichzeitig zu verwenden. Schließlich ist auch eine Löschungsstategie notwendig, um zu garantieren, dass immer genug Speicherplatz für neue Daten vorhanden ist.
+
+Die Visualisierung kann dank der vorbereiteten Datensätze im einfachsten Fall aus dem Plotten der Messreihen aus einer der Datenbanken bestehen. 
+
 - fehlende Energieerfassung
 - Aufzeichnung von Anlagenzuständen in einer Datenbank
   - Korrelation mit Leistungswerten

+ 6 - 11
20_Theorie.md

@@ -1,23 +1,20 @@
 # Theorie
 
-Mit dieser Arbeit werden diverse Konzepte zur Überwachung maschineller Anlagen erforscht. Dabei soll ein autonomes Meldesystem aufgebaut werden, welches auf schleichende Probleme aufmerksam machen kann bzw. zur Optimierung des Betriebsablaufes beiträgt. Um dies zu erreichen müssen Messwerte erhoben, analysiert und schließlich gespeichert werden. Diese Teilschritte sind in den folgenden Unterkapiteln näher aufgeführt.
+![Bestandteile des Projekts](out/diagrams/datenfluss/Datenfluss.svg)
 
-## Erfassung der Messwerte
-
-Die Aggregation der Messwerte soll unabhängig von Modell und Auslegung der Anlage möglich sein. Es werden verschiedene Wege in Betracht gezogen und schießlich einer von diesen an einer echten Anlage getestet. Die dafür notwendigen Komponenten sollten leicht in den bestehenden Aufbau integrierbar sein.
 
-Zunächst sollen die elektrische Versorgung, die Ströme einzelner Baugruppen und der Status der zentralen Steuerung der Anlage erfasst werden. Der Messintervall sollte klein genug sein, um zwischen den Prozessschritten der Anlage unterscheiden zu können. Bei den zu betrachtenden Kernschießanlagen ist ein Intervall unter 100ms ausreichend; jedoch sollte je nach Möglichkeit ein Interval von 20ms angestrebt werden. 
+## Erfassung der Messwerte
 
-Während der Entwicklung ist es auch sinnvoll die Rohwerte der Messungen zu sichern, um den Analyseschritt mit Hilfe von echten Messwerten exemplarisch zu testen.
+ Bei den zu betrachtenden Kernschießanlagen ist ein Intervall unter 100ms ausreichend; jedoch sollte je nach Möglichkeit ein Interval von 20ms angestrebt werden. 
 
 ## Übertragung der Messwerte
 
-Für die Übertragung von den Sensoren zur datenverarbeitenden Einheit werden Kommunikationsbusse eingesetzt, welche bereits in den Kernschießmaschinen verwendet werden. Es soll nach Möglichkeit kein weiterer Feldbus einer anderen Technologie hinzugefügt werden, um die Kosten für die Integration möglichst gering zu halten. Die einzubauenden Sensoren werden am bestehenden Feldbus angeschlossen, welcher wiederum zu einem Interfacemodul führt. Für die Koordination der Interfacemodule ist in jeder Anlage bereits eine zentrale Steuerungseinheit (SPS oder CPU genannt) zuständig. Diese Steuerungen verwenden ein meist auf Ethernet basiertes Kommunikationsprotokoll, um mit dem Rest der Anlage zu kommunizieren. [] Ihre Kommunikationspartner können zum Beispiel Interfacemodule, Human-Machine-Interfaces (HMI) oder andere Steuerungen aus anderen Anlagen sein. Für dieses Projekt ist neben diesen Standardkomponenten auch ein Computer (Box-PC) hinzuzufügen, welcher die Aufgabe der Verarbeitung der aufgenommenen Messwerte übernimmt.
+Für dieses Projekt ist neben diesen Standardkomponenten auch ein Computer (Box-PC) hinzuzufügen, welcher die Aufgabe der Verarbeitung der aufgenommenen Messwerte übernimmt.
 Die SPS ist daher so zu konfigurieren, dass sie zusätzlich zu ihrer Haupaufgabe, die Anlage zu steuern, auch die Daten von den neu hinzugefügten Sensoren an den PC weiterreicht. Hierzu können zwei Methoden verwendet werden: Zum Einen kann der Box-PC die von der SPS gesammelten Messwerte periodisch abfragen und zum Anderen kann die SPS die Daten selbstständig zum PC übermitteln. In beiden Fällen muss jedoch ein Protokoll verwendet werden, welches von beiden Seiten verwendet werden kann. Es ist beispielsweise nicht möglich ProfiNet Pakete über eine Ethernetverbindung mit einem generischen Linuxkernel zu empfangen, weil dieser nicht in der Lage ist das Echtzeitkriterium des ProfiNet-Standards zu erfüllen. []
 
 ## Datenverarbeitung
 
-Bei der Erhebung der Messwerte entstehen viele Datenpunkte, die einzeln betrachtet keine große Aussagekraft besitzen. Der Schritt der Datenverarbeitung kombiniert die eingehenden Datenströme und extrahiert für den Endnutzer relvante Informationen. Die Verarbeitung soll auf einer PC-Platform stattfinden, so dass sie flexibel eingesetzt werden kann. Sie kann dadurch vor Ort, zum Beispiel auf einem industriellen Box-PC, oder auch über eine Netzwerkverbindung aus einem entfernten Ort durchgeführt werden. Aus sicherheitstechnischen Gründen darf die verwendete Platform nur über die erhobenen Messwerte verfügen und nicht in den ProzesDatenbildsablauf der Anlage eingreifen.
+Die Verarbeitung soll auf einer PC-Platform stattfinden, so dass sie flexibel eingesetzt werden kann. Sie kann dadurch vor Ort, zum Beispiel auf einem industriellen Box-PC, oder auch über eine Netzwerkverbindung aus einem entfernten Ort durchgeführt werden. Aus sicherheitstechnischen Gründen darf die verwendete Platform nur über die erhobenen Messwerte verfügen und nicht in den ProzesDatenbildsablauf der Anlage eingreifen.
 
 In diesem Schritt werden zuerst die Verbrauchswerte wie Ströme und Spannungen mit dem Status der Anlagensteuerung kombiniert, so dass pro Prozessschritt ein wiederholbares Datenbild entsteht. Ein Prozessschritt ist ein zeitlich begrenzter Zustand der Anlage, in der eine bestimmte Gruppe von Aktoren aktiviert wird. Dies kann beispielsweise das Einfahren des Hubtisches sein. Die elektrischen Verbräuche während dieses Schrittes können so als Funktion der Schrittnummer und Zeit nach Beginn des Vorgangs dargestellt werden. Das Datenbild besteht dann im einfachsten Fall aus Versorgungsleistungen und Strömen der 24V-Kanäle. 
 
@@ -27,10 +24,8 @@ Anschließend werden je nach erwartetem zeitlichen Verlaufs des Datenbilds einig
 
 ## Datenspeicherung
 
-Je präziser die Datenverarbeitung angesetzt ist, desto weniger Daten müssen anschließend gespeichert werden. In allen Fällen sind die zu speichernden Werte periodische Kennzahlen der einzelnen Prozessschritte, welche in einer zeitbasierten Datenbank abgelegt werden müssen. Nur wenn eine Kennzahl ein festgelegtes Limit überschreitet ist eine direkte Meldung des Wertes notwendig. 
 
-Um eine zuverlässige Speicherung zu garantieren sollten die Daten möglichst auf mehreren unabhängigen Systemen gespeichert werden. Hierzu wird ein modularer Aufbau verwendet, der es auch ermöglicht unterschiedlichste Speichermethoden gleichzeitig zu verwenden. Schließlich ist auch eine Löschungsstategie notwendig, um zu garantieren, dass immer genug Speicherplatz für neue Daten vorhanden ist.
 
 ## Visualisierung
 
-Die Visualisierung kann dank der vorbereiteten Datensätze im einfachsten Fall aus dem Plotten der Messreihen aus einer der Datenbanken bestehen. Je nach Bedarf kann die Visualisierung vor Ort am HMI der Anlagen erfolgen oder auch beispielsweise über einen Browser auf einem entfernten PC. Hier besteht kein großer Entwicklungsbedarf und es kann deswegen auch auf fertige universelle Visualisierungsoberflächen zurückgegriffen werden. 
+Je nach Bedarf kann die Visualisierung vor Ort am HMI der Anlagen erfolgen oder auch beispielsweise über einen Browser auf einem entfernten PC. Hier besteht kein großer Entwicklungsbedarf und es kann deswegen auch auf fertige universelle Visualisierungsoberflächen zurückgegriffen werden. 

+ 112 - 9
40_Praxis.md

@@ -1,11 +1,12 @@
 # Praktische Versuche
 
-Der gewählte Messaufbau wurde bisher an zwei Kernschießanlagen getestet. Dazu wurden alle benötigten Sensoren im Steuerungsschrank temporär verbaut und die aufgenommenen Daten extern mit einer weiteren ET200 Siemens Steuerung verarbeitet. Bei den Kernschießmaschinen handelt es sich um eine Anlage mit einer Steuerung von Siemens und eine mit einer Allen-Bradley Steuerung. In beiden Versuchen wurden die elektrischen Werte der Einspeisung, die Ströme der Kleinstspannungsverbraucher und der Anlagenstatus anhand des Programms auf der Steuerung aufgezeichnet.
+Der gewählte Messaufbau wurde bisher an zwei Kernschießanlagen getestet. Dazu wurden alle benötigten Sensoren im Steuerungsschrank temporär verbaut und die aufgenommenen Daten extern mit einer weiteren ET200 Siemens Steuerung verarbeitet. Bei den Kernschießmaschinen handelt es sich um eine Anlage mit einer Steuerung von Siemens und eine mit einer Allen-Bradley Steuerung. In beiden Versuchen wurden die elektrischen Werte der Einspeisung, die Ströme der Kleinstspannungsverbraucher und der Anlagenstatus anhand des Programms auf der Steuerung aufgezeichnet. Diese erfassten Rohdaten konnten zur Analyse und für die Erarbeitung der Middleware-Module des PLC-Connector Programms (siehe vorheriges Kapitel) wiederholt eingespielt werden. Zum Zeitpunkt der beiden Versuche fand noch keine tiefgehende Analyse statt.
 
-## Siemens Anlage
+## Siemens Anlage LFB65
+
+Der erste praktische Test wurde an einer Kernschießmaschine vom Typ LFB65 in der KW 19 2022 durchgeführt. Als Sensoren sind hier zum Einen Strommessung an der $24\mathrm{V}$ Versorgung und zum Anderen eine Instrumentierung der elektrischen Einspeisung vorgesehen. 
 
 ![Siemens Versuch](out/diagrams/hengli/Hengli.svg)
-Der erste praktische Test wurde an einer Kernschießmaschine vom Typ LFB65 durchgeführt. Als Sensoren sind hier zum Einen Strommessung an der $24\mathrm{V}$ Versorgung und zum Anderen eine Instrumentierung der elektrischen Einspeisung vorgesehen.
 
 Wie bereits im obigen Diagramm dargestellt, wird die Strommessung der $24\mathrm{V}$-Ebene durch einen digitalen Leitungsschutzschalter von IFM übernommen. Dieser besteht einem Kopfmodul (Typ DF2101) und bis zu 16 daran angereihten Sicherungskanälen. Das Kopfmodul besitzt eine IO-Link Schnittstelle, über die die Versorgungsspannung und die Ströme der einzelnen Sicherungskanäle abgefragt werden kann.
 ![Photo der eingesetzten 24V-Sicherungen](images/hengli-ifm-sicherungen.jpg)
@@ -25,18 +26,120 @@ Das Energy Meter ist auf einen sekundärseitigen Strom von $5\mathrm{A}$ und auf
 
 Links neben der Energiemeterkarte ist ein IO-Link-Master verbaut. Dieser ist über ein dreipoliges IO-Link Kabel mit dem Kopfmodul der IFM Sicherungen verbunden. Beide Karten stecken auf einer programmierbaren ET-200SP CPU. Diese befindet sich im obigen Bild direkt angrenzend zu den beiden Karten und ist mit der darüberliegenden Netzwerk-Switch per Ethernetkabel verbunden. Beide werden über die vorhin genannte Sitop-Sicherung mit $24\mathrm{V}$ Betriebsspannung versorgt.²
 
-Die ET-200SP CPU erfasst periodisch die Messwerte der beiden per Rückwandbus verbundenen Siemens-Karten und sendet sie via S7-Protokoll an die die selbstgeschriebene Anwendung "PLC-Connector". Über IO-Link werden dabei alle $20\mathrm{ms}$ folgende Zustände der IFM-Sicherungen erfasst:
-Der gemessene Strom je Kanal im Bereich von $[0.1,0.2,...,10.0]\mathrm{A}$, Schalt-, Überlast-, Kurzschluss-, Grenzwert- und Tasterzustände, sowie die Spannung am Kopfmodul. Vom AI Energy Meter werden zudem alle $60\mathrm{ms}$ die L-N-Spannungen, Leiterströme und Phasenwinkel der Drehstomversorgung erfasst.
+*2) Auf dem Teststand befinden sich auch ein weiteres Netzteil, ein Leitungsschutzschalter und ein ET-200SP Interfacemodul, welche alle während des Versuchs nicht verwendet wurden.
+
+Die ET-200SP CPU erfasst periodisch die Messwerte der beiden per Rückwandbus verbundenen Siemens-Karten und sendet sie via S7-Protokoll an die die selbstgeschriebene Anwendung "PLC-Connector". Über IO-Link werden dabei alle $20\mathrm{ms}$ folgende Zustände der IFM-Sicherungen ermittelt:
+Der gemessene Strom je Kanal im Bereich von $[0.1,0.2,...,10.0]\mathrm{A}$, Schalt-, Überlast-, Kurzschluss-, Grenzwert- und Tasterzustände, sowie die Spannung am Kopfmodul. Vom AI Energy Meter werden zudem alle $60\mathrm{ms}$ die L-N-Spannungen, Leiterströme und Phasenwinkel der Drehstomversorgung aufgenommen. Das Programm der CPU besteht aus 
+
+Das verwendete Ethernetnetzwerk ist eine Erweiterung des Überwachungsnetzes der Kernschießmaschine. Darin befinden sich üblicherweise die zentrale Steuerung, mobile Zugänge zur Programmierung der Anlage und das Bedienpult (HMI). In manchen Kernschießmaschienen von Laempe ist dort auch ein Box-PC mit der hauseigenen Laempe-Digital-Cockpit-Software (LDC) vorzufinden. Bei der im Versuch verwendeten LFB65-Anlage sind alle bereits vorhandenen Teilnehmer in der unteren Hälfte des Subnetzes `192.168.0.0/24` anzufinden. Zum Beispiel besitzt die zentrale Steuerung die Addresse `192.168.0.5`. Demzufolge werden für die Erweiterung des Netzwerks statische Addressen im Subnetz `192.168.0.192/26` eingesetzt. Die hinzugefügten Teilnehmer umfassen die ET-200SP CPU mit der IP-Adresse `192.168.0.206` und ein Laptop mit der Addresse `192.168.0.201`, der als Anwendungsserver fungiert.
+
+Die [PLC-Connector](https://gogs.justprojects.de/Master/smart-energy-monitor/src/jiangsu-hengli-LFB65/box-pc/application) Anwendung ist für den Versuch so konfiguriert, dass sie Daten von der zentralen Steuerung abfragt, Verbindungen von der ET-200SP CPU zulässt und alle Messwerte in zwei redundanten Datenbänken abspeichert. Die Abfrage der zentralen S7-1500 CPU erfolgt über das S7-Protokoll auf der Eternetverbindung zum Überwachungsnetzwerk der Anlage. Die Steuerung wurde von einem Laempe-Mitarbeiter so programmiert, dass sie eine große Menge an Ausgangszustandsbits in einen eigens zum Auslesen angelegten Speicherbereich (vgl. Datenbautein DB3 im Diagramm) kopiert. Beim Auslesen wird der Inhalt von DB3 als Bytearray zum PLC-Connector übertragen. Die Struktur des Statusflags im Datenbaustein ist dabei folgendermaßen definiert:
+
+| **byte[] \ LSB-0** | **7**                                 | **6**                                 | **5**                       | **4**                        | **3**                               | **2**                   | **1**                                | **0**                                |
+|------------------|---------------------------------------|---------------------------------------|-----------------------------|------------------------------|-------------------------------------|-------------------------|--------------------------------------|--------------------------------------|
+| **Byte 0**       | Unterteil einfahren                   | Unterteil ausfahren                   | Auswerfer 1 heben           | Auswerfer 1 senken           | Auswerfer 2 heben                   | Auswerfer 2 senken      | Abdrücker Seitenteil links einfahren | Abdrücker Seitenteil links ausfahren |
+| **Byte 1**       | Abdrücker Seitenteil rechts einfahren | Abdrücker Seitenteil rechts ausfahren | Rolltor schliessen          | Rolltor oeffnen              | Gaswagen ausfahren                  | Gaswagen einfahren      | Schwenkplatte abklappen              | Schwenkplatte einklappen             |
+| **Byte 2**       | Losteil 1 Unterteil einfahren         | Losteil 1 Unterteil ausfahren         | Losteil 2 einfahren         | Losteil 2 ausfahren          | Losteil 3 einfahren                 | Losteil 3 ausfahren     | Losteil 4 einfahren                  | Losteil 4 ausfahren                  |
+| **Byte 3**       | Losteil 5 einfahren                   | Losteil 5 ausfahren                   | Seitenteil links schliessen | Seitenteil rechts schliessen | Seitenteil links und rechts oeffnen | Sandschleuse schliessen | Sandschleuse öffnen                  | Sandmessung 3 wege ventil schliessen |
+| **Byte 4**       | Sandmessung 3 wege ventil oeffnen     | Schuss                                | Hubtisch senken             | Hubtisch heben               | Oberteil heben                      | Oberteil senken         |                                      |                                      |
+
+Für die Übertragung der Daten von der ET-200SP CPU werden zwei weitere Datenstrukturen eingesetzt. Die Erste umfasst die Messwerte der AI-Energy-Meter-Karte und besteht aus folgenden neun IEEE 754 LSB Fließkommawerten:
+
+| **byte[]** | Fließkommawert           | Einheit |
+|------------|--------------------------|---------|
+| Byte 0-3   | Spannung $U_1$           | V       |
+| Byte 4-7   | Spannung $U_2$           | V       |
+| Byte 8-11  | Spannung $U_3$           | V       |
+| Byte 12-15 | Primärstrom $I_1$        | A       |
+| Byte 16-19 | Primärstrom $I_2$        | A       |
+| Byte 20-23 | Primärstrom $I_3$        | A       |
+| Byte 24-27 | Phasewinkel $\varphi_1$  | °       |
+| Byte 28-31 | Phasewinkel $\varphi_2$  | °       |
+| Byte 32-35 | Phasewinkel $\varphi_3$  | °       |
+
+Die zweite Datenstruktur beinhaltet die Statusinformationen der elektronischen Sicherung DF2101. Sie ist identisch zu der vom Hersteller IFM definierten Struktur der IO-Link Prozessdaten des Moduls (siehe [DF2101 Schnittstellenbeschreibung](https://www.ifm.com/download/files/ifm-DF2101-20190131-IODD11-de_V5/$file/ifm-DF2101-20190131-IODD11-de_V5.pdf) im Anhang)
+
+Beiden Strukturen ist außerdem ein Zeitstempel der CPU vorangestellt, welcher bei der genauen Bestimmung des Messzeitpunktes herangezogen wird. Der Zeitstempel besteht aus ganzzahligen Anzahl an Millisekunden, die seit dem Start der CPU vergangen sind. Er ist als vorzeichenlose, vier Byte LSB Zahl kodiert. Somit wird er circa aller 50 Tagen überlaufen, was auch bei der Implementierung der Zeitbestimmung im vorherigen Kapitel beachtet wurde.
+
+Die PLC-Connector Anwendung verwendet zur Kommunikation mit der ET-200SP CPU die `snap7` Pythonbibliothek. Diese Bibliothek stellt hier einen TCP-Server auf Port 102 bereit und emuliert damit das Verhalten einer S7-Steuerung. Die ET-200SP CPU baut anschließend eine Verbindung zu diesem Server auf. Aus der Sicht des SPS-Programms handelt es sich beim `snap7` Service um eine Partner-CPU, zu der nun aktiv eine Verbindung über das S7-Protokoll aufgebaut wird. Die ET-200SP CPU beginnt nun mit dem Senden der zwei Speicherbereiche. Der erste Bereich mit den Energiedaten wird in den emulierten Datenbaustein `DB2` und der zweite wird in den Baustein `DB1` der PLC-Connector Anwendung geschrieben.
 
-*2) Auf dem Teststand befinden sich auch ein weiteres Netzteil, ein Leitungsschutzschalter und ein ET-200SP Interfacemodul, welche alle während des Versuchs nicht verwendet wurden
+## Allen-Bardley Anlage LL20
 
-## Allen-Bardley Anlage
+Der zweite Versuchsaufbau dient zur Demonstration der Anpassungsfähigkeit der Hardware an eine andere Anlagenstruktur, im Speziellen an Kernschießanlagen mit einer zentralen Compact Logix Steuerung von Allen-Bradley und der Verwendung des EtherNet-IP Protokolls. Er fand an einer Anlage vom Typ LL20 in der 20./21. KW 2022 statt. Wie auch beim ersten Versuch werden die elektrischen Werte der Einspeisung, die Stromverbräuche der Kleinstspannungsverbraucher und der Anlagenzustand erfasst. 
 
 ![AB Versuch](out/diagrams/benton/Benton.svg)
 
+Zur Energieerfassung kommen hier die gleichen Baugruppen wie im letzten Versuch zum Einsatz. Für die 24V Strommessung werden wieder die elektronischen Sicherungen von IFM verwendet und zur Instrumentierung der Einspeisung wird die Energiemeterkarte in Kombination mit $50\mathrm{A}:5\mathrm{A}$ eingesetzt. Beide werden wieder von einer ET-200ST CPU gesteuert. Beim Auslesen der zentralen Steuerung ist jedoch ein großer Unterschied vorzufinden: Ihre Programmierung unterscheidet sich stark von der Programmstruktur einer Siemens CPU. Anstelle von Datenbausteinen werden hier sogenannte Tags verwendet, um interne Zustandsvariablen anzulegen. Diese Tags können über EtherNet/IP mit Hilfe der `pylogix` Bibliothek von der [PLC-Connector](https://gogs.justprojects.de/Master/smart-energy-monitor/src/benton-foundry-LL20/box-pc/application) Anwendung ausgelesen werden. Zum Lesen des Anlagenstatuses wurde in diesem Fall kein neuer Speicherbereich angelegt; der Zugriff auf die Flags kann nämlich direkt erfolgen:
+
+| **Tag[Byte offset]** | LSB Bit Index | Name |
+|----------------------|---------------|------|
+| B14[31]  | 1 | ejector_move_down |
+| B14[32]  | 1 | ejector_move_up |
+| B14[34]  | 1 | carriage_move_out |
+| B14[35]  | 1 | carriage_move_in |
+| B14[37]  | 1 | side_clamps_open |
+| B14[38]  | 1 | side_clamps_close |
+| B14[42]  | 1 | table_move_down |
+| B14[43]  | 1 | table_move_up |
+| B14[45]  | 1 | gassing_platemove_out |
+| B14[46]  | 1 | gassing_plate_move_in |
+| B14[48]  | 1 | cope_eject_plate_move_out |
+| B14[49]  | 1 | cope_eject_plate_move_in |
+| B14[51]  | 1 | top_part_move_up |
+| B14[52]  | 1 | top_part_move_down |
+| B14[54]  | 1 | front_door_open |
+| B14[55]  | 1 | front_door_close |
+| B14[57]  | 1 | pneumatic_loose_part_1_move_out |
+| B14[58]  | 1 | pneumatic_loose_part_1_move_in |
+| B14[60]  | 1 | hydraulic_loose_part_2_move_out |
+| B14[61]  | 1 | hydraulic_loose_part_2_move_in |
+| B14[63]  | 1 | hydraulic_loose_part_3_move_out |
+| B14[64]  | 1 | hydraulic_loose_part_3_move_in |
+| B14[69]  | 1 | clamping_device_side_clamp_left_clamp |
+| B14[70]  | 1 | clamping_device_side_clamp_left_loose |
+| B14[72]  | 1 | clamping_device_side_clamp_right_clamp |
+| B14[73]  | 1 | clamping_device_side_clamp_right_loose |
+| B14[81]  | 1 | clamping_device_shoot_plate_clamp |
+| B14[82]  | 1 | clamping_device_shoot_plate_loose |
+| B14[83]  | 1 | sand_refill |
+| B14[84]  | 1 | sand_gate_close |
+| B14[85]  | 1 | sand_gate_open |
+| B14[93]  | 1 | shoot |
+| B14[103] | 1 | clamping_device_gassing_plate_clamp |
+| B16[12]  | 1 | central_amine_supply_refill |
+| B16[13]  | 1 | gassing |
+| B16[15]  | 1 | gas_generator_process_coldbox_betaset |
+| B18[31]  | 1 | mixer_lid_move_up |
+| B18[32]  | 1 | mixer_lid_move_down |
+| B18[35]  | 7 | mixer_wing_motor_on |
+| B18[37]  | 1 | mixer_move_up |
+| B18[38]  | 1 | mixer_move_down |
+| B18[40]  | 1 | sand_dosing_unit_inlet |
+| B18[42]  | 1 | sand_dosing_unit_outlet |
+| B18[44]  | 1 | binder_1_sucking |
+| B18[45]  | 1 | binder_1_blowing |
+| B18[47]  | 1 | binder_2_suction |
+| B18[48]  | 1 | binder_2_blowing |
+| B18[50]  | 1 | binder_3_sucking |
+| B18[51]  | 1 | binder_3_blowing |
+| B18[53]  | 1 | binder_4_sucking |
+| B18[54]  | 1 | binder_4_blowing |
+| B18[59]  | 1 | additive_1_dosing |
+| B18[60]  | 1 | additive_2_dosing |
+| B18[62]  | 1 | mixer_bowl_direction_eject_1_machine |
+| B18[63]  | 1 | mixer_bowl_direction_eject_2_scrap |
+| B18[65]  | 1 | cleaning_cylinder_move_up |
+| B18[66]  | 1 | cleaning_cylinder_move_down |
+| B18[68]  | 1 | mixer_sand_slide_move_to_machine |
+| B18[69]  | 1 | mixer_sand_slide_move_to_scrap |
+| B18[71]  | 1 | vertical_mixersand_slide_gateclose |
+| B18[72]  | 1 | vertical_mixer_sand_slide_gate_open |
+| B18[73]  | 1 | sand_sender |
+
+Diese Tags werden von der PLC-Connector Anwendung aller $20\mathrm{ms}$ über das EtherNet/IP Protokoll (EIP) von der Steuerung abgefragt. Dabei können mehrere Leseanfragen in einem EIP Paket kombiniert werden, was die Anzahl an benötigten Ethernet Roundtrips gering hält. Für die Anbindung an das Überwachungsnetzwerk der Allen-Bradley-Steuerung wird auch ein anderes Subnetz verwendet. Das Subnetz ist hier `192.168.1.0/24` und die IP-Adresse der Steuerung lautet `192.168.1.15`.
 
 ## Vergleich der Versuche
 
-In den Versuchen konnten fast identische externe Komponenten eingesetzt werden. Der einzige Unterschied in der Hardware war die Verwendung von Stromwandlern mit unterschiedlichen Umsetzungsfaktoren. Im ersten Test wurden Wandler mit einem Umsetzungsfaktor von 150A:5A eingesetzt, während im zweiten Test ein Faktor von 50A:5A ausreichend war. Die Kommunikation mit den Sensoren war in beiden Fällen identisch, da dies durch eine externe Steuerung übernommen wurde. In Zukunft wird für den Aufbau jedoch keine externe Steuerung mehr nötig sein, denn diese übermittelnde Funtion der ET200 CPU soll auch durch die Steuerung der jeweiligen Anlage übernommen werden.
+Bei der LL20 handelt es sich im Vergleich zur LFB65 um eine kleinere und kompaktere Kernschießmaschine. In den Versuchen konnten fast identische externe Komponenten eingesetzt werden. Der einzige Unterschied in der Hardware war die Verwendung von Stromwandlern mit unterschiedlichen Umsetzungsfaktoren. Im ersten Test wurden Wandler mit einem Umsetzungsfaktor von 150A:5A eingesetzt, während im zweiten Test ein Faktor von 50A:5A ausreichend war. Die Kommunikation mit den Sensoren war in beiden Fällen identisch, da dies durch eine externe Steuerung übernommen wurde. In Zukunft wird für den Aufbau jedoch keine externe Steuerung mehr nötig sein, denn diese übermittelnde Funtion der ET200 CPU soll auch durch die Steuerung der jeweiligen Anlage übernommen werden.
 
-Die Versuche unterschieden sich auch im Kommunikationsprotkoll zwischen dem Computer und der jeweiligen Steuerung der Anlage. Es wurden zwei unterschiedliche Versionen der verarbeitungssoftware eingesetzt; bei der einen fand die Kommunikation mit der Steuerung über des S7-Protokoll statt und bei der anderen über EtherNet-IP. Beide Protokolle bauen auf TCP/IP auf und sind so beide in der Anwendungsschicht des Internetprotokolls anzufinden.
+Die Versuche unterschieden sich auch im Kommunikationsprotkoll zwischen dem Computer und der jeweiligen Steuerung der Anlage. Es wurden zwei unterschiedliche Versionen der Verarbeitungssoftware eingesetzt; bei der einen fand die Kommunikation mit der Steuerung über des S7-Protokoll statt und bei der anderen über EtherNet-IP. Beide Protokolle bauen auf TCP/IP auf und sind so beide in der Anwendungsschicht des Internetprotokolls anzufinden.

+ 2 - 2
README.md

@@ -35,7 +35,7 @@ Gegeben sind folgende speicherprogrammierbaren Steuerungen, dezentrale Peripheri
 - [x] [Einleitung](00_Einleitung.md)
 - [ ] [Grundlagen](10_Grundlagen.md)
   - [ ] Was sind Kernschießmaschinen
-  - [ ] Problemstellung
+  - [x] Problemstellung
   - [ ] Topologie der Kernschießmaschinen
   - [ ] typische Datenbusse
 - [ ] [Bestandteile der Energieüberwachung](20_Theorie.md)
@@ -54,8 +54,8 @@ Gegeben sind folgende speicherprogrammierbaren Steuerungen, dezentrale Peripheri
 - [ ] [Implementierung](30_Implementierung.md)
   - [ ] Wahl der Sensoren
   - [ ] Software
-  - [ ] Testaufbau
 - [ ] [Praktische Versuche](40_Praxis.md)
+  - [x] Testaufbau
   - [x] Messung an kompletten Kernschießmaschinen
       - [ ] Analyse der Rohdaten
   - [ ] Ergebnisse

+ 99 - 0
diagrams/hengli-timing.plantuml

@@ -0,0 +1,99 @@
+@startuml Hengli-Timing
+
+title Betriebszyklus der LFB65 
+right footer jomueller, 08.2022
+
+clock Takt with period 500
+
+@0 as :start
+@5 as :en_high 
+@10 as :en_low
+
+concise Unterteil
+concise Auswerfer
+concise "Abdrücker Seitenteile" as Abdruecker
+concise Seitenteile
+concise Rolltor
+concise Gaswagen
+concise Schwenkplatte
+concise "Losteil 1" as LT1
+concise Sandschleuse
+concise "Sandmessung 3-Wege-Ventil" as S3WV
+concise Hubtisch
+concise Oberteil
+robust Schuss
+
+@:start
+
+Unterteil is Idle
+Auswerfer is Idle
+Abdruecker is Idle
+Seitenteile is Idle
+Rolltor is Idle
+Gaswagen is Idle
+Schwenkplatte is Idle
+LT1 is Idle
+
+Sandschleuse is Idle
+S3WV is Idle
+Hubtisch is Idle
+Oberteil is Idle
+Schuss is Idle
+
+@500
+
+Unterteil is Einfahren
+Auswerfer is Heben
+Abdruecker is Einfahren
+Seitenteile is Schließen
+Rolltor is Schließen
+Gaswagen is Einfahren
+Schwenkplatte is Einklappen
+LT1 is Einfahren
+
+Sandschleuse is Schließen
+S3WV is Schließen
+Hubtisch is Senken
+Oberteil is Heben
+
+@2000
+Schuss is Aktiv
+
+@3000
+
+Schuss is Idle
+
+@4000
+
+Unterteil is Ausfahren
+Auswerfer is Senken
+Abdruecker is Ausfahren
+Seitenteile is Öffnen
+Rolltor is Öffnen
+Gaswagen is Ausfahren
+Schwenkplatte is Abklappen
+LT1 is Ausfahren
+
+Sandschleuse is Öffnen
+S3WV is Öffnen
+Hubtisch is Heben
+Oberteil is Senken
+
+@5000
+
+Unterteil is Idle
+Auswerfer is Idle
+Abdruecker is Idle
+Seitenteile is Idle
+Rolltor is Idle
+Gaswagen is Idle
+Schwenkplatte is Idle
+LT1 is Idle
+
+Sandschleuse is Idle
+S3WV is Idle
+Hubtisch is Idle
+Oberteil is Idle
+Schuss is Idle
+
+@enduml

+ 2 - 2
diagrams/hengli.plantuml

@@ -33,8 +33,8 @@ node "ET200SP CPU" as Interfacemodul {
     U; I; Phase
   }
 
-  object "Datenbaustein" as DB3 {
-    DB3
+  object "Speicherbereiche" as DB3 {
+    
   }
 
   iolink_master -[hidden]down- energy_meter

+ 43 - 0
diagrams/plc-connector-main.plantuml

@@ -0,0 +1,43 @@
+@startuml PLC-Connector-main
+
+title Programmablauf PLC-Connector
+right footer jomueller, 08.2022
+
+start
+:read config file;
+:       initialze 
+input modules, 
+middlewares and
+output modules;
+
+:start input threads;
+
+repeat
+:read input queues;
+partition Middlewares {
+    -> values;
+    split
+        :module a;
+        :submodule b;
+        split again
+        :module c;
+        -[hidden]->
+        split again
+        :module d;
+        split
+        :e;
+        split again
+        :f;
+        end split
+    end split
+}
+-> results;
+:write to outputs;
+backward:sleep;
+repeat while(interupted?)
+-> yes;
+
+:stop input threads;
+
+stop
+@enduml

+ 26 - 0
diagrams/uebersicht.plantuml

@@ -0,0 +1,26 @@
+@startmindmap uebersicht
+
+title Bestandteile des Energiemonitoring-Systems
+
+center footer jomueller, 08.2022
+
+* System
+
+** Energiemessung
+  *** an einzelnen Baugruppen
+  *** der gesamten Anlage
+
+** Datenaggregation
+  *** Kombination mit Anlagenstatus
+  *** Verwendung vorhandener Infrastruktur
+
+** Datenverarbeitung 
+  *** Analysesoftware
+  **** modularer Aufbau
+  **** redundante Speicherorte
+
+** Visualisierung 
+  *** Alarme
+  *** Dashboard
+
+@endmindmap

+ 2 - 0
main.tex

@@ -26,7 +26,9 @@
   \item[Box-PC] Computer, welcher in industriellen Anlagen verbaut wird
   \item[CT] Stromwandler
   \item[TCP/IP] Menge aller Protokolle bis zur Transportschicht des OSI-Referenzmodells
+  \item[EIP] EtherNet/IP (IP = Industrial Protocol)
   \item[DIY] selbstgebaut; im Gegensatz zu: industriell hergestellt
+  \item[LSB] Binärzahl mit Nummerierung nach aufsteigender Wertigkeit  
 \end{description}
 
 \section{Grundlagen}

+ 11 - 13
out/diagrams/benton/Benton.svg

@@ -9,17 +9,16 @@ entity CSV--><g id="elem_CSV"><path d="M812,147.9375 C812,137.9375 836,137.9375
 link b to c--><!--MD5=[19cacedb7561eefce78d64eec6c81019]
 link iolink_master to energy_meter--><!--MD5=[a498e817a11dc725cfa21e9d4a9bee79]
 link Sensoren to Interfacemodul--><!--MD5=[c113c2192474cdfaa90bf41bb7cb69fb]
-link b to iolink_master--><g id="link_b_iolink_master"><path codeLine="70" d="M234.72,169.9375 C234.72,169.9375 342.4,169.9375 342.4,169.9375 " fill="none" id="b-iolink_master" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="347.4,169.9375,338.4,165.9375,342.4,169.9375,338.4,173.9375,347.4,169.9375" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="229.72,169.9375,238.72,173.9375,234.72,169.9375,238.72,165.9375,229.72,169.9375" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="43" x="244.56" y="166.0044">IO-Link</text></g><!--MD5=[255358772ee1adcbaf99c39058b84884]
-link c to energy_meter--><g id="link_c_energy_meter"><path codeLine="71" d="M239.63,362.9375 C239.63,362.9375 330.83,362.9375 330.83,362.9375 " fill="none" id="c-to-energy_meter" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="335.83,362.9375,326.83,358.9375,330.83,362.9375,326.83,366.9375,335.83,362.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[255358772ee1adcbaf99c39058b84884]
-link c to energy_meter--><g id="link_c_energy_meter"><path codeLine="72" d="M239.63,383.9375 C239.63,383.9375 330.83,383.9375 330.83,383.9375 " fill="none" id="c-to-energy_meter-1" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="335.83,383.9375,326.83,379.9375,330.83,383.9375,326.83,387.9375,335.83,383.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[c106df0a3426f395f4f3cacfe1095ac5]
-link iolink_master to DB3--><g id="link_iolink_master_DB3"><path codeLine="74" d="M458.61,160.9375 C499.87,160.9375 549,160.9375 549,160.9375 C549,160.9375 549,345.2475 549,345.2475 " fill="none" id="iolink_master-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="549,350.2475,553,341.2475,549,345.2475,545,341.2475,549,350.2475" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[d96deaf340fbcb2b16cf6e971ec4514b]
-link energy_meter to DB3--><g id="link_energy_meter_DB3"><path codeLine="75" d="M456.03,372.9375 C456.03,372.9375 485.65,372.9375 485.65,372.9375 " fill="none" id="energy_meter-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="490.65,372.9375,481.65,368.9375,485.65,372.9375,481.65,376.9375,490.65,372.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[6387076be90827b2a888f9fccd88b033]
-link DB3 to app--><g id="link_DB3_app"><path codeLine="77" d="M612.29,372.9375 C612.29,372.9375 712.68,372.9375 712.68,372.9375 " fill="none" id="DB3-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="717.68,372.9375,708.68,368.9375,712.68,372.9375,708.68,376.9375,717.68,372.9375" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="607.29,372.9375,616.29,376.9375,612.29,372.9375,616.29,368.9375,607.29,372.9375" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="76" x="624.48" y="386.0044">S7 Protokoll</text></g><!--MD5=[73c079af30046d3848f2bbf09516d4c3]
-link Tags to app--><g id="link_Tags_app"><path codeLine="79" d="M932.93,372.9375 C932.93,372.9375 847.24,372.9375 847.24,372.9375 " fill="none" id="Tags-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="842.24,372.9375,851.24,376.9375,847.24,372.9375,851.24,368.9375,842.24,372.9375" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="937.93,372.9375,928.93,368.9375,932.93,372.9375,928.93,376.9375,937.93,372.9375" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="72" x="854.08" y="386.0044">EtherNet IP</text></g><!--MD5=[aa95fd2ca5abaacbe508b66ea54688b0]
-reverse link InfluxDB to app--><g id="link_InfluxDB_app"><path codeLine="81" d="M747.5,188.1775 C747.5,188.1775 747.5,354.6575 747.5,354.6575 " fill="none" id="InfluxDB-backto-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="747.5,183.1775,743.5,192.1775,747.5,188.1775,751.5,192.1775,747.5,183.1775" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[c5b208cead62aac4b84dac252a323c77]
-reverse link CSV to app--><g id="link_CSV_app"><path codeLine="82" d="M827,188.1775 C827,188.1775 827,354.6575 827,354.6575 " fill="none" id="CSV-backto-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="827,183.1775,823,192.1775,827,188.1775,831,192.1775,827,183.1775" style="stroke:#181818;stroke-width:1.0;"/></g><rect height="11.6406" style="stroke:#00000000;stroke-width:1.0;fill:none;" width="89" x="554" y="475.9375"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="89" x="554" y="485.2197">jomueller, 06.2022</text><!--MD5=[314bb253c833c4bef44f1c0a840fb0b4]
-@startuml Benton
-
+link b to iolink_master--><g id="link_b_iolink_master"><path codeLine="69" d="M234.72,169.9375 C234.72,169.9375 342.4,169.9375 342.4,169.9375 " fill="none" id="b-iolink_master" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="347.4,169.9375,338.4,165.9375,342.4,169.9375,338.4,173.9375,347.4,169.9375" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="229.72,169.9375,238.72,173.9375,234.72,169.9375,238.72,165.9375,229.72,169.9375" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="43" x="244.56" y="166.0044">IO-Link</text></g><!--MD5=[255358772ee1adcbaf99c39058b84884]
+link c to energy_meter--><g id="link_c_energy_meter"><path codeLine="70" d="M239.63,362.9375 C239.63,362.9375 330.83,362.9375 330.83,362.9375 " fill="none" id="c-to-energy_meter" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="335.83,362.9375,326.83,358.9375,330.83,362.9375,326.83,366.9375,335.83,362.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[255358772ee1adcbaf99c39058b84884]
+link c to energy_meter--><g id="link_c_energy_meter"><path codeLine="71" d="M239.63,383.9375 C239.63,383.9375 330.83,383.9375 330.83,383.9375 " fill="none" id="c-to-energy_meter-1" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="335.83,383.9375,326.83,379.9375,330.83,383.9375,326.83,387.9375,335.83,383.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[c106df0a3426f395f4f3cacfe1095ac5]
+link iolink_master to DB3--><g id="link_iolink_master_DB3"><path codeLine="73" d="M458.61,160.9375 C499.87,160.9375 549,160.9375 549,160.9375 C549,160.9375 549,345.2475 549,345.2475 " fill="none" id="iolink_master-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="549,350.2475,553,341.2475,549,345.2475,545,341.2475,549,350.2475" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[d96deaf340fbcb2b16cf6e971ec4514b]
+link energy_meter to DB3--><g id="link_energy_meter_DB3"><path codeLine="74" d="M456.03,372.9375 C456.03,372.9375 485.65,372.9375 485.65,372.9375 " fill="none" id="energy_meter-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="490.65,372.9375,481.65,368.9375,485.65,372.9375,481.65,376.9375,490.65,372.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[6387076be90827b2a888f9fccd88b033]
+link DB3 to app--><g id="link_DB3_app"><path codeLine="76" d="M612.29,372.9375 C612.29,372.9375 712.68,372.9375 712.68,372.9375 " fill="none" id="DB3-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="717.68,372.9375,708.68,368.9375,712.68,372.9375,708.68,376.9375,717.68,372.9375" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="607.29,372.9375,616.29,376.9375,612.29,372.9375,616.29,368.9375,607.29,372.9375" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="76" x="624.48" y="386.0044">S7 Protokoll</text></g><!--MD5=[73c079af30046d3848f2bbf09516d4c3]
+link Tags to app--><g id="link_Tags_app"><path codeLine="78" d="M932.93,372.9375 C932.93,372.9375 847.24,372.9375 847.24,372.9375 " fill="none" id="Tags-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="842.24,372.9375,851.24,376.9375,847.24,372.9375,851.24,368.9375,842.24,372.9375" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="937.93,372.9375,928.93,368.9375,932.93,372.9375,928.93,376.9375,937.93,372.9375" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="72" x="854.08" y="386.0044">EtherNet IP</text></g><!--MD5=[aa95fd2ca5abaacbe508b66ea54688b0]
+reverse link InfluxDB to app--><g id="link_InfluxDB_app"><path codeLine="80" d="M747.5,188.1775 C747.5,188.1775 747.5,354.6575 747.5,354.6575 " fill="none" id="InfluxDB-backto-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="747.5,183.1775,743.5,192.1775,747.5,188.1775,751.5,192.1775,747.5,183.1775" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[c5b208cead62aac4b84dac252a323c77]
+reverse link CSV to app--><g id="link_CSV_app"><path codeLine="81" d="M827,188.1775 C827,188.1775 827,354.6575 827,354.6575 " fill="none" id="CSV-backto-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="827,183.1775,823,192.1775,827,188.1775,831,192.1775,827,183.1775" style="stroke:#181818;stroke-width:1.0;"/></g><rect height="11.6406" style="stroke:#00000000;stroke-width:1.0;fill:none;" width="89" x="554" y="475.9375"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="89" x="554" y="485.2197">jomueller, 06.2022</text><!--MD5=[01945a95af81c3dc2df2a36935c025e3]
+@startuml
 skinparam TitleFontSize 24
 allow_mixing
 skinparam linetype ortho
@@ -101,10 +100,9 @@ Tags <-right-> app: "EtherNet IP"
 
 app -up-> InfluxDB
 app -up-> CSV
-
 @enduml
 
-PlantUML version 1.2022.5(Sat Apr 30 10:55:52 UTC 2022)
+PlantUML version 1.2022.6(Tue Jun 21 17:34:49 UTC 2022)
 (GPL source distribution)
 Java Runtime: OpenJDK Runtime Environment
 JVM: OpenJDK 64-Bit Server VM

+ 8 - 10
out/diagrams/datenfluss/Datenfluss.svg

@@ -13,14 +13,13 @@ entity Alarme--><g id="elem_Alarme"><rect fill="#C8C7FF" height="36.2969" rx="2.
 entity Dashboard--><g id="elem_Dashboard"><rect fill="#C8C7FF" height="36.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="96" x="854" y="232.9375"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76" x="864" y="255.9326">Dashboard</text></g><!--MD5=[89c5e88c1b3a23b788935d6fc97d11bf]
 link b to c--><!--MD5=[af87c8ce8893bc72e9a45aec53626259]
 link Sensoren to PLC--><!--MD5=[b68b420ddd83952ea7f0b759c1682a6b]
-link b to DB3--><g id="link_b_DB3"><path codeLine="42" d="M220.57,141.9375 C273.8,141.9375 334.5,141.9375 334.5,141.9375 C334.5,141.9375 334.5,227.4475 334.5,227.4475 " fill="none" id="b-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="334.5,232.4475,338.5,223.4475,334.5,227.4475,330.5,223.4475,334.5,232.4475" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[446aa0da4f6323df3c03e85239b3db2b]
-link c to DB3--><g id="link_c_DB3"><path codeLine="43" d="M226.08,250.9375 C226.08,250.9375 316.69,250.9375 316.69,250.9375 " fill="none" id="c-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="321.69,250.9375,312.69,246.9375,316.69,250.9375,312.69,254.9375,321.69,250.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[cdfc3700825667f308cdcac49820de5e]
-link Status to DB3--><g id="link_Status_DB3"><path codeLine="44" d="M379,150.0075 C379,150.0075 379,227.6975 379,227.6975 " fill="none" id="Status-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="379,232.6975,383,223.6975,379,227.6975,375,223.6975,379,232.6975" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[6387076be90827b2a888f9fccd88b033]
-link DB3 to app--><g id="link_DB3_app"><path codeLine="46" d="M436.05,250.9375 C436.05,250.9375 502.92,250.9375 502.92,250.9375 " fill="none" id="DB3-to-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="507.92,250.9375,498.92,246.9375,502.92,250.9375,498.92,254.9375,507.92,250.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[4261806ce36c2f898e83f3c49a5a9fa7]
-link app to Datenbank--><g id="link_app_Datenbank"><path codeLine="48" d="M632.33,250.9375 C632.33,250.9375 661.73,250.9375 661.73,250.9375 " fill="none" id="app-to-Datenbank" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="666.73,250.9375,657.73,246.9375,661.73,250.9375,657.73,254.9375,666.73,250.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[8eea88c56023fa3c38550fe0852d63a6]
-link Datenbank to Visualisierung--><g id="link_Datenbank_Visualisierung"><path codeLine="50" d="M763.04,250.9375 C775.39,250.9375 788.0375,250.9375 798.1775,250.9375 C800.7125,250.9375 803.0908,250.9375 805.2685,250.9375 C806.3574,250.9375 807.3961,250.9375 808.3792,250.9375 C808.8708,250.9375 809.3484,250.9375 809.8115,250.9375 C810.043,250.9375 810.2709,250.9375 810.4951,250.9375 C810.6072,250.9375 810.7183,250.9375 810.8285,250.9375 C810.8836,250.9375 810.9385,250.9375 810.9931,250.9375 " fill="none" id="Datenbank-to-Visualisierung" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="810.9931,250.9375,801.9931,246.9375,805.9931,250.9375,801.9931,254.9375,810.9931,250.9375" style="stroke:#181818;stroke-width:1.0;"/></g><rect height="11.6406" style="stroke:#00000000;stroke-width:1.0;fill:none;" width="89" x="496" y="308.9375"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="89" x="496" y="318.2197">jomueller, 06.2022</text><!--MD5=[ff4c9720cdd68bb94b05c3943fc0e11c]
-@startuml Datenfluss
-
+link b to DB3--><g id="link_b_DB3"><path codeLine="41" d="M220.57,141.9375 C273.8,141.9375 334.5,141.9375 334.5,141.9375 C334.5,141.9375 334.5,227.4475 334.5,227.4475 " fill="none" id="b-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="334.5,232.4475,338.5,223.4475,334.5,227.4475,330.5,223.4475,334.5,232.4475" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[446aa0da4f6323df3c03e85239b3db2b]
+link c to DB3--><g id="link_c_DB3"><path codeLine="42" d="M226.08,250.9375 C226.08,250.9375 316.69,250.9375 316.69,250.9375 " fill="none" id="c-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="321.69,250.9375,312.69,246.9375,316.69,250.9375,312.69,254.9375,321.69,250.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[cdfc3700825667f308cdcac49820de5e]
+link Status to DB3--><g id="link_Status_DB3"><path codeLine="43" d="M379,150.0075 C379,150.0075 379,227.6975 379,227.6975 " fill="none" id="Status-to-DB3" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="379,232.6975,383,223.6975,379,227.6975,375,223.6975,379,232.6975" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[6387076be90827b2a888f9fccd88b033]
+link DB3 to app--><g id="link_DB3_app"><path codeLine="45" d="M436.05,250.9375 C436.05,250.9375 502.92,250.9375 502.92,250.9375 " fill="none" id="DB3-to-app" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="507.92,250.9375,498.92,246.9375,502.92,250.9375,498.92,254.9375,507.92,250.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[4261806ce36c2f898e83f3c49a5a9fa7]
+link app to Datenbank--><g id="link_app_Datenbank"><path codeLine="47" d="M632.33,250.9375 C632.33,250.9375 661.73,250.9375 661.73,250.9375 " fill="none" id="app-to-Datenbank" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="666.73,250.9375,657.73,246.9375,661.73,250.9375,657.73,254.9375,666.73,250.9375" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[8eea88c56023fa3c38550fe0852d63a6]
+link Datenbank to Visualisierung--><g id="link_Datenbank_Visualisierung"><path codeLine="49" d="M763.04,250.9375 C775.39,250.9375 788.0375,250.9375 798.1775,250.9375 C800.7125,250.9375 803.0908,250.9375 805.2685,250.9375 C806.3574,250.9375 807.3961,250.9375 808.3792,250.9375 C808.8708,250.9375 809.3484,250.9375 809.8115,250.9375 C810.043,250.9375 810.2709,250.9375 810.4951,250.9375 C810.6072,250.9375 810.7183,250.9375 810.8285,250.9375 C810.8836,250.9375 810.9385,250.9375 810.9931,250.9375 " fill="none" id="Datenbank-to-Visualisierung" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="810.9931,250.9375,801.9931,246.9375,805.9931,250.9375,801.9931,254.9375,810.9931,250.9375" style="stroke:#181818;stroke-width:1.0;"/></g><rect height="11.6406" style="stroke:#00000000;stroke-width:1.0;fill:none;" width="89" x="496" y="308.9375"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="89" x="496" y="318.2197">jomueller, 06.2022</text><!--MD5=[30bb346ad9c13fef5f2e06cfaf3b0fe8]
+@startuml
 skinparam TitleFontSize 24
 allow_mixing
 skinparam linetype ortho
@@ -70,10 +69,9 @@ DB3 -> app
 app -> Datenbank
 
 Datenbank -> Visualisierung
-
 @enduml
 
-PlantUML version 1.2022.5(Sat Apr 30 10:55:52 UTC 2022)
+PlantUML version 1.2022.6(Tue Jun 21 17:34:49 UTC 2022)
 (GPL source distribution)
 Java Runtime: OpenJDK Runtime Environment
 JVM: OpenJDK 64-Bit Server VM

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 3
out/diagrams/hengli/Hengli.svg


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
out/diagrams/uebersicht/uebersicht.svg


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.