Verwendung der Programmierschnittstelle
Wie in der Technischen Einführung beschrieben, kann ein Stream mit Hilfe von Strukturiertem Text aus dem SPS-Code gestartet und gestoppt werden. Hierzu stellen die Streams eines Daten-Loggers, bei denen es sich um TcCom-Objekte handelt, eine Schnittstelle namens ITcAnalyticsStream mit zwei Methoden, StartAnalyticsStream() und StopAnalyticsStream() bereit. Befolgen Sie zur Verwendung der Schnittstelle die folgenden Schritte, wobei auch die Codebeispiele hilfreich sein können:
Deklarieren Sie eine Variable vom Typ ITcAnalyticsStream und eine andere vom Typ OTCID für die Objekt-ID des entsprechenden Streams. Für Diagnosezwecke empfiehlt sich eine HRESULT-Variable.
HR : HRESULT := S_OK;
{attribute 'tcinitsymbol'}
oidPlcStream1 : OTCID;
ipPlcStream1 : ITcAnalyticsStream;
Als Nächstes fügen Sie das Attribut ‘tcinitsymbol’ über der OTCID-Variablen hinzu. Auf diese Weise muss es nicht statisch im Quellcode initialisiert werden, sondern wird stattdessen zur Konfigurationszeit initialisiert, indem der SPS-Instanzknoten im Projektbaum doppelt angeklickt wird und der jeweilige Stream in der Combobox wie im folgenden Bild dargestellt ausgewählt wird.
![Verwendung der Programmierschnittstelle 1:](Images/png/6904613387__Web.png)
Anschließend erstellen Sie einen Interface Pointer mit Hilfe der TcCom-Objekt-Servermethode und der IID der Schnittstelle.
IF ipPlcStream1 = 0 AND oidPlcStream1 <> 0 THEN
HR := FW_ObjMgr_GetObjectInstance(oidPlcStream1, IID_ITcAnalyticsStream, ADR(ipPlcStream1));
END_IF
Nun können Sie mit dem Interface Pointer die Methoden der Schnittstelle aufrufen, wie im folgenden Beispiel dargestellt:
IF ipPlcStream1 <> 0 THEN
IF bStartPlcStream1 THEN
ipPlcStream1.StartAnalyticsStream();
bStartPlcStream1 := FALSE;
END_IF
IF bStopPlcStream1 THEN
ipPlcStream1.StopAnalyticsStream();
bStopPlcStream1 := FALSE;
END_IF
END_IF
Der Stream wird in demselben Zyklus gestartet, in dem StartAnalyticsStream() aufgerufen wird, und enthält die geloggten Variablenwerte. Der Stream wird in demselben Zyklus gestoppt, in dem StopAnalyticsStream() aufgerufen wird, enthält jedoch nicht die Variablenwerte dieses Zyklus.
Im Abschnitt „Beispiele“ dieser Dokumentation finden Sie ein Beispielprogramm, dass die hier dargestellten Code-Ausschnitte enthält.