Mittwoch, 31. Mai 2023

 

KI2Plc

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




 

Zum Thema Safety:

Die funktionale Sicherheit kann nur gewehrleistet werden, wenn das Entwicklungssystem und damit auch das Konzept dazu risikoarm ist. 

Nun, der Satz besagt viel und ist gleichzeitig auch sehr umfangreich, wenn man genauer hinschaut. Eines kann man zum Byte-Code bereits jetzt schon direkt feststellen:

Die Programmierung einer Plc mit Python wird in seiner künstlerischen Freiheit schon einmal sehr stark eingegrenzt. Nicht jeder Programmierer mag das.

Aber wer kennt das nicht im Fehlerfall: Wenn’s nicht richtig funktioniert ist die Mechanik schuld und die Mechaniker geben dem Programmierer die Schuld. Um das nun zielgerecht zu verifizieren, fallen beim Byte-Code schon mal alle Programmier-Szenerien weg, welche nicht zu einem Sicherheitssystem gehören.

Der byte-Code ist verifizierbar und zeigt eine klare, risikoarme Abgrenzung und erfüllt einen kleinen Teil der geforderten Maßnahmen zur Sicherheit. Tritt in einem Baustein z. B. ein Fehler auf, wird dieser automatisch abgeschaltet und kann zumindest keinen weiteren Schaden mehr anrichten.

Das wird dadurch ermöglicht, dass durch die Umsetzung in den Byte-Code die Parameter genau festlegt, sind. Auch das ist eine Safety-Anforderung.

Somit ist eine weitere Forderung zum Safety-Konzept erfüllt. Zudem wird dadurch die Erstellung der erforderlichen Dokumentation erleichtert. Nun ist das nur ein winziger Teil zum ganzen Safety-Konzept und sicherlich könnte man das mit der Python-Idee ausbauen. Sicherlich ein Thema der Zukunft, ganz besonders in den Bereichen der IoT, denke ich.

Abgesehen davon ist das Betriebssystem maßgebend für ein Safety-Konzept und da haperts natürlich gewaltig, wenn da einer mit dem Raspberry pi ankommt 😊

 

Die bereits umgesetzten Funktionen

Im folgenden Bild sind die bereits umgesetzten Funktionen (18) zum Basic-Teil dargestellt. Hinzu kommen noch die Daten-Funktionen, welche in der üblichen PLC nicht so vorhanden sind. Dazu wird noch ein zusätzliches Grafik-Fenster zur Darstellung der Werte entworfen. Der Zugriff auf die Daten erfolgt bei der Simatic mit Snap7 und bei anderen Geräten über TCP-Verbindungen. 



Hier sind die schon erwähnten Funktionen NORM und SCALE in ANA_IN und ANA_OUT bzw. LIMIT umbenannt worden.

Also noch bitte ein wenig Geduld 🙋 



Donnerstag, 25. Mai 2023

 

KI2Plc

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



 

Zum Thema Byte-PLC_Code:



Wie gewünscht eine Zusatzinfo zum byte_plc_code 🙋



Samstag, 20. Mai 2023

 

KI2Plc

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





 

Zum Thema Byte-Code

Das mit dem Byte-Code scheint für Python-Programmierer sehr interessant zu sein. Aufgrund der Nachfrage das hier nachfolgende Beispiel.  Mittlerweile hat sich auch ein Hardware-Hersteller bei mir gemeldet. Erstaunlicherweise handelt es sich hier um eine Save-SPS (EN 61511-1). 

Python wird hier, was SIL betrifft, am höchsten eingestuft und somit C/C++ verdrängt. Das soll sich besonders auf den Störfall beziehen.

Ich hatte mit dem Thema Save-SPS schon einiges zu tun und bin ehrlich gesagt nicht überrascht. Dazu aber mehr, wenn der Teil Machine-Learning (siehe Bild oben, rechter Radio-Button) fertig ist, denn hier wird der SPS-Code automatisch erzeugt und der Byte-Code dazu zur Übertragung in eine Hardware generiert.

Falls es noch einen PLC-Hersteller der neuen Generation mit Interesse zum Thema Ki2Plc gibt, bitte melden.

Nun ist der byte-code-Generator für den Teil-1 endlich fertig und getestet und ich habe mich aufgrund der vielen Nachfragen entschieden, den Teil-2 ebenfalls fertig zu stellen, bevor es mit den Videos los gehen kann.

Somit wären alle Funktionen für beide Teile getestet und zudem weitere Python-PLC-Anweisungen fertig gestellt, welche nicht zum Thema IEC 61131-3 gehören, aber über den Byte-Code in der Hardware angewendet werden können.

So kommen wir schließlich über die hier integrierte SPS und dem Simulator zur KI2Plc, denn das ist ja schliesslich unser eigentliches Thema.



