-> Hier kostenlos registrieren
Hallo Forum,
ich habe vielleicht ein allgemeines Verständnisproblem bei TCP/IP Verbindungen aus TwinCAT heraus, daher möchte ich lieber noch einmal euch fragen. Folgende Situation:
Auf meiner CX9020 läuft TwinCAT 2 und des TCP/IP Supplement, ich kann erfolgreich Verbindungen aufbauen und Daten abfragen. Bisher im Einsatz ist das ganze um folgende Geräte anzusprechen:
- rPI mit node-sonos-http-api zum Anbinden der Steuerung an meine Musikanlage
- TCP-IP to RS485 Umsetzer zum Anbinden einer Wetterstation
- TCP-IP Gateway zur Abfrage von 1wire Temperaturdaten
Verbindung mit dem rPI und dem 1wire-Gateway laufen über OSCAT - Bausteine (HTTP_GET), die Wetterstation wird über einen eigenen Baustein abgefragt, der mit den vier Bausteinen von Beckhoff arbeitet (SocketConnect, SocketReceive, SocketSend sowie SocketClose - wobei Send nicht verwendet wird).
Da das 1wire Gateway mit mehr und mehr Sensoren die abgefragte XML-Datei ab absurdum wachsen lässt, bin ich gerade dabei die Abfrage zu Ändern, das HTTP Get herauszunehmen und stattdessen über das 'Low Level 1wire Interface' zu gehen. Ich bin gerade dabei den Baustein dafür zu entwickeln und stoße da auf ein paar Ungereimtheiten:
Im Empfangsstring für die 1wire Verbindung habe ich die gewünschten Ergebnisse drin stehen ('?$R?N' bei erfolgreicher Verbindung, 'N$R?N' bzw. 'P$R?N' bei Reset des Bus). Allerdings sind an diese Ergebnisse immer noch irgendwelche Zeichen angehangen gewesen. Ich konnte dies erst nicht zuordnen, merkte dann aber, dass dies Zeichen eines Requests oder einer Antwort nach HTTP Get waren ('http/1.1 ...'). Gut, hab mir gedacht, dass ich so doof war und die vorherige Abfrage über HTTP Get nicht auskommentiert hätte - dem war aber nicht so. Ich hab dann schließlich sogar in den 'alten' Bausteinen alle Zeilen auskommentiert und anschließend sogar die Bausteine gelöscht und das Phänomen tritt weiterhin auf.
Schlimmer noch: Teilweise sind sogar Elemente aus der Kommunikation mit dem Sonos rPI vorhanden, Beispiel: 'P$R$Nuerklingel.mp3/45'
Bisher dachte ich, dass bei jedem Aufruf von SocketConnect ein unique handle für die session erstellt wird und dann für dieses handle -jeweils- Empfangs- und Sendebuffer existiert. Scheinbar werden diese Sachen aber nun in ein Buffer geworfen.
Nun die konkrete Frage: Existiert für TCP Verbindungen nur jeweils ein Sende- und Empfangsbuffer und ich lag bisher in meinen Annahmen falsch?
Vielen Dank für eure Hilfe!
ich habe vielleicht ein allgemeines Verständnisproblem bei TCP/IP Verbindungen aus TwinCAT heraus, daher möchte ich lieber noch einmal euch fragen. Folgende Situation:
Auf meiner CX9020 läuft TwinCAT 2 und des TCP/IP Supplement, ich kann erfolgreich Verbindungen aufbauen und Daten abfragen. Bisher im Einsatz ist das ganze um folgende Geräte anzusprechen:
- rPI mit node-sonos-http-api zum Anbinden der Steuerung an meine Musikanlage
- TCP-IP to RS485 Umsetzer zum Anbinden einer Wetterstation
- TCP-IP Gateway zur Abfrage von 1wire Temperaturdaten
Verbindung mit dem rPI und dem 1wire-Gateway laufen über OSCAT - Bausteine (HTTP_GET), die Wetterstation wird über einen eigenen Baustein abgefragt, der mit den vier Bausteinen von Beckhoff arbeitet (SocketConnect, SocketReceive, SocketSend sowie SocketClose - wobei Send nicht verwendet wird).
Da das 1wire Gateway mit mehr und mehr Sensoren die abgefragte XML-Datei ab absurdum wachsen lässt, bin ich gerade dabei die Abfrage zu Ändern, das HTTP Get herauszunehmen und stattdessen über das 'Low Level 1wire Interface' zu gehen. Ich bin gerade dabei den Baustein dafür zu entwickeln und stoße da auf ein paar Ungereimtheiten:
Im Empfangsstring für die 1wire Verbindung habe ich die gewünschten Ergebnisse drin stehen ('?$R?N' bei erfolgreicher Verbindung, 'N$R?N' bzw. 'P$R?N' bei Reset des Bus). Allerdings sind an diese Ergebnisse immer noch irgendwelche Zeichen angehangen gewesen. Ich konnte dies erst nicht zuordnen, merkte dann aber, dass dies Zeichen eines Requests oder einer Antwort nach HTTP Get waren ('http/1.1 ...'). Gut, hab mir gedacht, dass ich so doof war und die vorherige Abfrage über HTTP Get nicht auskommentiert hätte - dem war aber nicht so. Ich hab dann schließlich sogar in den 'alten' Bausteinen alle Zeilen auskommentiert und anschließend sogar die Bausteine gelöscht und das Phänomen tritt weiterhin auf.
Schlimmer noch: Teilweise sind sogar Elemente aus der Kommunikation mit dem Sonos rPI vorhanden, Beispiel: 'P$R$Nuerklingel.mp3/45'
Bisher dachte ich, dass bei jedem Aufruf von SocketConnect ein unique handle für die session erstellt wird und dann für dieses handle -jeweils- Empfangs- und Sendebuffer existiert. Scheinbar werden diese Sachen aber nun in ein Buffer geworfen.
Nun die konkrete Frage: Existiert für TCP Verbindungen nur jeweils ein Sende- und Empfangsbuffer und ich lag bisher in meinen Annahmen falsch?
Vielen Dank für eure Hilfe!