Samstag, 26. November 2022

  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


Machine-Learning für Prozesskrane TIA-V16

Teil - 5




Hier der 5. Teil zum Thema KI und Deep-Learning. Mein laufendes Projekt beschäftigt mich derzeit, so dass ich wenig Zeit habe zu diesem Thema etwas zu berichten. Das Positionieren mit Lernkurven wird derzeit bei einer Krananlage (Modernisierung) umgesetzt und zeigt richtig gute Ergebnisse. Mehr dazu später, wenn's die Zeit erlaubt ...

Danke für das Verständnis!


Mein KI-Berater und Automatisierer:

https://kran-automation.marcel-rosiak.de/






Mittwoch, 19. Oktober 2022

 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


Machine-Learning für Prozesskrane TIA-V16

Teil-3





Zu den Fragen auf meinem Blog und meine Antworten:

Ich verstehe nicht das Problem mit dem Bildwechsel?
Der Bildwechsel muss über einen Skript erfolgen, damit das Request-Bit auf dem neuen Bild berücksichtigt wird. Deswegen wird das Request-Bit vor dem Bildwechsel invertiert. Dazu mehr im Teil-4
Wie funktioniert der Balken im Button?
Kann der Bar Graph horizontal gezeigt werden?
Wie sieht der Script für den Bildwechsel aus?
Dazu werde ich im Teil-4 ein gesondertes Video machen.


Montag, 10. Oktober 2022

  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


Machine-Learning für Prozesskrane TIA-V16

Teil-2




Jetzt in YouTube. Man kann nicht alles in einem Video erklären, aber so einen Überblick kann man schon bekommen - denke ich.

Zu den Fragen auf meinem Blog und meine Antworten:

Wie sieht der automatische Ablauf aus?
Zuerst kommen die automatisch gelernten Muster (LM), danach folgt die Standard-Automatik wenn keine Treffer zu den Muster existieren. Zuletzt werden die Handbefehle abgearbeitet. Alles befindet sich im Auftrags-Stack und kann auch beliebig gewichtet werden. 
Wieviel Tags hat das gezeigte TIA-Projekt im Video?
So ca. 485 soweit ich jetzt noch in Erinnerung habe. Das zeige ich auch im dritten Teil, falls genügend Anfragen kommen
Kann man den Source kaufen?
Nur über eine Einweisung (Seminar). Sonst macht das ja keinen Sinn.
Kann der Anwender die Machine-Learning abschalten?
Es gibt derzeit drei Gruppen: Handbefehle, Automatik und Machine-Learning. Jede Gruppe kann aktiviert oder deaktiviert werden.
Ist eine Projektunterstützung möglich?
Bitte anfragen. Grundsätzlich ja, falls freie Mitarbeiter vorhanden sind. 
Wie funktioniert der Balken im Button?
Dazu werde ich im Teil-4 ein gesondertes Video machen.



Im weiteren kann über den KI-Berater Marcel ein Inhouse-Seminar zu diesem Thema und den Sourcen angefragt werden.  Schreiben sie mir Ihr Interesse oder wenden Sie sich an den KI-Berater Herr Marcel Rosiak.

Bis demnächst ...

Bei Fragen zur Kran-Automatisierung oder allgemeine Projektunterstützung TIA-Portal bitte folgenden Link verwenden und Kontakt aufnehmen:







Samstag, 3. September 2022

 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


Machine-Learning für Prozesskrane TIA-V16



TIA-Portal und Machine-Learning, WinCC-Advanced
Mein YouTube-Kanal: TIA-Expert Hofer



Die Programmierung der Automatik erfolgt komplett über Daten nach dem KI-Prinzip Machine Learning mit nachgeschaltetem Deep-Learning. Letzteres wird vom Bediener konfiguriert, solange dies sinnvoll erscheint.

Das alles mit dem TIA-Werkzeug V16 ohne zusätzliche Software oder anderen Hilfsmitteln.

Nun - die Darstellung des Konfigurators ist zwar bereits vorhanden, aber es fehlt noch eine Erklärung dazu, welche in einem weiteren Video gezeigt werden soll.

Ist auch nicht ganz so "ohne" mit dem was man im TIA-Portal bezogen auf Programmiermöglichkeiten und Debugging so geboten bekommt. Aber es funktioniert hervorragend, denn mittlerweile sind zwei Anlagen der ehemaligen Demag Mannesmann aus den 90ziger Jahren durch den Betreiber damit modernisiert worden. 

Bei Fragen zur Kran-Automatisierung folgender Link:









