Freitag, 27. Januar 2023

 Copyright ©  Dipl.-Ing. Johannes Hofer 2022                                           

Die KI-SPS

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

Das Board W5100S-EVB-Pico und das

TIA-Portal V16



Einleitung

Ich habe mir das o.g. Board bei WIZnetGermany GmbH besorgt und war gespannt, wie das mit dem TIA-Portal V16 so funktioniert. Gespannt deswegen, da ich schon einen Versuch mit dem Pico und den Aufsatz ETH-CH9121 (Wiz) als Ethernet-Schnittstelle hinter mir habe. Hat gut funktioniert, allerdings natürlich nur mit einem Kanal (Socket). Der EVB-Pico soll ja bis zu 4 Sockets bedienen können.

Zunächst war der Einstieg mit den Vorgaben des Herstellers bzw. des Lieferanten sehr einfach und hat auf Anhieb mit zwei Sockets funktioniert😉 

Diese Anwendung wurde in "MicroPython" auf Thonny umgesetzt. Einige Links und Hinweise auf die Verwendung der hier gezeigten Software, weiter unten. Danke an die Authoren, welche durchaus ein Basiswissen vermitteln,  mit dem Board und deren angebotenen Software den Einstieg zu finden.

Die Grundlage dazu (ohne Fehlerbehandlung, wie z. B. Stecker ziehen usw.) möchte ich hier vorstellen und als Begleitmaterial zu meinem YouTube-Block "Tial-Expert Hofer" betrachten. 

Hier die wichtigsten Links zum Board:

Firmware rp2 welche bei mir funktioniert:
Ich verwende aktuell die Firmeware-Version  rp2_w5100s_20220421_v1.0.5.uf2

Nun zum Board und dessen Aufgabe im Verbund KI-SPS.

Aufgabenstellung

Das Board wird als Kommunikation zwischen einer S7-1200 und meinem PC (Windows 10) die aktuellen Daten von der SPS an das Programm KI2Plc leiten. Dort erfolgt über die Matrix PLM1  das Training für den Lernmechanismus, welcher nach einem abgeschlossenen Test als Interpreter-Datei wieder an die S7-1200 zurück gesendet wird. 

Die SPS hat also kein traditionelles Steuerungs-Programm mehr, sondern einen Interpreter, welche das Gelernte als Steuerungsprogramm umsetzt .

Es gibt somit einen deutlichen Unterschied zur traditionellen Programmierung einer SPS, welche ja die üblichen Sprachen aus der IEC 61131... für ein Programm benutzt. Hier besteht das SPS-Programm nur aus der Erfassung für die Ein- und Ausgangsdaten und einen Interpreter zur Programmsteuerung.

Dieser Abschnitt beschreibt vorerst den praktischen Einsatz an einer S7-1200 mit dem TIA-Portal V16. Da der Pico in MicroPython programmiert wird, könnte diese Datenverbindung auch über einen handelsüblichen PC und einem Python-Programm erfolgen. In der Praxis allerdings soll der Pico-EVB oder mehrere davon zum Einsatz kommen. Warum das so ist, wird erst viel später an einem praktischen Beispiel vorgestellt.

Das MicroPython-Programm zum Pico-EVB

Zunächst erfolgt die auch vom Hersteller angebotene Initialisierung zum Bord, wie im folgenden Listing gezeigt ist:


Ich habe das Board mit der Adresse '192.168.1.200 initialisiert (Zeile 13). Der PC und die SPS müssen also im gleichen Adressbereich eingestellt sein. Die Initialisierung erfolgt gemäss den Hersteller-Angaben und funktioniert ohne Probleme. Meine SPS S7-1200 hat die IP-Adresse 192.168.1.108 und wird mit Receive- und Sendblock (Port 2000 und 3000) jeweils als Client programmiert, deswegen der nächste Abschnitt als server-loop() im Pico:


Und zum Schluss das main() mit der Antwort der SPS in der Kommandozeile:


Das SPS-Programm zur Kommunikation zum Pico-EVB


Im NW1 sehen wir den Receiver mit dem Port 2000, welcher zunächst die Daten vom Pico empfängt. Diese werden dann aufgearbeitet (NW2 und NW3) und zum Pico entsprechend beantwortet (NW4):



Das Video in meinem YouTube-Kanal wird gerade vorbereitet: Dort werden auch die Links für den Download der Programme, wie hier gezeigt, angegeben. Also, noch ein wenig Geduld 😏 oder einfach hier anfragen.

APC2 anstatt PLC3

Warum soll das über einen Pico-EVB ablaufen? Nun - kann natürlich die Kommunikation von der SPS direkt zum PC erfolgen. Dies allerdings belastet die SPS, da die Daten für die SW im PC besonders vorbereitet sein muss. Im Bild können wir sehen, dass die Picos zusammen einen Eingangs-Layer bilden. Diese bereiten somit die Daten schon so auf, dass diese direkt als künstliche Neuronen mit den entsprechenden Synapsen im PC zur Verarbeitung kommen können. Ausserdem ist die Programmiersprache Python für diese Zwecke besser geeignet.



Ist das Steuerungsprogramm in der SPS nicht so umfangreich, dann kann der PC auch direkt die Daten entsprechend formatiert von der SPS erhalten. Das bedeutet aber auch, dass die spätere Kontrolle noch schnell genug sein muss, um sinnvolle Werte innerhalb einer akzeptablen Zeit zu transferieren um diese in die Input-Layer-Matrix zu übertragen. 

Die Picos sorgen also nicht nur für schnelle Daten, sondern ermöglichen auch eine entsprechende Kontrolle nach der quasi-Programmierung, welche nach jeder Inbetriebnahme zeitweise, notwendig ist. Zudem stellen sie eine kostengünstige Lösung dar.

Weiteres im nächsten Blog-Abschnitt 🙋


Hier noch die Links zum Python-Interpreter Thonny und pycharm-community




Abkürzungen:
1: PLM Process Logic Matrix
2: APC Aritificial Process Controll
3: PLC Programming Logic Control

Linkbeispiel zu meinem YouTube-Kanal und Udemy:
Mein KI-Berater: