Samstag, 9. Oktober 2021

 Autor und (c): Johannes Hofer                                                                                                                                                Letzter Update: 18.11.2021

KI für die industrielle Automatisierung

Der KI-Automat in der PLC


Der Prototyp III hat nun ein anderes Katzengesicht! Für ein vernünftiges Ergebnis müssen wir mehrmals lernen - denn schließlich wollen wir ja ein KI-System nutzen. Also, müssen wir immer mehr Katzen (Signaturen) aufnehmen, damit wir unser Ziel erreichen.

Durch die wachsende Datenmenge wird unser KI-Automat immer klüger, bis dieser unsere Hilfe für den gelernten Prozess nicht mehr benötigt, da er selbst ausreichend entscheiden kann.

Na toll - Hoffentlich funktioniert das auch 😏. Ich hatte das Glück den Prototyp III in einem Laborbetrieb in Belgien zu testen. Die Firma hatte mich eingeladen und zugeschaut, wie ich mit dem supervised learning meine Signaturen fotografiere, die Gewichtung mit der Pipline unterstütze und wie das so mit einer Simatic funktioniert. Vielen Dank für die freundliche Einladung und herzliche Grüße nach Brüssel!

Was machen wir nun? Im Prototyp II hatten wir nur graue Katzen, das waren ausschließlich digitale Signale. So konnten wir schon nach einem einmaligen Lernprozess ein recht ordentliches Ergebnis erzielen. Ein Programmierer kann das mit seinem Programm in SPS-Sprachen (IEC 611-31) so nicht erreichen. Warum nicht?

Jede Software hat einen bestimmten Fehler-Anteil. Bei nur 4% Fehlerquote handelt es sich bereits um einen Spritzenprogrammierer mit einem sehr guten Testresultat. Zudem gibt es bei jeder Aufgabenstellung unbekannte Situationen, welche das so erstellte Programm meistens nicht berücksichtigt oder im Falle der SPS-Programmiermöglichkeiten nicht berücksichtigen kann. 

Der KI-Automat kennt jede mögliche Situation! Es handelt sich hierbei zwar auch um eine Software, welches allerdings als KI-Automat programmiert ist und nachweisbar die Fehlergrenze von 4% nicht überschreitet.  

Der einzige Nachteil wäre, dass falsche Katzen fotografiert werden. Das ist aber ein anderes Thema, für das der KI-Automat nicht zuständig ist 😁

Das müsste natürlich genauer erklärt werden. Dazu müssen aber die Grundlagen zum KI-Automat vollständig verstanden werden. Und soweit sind wir noch nicht. Der Prototyp III bringt uns allerdings ein wenig weiter, dieses besser zu verstehen.

Fassen wir noch einmal kurz zusammen:
  • Wir lernen unterstützt die Signaturen (Input-Layer und supervised learning). Das sind unsere Synapsen
  • Danach erfolgt die Gewichtung mit einer Pipeline
  • Das Deep-Learning wird intern durch Expertenwissen je nach Bedarf hinzugefügt
  • Die so entstehenden Ausgangs-Layer dienen dem KI-Automat
  • Der KI-Automat in der Plc wird mit den Binär-Daten der Ausgangslayer gefüttert
Nun - erweitern wir unseren Horizont mit einer Aufgabe aus der Verfahrenstechnik, welche tatsächlich bereits von mir in Betrieb genommen wurde. Der Auftraggeber hat über die kurze, erfolgreiche  Inbetriebnahmezeit sein Erstaunen geäußert.

Nachteil ist: Den KI-Automat in SCL geschrieben kann der SPS-Programmierer nachvollziehen, allerdings seine Daten dazu nicht.

Letztendlich ist das aber egal, denn sind wir mal ehrlich: Wer versteht schon den Vorgang einer KI im Detail als SPS-Anwender? 😵

Aufgabenstellung

Das Programm soll auf Hinsicht zum Prototyp IV jetzt schon bereits seiten- und maßstabsorientiert sein.

In Prototyp IV werden wir eine Kranbrücke für Schüttgüter pendelarm positionieren und dazu benötigen wir Angaben zur Lagersituation in mm bzw. cm.

Wir wählen für dieses Projekt die Maße für DIN-A3 aus und einen genauen Zeichenmaßstab von ± 1mm je Pixel. Zudem kann das Papier industriegerecht gedruckt und verwendet werden. Für den jetzigen Prototyp III benötigen wir zusätzlich PCE-Symbole, also Tank, Ventil, Pumpe usw. 

