Mittwoch, 16. Juni 2021

KI für die industrielle Automatisierung

 Geht KI auch mit dem TIA-Portal? 

Warum denn nicht? Geht ja auch mit dem Raspberry und PLC-Arduino und Beckhoff und Rockwell AB und B&R und  ...  so ... weiter ....

KI in der Steuerungstechnik ist die Zukunft für Manager aus den Fachbereichen wie z. B. Automatisierung, Sondermaschinenbau und SPS-Hersteller und gleichzeitig der Untergang für Personalanbieter der Bereiche Programmierer nach IEC-61131-3. 

Das Thema KI ist der Knackpunkt für die industrielle Automatisierung. Denn dort wird keine Programmiersprache mehr verwendet. Also kein:
  • FUP
  • KOP
  • AWL
  • AS
aber, falls vorhanden, ST oder eine andere höhere Programmiersprache, damit die aus der KI gelernten Daten nach dem gelernten Muster (Ausgangslayer) verarbeitet werden können. Die SPS hat dabei nur die Funktionalität der Sicherheit zu tragen. Das bedeutet:

  • Keinen projektbezogenen SPS-Programmierer mehr
  • Die Inbetriebnahme erfolgt durch den Konstrukteur der Anlage
  • Machine- und Deep learning liefern gleichzeitig auch den Funktionsnachweis
  • Die SPS verarbeitet die Daten der Ausgangslayer nach dem Prinzip KI-B
  • Automatische Fehlererkennung
  • Automatische Qualitätsoptimierung
  • Automatische Hinweise für nicht gelernte Zustände der Anlage
  • Durch die backpropagation (KI-B) wird eine höchste Sicherheit gewährleistet
Dazu sind natürlich einige Dinge zu klären. Was ist KI-B und was bedeutet ML für diesen KI-Bereich? Außerdem gibt es viele, viele weitere Fragen zum Thema "Keine SPS-Programmierer mehr nötig".

OK - Das Thema steht und ich erarbeite derzeit jeweils einen Prototypen aus 4 verschiedenen Branchen. Diese werden nach Fertigstellung auf meinem YouTube-Kanal veröffentlicht und somit zur Diskussion gestellt. Zumindest ist das so geplant :).


Der erste Prototyp

Der erste Prototyp soll ein einfaches Beispiel aus der Pneumatik sein. Bei dieser Gelegenheit kann ich gleich die Teil-Oberfläche des KI-B-Robots erklären.



Hier wird ein Zylinder ein- bzw. ausgefahren. Die Funktionsbeschreibung soll nun über das ML erfolgen. Das wäre in Worten ungefähr so: Der Zylinder soll ausfahren, solange das Signal 'S1_V1' am Ventil den Zustand 'true' besitzt. Zwangsmäßig fährt der Zylinder dann aus oder ein. 

Wir haben es also mit einer einfachen Steuerung zu tun, welche recht simpel in ML erfasst werden kann. Hier sind die Reaktoren = Eingangssignale = LS1_C1, LS2_C1, die Betriebsart Manuell und Automatik. Die Aktoren = Ausgangssignale sind S1_V1. Also vorerst nur ein aktiver Ausgang.

Die oberen drei Kreise ermöglichen das ML mit Handbetrieb (Manuell) und das ML in Automatik. Im folgenden Bild ist der Zylinder ausgefahren, da das Signal am Ventil aktiv ist.


Der Lernmodus für die Automatik und den Handbetrieb sind gleich, damit das Ganze zur Erklärung nicht zu kompliziert wird. Das ML müsste also nur die Parameter Manuel und Automatik berücksichtigen. Zudem aber wird nur in der Automatik auch auf mögliche Fehler und Warnings hingewiesen. Diese Parameter sind somit auch Ausgangsparameter und werden automatisch vorerst unsichtbar (Hiddenlayer) hinzugefügt. 

Mit Beginn des ML wird grundsätzlich die bestehende Situation als Grundstellung = Ausgangsparameter gelernt.

Damit haben wir also doch einige Ausgangsparameter, welche automatisch generiert werden hinzubekommen.  Mit dem ML wird ebenfalls ein Weg-Zeit-Diagramm zur Kontrolle automatisch generiert und spiegelt so den Lernmechanismus wieder. 




Damit die Frage gleich vorweg beantwortet wird:

Natürlich werden auch analoge Signale als AI und AQ berücksichtigt. Zudem kommen Elemente wie Timer , PID und andere Dinge hinzu.

Dazu dann mehr bei den Prototypen Chemie und Zellentechnik. Nun werde ich das Video für den ersten Prototyp fertig stellen, damit zunächst die prinzipielle Vorgehensweise gezeigt werden kann. Auf das Ergebnis bin ich selbst gespannt 😉 