Freitag, 1. Juli 2022

Copyright ©  Dipl.-Ing. Johannes Hofer 2022                                           

Die KI-SPS

Die Möglichkeit einer Programmierung für eine SPS, um diese am Geschehen der künstlichen Intelligenz zu beteiligen






 Das Listing zum Pi:

# socket test for raspi

import socket
import threading
import sys
import time

HOST_CLIENT = "192.168.8.106"  
PORT_RCV = 3000  # port used by receive
PORT_SEND = 2000 # port used by send
FORMAT = 'utf-8'

# client to receive and send
def RCV_SEND():
    try:
        _rcv = None
        _send = None
        # socket receive messages
        _rcv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        _rcv.settimeout(30)
        _rcv.connect((HOST_CLIENT, PORT_RCV))
        print("Socket RCV is connected")
        # socket send answer
        _send = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        _send.settimeout(30)
        _send.connect((HOST_CLIENT, PORT_SEND))
        print("Socket SEND is connected")
        connected = True
        while connected:
            data = _rcv.recv(1024).decode(FORMAT)
            l = len(data)
            s = str(l)
            print(f"Len: " + s)
            # parseData
            print(f"Message [RCV]: {data}")
            # return from parseData
            s = "[{" + "SD:Raspi RCV -> ok" + "}]"
            _send.send(s.encode(FORMAT))
            print("[SEND]: " + s)
    except:
        print("Exception in RCV_SEND ",sys.exc_info()[0])   
        if(_rcv != None):
            _rcv.close()
        if(_send != None):
            _send.close()
        print("Close sockets")
        return;  

# main
def main():
    while(True):
        thread_RCV_SEND = threading.Thread(target = RCV_SEND)
        thread_RCV_SEND.start()
        print("Start RCV and SEND Thread")    
        while(thread_RCV_SEND.is_alive()):
            ...
        print("Inteface network is disconnect ... wait")    
        time.sleep(2)    
        print("try again")
  
main()     
print("Program out")






Montag, 6. Juni 2022

 Copyright ©  Dipl.-Ing. Johannes Hofer 2022, Auszug aus dem neuen active learn book                                                 

Die KI-SPS

Die Möglichkeit einer Programmierung für eine SPS, um diese am Geschehen der künstlichen Intelligenz zu beteiligen




HMI-Anwender im Testmodus TIA-Simulation zeigt das folgende Video:


Damit können auch Interessierte ohne den Besitz einer Hardware aus der Simatic 1200/1500 profitieren und sich mit dem Thema beschäftigen ☺
 

Nachfolgend wie mehrfach gewünscht, der Script  zum  kopieren:


Sub Ki2HMI()
Const READ = 1
Const WRITE = 2
Const APPEND = 8 ' not use
'
Dim fso, fileIn, fileOut 
On Error Resume Next
'object 
  Set fso = CreateObject("Scripting.FileSystemObject")
  'program 
  Select Case SmartTags("Request_Counter")
Case 0 ' check file read
SmartTags("SendReceiveData_FlagRequestStr") = False
Set fileIn = fso.OpenTextFile("C:/KiToPlc_HMI/RequestText.txt",READ)
If(Err.Number <> 0) Then
SmartTags("InfoFileSystem") = " RequestText.txt => " & Err.Description
Err.Clear
Set fso = Nothing
SmartTags("Request_Counter") = 100
Else
' read file
SmartTags("RequestText") = fileIn.ReadAll()
fileIn.Close()
'KI2Plc set folder and filename
fso.DeleteFile "C:/KiToPlc_HMI/RequestText.txt"
SmartTags("InfoFileSystem") = "Read File ok => File deleted"
Set fso = Nothing
SmartTags("Request_Counter") = SmartTags("Request_Counter") + 1
End If
Case 1
SmartTags("SendReceiveData_RequestStr_HMI")= SmartTags("RequestText")
SmartTags("SendReceiveData_FlagRequestStr") = True
SmartTags("Request_Counter") = SmartTags("Request_Counter") + 1
Case 2
'KI2Plc set folder and filename
If(SmartTags("SendReceiveData_FlagRequestStr") = False) Then
SmartTags("Request_Counter") = SmartTags("Request_Counter") + 1
End If
Case 3
'KI2Plc set folder and filename and write file 
Set fileOut = fso.OpenTextFile("C:/KiToPlc_HMI/AcknowledgeText.txt",WRITE, True)
If(Err.Number <> 0) Then
SmartTags("InfoFileSystem") = " => " & Err.Description
Err.Clear
Set fso = Nothing
SmartTags("Request_Counter") = 100
Else
fileOut.WriteLine(SmartTags("SendReceiveData_AcknowledgeStr_HMI"))
fileOut.Close()
fso = Nothing
SmartTags("Request_Counter") = SmartTags("Request_Counter") + 1
End If
Case 4
' nothing
SmartTags("Request_Counter") = SmartTags("Request_Counter") + 1
Case Else
SmartTags("Request_Counter") = 0
End Select
'change sps-flag 
SmartTags("RequestHMI_Bit") = Not SmartTags("RequestHMI_Bit")
End Sub

 

