# Frage zu Wago 750-559 (Programmierung!)



## beggabem (4 Dezember 2016)

Mahlzeit zusammen,

bin momentan am verzweifeln.. Ich muss eine Lüftungssteuerung mit diversen Analogausgangs bzw Eingangskarten programmieren, z.B. die 750-559 AO.
Diesbezüglich muss ich darauf hinweisen, dass ich Neuling bin und alles quasi in CFC schreibe.

Soweit so Gut. Zum Eigentlichen Problem: Wie kann ich eine Programmierung schreiben, mit der ich diese 0-10V Geschichte der Analogkarten steuern kann? Es wird ja quasi ein Wert von Typ WORD rausgegeben. In der HVAC03 Lib von Wago finde ich leider nix entsprechendes. Die Karten dienen zur Sollwertanpassung, sprich Aussentemperatur zu niedrig = Heizventil auffahren und zu geringe Luftmenge = Frequenzumrichter Drehzahl erhöhen.

Vielen Dank im vorraus und einen schönen Sonntag noch


----------



## holgermaik (4 Dezember 2016)

> mit der ich diese 0-10V Geschichte der Analogkarten steuern kann? Es wird ja quasi ein Wert von Typ WORD rausgegeben


Als erstes benötigst du das Datenblatt der Klemme. Dort steht welcher Wert welchem analogen Ausgang entspricht.
Jetzt musst du deinen Wert entsprechend scalieren und fertig. https://de.wikipedia.org/wiki/Dreisatz
Dazu ist kein Baustein aus irgend einer Lib notendig.
Holger


----------



## beggabem (4 Dezember 2016)

Das mit der Umrechnerei ist mir klar und auch kein Problem. Jediglich die dazu gehörige Verknüpfung um den Stellwert zu ändern nicht. Da bleibt bei mir 0=0


----------



## wolfi-sps (4 Dezember 2016)

Hallo beggabem,

in der Lib HVAC03 ist eigendlich alles drin was du braucht. 
Die Variablen hast Du deklariert?

Z.B.    Stellsingnal_HZ_Ventil      AT    %QW0     :WORD;    (*    Ansteuerung Heizungsventil         *)

oder für den Vorlauffühler     

z.B.       Vorlauffühler   At %IW0 :Word;    (* Vorlauffühler*)

Wolfgang


----------



## Dr.MirakulixX (4 Dezember 2016)

Wenn das mit dem skalieren kein Problem darstellt verstehe ich dein Problem jetzt gerade wohl nicht genau. 
Du skalierst deinen Wert wie auch immer du ihn haben musst. 
Ob Prozent, Volt oder Eier ist erstmal egal. 
Wichtig ist nur das der skalierte wert dann auch zugewiesen wird. 
In etwa so. 50% = 16100 somit ist das Ausgangsword deiner Klemme 16100 (Bsp wert)
Wo hakt es denn genau ?


----------



## beggabem (5 Dezember 2016)

Dr.MirakulixX schrieb:


> Wichtig ist nur das der skalierte wert dann auch zugewiesen wird.
> In etwa so. 50% = 16100 somit ist das Ausgangsword deiner Klemme 16100 (Bsp wert)
> Wo hakt es denn genau ?



Das Problem ist, dass ich nicht weiß wie ich den so Programmieren kann, das der Analogausgang auch diese 50% z.B. rausgibt. Da hakt es bei mir. Wie bereits erwähnt, kann ich leider nur CFC Kinderprogrammierung und kein ST.


----------



## holgermaik (5 Dezember 2016)

Als Bespiel mal eine Klemme von 0 - 10V. 0V entspricht dem Wert 0. 10V entspricht dem Wert 7FFF.= 32767.
Ausgegeben werden sollen 2,5V also 25%.

```
Nach dem Dreisatz ergibt sich ein Verhältnis: 0V / 10 V = 0 / 32767
```
Jetzt setzen wir in das Verhältnis unseren Wert:
	
	



```
2,5V / 10 V = X / 32767
```
Die Formel nach x Umstellen;
	
	



```
X = 2,5 * 32767 / 10
```
Ergebnis:
	
	



```
8191 = 1FFF
```
Das wandeln wir in ein Word und weisen es dem Ausgang zu.

Die Schritte lassen sich in jeder Sprache programmieren. Ist mit ST sicherlich am einfachsten aber in CFC genauso machbar
Holger


----------



## beggabem (5 Dezember 2016)

holgermaik schrieb:


> Die Schritte lassen sich in jeder Sprache programmieren. Ist mit ST sicherlich am einfachsten aber in CFC genauso machbar
> Holger



Also quasi einfach nur z.B.: 8191 --> REAL_TO_WORD --->AnalogOutput und die Sache ist gegessen?


----------



## oliver.tonn (5 Dezember 2016)

Hallo beggabem,
wolfi-sps hat eigentlich schon einen Tipp in die richtige Richtung gegeben. Damit Deine Klemme etwas ausgeben, bzw. damit Du Werte von den Klemmen erhälst müssen Deine Variablen auf die Hardware gemappt warden. Dies geschieht bei der Deklaration der Variablen mit dem Zusatz AT %QXYYY für Ausgänge und AT %IXYYY für Eingänge. Das X steht als Platzhalter für den Variablentyp (X = Bool, B = Byte, W = Word, usw.) da kann Dir aber die Doku auch weiterhelfen. Die YYY stehen für die Adresse der Hardware IOs, diese findest Du in der Hardwarekonfig, wobei bei Bool noch das Bit bei der Adresse hinzukommt, dann also AT %QXYYY.Z


----------



## Lebenslang (5 Dezember 2016)

Nimm den "Move" Befehl.
Bei In schreibst du 8191 und bei Out dein Ausgangswort (%AW"XX")


----------



## oliver.tonn (5 Dezember 2016)

Ich hab mal schnell ein Programm erstellt. Es ist zwar mit TwinCAT erstellt, bei WAGO sollte es aber nicht viel anders aussehen.
Am Eingang liegt ein Wert von -32000 - + 32000 an, der einem Messwert von -100 - +100 (z.B. °) enstspricht. Das Signal wird (hoffentlich richtig) skaliert und einer Variable zugewiesen.
Beim Ausgang das Ganze in umgekehrter Richtung.
Die "..._TO_REAL" Bausteine können eventuell weggelassen werden, aber ich hatte schon manchmal das Problem, dass es beim Vermischen von Variablentypen zu seltsamen Effekten kommen kann.


----------



## beggabem (6 Dezember 2016)

Vielen Dank Leute für die Gute und schnelle Hilfe! Mir ist auf jeden Fall geholfen worden!


----------