Es soll ein Medium von z. B. 24° C auf 32°C innerhalb 10 Stunden temperiert werden. Danach soll die Temperatur von 32° für 2 Stunden gehalten werden. Der Prozess ist dann beendet und das Medium kann abgefüllt werden.

Der gesamte Temperaturverlauf ab 24° bis 32° darf ±1°C nicht überschreiten.

So - lieber SPS-Programmierer, dann leg mal los. Ich garantiere dir, dass du damit ein richtiges Problem bekommst, denn speziell zu dieser Aufgabe folgendes:
  • Das Medium ist auch innerhalb eines Produktes unterschiedlich (Toleranzbereich) und erzeugt damit unterschiedliche Eigenwärme
  • Das heiße Wasser weist größere Toleranzen auf, wenn der Heizkessel örtlich weit entfernt ist oder andere Teilnehmer (Kessel) vom Wasser gebrauch nehmen.
  • Die Geräte werden je nach Betriebszeiten erneuert und das erzeugt unterschiedliche Toleranzen welche der Programmierer nicht berücksichtigen kann, da diese nicht parametrisiert werden können.
  • Der Temperaturverlauf und seine Zeiten ändern sich je nach Charge (Batch)
  • Die Filtereigenschaften haben deutliche Verschleiß-Eigenschaften über den geforderten Prozessverlauf.
  • Und und und ...
Ein selbst lernendes System kann durch die Anzahl der fotografierten Katzen (bei jedem Batch) dazulernen. Das heißt, nur bei jedem erfolgreichen Prozess wird dieser in die Datenbank übernommen. Dadurch wird die ehemalige Hilfestellung bei der ersten Aufnahme ( supervised learning ) immer mehr in den Hintergrund treten und damit ironischerweise automatisch der SPS-Programmierer auch 😎.

Umsetzung

Wir werden zunächst unser C#-Programm aus Prototyp II so ändern, dass WPF wegfällt und eine seitenorientierte Oberfläche entsteht (Bild 1). Dann erweitern wir den KI-Automat mit analogen Signalen. Die grauen Katzen kennen wir ja bereits aus Prototyp I und II. Jetzt erhalten wir zusätzlich bunte Katzen 😉



Bild 1

In der ersten Phase erstellen wir die Daten für unseren Simulator zur Aufgabenstellung. In der zweiten Phase untersuchen wir das mit der SPS (Simatic). 

Es wird also in YouTube mindestens zwei Filmabschnitte geben.

Nach langer Diskussion und letztendlich in Brüssel habe ich (wir) entschieden, keinen PID-Regler anzuwenden. Das ist zwar ein Gerät, welches nur parametrisiert wird (so auch unser Timer TON), aber die Praxis zeigt, dass die Aufgabenstellung mit nur einem PID-Regler nicht gelöst werden konnte. So müssen mehrere PID-Regler verwendet werden, da die kritischen Überleitungen von der Start-Temperatur und er End-Temperatur überschwingen und so bei der Toleranz von nur ± 1°C die Angelegenheit sehr kompliziert wird. 

Außerdem ist auch hier die Verantwortung vom Programmierer zum Anlagenhersteller ständig in Frage gestellt - wenn es nun doch nicht funktioniert hat 😓. Diese Diskussionen finden wir leider bei jeder traditionellen Inbetriebnahme. Der Entwickler möchte mit komplexen Bausteinen wie den PID möglichst keinen Kontakt.

Mit unserem KI-Automat wird diese Situation deutlich verbessert, da verständliche Werkzeuge für die Aufnahme der Signaturen verwendet werden und damit die Anwendung der Programmzyklen oder ähnliches nicht mehr notwendig werden.

In der YouTube-Version werde ich natürlich nur kurze Prozesszeiten zeigen. 💁

Zum Thema KI

Kurz zusammengefasst nun der jetzige Stand zur SW für die KI-Automation im Prototyp III. Im nachfolgenden Bild sehen wir noch einmal die Vorgehensweise für die Erstellung eines Ausgangslayers (OL), welcher schließlich in die SPS transferiert und dort durch den KI Automat in einen zyklischen Prozess umgesetzt wird. 



Am PC wird zunächst mittels Machine-Learning (ML) alle 100 ms (Prototyp III) ein Foto der Signatur erzeugt und als Eingangslayer (IL)  abgelegt. Durch den Prozess des Deep-Learning (DL) entstehen so Outputlayer (OL), welche der Fabrik gegebenenfalls wieder zur Verfügung gestellt werden. Hier erfolgt bereits ein Lernprozess innerhalb der Entwicklungsphase. Die Ausgangslayer in der SPS werden im Prototyp III kontinuierlich verarbeitet ohne dass diese sich erneuern bzw. erweitern.

