Keine Socketverbindung auf Wago, gleicher Code auf Raspberry funktioniert

philipp75

Level-2
Beiträge
67
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
HIm

ich habe ein Programm zur Abfrage von Daten aus einer Socket (Luft-Wärme Pumpe) geschrieben. Auf Codesys 3.5 mit Raspberry läuft es einwandfrei, nach Portierung auf mene Wago (Codess 2.3) wird die Socket-Verbindung nicht aufgemacht. Die Zeilen sind eins zu eins gleich, wenn auch die Aufrufe der Socket Funktionen etwas anders ist unter CodeSys 2.3 vs 3.5.

Müssen auf der Wago IP Verbindungen irgendwo "erlaubt" werden?

Relevater Programmteil:
Codesys 2.3:
Code:
SysSockIoctl(socketId, SOCKET_FIONBIO, ADR(dint_true));
sockAddr.sin_family:=SOCKET_AF_INET;
sockAddr.sin_port:=SysSockHtons(uiPort);
(* sockAddr.sin_addr:=SysSockNtohl(dwNet:=SysSockInetAddr(stIPAddr:=strIPAddr)); *)
sockAddr.sin_addr:=SysSockInetAddr(strIPAddr);
sockAddrPtr := ADR(sockAddr);


connOpen := SysSockConnect(socketId, sockAddrPtr, SIZEOF(sockAddr));

connOpen ist immer FALSE!


Codesys 3.5 (connOpen muss hier als INT deklariert)
Code:
SysSockIoctl(socketId, SOCKET_FIONBIO, ADR(dint_true));
sockAddr.sin_family:=SOCKET_AF_INET;
sockAddr.sin_port:=SysSockHtons(uiPort);
sockAddr.sin_addr:=SysSockNtohl(strIPAddr);
sockAddrPtr := ADR(sockAddr);
                
connOpen := SysSockConnect(socketId, sockAddrPtr, SIZEOF(sockAddr));

hier klappts....

Bin für jede Hilfe dankbar!

Grüße,
Philipp
 
Hallo Philipp,

einen Fehler in deinem Programm sehe ich nicht.
Allerdings verstehe ich nicht, warum du die Wärmepumpe mit den Socket Funktionen abfragen möchtest.
Das sollte aus meiner Sicht einfacher funktionieren, wenn du die Bibliothek WagoLibEthernet_01.lib verwendest.
Hier gibt es den Baustein TCP_Client der im Hintergrund die Socket Verbindung aufruft.
Vielleicht versuchst Du es einmal mit diesem Baustein...

VG
ClMak
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Vielen Dank für Deine Antwort. Daran habe ich auch schon gedacht. Die Wärmepumpe benötigt aber eine rudimentäre Kommunikation. Erst muss man eine bytefolge senden und empfängt dann über die offene Socket die Werte. Hatte nicht den Eindruck, dass das mit dem von dir genannten Baustein klappt... Werde es dennoch mal versuchen.

Viele Grüße
Philipp
 
Zurück
Oben