Blog

Dipl.-Ing. Johannes Hofer

Letzte Bearbeitung: 27.07.2024

Wie kann eine SPS an dem Geschehen der künstlichen Intelligenz (KI) teilnehmen?

Dieser Gedanke verbindet bei den SPS-Programmierern meist eine direkte Anwendung der KI innerhalb der SPS, beispielhaft über das TIA-Portal oder CODESYS. Nach meinem Wissen ist das KI-unterstütze Programmieren eines Projektes über eine traditionelle SPS derzeit noch nicht möglich.


Grundsätzlich wird die KI beim SPS-Programmierer derzeit als zusätzliche Möglichkeit einer Datenauswertung verstanden. Die so übliche Programmierung nach IEC 61131-3, also beispielhaft FUP oder KOP, wird nicht im Zusammenhang mit der KI verstanden.

Jedoch entwickelt sich allmählich die Platzierung einer Analyse der gesammelten SPS-Daten (Datenbausteine), welche in Richtung KI orientiert ist. Diese wird beispielhaft in der NPU u. A. als spezialisierte CPU angeboten. Die Anforderungen sind allerdings sehr stark an das Fachwissen der KI angelehnt und fordern entsprechendes Expertenwissen zu diesem Thema.

Und genau das möchte ich umgehen,😉


Künstliche Neuronen für SPS-Programmierer

„KI2Plc“ ist eine moderne Alternative zur Programmierung einer SPS. Sie ist als Plug-in zu betrachten und nicht nur für SPS-Programmierer geeignet, sondern auch für den Konstrukteur der Anlage/Steuerung eine realistische Alternative, welcher letztendlich, falls es keine speziellen SPS-Anwendungen gibt, auf den Programmierer verzichten könnte.

Ist die Anwendung der KI für SPS-Programmierer denkbar?

Seit Jahren ist mir bekannt, dass einige diesen Versuch, von der traditionellen SPS Abstand zu nehmen, gescheitert sind. Das sogenannte Sicherheitsniveau kann nicht erreicht werden, war die übliche Begründung. Eine Vielzahl von Innovationen jedoch, ermöglicht es bereits, dass beispielsweise der Raspberry Pi mittlerweile als SPS in der Industrie etabliert wurde. Die Programmierung allerdings bleibt bei IEC 61131-3 oder sogar in Python oder anderen Hochsprachen.

Auf dem abgebildeten Board oder einem anderen Modelltyp mit dem Raspberry Pi könnte auch das oben genannte Plug-in, bereits programmiert werden.

Hier ein Beispiel für IOT-geeignete Anwendung, darf ja nicht fehlen, auf Rasp-Basis.

Allerdings wird die übliche Programmierung aus IEC 61131-3 und das meist in KOP oder FUP bevorzugt und stellt somit eine grafische Programmierung mit hoher Erfolgsrate dar. Der Nachwuchs allerdings ist nicht unbedingt mit dieser Technologie zu frieden, zumindest höre ich das öfters in der Elektroabteilung der verschiedensten Firmen.

Wer dort bereits in SCL oder ST arbeitet, ist in der Regel bereits ein Softie, 😊 .

Wie sieht das nun hier mit der neuen Idee der künstlichen Neuronen aus?

In meinem YouTube-Kanal habe ich bereits einig Beiträge zu diesem Thema aufgenommen. Die Videos zeigen die Zelle (Soma) mit den Dentriten auf der linken Seite als Soma-Tendriten und auf der rechten Seite die Axon-Dentriten. Im Soma (Zellkörper) befinden sich sogenannte Knoten, welche nun je nach Gebrauch zu den Ausgängen auf der rechten Seite eine Verbindung über die Synapsen schaffen sollen. Dieser Vorgang wird ausschließlich durch das Training der Knoten erreicht.

Die hier gezeigten Videos soll die Schnittstelle zum Thema erleichtern. Ich habe mich über Neuronen informiert und möchte hiermit versuchen, eine möglichst reelle Beziehung zum Thema zu finden. Das KI2Plc ist nicht wie hier in den Videos gezeigt in Python programmiert, sondern wird derzeit von mir in C# umgesetzt.

Wie sieht das nun hier mit der neuen Idee der künstlichen Neuronen aus?
Trainingsbeispiel für ein künstliches Neuron

Trainingsbeispiel für ein digitales, künstliches Neuron (KN) mit KI2Plc.Exe

Alles sehr mühselig, solche Gedanken in C# umzusetzen. Wie sich allerdings gezeigt hat, wurde das so von den SPS-Programmierern, zumindest aus meinem letzten Kurs, sogar zu meiner Überraschung mit Freude angenommen. Und das hält mich nun an der Stange, hier weiterzuarbeiten, um meine neue Idee tatsächlich auch praktisch zu gestalten und umzusetzen.