Dieser Prozess muss also nach einem erneuten Lernen am PC wieder in die SPS übertragen werden. Der KI-Automat in der SPS verarbeitet nun die im DB zur Verfügung gestellten Daten nach dem Prinzip der Automaten-Programmierung (SCL). 

Erst im Prototyp IV wird jeder Prozess-Lauf von der SPS an ein Daten-System zum  PC übertragen, welcher so wieder neue Outputlayer generiert. Diese gelangen dann wieder in die SPS als zusätzliche Daten im DB. Das werden wir dann im Prototyp IV sehr schön erkennen können.

So erhöht sich nach jedem Prozess die Datenbasis im DB und kann je nach Bedarf abgeschaltet werden. Die SPS hat damit eine automatisierte Inbetriebnahme abgeschlossen und arbeiten autark mit den bestehenden Daten.

Das noch einmal zur Erklärung, da doch immer wieder die gleichen Fragen gestellt werden. Ich hoffe das reicht vorerst, denn im folgenden Abschnitt zeige ich den ersten Kontakt über ein Diagram mit einem analogen Eingang. Hier lernen wir über die Tankfüllung das Ein/Ausschalten des Mixers. Der Test zeigt uns so, wie analoge Signale im Eingangslayer schließlich im Ausgangslayer landen.

Der Analog-Eingang

Der Analogeingang für die Tankfüllung_T1 soll den Mixer ab z ,B. 6% einschalten. Dazu verwenden wir einen Slider, welcher händisch auf 6% gestellt wird um dann den digitalen Ausgang TankMixer_T1 einzuschalten.




Danach können wir je nach Bedarf den automatischen Lauf des Sliders einschalten. Nun erhalten wir einen kontinuierlichen analogen Prozess, bis der Tank mit 100% gefüllt ist. Im Bild sehen wir die Tankfüllung bei 62% und den bereits gelernten SLF (supervised learning factor) mit 57%. 

Die so erzeugten Bilder alle 100 ms gelangen nun in die Eingangslayer, welche danach im Deep-Learning zu einem Ausgangs-Layer verarbeitet werden. 
Dazu das erste Video



Wir sehen bereits den Zusammenhang der Signale aus dem Signatur-Diagramm und den einzelnen Bauelementen, welche sich in beliebigen, hier DIN A3 Seiten, befinden. Somit sind auch bereits die Eigenschaften der Schnittstellen zur SPS festgelegt. Betrachten wir nun den folgenden Abschnitt zum lernen der Ventile und Pumpen.


Ventile und Pumpen für Füllen und Entleeren

Der Tank wird mit je einem Ventil und einer Pumpe gefüllt bzw. entleert.

Die Pumpe darf nicht gegen ein geschlossenes Ventil pumpen. 

Im Klartext muss also das Einschalten der Pumpe nur möglich sein, wenn das dazu gehörige Ventil auch geöffnet ist.

Wir haben bei der Pumpe und dem Ventil je einen Eingang als Setpoint, welche bestimmt ob das Ventil oder die Pumpe eingeschaltet werden soll oder nicht. Der sogenannte ActualValue ist dann der tatsächliche Ausgang zum Ventil / Pumpe um tatsächlich je eine Ausgang für das Einschalten zu liefern. Im Diagram deswegen als Output konfiguriert.

So erklärt sich auch das folgende Diagramm, welches das Lernen der jeweiligen Ventil/Pumpe-Kombination zeigt.



Alles ja schon aus dem Prototyp II bekannt mit den digitalen Signalen und am Besten den nächsten Film  betrachten 😉




Die externe KI_SPS kontrolliert die KD-SPS


Nun ist es soweit! Ich habe meine SPS mit einer Kunden-SPS verbunden, indem ich das Analog-Signal für die Tank-Temperatur parallel abgegriffen habe und der Stellwert für das Control-Valve schlichtweg kundenseitig abgeklemmt und auf meine KI-SPS wieder angeklemmt wurde.




So hat die KD-SPS nix gemerkt und kann ganz einfach mit dem Batch beginnen. Nur der Stellwert für das CV-Ventil wird nun über meine KI-SPS erfolgen. 

Und dass durch den Konstrukteur der Anlage, denn der muss es ja wissen 😇

Dazu benutzt er meinen Slider, sonst nichts. Wir holen uns also die Daten dieses mal von der Anlage aus der SPS über die Schnittstelle PLC_API, wie von mir in Udemy erklärt, allerdings mittlerweile hier bei mir erweitert mit Daten innerhalb des Streams. Das natürlich weiterhin im JSON-Format.

