Mehrerer DBs über Ethernet zu untschiedlichen Zeiten senden

Krumnix

Level-3
Beiträge
1.454
Reaktionspunkte
190
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin.

Hab da mal ne Frage, und bevor ich das hier bei einer laufenden Anlage teste und das geborene Chaos verursache, wollte ich mal eure Meinung dazu hören.

Es geht um folgendes:
Ich hab 4 CPU 319F-3 PN/DP in einer Ethernet/Profinet Verbund laufen.
Alle 4 Steuerungen kommunizieren untereinander.
Das funktioniert alles sehr gut. Nun soll aber der Datenaustausch erhöht werden und die Daten zu unterschiedlichen Situationen gesendet werden.
D.H. das ich DB90 z.B. alle 10sec verschicke und DB95 alle 3mins sowie DB100 Zyklisch dann.

Ist sowas möglich??

Gruß
 
Hi,

möglich ist es. Du mußt dir ja nur entsprechende Puls/Pausentimer bauen, als Beispiel 10sec Pause, dann einen Impuls erzeugen, 10 sec Pause etc..
Dann mit dem jeweiligen Impuls den Sende Baustein triggern oder freigeben oder einen Sendeanstoss auslösen, abhängig was dein Sendebaustein kann.
Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jain ;)

Das hab ich ja so drin. Nur mein Problem ist, das ich ja verschiedene DBs zu unterschiedlichen Zeiten senden will.

DB90 -> alle 10sec (wird in der Empfangs-CPU bearbeitet und die Positionen, die fertig sind, gelöscht. In der Zeit sollte nix neues reingeschrieben werden)

DB95 -> alle 3mins (gleiche wie oben=

DB100 -> Zyklisch, da Signalzustände von Sensoren der anderen CPUs übertragen werden und dieser nicht von der empfangenen CPU manipuliert wird)

Somit hätte ich ja 3 Sendeaufträge zu unterschiedlichen Zielen. Es soll nämlich nicht alles in ein DB gespeichert und dann übertragen werden.

Gruß
 
Hallo Krumnix

wenn ich dich recht verstehe willst über eine Kommunikation (Sendbaustein) verschiedene DB's in verschiedenen Zeitfenstern senden !

Das ist kein Problem, du musst nur immer das "Fertig Bit" des Bausteins auswerten.
Dann weißt du das ein neuer Sendauftrag angestossen werden kann.
:-D
 
Entweder rufst Du für jeden zu sendenden DB eine Instanz des SendeFB mit den entsprechenden Parametern auf, oder Du bastelst Dir für jeden Sendeaufruf einen entsprechenden Zeiger auf die Daten zusammen. Erste Möglichkeit ist einfacher, braucht aber dann 3 Instanzen bzw. 3 separate Aufrufe des Sende-FBs. Die zweite Möglichkeit setzt aber voraus, dass Du Dir entsprechende Datenzeiger baust.

Wenn sich an Deinem Prog nicht in Sachen DÜ ständig was ändert, würde ich wohl die erste Möglichkeit wählen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, das ist soweit mir alles klar ;)
Danke schonmal für die Infos soweit.

Aber die Frage ist eher (ok, ich habs ungünstig formuliert, sry), wie weiß die empfangende SPS, in welchen DB sie die Daten kopieren soll dann?
Also der FB-Recieve?

Gruß
 
Hallo Krumnix,

es gibt da mehrere Möglichkeiten.
zum Bsp.: Du legst für jeden DB eine eigene Verbindung an, dann weiß der Receive durch die Verdindung-ID,
welche Daten er gerade bekommt.
Oder Du empfängst erst mal alle Daten in einem Empfangsfach. Mit einem zusätzlichen DBW, in dem die DB-Nr. drin steht,
kopierst Du die Daten in den richtigen DB.
...

Grüße
Gebs
 
Oder Du liest die (sinnvollerweise) ersten Bytes aus, in denen immer die Empfangs-DB-Nummer liegt. In einem zweiten Empfangsaufruf holst Du dann die eigentlichen Nutzdaten ab, von denen ja jetzt bekannt ist, in welchem DB sie landen sollen.
 
Zurück
Oben