Nun ist der erste Prototyp fertig (Stand 19.07.2021). 








Anhang:

Zum Thema KI:

Seminarveranstalter zum Thema KI für die Automatisierung können sich gerne anbieten.
Sollte es das DIF noch geben, bitte melden sie sich.

Links zu meinen Themen ohne KI:
https://www.youtube.com/watch?v=Hsn4yTFUZ_s

Udemy zur Vorbereitung mit einer PLC-API:
https://www.udemy.com/course/scl-api-mit-dem-tia-portal/learn/lecture/26664222#overview







Dienstag, 30. März 2021

SCL-WebBasic


Mit dem TIA Portal Basic und SCL in die Web-Technologie einsteigen

Ein neues und interessantes Seminar für  SCL-Programmierer oder die es einmal werden möchten.


Eine Webseite - oder auch mehrere - können mit der Programmiersprache SCL und ein wenig Fachwissen über SVG-Objekte, sowie eine Grundausstattung an JSON, innerhalb einer S7-1200 umgesetzt werden.



Das hört sich doch gut an oder? Betrachten wir im Bild zuerst den rechten Teil. Dort sehen wir eine Komponente TIA Portal Basic als Mindestausstattung. Mehr wird nicht benötigt, da wir die Webseite als HMI selbst erzeugen, brauchen wir kein WinCC. Der Einstieg erfolgt über den SCL-Basis/Advanced, welcher noch mit dem Simulator im TIA Portal durchgeführt werden kann. Dieser Teil ist nicht als Basis-Einstieg zur Sprache SCL gedacht, sondern soll all das vermitteln, was wir für das Praktikum benötigen. Also ein Hauruck-Kurs mit Schmagges.

Danach können wir nur noch mit einer reellen SPS S7-1200 weiter machen. Sie brauchen also eine SPS S7-1200 ab Version 3. Es könnte auch mit einer Version ab 2.xx funktionieren - denke ich.

Nun werden wir Schritt für Schritt die dort zu sehende SCL-API mit SCL umsetzen. Dazu gibt es zusätzlich eine kurze Einführung in das JSON-Format, damit wir die SVG-Daten an den Client senden können.

Wir benutzen die Bausteine TRCV_C und SEND_C aus der Systembibliothek der SPS, welche nicht im Simulator (PLC-Sim) angewendet werden können. Deswegen benötigen wir eine reelle SPS. Noch zur Info und Beruhigung, wir verwenden nicht den in der S7-1200 angebotenen Web-Server 😁.

Nun zur linken Seite im Bild. Zur Abbildung unsrer SVG-Objekte benötigen wir noch einen PC mit dem Betriebssystem Window-10 und einen Monitor, welche Google-Chrome als Client abbildet. So übertragen wir von der SPS die vom SCL-Programm gewünschten Bilder als SVG-Daten im JSON-Format an den Server, welcher als kleine C++-API auf dem PC läuft. Dieser fördert sie dann zur direkten Umsetzung zum Client (Google-Chrome).

Wir haben also zunächst eine leere Webseite, welche durch das Lebensflag die SPS auffordert etwas zu senden, damit SVG-Objekte abgebildet werden. Dieser Request vom Client zur S7-1200 erfolgt ebenfalls im JSON-Format und wird in der SCL-API aufgelöst und dann erneut gesteuert.

Somit bestimmt diesmal der SPS-Programmierer was die Webseite anzeigen soll und wie oft das geschehen soll. Die SPS ist also ein Quasi-Server, welcher vom Client zunächst nur einmal angesprochen werden muss. 

Also eine komplette Kontrolle einer HMI auf Web-Basis, bestimmt durch die SPS und der SCL-API. Die  SVG-Daten können so automatisch durch die Webseite als SVG's abgebildet werden.


SCL-API

Nun ist eine SCL-API tatsächlich etwas neues für einen SPS-Programmierer. Alleine das Wort API ist schon fremd, denn schließlich befinden wir uns in der Prozesstechnik und nicht im siebten Himmel einer Wolke. 😌

Nun gut - allerdings hätten wir jetzt aber die Möglichkeit dazu "in den Himmel" zu kommen. Betrachten wir das folgende Bild, dann sehen wir tatsächlich, wie die Systembausteine TRCV_C und TSEND_C zu Einsatz kommen. 
Bildausschnitt: Praxis-Seminar SCL-API


Der Parser in FB1000 sorgt dafür, dass unsere JSON-Formate vom Client umgesetzt werden und diese dann SPS-gerecht in einen DB (SendReceiveData) als JSON-Formate gespeichert werden. So kommen diese dann zum Client über den FB2000 wieder zurück. Der kann nun seine SVG-Element entsprechend abbilden und liest auch, wie er sich mit seinem nächsten Request zu verhalten hat. 