Freitag, 29. April 2022

 Copyright ©  Dipl.-Ing. Johannes Hofer 2022, Auszug aus dem neuen active learn book                                                 

Die KI-SPS

Die Möglichkeit einer Programmierung für eine SPS, um diese am Geschehen der künstlichen Intelligenz zu beteiligen


8.2     Logic Edge-Control

Was ist, wenn ein PLC-Programmierer seine eigenes Programm zur Automatisierung anwenden möchte, ohne die KI-Vorteile zu verlieren. Nun das ist sicherlich verständlich, wenn zu den ganzen Dingen eines KI-Automaten kein sooo großes Vertrauen besteht. Schließlich weiß man ja auch nicht was da  in einem Baustein so abgeht – oder?

Verständlich und auch vollkommen normal den Dingen nicht zu trauen.

Man verwendet im eigenen Programm zwar Bibliotheksbausteine, aber nur soweit dieser überwiegend bekannt sind und zudem auch schon tausendmal getestet wurden.

Damit ein KI-System bestehen kann, müssen spezifische Daten existieren. Wir haben ja schon den Eingangs-Layer, die Regeln und den oder die Ausgangs-Layer kennen gelernt. Zudem kennen wir ja auch schon Deep-Learning, welches im Gerät Zwischenlayer erzeugen kann, um damit mehrere Möglichkeiten für die Ausgangs-Layer zu bilden.

Diese Vorgehensweise mit dem Deep-Learning wird direkt auf der Hardware ausgeführt und deswegen auch als Edge-KI bezeichnet.

Was man sich so alles einfallen lässt 😊. Das was da so innerhalb des KI-Automaten abgeht, könnte zur Automatisierung ungewünscht sein. Nach dem Motto, was der Bauer nicht kennt, frisst er nicht, können wir mit dem sogenannten Edge-Control aushelfen.

Betrachten wir dazu in einer Simatic dem Aufruf eines KI-Automaten, wie uns auch schon bekannt ist, dann sehen wir die Möglichkeit einen Eingangsparameter IN_EC zu setzen.

                       

                         Bild 8.2: Die SPS besitzt zu jedem KI-Automat einen Edge-Control-FB

Jeder KI-Automat besitzt einen booleschen Eingang IN_EC (Punkt 1) welche wahlweise den Funktionsbaustein EC_SD1 (Punkt 2) aktiviert oder nicht aktiviert. Damit können wir das logische Geschehen für den Programmablauf zur Logik dem Programmierer überlassen. Wie auch immer er dies löst entscheidet jetzt nicht mehr der KI-Baustein, sondern liefert dazu die Daten, Funktionen und nötigen Parameter. Somit ist der Programmierer völlig unabhängig der KI-Dinge und kann somit schalten und walten, wie er dies auch in der Vergangenheit schon getan hat.

Na also, dann haben wir ja unser Edge-Control und die KI vereinbart. Ob das so sinnvoll ist, muss im Einzelfall entschieden werden 😊

Die KI allerdings bleibt erhalten und liefert so wichtige Daten und Erkenntnisse, ob der Baustein nun so auch richtig funktioniert. Geliefert wird das dann über den sogenannten Backpropagation-Faktor und alle sind zufrieden – oder wie oder was?

Dazu nun das folgende Video zum Praxisbaustein "Automatische Türsteuerung" in YouTube


Praktikum KI-SPS - Teil 2

Vorerst noch überwiegend KV-Diagramm mit KI-Gerüst und der Einsatz von Bibliotheksbausteinen.  

Zum Test suche ich noch einen Spender über eine größere SPS. Muss nicht das TIA-Portal sein. Auch wäre eine neuzeitige SPS mit Arduino oder sowas denkbar. Da das KI-Verfahren sehr sicher ist, kann man hier auch eine andere Hardware sehr gut einsetzen. Also einfach auf meinem Blog melden :)

 Fortsetzung folgt im nächsten Post .... 💇