Montag, 21. August 2023

 

KI2Plc geschützte Domain 😎

Die Möglichkeiten einer SPS-Programmierung, um diese am Geschehen der künstlichen Intelligenz zu beteiligen

 


Video zum Alignment Teil-2

Das Interesse die SPS an der KI teilnehmen zu lassen, ist recht hoch und konzentriert sich überwiegend auf die Anwendung in Python bzw. Microphython und zu meiner Überraschung auch in C/C++. Allerdings weniger auf die Ausführung mit der SPS wie z.B. einer Simatic. 

Das kann ich gut verstehen, da eine SPS schließlich ein Betriebssystem mit Merkern, Timern usw. besitzt und die Anwendung der klassischen SPS schon deswegen weiterhin ihre Verwendung und Interesse findet.

In unseren Lerndaten befinden sich keine Funktionen bzw befindet sich keine Programme wie IEC-61131-3, sondern ein Dateninterpreter, welcher aus den gelernten Daten jeweils aus den aktuellen Eingangsdaten (Input-Layer) die Ausgangsdaten (Output-Layer) interpretiert. 

Wichtig für das Verständnis ist auch, dass das Alignment nur für das ML angewendet wird und sich ebenfalls später nicht mehr zur Interpretation in der SPS befindet.

Zudem besteht das Interresse an einem komplexen Beispiel, um zu zeigen, dass solche Dinge auch zu einer Lösung durch ML führen. Ich habe nun folgendes Beispiel gewählt und werde dazu nun das ML zeigen und natürlich auch das Ergebnis presentieren, wie das hier in unserer pyPlc abläuft.


Die wohl schwierigste Lernphase ist hier der Zyl.-2, da dieser auf die Position einer Scheibe über I0.3 reagieren soll, diese Position aber verloren geht, wenn der Zylinder die Scheibe nach Position I0.4 verschiebt.

Wir müssen also eine speichernde Wirkung lernen, ohne einen speichernden Befehl anzuwenden 😉

Der Zyl.-1 muss vom Zyl.-2 blockiert werden, damit dieser kein weiteres Teil auf die frei gewordene Position in I0.3 schiebt. Auch ein zusätzlicher Lerneffekt, welcher später ohne ein SPS-Programm nur aus den Daten umgesetzt wird.

Und das letzte Bonbon ist, das die Scheibe eine Zeit in Position I0.4 gehalten werden muss, damit der Roboter eine Achse in die Scheibe stecken kann um so die Scheibe später auf einen Rundschalt-Tisch zu transportieren. 

Wir verwenden einen Timer ohne einen SPS-Timer einzusetzen. Der ergibt sich nur aus den Daten, welche gelernt wurden.

Nun eine schöne und komplexe Aufgabe - denke ich. Schauen wir uns das folgenden Video an:



Das Lernen ist relativ einfach, wenn wir uns direkt an der Maschine befinden. Hier im Video musste ich den Ablauf zusätzlich simulieren. 

Der Vorteil beim Lernen an der Maschine ist, dass ich durch das Alignment den Bewegungsablauf anrege und dan nur die Daten erfasse!

Der Nachteil ist, dass ich erst danach bestimmen kann, welche Daten ich tatsächlich davon behalten und lernen möchte.

Bei meiner Simulation kann ich direkt mitteilen ob ich die gerade anstehende Situation lerne oder nicht. An der Maschine muss ich die gelernten Daten im Nachhinein anpassen.

Das Problem mit dem Lernen

An diesem Beispiel lässt sich ein spezifisches Problem für das Lernen sehr gut erkennen. Der Zyl-2 lernt beim Signal I0.3 gleich True auszufahren. Danach aber wird der Eingang False, da die Scheibe sich bewegt und der I0.3 verloren geht. Wenn wir jetzt mit dem neuen Input-Layer (I0.3==False) ebenfalls lernen den Zylinder weiter auszufahren, dann fährt unser Zylinder auch dann aus, wenn I0.3 False ist. Also will er immer ausfahren 😃

Wie wir mit solchen Situationen umgehen, ohne ein Speicherelement zu Programmieren, schauen wir uns im folgenden Video aus meinem YouTube-Kanal an:


Rework

Nun was war da für ein Ausgang im Video der nicht ausgeschaltet wurde, obwohl der Endschalter Tor zu erreicht wurde?

Wie schnell und einfach das nachlernen geht, zeigt das folgende Video:


🙋







Samstag, 5. August 2023

 

KI2Plc  geschützte Domain 😎

Die Möglichkeiten einer SPS-Programmierung, um diese am Geschehen der künstlichen Intelligenz zu beteiligen

 



Das Video zum "alignment" - Teil-1 

Schnell und einfach, aber ausgeprägt das nun fertige Video. 




Das sind ja noch einfache Aufgaben - aber -  das Prinzip wird klar oder?

Ich denke man sollte darüber nachdenken, ob man die verkrusteten Programmier-Methoden anpassen sollte. Das Denken in Daten ist ja eigentlich seit Jahrzenten bekannt und wird ja auch teilweise mit Merkern, MW, Datentypen Bit, Word, Real  usw. ausgeführt und programmiert.

Somit ist der Weg zur Methode ML für SPS-Programmierer gar nicht so weit entfernt 😏

Bis bald 🙋


Freitag, 4. August 2023

 

KI2Plc  geschützte Domain 😎

Die Möglichkeiten einer SPS-Programmierung, um diese am Geschehen der künstlichen Intelligenz zu beteiligen

 



Die pyPlc ist fertig 

Nun ist die pyPlc soweit fertig gestellt, dass die Veröffentlichung in Udemy steht.  Es gibt auch ein neues Video in YouTube.


Der Link zu Udemy:


Was nicht im o.g. Video zu YouTube gezeigt wird ist das Alignment. Das wird erst später in YouTube erfolgen, wenn ich etwas mehr Zeit dafür habe. Allerdings werde ich hier im nächsten Teil ein kleines Video einfügen und erklären um was es sich dabei handelt.

Das "alignment"

Wie lerne ich Daten für eine SPS? Das ist die grosse Frage bei KI bzw. Machine Learning für komplexe Systeme. So wie bei KI-Techniken Daten zur Eingabe benötigt werden, ist das hier bei komplexen Systemen ebenfalls notwendig,  allerdings nicht ganz so einfach. Ich habe mich deswegen entschieden, die Eingabe über Python zu realisieren, wobei der Standard gilt aber auch die SPS-Version in pyPlc.

Die so ermittelten Daten werden in der KI nachträglich so manipoliert, bis ein gewünschtes Ergebnis feststeht (Faktor 1.0). Hier ist das genau so, nur ein wenig komplizierter. 

Die Wirkung wird hier duch das ML direkt durch die SPS selbst und dem dazugehörigen Alignment umgesetzt.

Beispielhaft der gezeigte Zylinder startet mit dem Alignment "self.plc.A('Q0.0', 'I0.0')"
Wird also das Alignment in ML ausgeführt, startet der Zylinder und liefert uns die Daten, da der Zylinder ausfährt und damit die Endschalter sich verändern. 

Beim Test im Video wird das Alignment nicht mehr aufgerufen!

Das wäre ja auch ein Witz - oder 😉

Nun folgt im nächsten Teil das Video zur Erklärung zum Alignment.
Also bitte noch ein wenig Geduld. 🙋