Auf dem Bild oben ist das digitale Training eines künstlichen Neurons (KN) zu sehen. Der Gedanke KI und seine Netzwerke sind nach meiner Überzeugung für SPS-Programmierer nur durch eine sinnbildliche Darstellung, praktisch umsetzbar. Deswegen dieses Layout eines Neurons. Hier wird es kein IEC 61131-3 mehr geben, also kein FUP, KOP usw., sondern ein künstliches Neuron (KN), welches über das oben gezeigte Werkzeug trainiert und getestet werden kann. Die so trainierten, künstlichen Neuronen können u. a. mit den IO-Karten entsprechend verbunden werden (conect). Auch ist die Vernetzung der künstlichen Neuronen untereinander ( neuronales Netz) ist trainierbar. Ein sehr wichtiger Aspekt!

Hier lautet die Device trainieren und nicht programmieren . Das Training ist für digitale und analoge Signale ausgelegt. Das Ergebnis wird mit der internen Soft-SPS auf einem PC komplett getestet und dann in die SPS z. B. via Ethernet übertragen. Das dort installierte Plug-in bearbeitet schließlich die so trainierten und getesteten Daten. Aufgrund der gemeinsamen Daten aus der Software KI2Plc und der verwendeten SPS ist nicht nur eine Kontrolle über das Training möglich, sondern zudem ein Beobachten der aus den trainierten Daten entstehenden Ergebnisse.

Wie wird beispielhaft ein digitales KN trainiert?

Im Bild ist ein Training mit Test abgebildet. Verwendet wird das KN-Nr.-1, welches 16 Knoten beinhaltet (Punkt 2). Für Testzwecke ist allerdings nur der Knoten „00“ aktiv geschaltet (weisser Text 00) und zudem sind die rot gekennzeichneten KN (Punkt 1) ausgeschlossen worden. Ein SPS-Programmierer könnte so die Knoten als Netzwerke betrachten und ein KN als Funktionsblock 😎, so nebenbei bemerkt.

Aus Punkt 3 und Punkt 4 ersichtlich, können wir auswählen, ob die Eingangsdaten zum Neuron Nr. 1 aus den digitalen Eingängen oder durch Vernetzung der Perceptrons anderer KNen erfolgen soll. In diesem Trainingsbeispiel ist der Knoten „00“ aus der Vernetzung der KN 12, 13, 14 und 15 trainiert worden. Durch das aktivieren bzw. deaktivieren, von Knoten und oder auch KN können spezielle Abschnitte getestet werden. Ziel ist es natürlich, das gesamte Neuron mit seiner Vernetzung zu testen. So erfolgt Schritt für Schritt, wie bei einer Inbetriebnahme, das Training, bis das gewünschte Ergebnis erreicht wurde.

Da es in diesem Beispiel kein Warning gibt ( Last Warning: ), sind alle Sigmoid-Werte, wie links unten aus der Tabelle ersichtlich, einzigartig (nicht doppelt). So die Darstellung für einen kleinen, aber bereits ein wenig komplizierten Test, beruhend auf ein ganz spezielles Training. Ich habe dieses Beispiel mit Absicht gewählt, damit gleich erkannt werden kann, dass auch komplexe Vorgänge ohne FUP, KOP oder ähnliches nur auf trainieren und nicht programmieren, basieren kann. Da freut sich der Konstrukteur der Anlage, welcher nur zu gerne den SPS-Programmierer, überspringen möchte 😁.

Wie wird beispielhaft ein analoges KN trainiert?

In Punkt 2 sind vier analoge KNen zu sehen. Davon wurde das erste KN trainiert. Die analogen Werte werden mit dem Schieberegler (Punkt 3) entsprechend ermittelt. In diesem Fall soll ein Behälter mit einem Medieum gefüllt werden. Auf der Rechten Seite sind die bereits ermittelten Trainingsdaten erkennbar. In Punkt 1 sind die Perceptrons GP (rot) und AC (grün) schon trainiert worden. Auch hier werden die Trainingsdaten über das Sigmoid ermittelt und so für die spätere Verarbeitung gespeichert. So sind auch komplexe Vorgänge trainierbar, da im Zellkörper entsprechende Funktionen vererbt werden können. Nun – das dürfte zur ersten Information über den Blog ausreichen. Es gibt selbstverständlich weiter Trainingsmöglichkeiten, besonders zur Analog-Technik, die ich aber hier noch nicht erwähnen möchte. Dazu also später nach der Einleitung mit entsprechenden Trainings-Videos.

Im nächsten Beitrag (Blog -> Einleitung) werde ich beginnen, die Anwendung der Software KI2PLC vorzustellen. Dazu allerdings benötige ich noch einige …. Zeit. Außerdem ist das meine erste Web-Seite in WP und diese wird noch von meinem WP-Berater inspiziert, 😎.

Geplant ist die erste brauchbare Beta-Version Ende August 2024.