TcCOM_Sample01_PlcToPlc
Dieses Beispiel beschreibt eine TcCOM-Kommunikation zwischen zwei SPS.
Funktionalitäten, die von einem Funktionsbaustein in der ersten SPS (im Beispiel auch „Provider“ genannt) bereitgestellt werden, werden aus der zweiten SPS (im Beispiel auch „Caller“ genannt) heraus aufgerufen. Dazu muss der Funktionsbaustein oder dessen Programmcode nicht kopiert werden, sondern es wird direkt mit der Objektinstanz, die sich in der ersten SPS befindet, gearbeitet.
Beide SPS müssen sich in einer TwinCAT-Laufzeit befinden. Ein Funktionsbaustein bietet hierbei seine Methoden über eine global definierte Schnittstelle systemweit an und stellt selbst ein TcCOM-Objekt dar. Wie jedes TcCOM-Objekt wird auch ein solcher Funktionsbaustein zur Laufzeit im Knoten TcCOM Objects gelistet.
Die Vorgehensweise wird in folgenden Unterkapiteln erläutert:
- Erstellen eines FBs in der ersten SPS, der seine Funktionalität global bereitstellt
- Erstellen eines FBs in der zweiten SPS, der als einfacher Proxy diese Funktionalität dort ebenfalls anbietet
- Ausführung des Beispielprojektes
Download des Beispiels: TcCOM_Sample01_PlcToPlc.zip
Race Conditions bei Multi-Tasking (Multi-Threading)-Verwendung Der Funktionsbaustein, der seine Funktionalität global zur Verfügung stellt, wird in der ersten SPS instanziiert. Dort kann er wie jeder Funktionsbaustein verwendet werden. Wenn er außerdem aus einer anderen SPS (oder bspw. einem C++ Modul) verwendet wird, achten Sie darauf, dass die angebotenen Methoden thread-sicher sind, da die verschiedenen Aufrufe je nach Systemkonfiguration zeitgleich aus unterschiedlichen Taskkontexten erfolgen oder sich gegenseitig unterbrechen könnten. In diesem Fall dürfen die Methoden nicht auf Membervariablen des Funktionsbausteins oder globale Variablen der ersten SPS zugreifen. Sollte dies zwingend notwendig sein, beugen Sie einem zeitgleichen Zugriff vor. Beachten Sie die Funktion TestAndSet() aus der Tc2_System Bibliothek. |
Systemvoraussetzungen
TwinCAT Version | Hardware | Einzubindende Bibliotheken |
---|---|---|
TwinCAT 3.1, Build 4020 | x86, x64, ARM | Tc3_Module |