Beispiel

Dieses Beispiel bietet eine Einführung in die Handhabung des Funktionsbausteines FB_SPA welcher mit der TwinCAT Solar Position Algorithm Bibliothek zur Verfügung steht.

Ziel ist in diesem Beispiel den Sonnenstand am 04.März 2010 um 14:27:00 Uhr an der Cheops Pyramide in Ägypten herauszufinden.
Zeitzone: UTC + 2 Stunden
Latitude, Breitengrad:     29,979, [°]
Longitude, Längengrad: 31,134 [°]
Höhe: 70 [m]
Jahresdurchschnittstemperatur: 21,7 [°C]
Die Abfrage anderer Standorte und Zeiten findet analog zu diesem Beispiel statt.
 

Übersicht

Folgende Schritte werden nun durchgeführt:

1. Installation der PLC Bibliothek

2. Programmstruktur

3. Test

1. Installation der PLC Bibliothek

Starten Sie TwinCAT PLC Control.

Mit 'Datei > Neu' legen Sie ein neues PLC/SPS Projekt an.

Wählen Sie Ihre Zielplattform PC und CX (x86) oder CX (ARM).

Ihre erste POU ist ein Programm namens MAIN und in der Programmiersprache ST (Strukturierter Text).

Öffnen Sie den Karteireiter Ressourcen und den Bibliotheksverwalter.

Fügen Sie wie im Bild unten dargestellt mit 'Einfügen > Weitere Bibliothek' die Bibliothek TcSPA.lib ein.

Beispiel 1:

Jetzt stehen Ihnen alle SPS Bausteine der TwinCAT PLC SPA Bibliothek zur Verfügung. Alle weiteren implizit benötigten Bibliotheken wurden automatisch mit der TcSPA.lib eingebunden.

 

2. Programmstruktur

Zur Durchführung der Sonnenstandsberechnungen deklarieren Sie eine Instanz des Funktionsbausteines FB_SPA.
Ebenso deklarieren Sie für die Zuweisung der benötigten Ergebniswerte lokale Variablen.

Die Eingangsparameter der Berechnung können den Eingängen des Funktionsbausteines direkt zugewiesen werden.
Weil neben den Sonnenstandswinkeln auch der Sonnenaufgang und -untergang ausgegeben werden soll, benötigen Sie den erweiterten Funktionsumfang und geben dies mit dem Enumerationswert eSPA_ZA_RTS des Types E_SPA_FunctionCode an.
Ihren lokalen Variablen werden die Ausgangswerte des Funktionsbausteines zugewiesen.

Der Programmteil sollte nun folgendermaßen aussehen:

PROGRAM MAIN
VAR
    fbSPA       : FB_SPA;
    fSunZenith      : LREAL;
    fSunAzimuth     : LREAL;
    tSunrise        : TIME;
    tSunset     : TIME;
    eErrorCode      : E_SPA_ErrorCode;
    bExecute        : BOOL;
END_VAR
fbSPA.stTime.iYear          := 2010;
fbSPA.stTime.iMonth     := 3;
fbSPA.stTime.iDay           := 4;
fbSPA.stTime.iHour          := 14;
fbSPA.stTime.iMinute    := 27;
fbSPA.fTimezone     := 2;
fbSPA.fLongitude        := 31.134;
fbSPA.fLatitude     := 29.979;
fbSPA.fElevation        := 70;
fbSPA.fTemperature          := 21.7;
fbSPA.eFunction     := eSPA_ZA_RTS;

IF bExecute THEN
    fbSPA();
    eErrorCode      := fbSPA.iErrorCode;

    fSunZenith      := fbSPA.fZenith;
    fSunAzimuth     := fbSPA.fAzimuth;
    tSunrise        := LREAL_TO_TIME(fbSPA.fSunrise*60*60*1000);
    tSunset     := LREAL_TO_TIME(fbSPA.fSunset*60*60*1000);
END_IF

 

Wie im Kapitel Visualisierung beschrieben, können Sie die in der Bibliothek enthaltene Visualisierung Ihrem Projekt hinzufügen. Den Platzhaltern weisen Sie, wie im Screenshot dargestellt, Ihre zuvor deklarierten Variablen zu.

Beispiel 2:

 

3. Test

Kompilieren Sie das erstellte PLC-Programm.
Stellen Sie sicher, dass sich TwinCAT auf dem gewählten Zielsystem im Run Modus befindet.
Führen Sie von TwinCAT PLC Control aus einen Login auf dem gewünschten Laufzeitsystem durch. Starten Sie das SPS-Programm.

Indem Sie die lokale Variable bExecute auf TRUE setzen, wird die Berechnung ausgeführt. Dies ist beispielsweise über 'online write' oder den Button in der Visualisierung möglich.
Die Visualisierung sollte Ihnen nun folgende Ergebnisse präsentieren:

Beispiel 3:

Auf analoge Weise lassen sich die Sonnenstandswinkel anderer Standorte zu anderen Zeiten innerhalb der gegebenen Wertebereiche berechnen. Sollte ein Eingangsparameter ungültig sein, so wird an eErrorCode der entsprechende Enumerationswert des Fehlers angezeigt.

 

Zum Speichern dieses Beispielprogramms hier klicken:
TcPlcSPA_Sample.zip.

 

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.10 Build >= 1320

PC oder CX (x86, ARM)

TcSPA.Lib