Mit True/False Real - wert zuweisen / Variable doppelt verwenden

Salzburger

Level-1
Beiträge
43
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute, :)

Höchstwahrscheinlich wir das jetzt für die meisten von euch ein Kinderspiel zum Beantworten. Zu meiner Verteidigung beschäftige ich mich aber erst 2 Wochen mit Steuerungen (SPS) und programmieren im allgemeinen^^
Nun zum eigentlichen Problem:

Bei der Berechnung des Steuerwinkels eines Solartrackerst kommt je nach Azimuthwinkel und Tageszeit ein negativer Wert heraus. Ist dies der fall, so muss der wert mit 180 addiert werden. Wie kann ich das in mein Programm integrieren?
(codesys/Fup oder St)

Ich hab das ganze mit LT und GT Bausteinen gelöst und mit einen Funktionsblock auswerten lassen. Jetzt habe ich meine beiden Werte (einmal nur der Steuerwinkel und einmal der Steuerwinkel+180) jedoch weis die Steuerung nicht welchen der beiden werte sie für Steuerwinkel_angepasst verwenden soll, da ich nicht auf einen Ausgang 2 eingänge setzen kann, bei dem nur einer True ist und nur dieser ausgelesen wird.

Mit einer If oder Case Funktion müsste das doch leicht zu machen sein oder?
Ich hab aber keine Ahnung wie ich das richtig hin bekomme :confused:

Mein Ansatz wäre:

Steuerwinkel:Real;
Steuerwinkel_angepasst:Real;

If Steuerwinkel <0 Then;
Steuerwinkel_angepasst := Steuerwinkel + 180;
Else Steuerwinkel_angepasst := Steuerwinkel
End_If

Danke im Voraus für eure Unterstützung

Der Salzburger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei der Berechnung des Steuerwinkels eines Solartrackerst kommt je nach Azimuthwinkel und Tageszeit ein negativer Wert heraus. Ist dies der fall, so muss der wert mit 180 addiert werden. Wie kann ich das in mein Programm integrieren?
(codesys/Fup oder St)
IF-Anweisung in FUP: SEL

Anstatt "IF Steuerwinkel < 0" kann man auch immer 180 zum Steuerwinkel addieren, die Summe durch 180 dividieren und den Divisionsrest dem Steuerwinkel zuweisen.

Harald
 
Hallo Salzburger,

also so wie Du das vogrschlagen hast, müsste das meiner Meinung nach funktonieren, probiers doch einfach mal ;-)

Wenn Du in CFC bleiben willst, kannst Du auch mit dem Baustein SEL arbeiten. Bei dem kannst Du zwei Werte dran schreiben und je nachdem ob true/fals, wird einer der Werte übergeben.
Is in der Standart-Lib und steht auch in der F1-Hilfe drin.

Gruß

Onno

Edit: Mist, Harald war schneller
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nur malso als Anmerkung
Der Sonnenwinkel liegt zwischen 0 und 360°. Wenn dein Wert negativ ist stimmt was nicht.
Bei einer negativen Sonnenhöhe ist es Nacht. In dem Fall macht es keinen Sinn ein Solarpanel zu positionieren.

Ich würde den Tracker nicht von 0 mit +/- Wert positionieren sondern die tatsächlichen Winkel benutzen. Dei Tracker kann sicherlich auch keine 360 Grad fahren.
Somit kannst du den Startwinkel und den Endwinkel gleich als Endlage benutzen. Und brauchst den Sonnenaufgang & Sonnenuntergang nicht zu berechnen.
z.B.
Code:
Endlage_links 20Grad
Endlage_rechts 300Grad
IF Sonnenwinkel > Endlage_links and Sonnenwinkel < Endlage_rechts then
....

Holger
 
Zuletzt bearbeitet:
@holgermatik
Der Steuerwinkel meiner Anlage errechnet sich aus dem Höhenwinkel und dem Azimut. Nachdem ich ihn sowieso berechne verwende ich ihn auch ;)
Du musst wissen das es sich bei der Anlage um ein Parabolkollektor handelt die sich mit Sonnenaufgang aktiviert und unabhängig ob die Sonne scheint oder nicht sich mit dieser mitbewegt. (Hat den Grund weil die Steuerung bei diffusem Licht Störungen hatte)

Aber Danke für die Idee
 
ich muss jetzt mal fragen warum du einfach meine vorgeschlagenen 3 Zeilen ignorierst :ROFLMAO:

If Steuerwinkel <0 Then
Steuerwinkel:= Steuerwinkel + 180;
End_If

Das ist doch genau was du wolltest: wenn unter 0 dann 180 addieren, ansonsten nur den reinen Steuerwinkel. Und du brauchst dafür nur 1 Variable und musst keinen ausgang oder so per SEL oder IF doppelt belegen;)
 
Zurück
Oben