Der Byte-Code, kann in der PLC-Sim genauso wie der Python-Code getestet werden, wie im Bild oben zu sehen ist. Links der Python-Code mit allen gültigen Python-Anweisungen und rechts der Byte-Code mit den SPS-spezifischen Anwendungen.

Der Byte-Code wurde hier mit 83 Bytes aus der Funktion def fc_lc1: übersetzt und kann nun getestet werden. Das Ergebnis sollte wie bei dem Radio-Button pyPlc zu sehen, identisch sein.

Die Zeilen 193 bis 201 sind im Byte-Code nicht zu finden und werden demnach auch für die PLC nicht sichtbar.

Damit entfällt alles, was im regulären Python so noch programmiert wurde im Byte-Code für die KI2Plc.

Das macht die Sache sicherer, denn die Gepflogenheiten, ich darf das mal so nennen, der Python-Programmierung entfallen nun und können deshalb so z. B. in der Simatic S7-1200 angewendet werden.

Mittlerweile gibt es den Byte-Code auch auf dem Pico 😊, allerdings noch nicht genügend getestet, da auch hier noch einige Lektionen fehlen. Es folgt auch ein weiteres Beispiel auf einem Raspberry mit zusätzlicher Hardware-Erweiterung. Auch dazu Hersteller bitte melden, falls Interesse besteht.

Nun, ich hoffe das mit dem Byte-Code ein wenig gelichtet zu haben. Beim, nächsten Beitrag sehen wir auch die Merker-Worte und Real-Anwendungen für den analogen Teil der SPS zum Teil-2😊

🙋


























Mittwoch, 3. Mai 2023

 

KI2Plc

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



 

Die Themen zum Video-Training pyPlc-Teil-1

Was hat Ki2Plc mit pyPlc zu tun? Nun setzt eine KI2Plc voraus, dass eine Plc durch die Maßnahmen einer hinzugefügten KI-Ebene, diese Eigenschaften auch tatsächlich anwenden können sollte. Deswegen zuerst die Plc, sonst kann ja nichts hinzugefügt werden 😊.

In der ersten Stufe wird die pyPlc für die digitalen Anwendungen vorgestellt und diese in Python trainiert. Das ist schon eine ganze Menge an Wissen, welches vorerst nur aus Sicht der SPS-Programmierung erarbeitet werden sollte.

In Python kann ich zwar durch logische Operatoren einiges zusammenstellen, aber niemals eine SPS-gerechte Ausführung erreichen. Dazu gibt es jetzt die pyPlc.py und die Plc-Simulation dazu.

Sicherheit geht eben nun mal vor und da haben wir in Python schon von Anfang an schlechte Karten. Betrachten wir die einzelnen Themen zu Teil-1 im folgenden Bild, dann erkennen wir, dass die sogenannten Operatoren in Python (and, or, & | usw.) hier erstmal nicht so wieder zu finden sind. In der SPS-Programmierung werden sogenannte Operanden trainiert und um diese geht es im ersten Teil ganz besonders.




Da es Operanden auch für den analogen Bereich verwendet werden, also nicht nur für den digitalen Bereich, beschäftigen wir uns dann in Teil 2 mit den Operanden, welche eine besondere Aufmerksamkeit für analoge Signale erfordern.

Letztendlich in Teil-3 schauen wir uns dann an, wie wir das gelernte nun praktisch unter dem Schild „Sicherheit“ einsetzen können.

Ab dem Zeitpunkt, also mit der Übersetzung von dem, was wir in Python schreiben und im PLC-Simulator getestet haben, wird ein Byte-Code generiert und in die SPS übertragen.

Dadurch wird unser Python-Code in einen sicheren Code gewandelt und die Ausführung in einem dafür geeigneten Gerät ermöglicht. Diese Geräte sind dann so zu programmieren, dass der Byte-Code richtig umgesetzt wird.

Das kann zum Beispiel bei einer Simatic in SCL der Fall sein. Somit erreichen wir circa derzeit 130 unterschiedliche Geräte von verschiedenen Herstellern, hier auf dem europäischen Markt.  Ist doch eine großartige Sache, oder?

Nun – wie auch immer - das folgende Video zeigt uns eine Übersicht der Themen und wie wir eine Aufgabe daraus in einen Byte-Code übersetzen um diesen dann in der SPS, in diesem Fall eine S7-1200, umsetzen und testen. Wie der Byte-Code funktioniert und wie das alles in Python gelöst wurde, zeigt letztendlich Teil-4.




Ich denke das reicht soweit zur ersten Meinungsbildung. Falls weitere Fragen auftauchen werde ich mich darum kümmern und antworten 🙋