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
Legen Sie ein neues TwinCAT SPS Projekt an und wählen Sie Ihre Zielplattform.
Ihre erste POU ist ein Programm namens MAIN und in der Programmiersprache ST (Strukturierter Text).
Markieren Sie den Knoten References und fügen Sie die SPS Bibliothek Tc2_SPA ein.
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;
bInit : BOOL := TRUE;
END_VAR
IF bInit THEN
bInit := FALSE;
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;
END_IF
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
In diesem Beispiel der TwinCAT Solar Position Algorithm Bibliothek wird eine Visualisierung bereits mitgeliefert, welche eine schnelle Übersicht über die aktuellen Ein- und Ausgänge des Funktionsbausteines FB_SPA liefert. Sie kann somit ideal für Testzwecke genutzt werden.
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:
SPA_InfoSys_Sample1.zip