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.
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.
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:
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 |