Pico-EVB verbindet die SPS mit dem Lan. Hier kommt die KI-SPS zum Einsatz, welche eine neue Art der Automatisierung ermöglicht.
Montag, 24. Juni 2024
Ki2Plc geschützte Domain 😎
Die Möglichkeiten einer SPS-Programmierung mittels künstliche Neuronen, um diese am Geschehen der KI zu beteiligen
Ki2Plc mit C# unter MVS frame.dot
Da ich derzeit keine Videos in meinem YouTube-Blog veröffentliche und Anfragen erhalte, wie es nun weitergeht mit meiner Idee ki2plc, hier ein Bild zum Entwicklungsstand C#.
Ich musste erst den Windows-Kram lernen und natürlich ein wenig C#, damit ich etwas zustande bekomme. Nun habe ich den digitalen Teil fast fertig und kann ohne Programmierung mit IEC 61131-3 ein Project mit künstlichen Neuronen in die SPS laden. Und tatsächlich bin ich selbst davon begeistert und auch überrascht, wie toll das in C# umsetzbar ist. Also ist vorerst Python für mich gestorben 😉
Im Bild ist die Plattform zum Training digitaler Signale zu sehen. Kenntnisse der Programmierung wie KOP, FUB, ST oder ähnliches sind nun keine Voraussetzung mehr. Alles wird im Modell für künstliche Neuronen und deren Knoten trainiert, indem lediglich durch das Klicken auf IO-Parameter die gewünschten Eigenschaften geschaffen werden. Alles kann kinderleicht getestet werden, bevor die Anwendung als SPS-Programm in eine SPS geladen wird.
Damit wird sozusagen der Programmierschritt übersprungen, sodass der Entwickler der Maschine nun das quasi-Programm schreiben kann. Die Daten der künstlichen Neuronen werden über den Sigmoid ermittelt und sind somit für eine zukünftige Mustererkennung geeignet.
Es erfolgt somit eine stetige Erweiterung der betriebseigenen Modelle, welche für den Betreiber mit zunehmender Sicherheit eine wirtschaftliche, moderne Lösung für zukünftige Projekte sichert.
Mehr Sicherheit 😇
Im folgenden Bild ist ein künstliches Neuron mit einer Menge an Knoten (P1) trainiert worden. Unten links im Diagramm ist der erste Ausgang nicht geschaltet (P3), obwohl das Neuron im roten Bereich (GP=Ground-Position) feuert (P2). Im Diagramm ist erkennbar, dass der erste Knoten feuert (P2) und auch im Trainingsbild zu sehen, dass der erste Knoten feuert (P4). Trotzdem ist der erste Ausgang nicht geschaltet! (P3) Das deutet auf einen Fehler hin. Nur so kann auf einem Blick erkannt werden, dass entweder ein Programmierfehler vorliegt oder ein falsches Training einen Widerspruch auslöst.
Nicht das Listing -was es ja gar nicht mehr gibt- muss studiert werden, sondern das Neuron und dessen Training. Auch ein Nicht-Programmierer erkennt sofort den Widerspruch bzw. diesen Fehler.
Das ist ein mit Absicht erzeugter Fehler und kommt selbstverständlich in der KI nicht vor 😁
Nun wie auch immer können künstliche Neuronen mit anderen künstlichen Neuronen verbunden werden, also nicht nur IO-Parameter. Die Erbeigenschaften des künstlichen Neurons im Soma (Zellkörper) werden in einem anderen künstlichen Neuron verknüpft. Das muss ich allerdings erst noch programmieren 😏, bin aber fast fertig damit. Hier schon einmal im folgenden Bild die ersten Verknüpfungen von künstlichen Neuronen untereinander.
Im oberen Bereich können je Knoten bis zu vier KN (künstliche Neuronen) verknüpft werden (P1). D. h. jeder Knoten kann 4 andere KN festlegen. Da es 16 Konten in einem KN gibt, können somit 16 verschiedene Kombinationen miteinander verknüpft sein. Das wird noch graphisch dargestellet, damit der Konstrukteur die Übersicht behält 😎
Da gibt es noch viel zu tun, also ran an den Speck ... 🙋
Ach so, meine Texte werden nicht mehr auf diesem Blog veröffentlicht, da ich nun mehr Werkzeuge benötige um alles verständlich darzustellen. Also an alle - vielen Dank - für den Besuch meines Blogs
Hier geht es dann erst mal als Blog ki2plc.com zusätzlich auf meiner neuen Webseite weiter:
Die Möglichkeiten einer SPS-Programmierung, um diese am Geschehen der künstlichen Intelligenz zu beteiligen
TIA-Portal und CODESYS mit künstlichen, neuronalem Netz
Mit dem neuen Video beginnt nun der Einstieg in die SPS für das TIA-Portal und CODESYS. Dazu wird ein mögliches Modell zum künstlichen, neuronalen Netz vorgestellt. Die ersten vier Teile zeigen das Modell für ein künstliches Neuron, welches eine komplette digitale Gruppe in einer SPS bearbeiten kann. Damit ist die Basis geschaffen, das Modell zunächst im Einzelfall zu betrachten. Nun folgt die Überlegung, wie das 'Brain' dazu funktionieren könnte. Nach dem Aktionspotential (Link Wiki) kann das künstliche Neuron nun komplette oder auch teilweise Informationen an die Dendriten senden und somit nahe und ferne Neuronen erreichen. Außerdem entsteht so eine Eigendynamig, welche wir für das Vorhaben in der Steuerungstechnik nutzen können.
Die Arbeiten werden nun in Python getestet und das Projekt in die SPS geladen. Wir werden also die SPS bezüglich des neuronalen Netzes in Zukunft mit Python programmieren. Das ist mein neues Vorhaben und mal abwarten was da jetzt so passieren wird.
Teil -1
Teil-2
Teil-3 (TIA-Portal)
Teil-4 (CODESYS)
Nun ist die Zeit gekommen auch komplexe Varianten der Neuronen-Modelle anzugehen. Das wird sicherlich sehr interessant und bedarf natürlich auch Zeit für die Entwicklung. Bis jetzt mache ich schließlich noch alles ohne fremde Hilfe. Mal sehen was da sich noch entwickelt.
Freitag, 29. Dezember 2023
KI2Plc geschützte Domain 😎
Die Möglichkeiten einer SPS-Programmierung, um diese am Geschehen der künstlichen Intelligenz zu beteiligen
Am besten ihr seht euch die beiden Videos auf meinem YouTube-Kanal zur Vorschau an:
Für den ersten Vorgeschmack Teil 1 mit Kapitel 1 ( noch nicht in meinem YouTube-Kanal):
Für den ersten Vorgeschmack Teil 2 mit Kapitel 1 ( noch nicht in meinem YouTube-Kanal):
Für den ersten Vorgeschmack Teil 3 mit Kapitel 1( noch nicht in meinem YouTube-Kanal):
Für den ersten Vorgeschmack Teil 3 mit Kapitel 3( noch nicht in meinem YouTube-Kanal):
Für den ersten Vorgeschmack Teil 4 mit Kapitel 2( noch nicht in meinem YouTube-Kanal):
Das Interesse an einer SCL-Programmierung auf meinem YouTube-Kanal ist nicht so hoch, dass sich die Arbeit lohnt, hier ein Seminar zu erarbeiten und zu posten. Tut mir leid, allerdings ist das Interesse zu diesem Thema in Python ohne Bibliothen wesentlich höher. Ich habe nun den Kurs in Udemy gestellt und werde ein Python-Kurs erarbeiten. Dazu gibt es dann entsprechende Information auf meinem YouTube-Kanal. Ich muss nur noch eine günstige und realistische Hardware suchen, mit der ich einen automatischen Betrieb mit künstlichen, neuronalen Netzen für die industrielle Automatisierung realisiere kann. Genung Ideen und bereits praktische Erfahrung dazu gibt es ausreichend. Hier der Link zu meinem neuen Kurs mit künstlichen, neuronalen Netzen in SCL:
Die Möglichkeiten einer SPS-Programmierung, um diese am Geschehen der künstlichen Intelligenz zu beteiligen
KI in der S7-1500 Standard zur Steuerung eines Zweibrückenkranes in einer Verbrennungsanlage
Die KI soll ja in irgendeiner Form einen Ersatz für bisher menschliches Verhalten ersetzten - oder? Zumindest ist das ein Wunsch vieler Arbeitgeber und kann glücklicherweise nicht sooo einfach umgesetzt werden. In diesem Fall wurde ich beauftragt den Kranführer durch eine KI, soweit es möglich ist, zu ersetzen.
Dabei soll die Lösung in der SPS, welche den Kran steuert, ohne zusätzliche Hardware erledigt werden.
Der erste Schritt mit ungelernten Daten
Im folgenden Bild wird die Kranfahrt dargestellt. Zur besseren Erklärung immer mit 5 Meter Fahrweg (X-Achse). Die blaue Kurve soll die ideale Fahrkurve werden. Das ist also unser Modell. Jetzt lernen wir das neuronale Netz mit ungelernten Gewichtungen. Also ohne Traningsdaten, denn wir haben ja noch keine.
Das Ergebnis ist die grüne Kurve und liefert eigentlich keine Überraschung! Insgesamt werden bei diesem Beispiel immer 100 Neuronen als Input-Layer verwendet.
Die Trainingsdaten liefert der Kranführer
Wir benötigen nun den Kranführer (es tut auch eine sehr gute Simulation) zur Ermittlung der Lerndaten = Trainingsdaten. Im folgenden Bild ist die rote Kurve das gelernte durch den Kranführer. Diese Daten werden nun im Neuronalen Netz mit der idealen Kurve verrechnet und so entstehen die Gewichtungen, welche das gewünschte Ergebnis liefern soll.
Das funktioniert sehr gut und zeigt im folgenden Bild ein Ergebnis, welche nun als trainiertes neuronales Netz in der SPS festgehalten wird.
Die KI liefert durch Machine Learning eine neue Sollkurve
Dieses Ergebnis ist praktisch gesehen ein Hammer. Die Fahreigenschaften sind hervorragend und erlauben eine schnelle Positionierung des Greifers ohne störende Pendelbewegung (dank des Kranführers). Die grüne Kurve wird aus den Trainingsdaten des Kranführers (rote Linie) über das neuronale Netz in der SPS ermittelt. Erst danach wird die Anlage entsprechend der grünen Kurve gefahren.
Störungen, welche dann noch hinzukommen, sind dabei noch nicht trainiert.
Für den Anfang ein recht gutes Ergebnis, welches vom Betreiber akzeptiert wurde und bis jetzt bei mehreren Krananlagen das beste Fahrverhalten für eine vollautomatische Anlage liefert. Die vier Punkte auf der gelieferten Fahrkurve sind die Geschwindigkeitsstufen, welche im Umrichter wunschgemäss fest programmiert wurden.
Bemerkungen:
Das ist der letzte Beitrag auf diesem Blog. In Zukunft gibt es einen neuen, modernen Blog. Der Hinweis wird dann auf meinem YouTube-Kanal zu finden sein. In diesem Blog gibt es dann einen entsprechenden Link auf den neuen Blog!
Zudem wird im neuen Blog die Umsetzung in der SPS S7-1500 mit SCL vorgestellt. 🙋
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.
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.