IP_Control, kommunikation ...

Begonnen von mactoolz, 29. September 2013, 10:56:06

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

mactoolz

Hallo,

kann ich mit dem IP_Control alleine, natürlich mit alle benötigten Strukturen und globalen Variabeln etc. eine Kommunikations auf Socket Ebene
zwischen zwei Steuerungen oder sonstigen Ethernet möglichen Clients kommunizieren?

Was bedeutet der Mailbox Bereich?

Ist es nicht so das bei beliebiger Adresse des Teilnehmers, man die Adresse als Broadcast beim Server angeben muss?
Ohne IP Adresse geht es ja grundsätzlich nicht auch wenn jeder Client sich anmelden darf.


Danke


MacToolz

peewit

Zitatkann ich mit dem IP_Control alleine, natürlich mit alle benötigten Strukturen und globalen Variabeln etc. eine Kommunikations auf Socket Ebene
zwischen zwei Steuerungen oder sonstigen Ethernet möglichen Clients kommunizieren?

ja der baustein IP_Control kapselt den kompletten hardwareabhängigen code um über ethernet zu kommunizieren


ZitatWas bedeutet der Mailbox Bereich?

das habe ich gemacht damit verschiedenen client bausteine mit dem gleichen IP_Control datenstrukturen arbeiten können und sich über die mailbox gegenseitig informationen geben können.

es ist ansich für ein datenbereich der keinerlei spezifikation aufweisst, man muss halt eben bei der eignenen nutzung sich eine belegung überlegen


ZitatIst es nicht so das bei beliebiger Adresse des Teilnehmers, man die Adresse als Broadcast beim Server angeben muss?
Ohne IP Adresse geht es ja grundsätzlich nicht auch wenn jeder Client sich anmelden darf.

du gibst aufgrund der angegebenen ip-adresse vor ob du eine spezielle adresse nutzen möchtest, oder aber eine broadcast ip adresse.
broadcasts werden aber auch nicht von allen steuerungen gleich gut unterstützt und sind eher ein randthema bei unseren IP_CONTROL. wir verwenden in der bibliothek nur UDP oder TCP verbindungen als Client oder Server

mactoolz

Hi,

aber eine beliebige Adresse ist vom Prinzip her ein Broadcast.


MacToolz

peewit

Adresse 255.255.255.255 ist zb. eine

mactoolz

Hi,

ja das weis ich schon aber ohne die Broadcast Adresse geht es ja grundsätzlich nicht wenn man die C-Mode für beliebige Adresse verwenden will.

Das mit der Mailbox habe ich leider nicht so ganz verstanden.
Wo und wie findet denn auf der Mailbox Ebene der austausch statt. Das geht ja nur über die Anzahl der zu versendenden Bytes für den Sende Buffer oder ???


MacToolz

peewit

mailbox

es besteht die möglichkeit das sich mehrere bausteine einen gemeinsamen ip_control teilen (sharing) für was ?

jede seperate ip_control instamz benötigt jeweils 2 x 4Kb speicher.
wenn jedoch applikation nur gelegenlich die ressource benötigen , so können die bausteine sich die ressource teilen.

dazu kann man vom ip_control sozusagen eine sprecherlaubnis anfordern

über die mailbox können wie anderen bausteine infos untereinander austauschen
ein baustein hinterlegt informationen und der andere kann das auswerten

das ist aber eine sehr spezielle arbeitsweise die ich für ein paar bausteine erfunde habe.
und ist nicht dokumentiert , da der umgang damit sehr gutes detailswissen über den ip_control erfordert

mactoolz

#6
Hallo,

kannst du noch mehr zu der Mailbox sagen.

Problem 1: Hat sich vorerst erledigt, wobei mir noch nicht ganz klar ist warum. !!!
-----------------------------------------------------------------------------------------------
Desweiteren bekomme ich vom IP_Control immer den TimeOut bei der Verbindung. Kann mir aber gerade nicht erklären warum.
Der so zusagen Master ist im Mode = 5 (UDP-Passiv), der anmeldende auf Mode 1 (UDP-Aktiv).
Oder verstehe ich da was nicht. Der Master erstellt den Socket passiv und wartet das ein X-beliebiger Client sich anmeldet.



MacToolz

mactoolz

Hi,

ich würde gerne nochmal auf die Mailbox eingehen.

Ich benötige demnächst eine Anwendung die vom Prinzip her mehrere Socket Verbindungen benötigt.

Wie sieht das eigentlich aus mit CE-Targets. Schon Erfahrung damit gesammelt??

MacToolz

peewit

mehrere sockets gleichzeitig ist ansich kein problem

zb. habe ich beim ftp client baustein auch zwei verbindungen gleichzeitig offen
eine verbindung bildet den kommandokanal, und über die zweite werden die eigentlichen daten übertragen
(grundprinzip von ftp)


mactoolz

Hi,

aber wie verwendest du denn die Mailbox. Momentan ist es für mich gerade nicht ersichtlich.

Nochmal zum CE-Target. Hast du da schon Erfahrungen mit dem Target gemacht.
Ich habe mal vom Hersteller ein Musterbeispiel erhalten. Darin ist z.B. die SetSocketOption schon mit einem anderen Parameter.

Was haben die SetSocketOption so aufsich. Wo kann ich darüber nachlesen wie man mit den ganzen Parameter umgeht und wofür die definiert sind.


MacToolz

peewit

#10
ZitatWas haben die SetSocketOption so aufsich. Wo kann ich darüber nachlesen wie man mit den ganzen Parameter umgeht und wofür die definiert sind

das ist leider das grosse problem
die hersteller der steuerungen sind leider nicht fähig dazu ordentliche dokumentation zu liefern
um zu wisssen was man wo machen soll.

es gibt oft von den sps herstellern irgendwelche bibliotheken die dann auch nur auf gewissen steuerungen laufen
das ist meines wissens unseren umsetzung noch die beste das sie auf den meisten plattformen funktioniert

auf welchen steueurngen man welche optionen benötigt lässt sich oft nur durch mühsames ausprobieren herausfinden

wenn du aber irgendwelche beispiele hast, so kannst du mir diese geben, und ich kann mal drüberschauen was dort denn gemacht wird, und ob hier überhaupt etwas wichtiges anders ist


mailbox:

das ist etwas was du sicher nicht benötigst !!!

die ersten drei bytes habe ich schon mal fix im ip_control belegt

Byte 1  ist ein telegrammempfangszähler um zu erkennen das sich irgendwas auf der verbindung schon getan hat
byte 2 = 1 sperrt den sendevorgang
byte 3 = 1 sperrt den empfangvorgang

und das brauche ich nur für ein paar komplexe bausteine....

wenn du mir deine aufgabe gut beschreibst, kann ich dir vielleicht helfen einen lösungsansatz zu finden

mactoolz

Hi,

danke erstmal für die Infos.
Die Socketaufgabe ist mir im ganzen klar. Deine Implementierung auf tiefster Ebene ist wunderbar.
Ich habe mir das Beispiel vom Elrest angeschaut und sehe das dort die SetSocketOption anders ist wie die zum Wago ider PLC/RTE.

Eine neues SPS Target in den IP_Control Baustein einzubringen ist ja nicht mehr das Problem da du ja ein globales Konfig Byte für verschiedene SPSen schon deklariert hast.
Von daher könnte man wenn wieder Unterschiede wie zu den bis jetzt getesteten SPS Hersteller besteht den Elrest als neues BIT mit aufnehmen.

Wohin soll ich dir das Beispielt denn schicken?

Mailbox:
Na die Infos sind ja schon mal nützlich. Zumindest ist mir das erste Byte schon aufgefallen.

Meine Andwendung:
Ich habe es schon bei mir so vorbereitet das ich einen weiteren Schalen FB um deinen IP_Control gelegt habe.

Das Ziel ist es das eine CoDeSys Master STEuerung mehrere Socketverbindungen erstellt.

Das ganze habe ich mit meinem Schalen FB als Array erstellt.

Kann ja mal das Muster hochladen.

Danke erstaml ...

Ich muss leider Weg ...


MacToolz

peewit

na stell das doch ein hier online
solange es keinen für die sps angespassten ip_control baustein gibt kannst du dir jegliche vorarbeit sparen...

mactoolz

Hi,

also im Anhang ist das Musterbeispiel für das CE-Target.

Meine Vorbereitung hat nichts direktes mit dem IP_Control Baustein zu tun, solange nicht die Eingänge sich ändern, da ich die aber eh Intern nur
umkopiere ist das ganze eher unkritisch.

Was bei dem CE-Target anders ist, istr das die SysSetSocketOption andere Parameter hat.

MacToolz



[gelöscht durch Administrator]

peewit

hi

welche unterschiede hast du denn bei SetSocketOption entdeckt ?