Somit hat die SCL-API seine berechtigte Schreibweise als Application-Programming-Interface. Ganz einfach -oder?

Das Seminar wird wohl wieder in Udemy veröffentlicht. Natürlich sind alle Sourcen wieder veröffentlicht, diesmal SCL, JS und C++ ohne node.js 😉


Wohl in Udemy deswegen, weil ich noch abschätzen muss, ob ich das dort auch weiterhin verfolgen möchte (Stichwort Inhouse-Seminar).

Wir werden sehen. Die Programme sind alle fertig und wie immer ordentlich getestet. Die Videos muss ich allerdings noch erstellen. Eine Vorschau zum Thema wird es in wenigen Tagen in YouTube geben.
.
.
.
Jetzt sind beide Teile in YouTube zu sehen :)







SCL-API kennt auch JS-Code

Nun wünsche ich mir als SCL-Programmierer wesentliche Anteile zum Internetgeschehen :) 
Zumindest jüngere Techniker finden das sicher seht interessant im Internet über SCL mitzuwirken ohne meinen Sicherheitsstandard zu verlassen. Nur HMI ist nicht mehr ausreichend!

IEC 61131 ist ja auch stinklangweilig und so ist es auch schwierig neue SCL-Programmierer zu bewerben. (Zumindest in Deutschland wurde mir das oft bewusst).

Im folgenden Video zeige ich die Erweiterung der SCL-API mit den Eigenschaften Programmcode direkt an die Webseite abzugeben. Unsere Nachrichten sind also nicht nur Daten, sondern auch intelligente, vom SCL-Programmierer gewünschte Anweisungen an die Webseite.

So kann dieser verschieden Webseiten zu anderen SPSen im Netz anzeigen. Und das ohne zusätzliche Kosten oder Software. Alles mit TIA-Portal Basic.



Das Praktikum ist ab jetzt in Udemy zugelassen. Also schauen Sie mal rein. 

Vielleicht können auch Sie Altes mit Neuem verbinden.



 

Mittwoch, 12. Februar 2020

KI-Automat - Ml und Safety

Der KI-Automat ist der erste Schritt zur Aufbereitung der Daten für die Anwendung der schwachen KI.


Das folgende Video zur Erklärung:




Dieses Beispiel zeigt den KI-Automat für die Anwendung eines Grafcet. Die Umsetzung in IEC-61131 dagegen kann nicht in Daten zur untersten Vorstufe der schwachen KI verwendet werden. Zumindest nicht so einfach, da hier sehr viele Parameter notwendig werden.

ML ist bei einem Grafcet denkbar und bietet den Ansatz dazu. Die Datenstruktur zum KI-Automat ist unter Umständen lernfähig, wenn diese dazu führen soll, eine Lösung in einer anderen Programmiersprache zu realisieren.

Ich habe hier für den KI-Automat JS gewählt. Der KI-Automat ist eine feste Struktur welche auf die Daten zugreift. Diese sind teilweise selbst Java-Scripte, welche aus dem Grafcet entstanden sind. das bedeutet:

Der Grafcet wird teilweise in JS gewandelt und ändert sich je nach Anwendung im Frontend. Das geht dann in Richtung schwache KI, denn diese Java-Scripte richten sich nach der grafischen Anwendung aus und zeigen Funktionalität und auch Fehlerquellen.

Eine weitere Möglichkeit zum Einsatz der Simulation über den KI-Automat:





https://www.udemy.com/course/grafcet-y/learn/lecture/20815628#overview

Eine neue Programmier-Serie in JS zur Erklärung des           KI-Automaten

Der KI-Automat unterscheidet sich zu traditionell erstellter Software darin, dass dieser aus 3 Prozessen besteht:

  1. Lernsoftware
  2. Umsetzung in JS-Code
  3. Speichern zur Anwendung im KI-Automat
Das sind wesentliche Unterschiede zu den bisher gezeigten KI-Systemen, da es sich hier ja auch um Automatisierung handelt. Nun ist die Bilderkennung auch Teil der Automatisierung, soll aber bez. der Software mit neuronalen Netzen und die Verarbeitung von Massendaten ausgeschlossen werden. 

Es handelt sich hier schlichtweg um eine andere Form der KI

Die Aufgabe:

Am Beispiel eines Monitors soll nun erklärt werden, wie dieser lernfähig wird und wie man das z. B. in der HMI nutzen könnte. Danach soll ein Gerät (Roboter) über seine elektronischen Augen einen Plan lesen, welche auch Menschen verstehen (also keinen Barcode). Dieser Plan wird dann als Programm vom Gerät ausgeführt.

