Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 11 von 11

Thema: ADS-Protokoll: Fragen zum Daten-Frame

  1. #11
    drfunfrock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Im Vergleich zu C, bietet Python gerade auf dem Gebiet der String und Listenverarbeitung mehr und es programmiert sich deswegen auch schneller. Was nicht geht, sind CPU-lastige Threads. Man kann sie benutzen, nur skaliert das Programm gar nicht. Was geht, sind Threads mit viel IO. Allerdings lässt es sich auch manchmal auch mit Prozessen realisieren und dann skaliert es wieder.

    Ein TCP-Client in Python - wie ich ihn auch nutze - sieht so aus:

    Code:
    import socket  
    TCP_IP = '127.0.0.1' 
    TCP_PORT = 5005 
    BUFFER_SIZE = 1024  
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.connect((TCP_IP, TCP_PORT)) 
    s.send('Hello World!') 
    data = s.recv(BUFFER_SIZE) 
    s.close()  
    
    print "received data:", data
    Das schöne ist, es geht auch auf der Shell interaktiv. Wenn das denn auch noch mit Fehlerabfangen usw. funken soll, braucht es allerdings mehr Arbeit.

    Da das Holen der Werte von Variablen per Handle jedesmal 2ms kostet (1) (1 Variable) und der Overhead den grössten Zeitanteil hat, hab ich mich entschlossen, das nicht zu implementieren, sondern Blöcke per Index und Offset auszulesen. Zudem bleiben keine Ressourcen auf der SPS belegt, sollte die Verbindung einmal abbrechen. Das Problem dabei ist, dass zyklisch gelesen werden muss. Ich denke aber, die Vorteile überwiegen. Die Konfigurationsdaten solte man der TPY-Datei entnehmen können. Die XML-Bibliotheken von Python sind recht einfach zu händeln. Datenbankanbindungen sind mit Python einfach und kosten wenig Zeit. Schnell genug ist der Bytecode-Interpreter allemal.

    Das ganze wird in einem eigenen Prozess laufen, der dann per ZMQ-Bibliothek die Daten an den nächsten Prozess lokal oder an einen Server weiterreicht. Ich nutze ZMQ deshalb, weil es das ganze Handling einer Netzwerkverbindung übernimmt und auch noch schnell ist. Die Daten können dann z.B. in eine DB geschoben oder auf einem HMI dargestellt werden. Da es ZMQ für diverse Sprachen gibt, kann man hier alles mögliche nehmen. Mein Ziel ist es aber, einen Linux-PC dafür zu nehmen. Ich bin noch unentschlossen, ob so ein HMI auf QT, wxWidgets oder schlichten Webseiten basieren soll. Webseiten haben den Vorteil, dass man nur eine Apache-Installation benötigt und der Ressourcenbedarf minimal sein dürfte. Ich hab aber noch keine Widgets für Instrumente auf JavaScript-Basis gefunden oder wenn, nur sehr vertreut.


    1) Die Doku dazu ist sehr verstreut. Leider.
    Geändert von drfunfrock (13.05.2012 um 00:17 Uhr)

Ähnliche Themen

  1. ADS-protokoll in Python 2.7 implementieren
    Von drfunfrock im Forum CODESYS und IEC61131
    Antworten: 37
    Letzter Beitrag: 30.07.2015, 11:30
  2. Fragen zum DB
    Von SPS_Neuling im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 11.10.2011, 19:37
  3. Offenes ADS Protokoll
    Von s.murauer im Forum CODESYS und IEC61131
    Antworten: 17
    Letzter Beitrag: 19.09.2011, 07:50
  4. ADS Protokoll in Visual Studio 08
    Von td97 im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 17.03.2009, 21:07
  5. Beckhoff ADS-Protokoll
    Von drfunfrock im Forum Feldbusse
    Antworten: 5
    Letzter Beitrag: 01.07.2005, 17:01

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •