Montag, 27. März 2023

 Copyright ©  Dipl.-Ing. Johannes Hofer 2022                                           

 

Ki2Plc

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



Die pyPlc

Nachdem nun doch einige nachgefragt haben, wie es nun mit der KI2Plc weitergeht, habe ich mich entschlossen zunächst eine pyPlc in Python zu programmieren. Damit wird die Grundlage gebildet, mit einer SPS nach Industriestandard vorerst seine eigenen Projekte unter Windows und Python zu testen, um diese danach in ein Gerät zu laden. Hier wird in der ersten Phase folgendes Ziel zur Umsetzung geplant:

  • pyPlc komplett in Python-Code auf PyCarm
  • Funktionen entsprechend nach IEC 61131-3 - allerdings in Python 
  • Operanden nach internationaler Darstellung (englisch)
  • Merker (M, MW, MDW)
  • Input (I, IW)
  • Output (Q, QW)
  • Datenbaustein (DB)
  • Timer (TON, TONR, TOF, TP)
  • Zähler(CTU, CTD, CTUD)
  • Scale
  • Unscale
  • Funktionsbausteine (FB)
  • Functionen (FC)
  • plc_Server
  • und vieles mehr, wie z.B.: Taktkette, py2SCL, Zweipunkt-Regler, PID ...

Das ganze basiert auf Basis mit meinem YouTube-Kanal, allerdings nur in Kurzform als jeweilige Einleitung zum Thema. Die Videos fürs Mitmachen allerdings auf meinem Blog oder einer neuen Webseite (mal sehen). Da kann dann jeder beliebig oft die Videos studieren ohne mit einer scheiss Werbung belästigt zu werden.

pyPlc lernt Machine-Learning 😂

In Python kann die Idee KI2Plc sehr gut angewendet werden. Dieser Prozess kann ebenfalls in einem Gerät, wie z. B. die Simatic in SCL übersetzt zur Anwendung kommen. Der Übersetzer Python2SCL ist bereits in Arbeit. 

Das bedeutet, dass in der Plc ein Lernprozess stattfindet, der beständig ist und nie endet.

Die Umsetzung ist relativ einfach, wenn man von dem Wissen der KI ableitet. Zur Bewertung bzw. Klassifizierung werden die Daten in der PLC innerhalb des Programmes erzeugt und kommen so zur Auswertung. Das sind in erster Linie :
  • Prozesszeit
  • Gewichtung der Prozesse
Diese bestimmen dann den weiteren Ablauf und erklärt auch, dass die Prozesse in FCs und FBs aufgeteilt sein sollten. Es gibt in der pyPlc also keine eigenständigen Funktionen (def), zumindest wird das nicht empfohlen. Dazu dienen die Methoden.

Natürlich kann jeder PLC-Programmierer in Python machen was er will, bedeutet aber, dass sein Algorithnus in diesem Fall nicht bewertet werden kann und somit auch nicht sooo lernfähig ist.

Die gelante Software-Struktur

Wir überlassen nichts dem Zufall und planen unser Vorhaben wie bereits der jetzige Stand zeigen kann:

Die Klasse c_pyPlc ist unsere Ausgangsklasse, welche von der Klasse c_plc_init abgeleitet wird. Diese wiederum ist von c_plc_helper abgeleitet und letztendliche diese von c_info. Damit können wir die Methoden aus allen Ableitungen in der Klasse c_pyPlc nutzen (nicht die private). Zudem hat die Klasse c_pyPlc zusätzlich die Komposition mit der Klasse c_plc_fct, welche eine Vielzahl der SPS-Funktionen anbietet.

Und damit es nicht langweilig wird, besitzt die Klasse c_plc_init noch die Klassen socket und c_plc_database, denn schliesslich brauchen wir Merker, Fbs, Fcs, Eingänge, Ausgänge und noch vieles mehr.

 
..... Fortsetzung folgt im nächsten Blog-Beitrag 🙋



Zum Thema auf meinem Blog:
Natürlich wie immer hier kostenfrei und mit entsprechender Interesse zu diesem Thema,  kann ich das umgsetzen. Also meldet euch!