Hauptmenü

IP_CONNECT und IP_FIFO

Begonnen von SLe, 18. Juni 2016, 13:24:55

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

SLe

Hallo,

ich habe mir die OSCAT Bibliotheken installiert und IP_CONNECT ausprobiert. Senden und Empfangen zu einem anderem System geht soweit ganz gut.
Nun meine Frage: wie kann man in einem Zyklus mehrere Nachrichten an den gleichen Empfänger senden? Kann das IP_FIFO verwalten? Und wenn ja, wie geht das? Wenn mehrere Sendungen innerhalb eines Zyklusses eintreffen, kann ich diese über den R_BUF auslesen und trennen aber beim Senden ist mir der Mechanismus unklar.

Best Dank schon mal im Voraus für gute Antworten.

peewit

#1
Hallo

Ip_fifo dient zum sharen einer ip_connect instanz
also mehrere bausteine die manchmal zugriff benoetigen werden darueber koordiniert.
Also ueberhaupt nicht das was du moechtest
in einen sps zyklus passiert relativ wenig
das senden und empfangen dauert immer mehr als einen zyklus und wird bei phoenix contact auch immer asyncron vom system ausgefuehrt
das ist aber auch niemls ein thema oder ein problem

Empfangene daten werden vom ip control baustein automatisch gesammelt und im network buffer abgelegt
darum ist auch zu unterscheiden ob es verschiedene telegramme sind oder nur ein sehr langes telegramm das in bloecken uebertragen wird

Du musst zusammengehoerende daten nicht im selben zyklus senden
die sendedaten muessen nur dem entsprechend richtig aufgebaut sein

Erklaere mir doch bitte mal was du machen moechtest



SLe

Hallo,

danke für die rasche Antwort.
Also ich muss mit einem System kommunizieren, welches mir die verschiedensten Nachrichten schickt. Zur Unterscheidung werden an einer bestimmten Stelle eine Kommandonummer eingetragen, sowie die Länge der inneren Nutzdaten. Auf diese Weise kann ich alle reinkommenden Nachrichten auseinanderhalten und zuordnen. Das ist kein Problem.
Problem ist, wenn eine Motorverstellung von Motor A zum gleichen Zeitpunkt wie Motor Y den Istwert zurückmelden will und vielleicht auch noch irgendwo ein meldepflichtiger Taster gedrückt wird und das alles im gleichen Zyklus. Das wären dann hier im Beispiel 3 getrennte Nachrichten, die ich absetzen muss und die auch nicht verloren gehen dürfen.
Theoretisch kann auch noch viel mehr im gleichen Zyklus anliegen.(worst case 20 bis 30) Meine Hoffnung bei dem Namen FIFO war, dass hier die aufeinander folgenden Nachrichten gepuffert werden. Scheint ja nicht zu sein und ich muss mir etwas andres überlegen.

P.S. Der "Gegner" ist ein bestehendes System, wo nichts geändert werden kann.

peewit

du vermengst hier verschiedene dinge

auf grund der dokumentation des protokolls muss hervorgehen wie diese telegramme aussehen
wenn du mehrere ereignisse zur gleichen zeit hast gib es zwei möglichkeiten

1. mehrere informationen werden in ein telegramm verpackt
2. es wird für jedes ereignis ein eigenes telegramm versendet

beides ist ansich kein problem

auch wenn der absender mehrere telegramme fast gleichzeitig sendet
kannst du diese auch gezielt einzeln empfangen und auswerten


normalerweise gibt es bei so einen protokoll auch eine art handshake


aber zuerst musst du den protokollaufbau verstehen

stell doch mal die doku des protokolls online

SLe

Hallo,

das Protokoll habe ich verstanden, ich gehe schon mehr als 20 Jahre damit um.
In der derzeitigen Hard-/Softwareumgebung arbeitet ein Rechner mit Echtzeitbetriebssystem und einer aufgesetzten Steuerungstask. Das Betriebssystem hat alles Sendewünsche der Steuerungstask entgegengenommen und sich selbst um die Ethernetkomminikation gekümmert.
Nun soll aber diese Hard- und Software durch eine käufliche Steuerung abgelöst werden.(Phoenix/PCWORX)

Emfangenvon Nachrichten und Auswerten innerhalb eines Zyklusses ist wie schon geschrieben kein Problem. Das Problem ist das Senden von mehreren Ereignissen innerhalb eines SPS-Zyklusses.
Wenn ich das richtig verstanden habe, muss ich immer warten bis eine Nachricht gesendet ist und dann die nächste abschicken. (also immer mehrere Zyklen)


peewit

Also Daten in buffer eintragen und dann sie eintragen. Dadurch erfolgt das automatische senden derdaten. Wenn alle Daten verwendetsind wird vom IP control size auf null zurückgesetzt. Dann kannst du den Vorgang wiederholen.