In den letzten Artikeln haben wir besprochen, wie man mithilfe der TCON- und TDISCON-Blöcke eine Verbindung zwischen zwei SPS herstellt und wie man mithilfe der TSEND- und TRCV-Blöcke Daten zwischen ihnen verschiebt.
Datenübertragung zwischen SPS-Systemen
In diesem Artikel lernen wir eine neue Anweisung kennen, die zur Kommunikation und Datenübertragung zwischen SPS-Systemen mithilfe der TSEND_C- und TRCV_C-Blöcke verwendet werden kann.
TSEND_C
Die Anweisung TSEND_C ist eine TIA-Portal-Anweisung, die zum Einrichten und Herstellen einer Verbindung zwischen zwei SPS verwendet wird. Sobald die Verbindung eingerichtet und hergestellt wurde, wird sie automatisch von der SPS aufrechterhalten und überwacht.
Die Anweisung TSEND_C wird asynchron ausgeführt und hat die folgenden Funktionen:
- Einrichten und Herstellen einer Kommunikationsverbindung ähnlich dem TCON-Block.
- Senden von Daten über eine bestehende Kommunikationsverbindung ähnlich dem TSEND-Block.
- Beenden oder Zurücksetzen der Kommunikationsverbindung ähnlich dem TDISCON.
Daher wird TSEND_C als kompakt bezeichnet, da es gleichzeitig als mehr als 3 Blöcke fungiert.
TRCV_C
Der TRCV_C-Befehl ist ebenfalls ein TIA-Portal-Befehl, der zum Einrichten und Herstellen einer Verbindung zwischen zwei SPSen verwendet wird. Sobald die Verbindung eingerichtet und hergestellt wurde, wird sie automatisch von der SPS aufrechterhalten und überwacht.
Der Befehl „TRCV_C“ wird asynchron ausgeführt und implementiert nacheinander die folgenden Funktionen:
- Einrichten und Herstellen einer Kommunikationsverbindung ähnlich wie TCON.
- Empfangen von Daten über eine bestehende Kommunikationsverbindung ähnlich wie TRCV.
- Beenden oder Zurücksetzen der Kommunikationsverbindung ähnlich wie TDISCON.
Daher wird TRCV_C als kompakt bezeichnet, da es gleichzeitig als mehr als 3 Blöcke fungiert.
Verwendung von TSEND_C und TRCV_C in unserem SPS-Projekt
Im letzten Artikel mussten wir, als wir Daten von SPS_1 an SPS_2 senden und senden mussten, in jeder SPS drei verschiedene Blöcke verwenden. Siehe Bild 1.
Bild 1. Logik in PLC_1
Wie Sie sehen, haben wir die TCON- und TDISCON-Blöcke verwendet, um die Verbindung herzustellen und zurückzusetzen, und wir haben TSEND verwendet, um die Daten von PLC_1 zu senden. Und dasselbe wurde für PLC_2 getan. Siehe Bild 2.
Bild 2. Logik von PLC_2
Auch hier haben wir die TCON- und TDISCON-Blöcke verwendet, um die Verbindung herzustellen und zurückzusetzen, und wir haben TRCV verwendet, um die Daten von PLC_1 zu empfangen.
Nun möchten wir alle diese Blöcke ersetzen und versuchen, stattdessen TSEND_C und TRCV_C zu verwenden, um dieselbe Funktionalität zu erreichen.
Zuerst verwenden wir in PLC_1, wo wir Daten senden müssen, den TSEND_C-Block. Ziehen Sie den Block einfach per Drag & Drop in den Haupt-OB1. Siehe Bild 3.
Bild 3. TSEND_C-Block hinzufügen.
Da TSEND_C im Wesentlichen ein Funktionsblock ist, werden Sie aufgefordert, eine Dateninstanz zu erstellen. Siehe Bild 4.
Bild 4. Eine Instanz für TSEND_C erstellen
TSEND_C ähnelt dem TSEND-Block insofern, als dass Sie einige Konfigurationen vornehmen und einige Signale hinzufügen müssen. Siehe Bild 5.
Bild 5. TSEND_C-Block
Jetzt benötigen wir ein Signal für REQ und Daten zum Senden und auch zum Konfigurieren der Verbindung. Für das REQ-Signal haben wir ein SendData-Tag erstellt.
Außerdem können wir den Datenblock, den wir im letzten Artikel erstellt haben und den wir an PLC_2 senden müssen, einfach per Drag & Drop auf den DATA-Eingang des Blocks ziehen. Siehe Bild 6.
Bild 6. Konfiguration des TSEND_C-Blocks.
Um die Verbindungsparameter für den Block zu konfigurieren, können wir auf das kleine Konfigurationssymbol oben auf dem Block drücken, um die Konfigurationsansicht zu öffnen.
Die Konfigurationsansicht sieht der des TCON-Blocks sehr ähnlich. Siehe Bild 7.
Bild 7. Verbindungsparameter von TSEND_C
Wir haben bereits in früheren Artikeln gezeigt, wie die Verbindungsparameter konfiguriert werden, also können wir einfach dasselbe tun wie beim TCON-Block, siehe Bild 8.
Bild 8. Konfiguration der Verbindungsparameter
Mit dieser Verbindungskonfiguration haben wir alle Konfigurationen des TSEND_C abgeschlossen. Beachten Sie, wie viel schneller das im Vergleich zur Konfiguration der TCON-, TDISCON- und TSEND-Blöcke ging.
Jetzt müssen wir TRCV_C zu PLC_2 hinzufügen, damit es die von PLC_1 gesendeten Daten empfangen kann. Ziehen Sie im Haupt-OB1 von PLC_1 einfach TRCV_C per Drag & Drop in Ihre Logik. Siehe Abbildung 9. Denken Sie daran, eine Dateninstanz für den TRCV_C-Block zu erstellen.
Abbildung 9. TRCV_C hinzufügen
Sobald TRCV_C zu Ihrer Logik hinzugefügt wurde, müssen wir es konfigurieren. Wie bei TSEND_C müssen wir ein Signal hinzufügen, um den Datenempfang zu aktivieren, und wir müssen auch den Datenblock hinzufügen, in dem wir die Daten speichern werden. Siehe Abbildung 10.
Abbildung 10.TRCV_C
Wir haben ein RecieveData-Tag als EN_R-Signal definiert. Siehe Bild 11.
Bild 11. EN_R-Tag definieren
Denken Sie daran, die Option „optimierter Blockzugriff“ des Datenblocks zu deaktivieren, sonst funktioniert der Block nicht, wie wir in den letzten Artikeln gezeigt haben.
Als nächstes müssen wir die Verbindungsparameter des TRCV_C-Blocks konfigurieren, wie wir es mit dem TSEND_C getan haben. Denken Sie nur daran, dass die nicht angegebene Partner-SPS jetzt die PLC_1 ist, siehe Bild 12.
Bild 12. Verbindungsparameter von TRCV_C
SPS-Projektsimulation
Nachdem wir nun den TSEND_C- und TRCV_C-Block konfiguriert haben, möchten wir unser Projekt simulieren und sehen, wie sie funktionieren. Zuerst erstellen wir jedoch eine einfache Logik, um die Daten von PLC_1 automatisch zu aktualisieren, die an PLC_2 gesendet werden. Siehe Bild 13.
Bild 13. Einfache Logik zum automatischen Aktualisieren von Daten.
Lassen Sie uns nun eine Simulation für unser Projekt kompilieren und starten. Das Erste, was Sie bemerken werden, ist, dass PLC_1 und PLC_2 sofort versuchen, eine Verbindung herzustellen, da wir TSEND_C und TRCV_C eingerichtet haben. Sie versuchen automatisch, eine Verbindung herzustellen. Deshalb wird eine Verbindung zwischen den beiden SPSen hergestellt. Siehe Abbildung 14.
Abbildung 14. Die Verbindung wird direkt hergestellt.
Wie Sie sehen, wird die Verbindung zwischen den SPSen direkt hergestellt, da der Parameter CONT in TSEND_C und TRCV_C auf TRUE gesetzt ist, was bedeutet, dass der Block automatisch versucht, eine Verbindung mit der Partner-SPS herzustellen. Wir können hier jedes Steuersignal einfügen, um den Verbindungsaufbau zu steuern.
Außerdem können Sie sehen, dass REQ von TSEND_C und EN_R von TRCV_C auf FALSE gesetzt sind, weshalb keine Daten zwischen den SPSen übertragen werden. Siehe Abbildung 15.
Abbildung 15. Keine Datenübertragung zwischen den SPSen.
Wenn das REQ-Signal von TSEND_C auf true gesetzt ist, versucht PLC_1, die Daten zu senden, wartet aber darauf, dass die andere PLC den Datenempfang freigibt, siehe Bild 16.
Bild 16. REQ ist true.
Wie Sie sehen, ist SendData TRUE, aber es wurden keine Daten gesendet, da RecieveData immer noch false ist.
PLC_2 empfängt nur dann Daten von PLC_1, wenn ReceiveData auf true gesetzt ist. Siehe Bild 17.
Bild 17. Daten werden an PLC_2 gesendet
Wie Sie sehen, werden Daten von PLC_1 an PLC_2 gesendet, wenn RecieveData true ist. Sie können jedoch sehen, dass die Daten in den beiden PLCs unterschiedlich sind, da sich die Daten von PLC_1 automatisch gemäß der einfachen Logik ändern, die wir zuvor erstellt haben. Das bedeutet, dass das Signal EN_R die Datenübertragung einmal zulässt. Wenn ich erneut Daten übertragen muss, muss dieses Signal erst falsch und dann wieder wahr werden.
Sehen Sie sich das beigefügte TIA Portal-Projekt an und sehen Sie sich die Datenübertragung zwischen SPSen an.