Einleitung
Dipl.-Ing. Johannes Hofer
Letzte Bearbeitung: 01.08.2024
Die erste Oberfläche, wie rechts im Bild, ist sicherlich nicht das, was SPS-Programmierer erwarten, 🥴. Es gibt keine Funktionsblöcke oder Netzwerke, so wie es normalerweise in der SPS-Welt üblich ist.
Also was völlig Neues!
Zunächst sei darauf hingewiesen, dass die Software von mir in C# (MVS) entwickelt wird. Demnach werden im Laufe der Berichte unterschiedliche Versionen vorgestellt und damit unterschiedliche Bilder eingebunden. Das ist zwar für den Leser ärgerlich, aber auch verständlich, wenn man bedenkt, dass sich die SW ständig weiterentwickelt und mit jeder Erklärung dazu, sich selbstverständlich auch der Test zur Software zwangsläufig immer positiver gestalten wird.
Was wir hier sehen, ist die Beta-Version, welche kurz vor der ersten Veröffentlichung steht. Die digitale Verarbeitung ist schon recht fortgeschritten. Da gibt es auch Timer und Zähler, allerdings nicht wie gewohnt so mit TON, CTU und dergleichen. Es wird sich somit für den digitalen Bereich nicht allzu viel zu den Bildern ändern, das schon mal vorab zum Trost, 😎.
Welche CPU kann verwendet werden, ist oft die erste Frage? Es gibt dazu bereits praktische Anwendungen mit verschiedener Hardware. Getestet habe ich die CPU Simatic S7-1500 und S7-1200, sowie den Raspberry Pi (Version 3). Dazu wurde jeweils ein Plug-in entwickelt, welches zur vorhandenen Hardware entsprechend speziell ausgelegt wurde. Alle Testversuche sind bis jetzt erfolgreich, können jedoch erst ernst genommen werden, wenn eine komplette Version (V1.0) zum KI2PLC fertig gestellt ist. Als Entwicklungsumgebung für das Plug-in empfehle ich jeweils das TIA-Portal (V18) oder CODESYS (V3.5), je nach Verwendung des CPU-Typs. Die Anwendungen auf den Simatic-CPUs sind nicht so gefragt, wie auf dem Raspberry Pi und das ist verständlich bezüglich Verfügbarkeit und langlebige Hardware. Davon abgesehen wird kaum eine Firma mit Siemens-Produkten in der eigenen Fertigung ein Risiko eingehen. Dagegen sind CPUs mit CODESYS Entwicklungsumgebung schon eher bereit andere Hardware, wie gehabt einzusetzen. Zumindest aus den Umfragen meiner bescheidenen Umwelt. Produktionslinien im Sondermaschinenbau (KFZ-Zubehör, Pharma) sind allerdings bez. KI-Einsatz sehr flexibel geworden.
Grundsätzlich findet eine KI in der Steuerungstechnik keinen Platz, wenn nur digitale Grundelemente verknüpft werden sollen. Dazu bedarf es keiner KI, sondern die bereits üblichen und erpropten Wege über IEC 61131-3 und den Hilfsmitteln KV-Diagramm und Grafcet.
Ich persönlich würde in jedem Fall ein Auge auf die KI im programmierbaren, industriellen Umfeld werfen. Die Zeit ist gekommen, etwas zu verändern. Nun einige Worte zum oben gezeigten Bild.
Übersicht zum Trainings-Layout
Das Ganze beginnt mit den künstlichen Neuronen (KN), welche sich auf eine Gruppe von 16 digitalen Eingängen konzentriert. Deswegen sind unter Punkt 1 insgesamt 16 digitale KN zu sehen. Die Aktionen dazu sind für eine Ausgangskarte von 8 digitalen Ausgängen ausgelegt. Diese Kombination mit 16 digitalen Eingängen und 8 digitalen Ausgängen hat sich in der Praxis sehr bewährt. Die nächste Gruppe der digitalen KN wären also wieder eine neue Eingangskarte mit 16 Eingängen und eine Ausgangskarte mit 8 digitalen Ausgängen.
Dazu kommen zusammengefasst als analoge Gruppe insgesamt vier analoge Eingänge und zwei analoge Ausgänge. Die Erklärung dazu erfolgt später im analogen Teil, bzw. ergibt sich dann später in der analogen Praxis-Anwendung. Zunächst nun die digitalen IO-Signale.
Das Trainingsfeld der digitalen Signale
Die KN sind jeweils mit den 16 digitalen Eingängen verbunden. Das bedeutet, daß jedes KN alle 16 Zustände kennt, also maximal 65535 Möglichkeiten. Das insgesamt 16 mal zu den KN verknüpft. Deswegen, zum besseren Verständnis die gezeichneten grünen Linien im Hauptbild. Für die Analogen Eingänge gilt die gleiche Betrachtungsweise. Hier jedoch ist die Auflösung von der jeweiligen Hardware abhängig. Beispielhaft hier die 27648 für einen analogen Ein- und Ausgang (Simatic) und beim Raspberry waren das in meiner praktischen Anwendung 1024 analoge Zustände für einen Eingangs-Kanal.
Nebenbei bemerkt können Hardware-Hersteller sich gerne bei mir melden. Allerdings nehme ich keine Hardware an, welche mir geliehen wird. Da gibt es tatsächlich Firmen die sich um eine Beteiligung zu diesem Thema bemühen und dann kurz danach auf einmal eine Liefer-Rechnung schreiben,😡 . So gehts also nicht!
Jedes KN kann nun einzeln betrachtet werden (Punkt 2). Dazu sinnbildlich wieder die Linien der 16 dig. Eingänge oder 16 Perceptrons aus jeweils 4 KN (dazu später mehr). Das sieht kompliziert aus und ist für eine KI jedoch fast normal, wenn man so sagen darf. Die KI lebt von Daten und hier stehen somit einige digitale Kombinationen zur Verfügung, welche nun trainiert werden können, damit die mögliche Vielfalt reduziert wird. Das ist unter Punkt 3 zu sehen. Hier hat jedes KN insgesamt wieder 16 Knoten zur Verfügung. Daraus ergeben sich 24KN * 16 Knoten. Praktisch gesehen vollkommen ausreichend. Schließlich muss man nicht alle 65535 Kombinationen trainieren, 🥱.
Unter Punkt 4 sind vier Perceptronen zu sehen. Jedes Perceptron steht frei zur Verfügung. Ich habe hier eine Festlegung getroffen, welche gerne übernommen werden kann. Der Reihenfolge nach sind das die Perceptrons GP (rot) für Grundposition, AC (grün) für Action, ERR (blau) für Fehlermeldung und schließlich das FLAG (gelb) für freie Verbindungen. Diese werden entsprechend in den Konten trainiert und gehen dann auf die Reise vom Zellkörper (Soma) über das Axon (Punkt 5), bis diese im Percptron nun feuern oder auch nicht. Auf diesem Weg über das Axon, gibt es je nach Einstellung zusätzliche Möglichkeiten die Eigenschaft der Knoten anzupassen.
Damit die Übersicht nicht verloren geht, können verschiedene Parameter (Punkt 6) eingestellt werden. Auch hier die Details erst später. Im Info-Feld (Punkt 7) sind einige Informationen zu sehen. Diese sind hilfreich, wenn nicht alles so funktioniert wie man sich das so mit seinem Training vorgestellt hat . Kompliziert wird das dann, wenn die Perceptrons wieder als Eingang eines anderen KN verwendet werden. Ganz besonders bei der Vermischung mit analogen und digitalen KN, 😉.
Das Trainingsfeld der analogen Signale
Nun befindet sich ein analoges KN im Soma (Punkt 1). Es handelt sich hier um das erste analoge KN, welches über einen Klick (Punkt 2) angewählt wurde. Dieses KN ist automatisch mit dem ersten analogen Eingang verknüpft und wird durch einen simplen Kreis im Zellkörper angezeigt. Dieses analoge KN hat ebenfalls die schon erwähnten 4 Perceptrons, also digitale Zustände, welche nun mit den digitalen KN verknüpft werden können. Das Training ist recht einfach gestaltet und erfolgt über den oberen Schieberegler, welcher den eingestellten Kanal simuliert.
Die analogen Daten werden aus den Einstellungen auf der rechten Seite zusammengefasst. Hier muss man sich schon einige Gedanken mehr machen, als das bei den digitalen Signalen der Fall ist. Auch dazu mehr in den praktischen Beispielen.
Im analogen Info-Feld unter dem Punkt 2 ersichtlich, ist noch ein kleiner Schieberegler zu sehen. Der Setpoint zum analogen Signal, kann mit diesem Schieberegler auf seine Sprunggenauigkeit trainiert werden. Das ist eine sehr schöne Trainings-Methode, das KN auf den verbundenen, analogen Ausgang mit den Toleranzen und Setpoint zu trainieren. Der Anwender spart sich damit viel Fachwissen, wie beispielhaft der PID-Regler und andere Problematiken.
Prinzipiell halte ich die hier veröffentlichte Information zum Einleitungsteil vorerst für ausreichend. Wer diese Seite gelesen hat, kennt das Vorhaben bzw. besser gesagt kann sich vorstellen, was ich hier plane und versuche umzusetzen. Kompliziert wird der Gedankengang erst dann, wenn man versucht als SPS-Programmierer das Geschehen zu betrachten.
Jegliche Gedanken wie z. B., wie geht denn ein TON oder ein rücksetzender Speicher oder dergleichen Dinge führen auf einen Irrweg, da alle Programmierer sich an das Programmieren und nicht an das Trainieren gewöhnt haben. Deswegen habe ich hier die Nachbildung eines künstlichen Neurons mit seinem Soma, Axon und seinen Dendriten gewählt.
Das Verständnis kommt erst mit der praktischen Anwendung. In den Videos und zusätzlichen Erklärungen werden praktische Lösungen trainiert. Dazu gehören auch sehr komplexe Themen, wie der Temperaturverlauf eines Mediums über einen längeren Zeitraum, welches halbautomatisch trainiert werden muss. Dahinter stecken also noch eine ganze Menge an Überraschungen.
Den Gedanken das Programmieren einer SPS komplett zu vergessen, finde ich persönlich wünschenswert. In der Praxis allerdings gibt es immer spezielle Lösungen, welche auch spezielle Programmier-Techniken erfordern. So bleibt den Programmierern in der Automatisierung für SPSen noch eine Weile Zeit, bis diese nun endgültig durch die KI verdrängt werden, 🙃.
Wie sieht man was man tut?
Eine berechtigte Frage, da es kein Programm mehr gibt, sondern nur KN und deren Verbindungen. Die Knoten in einem KN sind eindeutig. Dazu bedarf es keinerlei weitere Hilfsmittel, um zu erkennen, was hier geschieht. Wichtig sind die aktiven Verbindungen der verschiedensten Ebenen. Genau das ist aus einem Programmlisting nicht erkennbar. Beispiel zum folgen Bild wird die Verknüpfung von digitalen und analogen KN angezeigt.
Unter Punkt 1 ist ein analoges KN gerade im Training aktiv. Dieses KN ist mit einem digitalen KN verbunden. Sichtbar unter Punkt 2. Zudem können die Verbindungen der KN mit anderen KN gesehen werden. Hier ein Beispiel für KN 6 mit 16 Verbindungen zu vier anderen KN (12, 13, 14 und 15). Das ist nur ein Beispiel, wie der Konstrukteur seine Verbindungen herstellt und dessen Aktivitäten (feuern) überprüfen kann.
Was hat das nun mit KI zu tun?
Die erzielten Ergebnisse im Testbereich (Training) werden über eine Soft-PLC realisiert. So entstehen, wie in den Info-Fenstern aus KI2PLC zu sehen ist, unterschiedliche Sigmoid-Werte zu jedem Knoten im KN oder zu jedem analogen KN, welche ja keine Knoten besitzen. Ich denke, in der SPS-Welt reicht der Sigmoid als Auslöser vollkommen aus, wie in vielen anderen technischen Bereichen auch oft der Fall ist. Diese Möglichkeit, ein KN zu feuern, bedeutet nun, dass solche KN ausserhalb der SPS, also auf dem PC, der für die Ausführung von KI2PLC.EXE verwendet wird, gespeichert werden. Damit ist schlichtweg auch das Projekt gemeint, an dem gerade mit KI2PLC gearbeitet wird. Die Daten können jetzt von einem Programm mit spezifischen Eigenschaften aus der KI selektiert und bearbeitet werden.
So entsteht mit der Zeit durch häufiges Training eine umfangreiche Dateninformation, welche ab einem bestimmten Zeitpunkt und Datenmenge erlaubt, spezielle Knoten vom KI-Programm selbst vorzuschlagen, die auch in der Ziel-SPS richtig interpretiert werden.
Das führt zum geschwünschten Lerneffekt, welcher schließlich das Ziel einer KI sein sollte. Die Software zur Auswertung der Daten aus der Datenbank oder aus der reellen SPS (Ethernet-Schnittstelle) wird derzeit ebenfalls von mir in C# entwickelt. So soll die spätere Arbeitsweise durch eine Rest-API unterstützt werden. Mal sehen, was da so herauskommt :).