So muss nun der arme Konstrukteur den Schieber 10 Std. beobachten und regeln. 

Er wollte das ja so und keinen PID-Regler 🙉

Die Temperatur wird ab 24°C geregelt, genauer gesagt ab 24,3 °C, denn innerhalb von ±0.3 °C wird nichts geregelt. Der letzte Stellwert bleibt also erhalten. So der Herr Konstrukteur.






Da innerhalb der 10 Std. die Temperatur um 8°C erhöht wird, muss also je Stunde der Sollwert um 0.8°C erhöht werden. Wir sprechen die SPS mit der SW KI2SPS in einem Sekunden-Takt an, das sind also Werte die wir mit 3 Stellen hinter dem Komma (8°C / 10std / 60min / 60sek)  = 0.0002°C je Sekunde speichern könnten. Die KD-SPS gibt allerdings nur alle 5 Minuten einen Setpoint zum Temperaturverlauf. Das sind also in der KD-SPS 0.067°C je 5 min.  Naja - dann viel Spaß.

Der Sollwert (blaue Linie) wird wie bei der KD-SPS über TON-Timer in der KI-SPS nachvollzogen und am Monitor zur Unterstützung des Konstrukteurs die aktuelle Temperatur und der Setpoint, sowie die Differenz angezeigt. So kann er den Stellwert so ca. alle 5 Minuten entsprechend korrigieren oder dies auch jede Sekunde anpassen. Das ist ein Vorteil gegenüber der KD-SPS, welche ja nur alle 5 Minuten regelt.

Nun dann - kann ja nix mehr schief gehen👦

Wenn alles geklappt hat, wir haben ja nur Wasser 😏 als Medium, dann versuchen wir das noch einmal über die KI-SPS ohne den Konstrukteur.

So nebenbei bemerkt, steht meine KI-SPS immer noch in Belgien, denn der nette  Konstrukteur hat Spaß daran gefunden und wird wohl eine Modernisierung beim Lieferanten in Deutschland anfordern 👌

Der Verlauf mit der KI-SPS hatte keinen Fehler geliefert, wenn genügend gelernt wurde. Die Probleme in der KD-SPS wurden somit erkannt und können nun durch den Programmierer korrigiert werden.

Am besten wir schauen uns das alles, soweit möglich und sinnvoll, im nächsten Video an.



Fazit: 950 Aufnahmen für den Input-Layer und damit einen supervised learning factor SLF von 62% zeigen ein gutes Ergebnis. Damit sind sehr viele Fälle abgesichert, welche in der Batch-Programmierung in der KD-SPS nicht umgesetzt wurden.


Lernen muss gelernt sein


Bei diesem praktischen Test hat sich wieder gezeigt, dass sich der positive Erfolg nur durch richtiges Lernen einstellt.

Der Schieber könnte ja auch automatisch bewegt werden! Immer dann wenn  AV mit > 0.3 vom SP abweicht, könnte der Schieber entsprechend verschoben werden, bis die Toleranz wieder stimmt, Das würde dazu führen, das Problem der Programmierung nur zu verschieben. In diesem Fall kann zwar ein Ergebnis im KI-Automat nachvollzogen werden, aber nur wenn keine extremen Störungen auftreten.

Damit diese auch erfasst werden, hat der Bediener mit Absicht extreme Situationen erzeugt, die Grenzen bis 0.9°C aufweisen und dann entsprechend dagegen gesteuert. Das - und nur das - hat dann zum Ergebnis des SLF von 62% geführt. Bei Analogwerten mit einer Kommastelle ist das sehr viel. Eben diese 950 Aufnahmen, wobei die Möglichkeiten wesentlich höher liegen. Insgesamt sind bei 100% ohne eine Kommastelle, das ist der Stellwert von 0-100%, schon 400 Möglichkeiten mischbar.

Das Ergebnis in der KI-SPS mit dem KI-Automat ist allerdings sehr sicher, da die SW einen konstanten Algorithmus nachweist, denn ungeplante SW ist ein Zufallsprodukt 😉

Firmen, welche Simulationen schreiben, sind für die Anwendung dieser Technologie besonders angesprochen und gut geeignet diese Idee zu implementieren. Eine Simulation liefert die Signaturen und diese gehen dann getestet in den KI-Automat. Ist doch toll - oder - 

Also meldet euch bei Interesse einer Zusammenarbeit oder exklusive Übernahme des jetzigen Prototyp-Standes der SW Ki2SPS 😌

Bis zum Prototyp IV, wenn überhaupt ....🙋