Montag, 3. April 2023

  Copyright ©  Dipl.-Ing. Johannes Hofer 2022                                           

 

Ki2Plc

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

 




Vorab einige Antworten zu den Fragen

Im oben gezeigten Video wird der grundsätzliche Ablauf für Start, Stop und Programm-Ende gezeigt. Zusätzlich die Anwendung über einen FC und FB. Damit wir ordentliche Strukturen erhalten, sollten FCs und FBs als Programmbausteine in einer Anwendung verwendet werden. 

Natürlich reicht es auch aus, einfach drauf los zu legen. Dann allerdings wirde es mühsehlig, denn Funktionen sind teilweise "private" bzw. "protected" und das bedeutet, dass die so ohne weiteres nicht angewendet werden können, da der  Python-Übersetzter das nicht akzeptiert und meldet, dass er das eine oder andere nicht kennt. Zudem muss die bestehende Struktur angepasst werden, falls man das nicht möchte und bedeutet auch eine Menge Arbeit, welche sich nicht lohnt. 

Zudem werden FCs und FBs überwacht und kontrolliert im PLC-Thread angewendet. Das gibt Sicherheit und bei einer Plc (SPS) und sollte das auch so sein 😁

Sollte in der eigenen Anwendung eine Exception entstehen, dann kann diese unter Umständen nicht bemerkt werden und die PLC läuft weiter ohne in die Anwendung zurück zu kommen. Das heisst:

Der Anwender sollte in jedem Falle seine eigene Exception abfangen, wenn er selbst erstellten Code anwendet.

Hier ein Beispiel (nicht in You-Tube):
from pyPlc import *

plc = c_pyPlc(info=True, logging=False, optimize=False)


def fc_tor_sued():
res = plc.fct.UND('M0.0', plc.neg_bit('M0.1'), 'M0.2')
print("res in fc_tor_sued: ", res)


plc.create_fc(fc_tor_sued)
plc.run()
time.sleep(0.1)
erg = plc.fct.UND('M0.0', plc.neg_bit('M0.1'), 'M0.2')
print("\ngeht auch: ", erg)
plc.prog_exit()!

Die Funktion fc_tor_sued wird als FC mit plc.create_fc(fc_tor_sued) integriert und somit kontrolliert angewendet. Dann wird später das UND noch einmal, ohne in den FC einzubinden, angewendet. Macht in diesem Fall nichts, da kein Laufzeitfehler entsteht. Ist natürlich nicht logisch aber was soll's.

Hinweis: Das UND wird es in Zukunft nicht mehr geben. Alle Tokens in Englisch, also AND 😏

Hat allerdings die Zeile print("\n.. einen Fehler, wie z. B. wird nicht erg verwendet, sondern versehentlich res, was hier in der Zeile nicht bekannt ist, dann wird der error von der PLC ausgeschlossen und das Programm, also die PLC läuft ewig weiter und kommt nicht zum Ende. Hier im folgenden Film ohne Ton gezeigt und wie man das verhindert, indem man seine eigenen Zeilen (Anwenderprogramm) mit einem eigenen try-Blog versieht.:




Besser ist natürlich die Anwendung der Funktionen aus dem Projekt über FCs oder FBs 😏 



Fortsetzung folgt im nächsten Blog 🙋