Das Problem ist, eine Veröffentlichung in YouTube ist nur dann sinnvoll, wenn sich entsprechendes Publikum dafür interessiert, da eine Menge an guten JS-Sourcen, sozusagen verschenkt werden.

Bei Interesse an diesem Thema schreiben Sie mir bitte zur Gründung einer entsprechenden Community. Derzeit sind 48 Personen daran interessiert.

Warten wir es also ab! Bis bald.




Freitag, 10. Januar 2020

Grafcet mit JS++ und einem KI-Automat

JS++ und Anwendung am Beispiel Grafcet

Das Framework C++.js hat bereits einige, praktische Beispiel gezeigt, jedoch kam ein komplexes Beispiel noch nicht zur Ansprache. Betrachten wir uns noch einmal das Diagramm in Bild 1, so sehen wir eine bisher noch nicht gezeigte Aggregation:


Der Browser besitzt ein Grafcet++-Modul.


Bild 1 Component-Diagramm JS++.js

Der Browser hat ein Grafcet-Modul! Damit die Auswertung des Grafcet-Plan's erfolgen kann, wird das KI-Modul verwendet. Es handelt sich hierbei um einen KI-Automaten. Dieser wertet den Grafcet-Plan aus und liefert dessen Ergebnisse. Die Daten dazu werden über ein Netzwerk erzeugt.

Das Modul Grafcet++ soll im folgenden Video bezüglich der Bildung von Aktionen kurz vorgestellt werden.



Nun warum Grafcet++?

Das zeigt das folgende Video am Beispiel für den Einstieg in Grafcet++  mit zusätzlichen Elementen wie Motor, Ventil usw. zur eigenen Simulation und Überprüfung des geschriebenen Grafcet-Moduls.




Dazu werden noch einige weitere Beispiele folgen, da Grafcet++ auch mit den IEC-Modulen ausgeführt werden kann. Das macht die Anwendung besonders für Studenten interessant, denn diese müssen ja für die Prüfung den Grafcet-Plan in einen Funktionsplan umsetzen.

Das Framework JS++ soll in Zukunft in GitHub veröffentlicht werden und kann so kostenfrei ohne Begrenzung genutzt werden. Es fehlen dazu nur noch wenige Überprüfungen, damit die JS-Programmierer auch richtig Spaß damit haben, ohne ständig über Fehler zu stolpern. :)

Und hier ein Beispiel für das Grafcet++




Kursinfo:







Donnerstag, 19. Dezember 2019

JS++ und IEC-Objekte

IEC-Elemente und deren Parameter-Anwendungen


Die Videos der Anwendung für IEC-Elemente sind nun in You-Tube veröffentlicht. Natürlich können so alle Möglichkeiten nicht sofort erkannt werden, jedoch im noch folgenden Beitrag über PID-Regelung mit IEC-Bausteinen sind weitere Anwendungsmöglichkeiten ersichtlich.

Hier die beiden Links zu Teil-1 und Teil-2







Kursinfo: 



Samstag, 23. November 2019

nodePLC.js und RunTime,js

nodePLC mit dem Praxisbeispiel Chemie Teil-2

Aus dem Projekt Praxisbeispiel Chemie-Teil 2 wurde die RunTime erzeugt und soll nun über die nodePLC gestartet werden. Diese ist für dieses Beispiel mit dem Modbus ausgestattet.

Dazu der Link zu meinem YouTube-Kanal





Nun kann die webHMI abgeschaltet werden und die nodePLC bearbeitet das Programm weiter. Ein tolle Angelegenheit, wenn man bedenkt, dass es z.B. für den Modbus mehr als 100 Geräte gibt.

Kursinfo:



Mittwoch, 20. November 2019

JS++ und Chemie

JS++ für die Chemie als Simulation und PLC


Chemische Prozesse werden in sogenannte "batches" betrieben, welche übergeordnet mittels Rezepte organisiert werden. Diese rufen dann sogenannte "operation" auf, welche wiederum zur Ausführung 'Phase'-Bausteine aufrufen. Die folgenden zwei Beispiele (Teil-1,2) zeigen die Anwendung mit dem speziellen IEC-Baustein 'Phase'.



https://www.youtube.com/watch?v=9qS3RQ4mR7E



https://www.youtube.com/watch?v=MlP0iUsWuh8


Im nächsten Post wird nun aus dem Chemie-Beispiel Teil 2 eine nodePLC generiert und schließlich als RunTime zur Verfügung gestellt. Nachfolgend das UML-Bild zur sogenannten nodePLC auch als Runtime bezeichnet.



Kursinfo: