Codesys - TCP-IP Verbindung

Archon

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine SEW-Steuerung UHX71B mit Codesys.

Ich muss eine Datenübertragung via Http Post programmieren. (Wir haben das ganze schon auf Beckhoff, da funktioniert das ohne Probleme.)

Versuch 1: Über Oscat IP-Control (so machen wir das auch in Beckhoff):
Sobald der Connect ausgeführt wird, hängt sich die Steuerung quasi auf. Ich habe das Oscat Network Paket vom Codesys Store verwendet. Muss man hier viell noch irgendwas installieren wie bei
Beckhoff, dass man den Socket verwenden kann? Hab auch schon die neuere SysSocket aus dem TCP Package probiert, selbes Ergebnis..

Versuch 2: Mit dem Http-Client vom Codesys Store:
Hier bekomme ich 5x Unaufgelöste Referenz
-TICKS-GETTICK
-TICKU-CONVERTUSECTOTICK
-TICKU-GETELAPSEDTIMEINUSEC
-CAA-TASKLOCK
-CAATASKUNLOCK

Über eine schnelle Hilfe wäre ich dankbar, das Projekt muss nächste Woche auf Messe ^^
 
Hallo Archon

ich nehme nicht an, dass sich deine Steuerung aufhängt, da du schreibst du hast die "sysSocket" verwendet schätze ich du verwendest die synchronen Funktionen aus der SysLibSocket.lib und nicht die Funktionsbausteine aus der SysLibSockedAsync.lib. Die synchronen Funktionen versuchen einen Verbindungsaufbau per connect und wenn du keine Gegenstelle hast oder diese nicht erreichbar ist (z.b. kein Kabel eingesteckt, kein Listen aktiv oder anders Subnet, oder oder oder) bleibt deine PLC bis auf ewig bei connect stehen und dir kommt es vor als wäre die PLC aufgehangen.

Folgende Möglichkeiten hast du nun:
1. Die Asyncfunktionen verwenden, dann läuft deine Task weiter wenn z.b. keine Gegenstelle vorhanden ist
oder
2. Die Synchronfunktionen so implementieren, dass Sie nicht auf ewig einen Verbindungsaufbau versuchen. Hierzu gibt es verschiedene Möglichkeiten, du kannst z.b. per Syssockoption einen Timout setzen. Alternativ wenn du wirklich solange warten willst bis eine Gegenstelle vorhanden ist z.b. die Verbindung in eine niederpriore Task auslagern (das ist übrigens IMMER zu empfehlen, nie in der Maintask umsetzen, schon gar nicht in einer Motiontask!!)

Beides ist mit viel Einarbeitung und probieren verbunden. Je nach Hersteller und je nach Betriebsystem (Linux, VxWorks) deiner SPS kann es sein, dass Funktionen implementiert sind oder auch nicht. Eine Verbindung bekommst du mit jeder Steuerung (normalerweise) aufgebaut. Unterschiede gibt es meistens in den SysSocketOptions. Manche können hier alle SocketOptions handeln, manche nur einen Teil,...

Die Codesysdoku zur SysSocket Lib ist hier meistens sehr dürftig. Am Besten du suchst nach der Socketprogrammierung in C. Diese Funktionen und Konstanten sind hier im Codesys identisch und zu Socket + C findest du bei Google mehr Hilfe als mit den Schlagwörtern Codesys + Socket.


Ach: Bei Beckhoff gibt es ja das Paket welches du schon eingesetzt hast,.. da bekommst du das, was du dir hier mühsam "von null" aufziehen musst als Paket angeboten. Sieht man den Aufwand für die Einarbeitung, die Umsetzung usw. ist das was Beckhoff für das Paket verlangt Peanuts.

Oscat: Die IPControlLib oder das Oscat Paket kenn ich nicht im Detail, ob hier alles umgesetzt ist was notwendig für einen prozesssicheren Betrieb ist. Ich vermute es handelt sich hier um ein guten Start, der die ersten paar Hürden nimmt. Um eine Einarbeitung wirst du aber nicht drum herum kommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

danke für die Antwort.

Das Problem hat sich jetzt erledigt. Ich habe eine neue Plc Hardware und ein Systemupdate bekommen, mit dem funktioniert es jetzt. Ist glaub noch alles in der Beta Phase von SEW.
Das Problem war nicht das ausprogrammieren. Aber irgendwie konnte die Syssocket.lib nicht auf die Sockets zugreifen. Dabei kam es zu Ausnahmefehlern.
Ich habe jetzt die SysSocket23.lib v3.5.8.0 verwendet, mit der funktioniert es.
 
Zurück
Oben