oscat.lib > oscat.lib fuer CoDeSys 3

Network.lib

<< < (5/8) > >>

mactoolz:
Hi,

was meinst du mit Kommunikation genau?

Doch mein Size ist Null, garantiert, alles schon geprüft.


MacToolz

peewit:
deine sps kommuniziert die welchen gerät und was wird dort an information ausgetauscht

mactoolz:
Morgen,

der client ist von der Firma Eq3 (MaxCube).

Also ich bin zu dem Entschluss gekommen, das der Client viel schneller ist als ich mit meiner SPS Task, wobei meine Task auf eine 1ms gestellt ist.
Wenn 8000 Byte zur Verfügung stehen dann versucht er die dort rein zu schreiben. Da ich zwar selber das "Size" für den Puffer ablösche,
schafft der Client es trotzdem noch Daten zu schreiben.

Trotzdem bin ich verwundert das dass SysSockRecv ja ein Synchroner Aufruf an das Betriebssystem ist. Der Client aber trotzdem weiter
an die Adresse vom Puffer schreibt, solange der nicht voll ist.
Weil es wird ja niemand dem Client sagen hör mal gerade auf Daten zu senden. Sondern das Betriebsystem kümmert sich auf TCP IP Basis darum wie viel dort rein geschrieben werden kann.

Das sieht so aus das ein einmaliger Aufruf von SysSockRecv dazu führt das dass Betriebssystem auf dem Socket Daten holt und
das Asynchron und solange bis der Puffer voll ist.

Wähle ich einen kleinen Puffer dann funktioniert die Sache. Den Puffer habe ich mal so gewählt weil er nie Daten unter 100Byte sendet.
Das wäre eine Lösung in Bezug auf diesen Hersteller.

Oder liegt es eventuell doch eher an meinem Wago Ethernet Kopper 750-880?

MacToolz

peewit:
den tcp-stack schalte ich mit dem ip_control in den non-blocking mode
denn sonst konnte deine ganze sps beeinflusst werden

empfangene daten laden im internen tcp-stack buffer und diese daten holst du dir dann gezielt mittels syssockrev


das der client viel schneller ist , ist auch völlig logisch

deine sps ist wie schnecke zu ice-zug

das du den datenempfang in einen 1ms task laufen kann auch zu problemen führen

lass mal vorerst den datenempfang in einen normalen freilaufenden task


was macht der eq3 genau

mactoolz:
Nabend,

also der EQ3 sprich Maxcube bringt Daten von einem Heizungssystem. Das heisst es gibt Thermostate, Wandthermostate und Fensterkontakte.

Das Gateway dazu ist so zusagen die Schnittstelle zwischen Ethernet Funk von allen Geräten innerhalb dieses Heizungssystems.
Wie gesagt sobald der Socket auf ist, sendet der Client alles raus was er aktuell an Informationen hat.

Wie schaltest du den "Non-blocking mode", wo und wie passiert das.

Es gibt ja einenfertige Funktionnfür einen Sende und Empfangsvorgang dem Betriebssystem sprich dem Client mitteilen zu können aber das Funktioniert auf dem Koppler und der RTE nicjt. Warum auch immer.

Was und wie müsste ich denn jetzt mit dem Non-blocking mode umgehen.


MacToolz

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln