Erstellen eines FBs in der zweiten SPS, welcher als einfacher Proxy diese Funktionalität dort ebenfalls anbietet
- 1. Legen Sie eine SPS an und fügen Sie dort einen neuen Funktionsbaustein an.
- Dieser Proxy-Baustein soll die Funktionalität bereitstellen, welche in der ersten SPS programmiert wurde. Dies kann er über einen Schnittstellenzeiger vom Typ der globalen Schnittstelle I_Calculation.
- 2. Deklarieren Sie im Deklarationsteil des Funktionsbaustein als Ausgang einen Schnittstellenzeiger auf die globale Schnittstelle, welche später die Funktionalität nach außen bereitstellt.
- 3. Legen Sie zudem die Objekt-ID und die Schnittstellen-ID als lokale Membervariablen an.
Während die Schnittstellen-ID über eine globale Liste bereits verfügbar ist, wird die Objekt-ID über eine Verknüpfung im Prozessabbild zugewiesen. - 4. Implementieren Sie den SPS Proxy-Baustein. Zuerst fügen Sie dem Baustein die Methode GetInterfacePointer() hinzu.
Der Schnittstellenzeiger wird auf die spezifizierte Schnittstelle des spezifizierten TcCOM-Objektes mit Hilfe der Funktion FW_ObjMgr_GetObjectInstance() geholt. Dies wird nur ausgeführt, wenn die Objekt-ID gültig und der Schnittstellenzeiger nicht bereits zugewiesen ist. Das Objekt selbst zählt einen Referenzzähler hoch. - 5. Es ist zwingend notwendig die verwendete Referenz wieder freizugeben. Rufen Sie hierzu die Funktion FW_SafeRelease() im FB_exit Destruktor des Bausteines auf.
- Damit ist die Implementierung des Proxy-Funktionsbausteines bereits abgeschlossen.
- 6. Instanziieren Sie in der Applikation den Proxy-Funktionsbaustein FB_CalculationProxy und rufen Sie dessen Methode GetInterfacePointer() auf, um einen gültigen Schnittstellenzeiger zu erhalten.
Zum Aufruf der über die Schnittstelle bereitgestellten Methoden wird in der Applikation eine Instanz des Proxy-Bausteines deklariert. Die Aufrufe selbst finden alle über den als Ausgang des Bausteines definierten Schnittstellenzeiger statt. Wie bei Zeigern typisch muss eine Überprüfung auf Null vorausgehen. Daraufhin können die Methoden, auch mittels Intellisense, direkt aufgerufen werden.
- Das Beispiel ist bereit zum Test.
Reihenfolge irrelevant In welcher Reihenfolge die zwei SPS später starten, ist bei dieser Implementierung irrelevant. |