TC3: Analog Ausgang - warum funktionert das nicht mit einer Rechnung?

Dominik2010

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich stehe vermutlich einfach nur auf dem Schlauch - würde es aber gerne verstehen (ich bin absoluter Einsteiger, habe leider hier keinen den ich fragen könnte - und nach viel googeln und InfoSys lesen bin ich so weit, dass mein Aufbau funktioniert - nur diese eine Sache geht nicht):

ich will eine Analoge Ausgangsklemme (
MFCs_List.MassFlowController1
) ansteuern, als Wert sollen 2.5V (=8192) ausgegeben werden:

MFCs_List.MassFlowController1 := 8192; <-- funktioniert
MFCs_List.MassFlowController1 := REAL_TO_INT(8192);
<-- funktioniert
MFCs_List.MassFlowController1 := REAL_TO_INT(50/100*0.5*32767);
<-- funktioniert nicht (auch wenn ich nur die Berechnung ohne "REAL_TO_INT" in Klammern habe geht es nicht) :(

Ich habe außerdem eine Visu in TC3 erstellt, dort einen Schiebe-Regler (zugehörige Variable:
Variables_ManualMFC.MFC1_ManualValue)
mit dem ich den gleichen Analogen Ausgang steuern will (dieser Schieber geht von 0 bis 100):
MFCs_List.MassFlowController1 := REAL_TO_INT(Variables_ManualMFC.MFC1_ManualValue /100 *0.5 *32767); <-- funktioniert auch - die Berechnung funktioniert also...

Ich hoffe, dass mir jemand von euch hier weiter helfen kann - wenn ich das mit der Berechnung programmieren kann wäre es besser nachzuvollziehen was eigentlich gemacht wird.
Vielen Dank im Voraus!
Dominik

[SUB][SUP]
[/SUP][/SUB]
 
Was heißt denn bei dir "geht nicht", Ergebnis falsch, wenn ja, welches?

Versuche mal bei der Berechnung auch Real-Konstanten einzusetzen. Vor allem wenn beiden Operanden vom Format her eine Ganzzahlkonstante sind, wird die Operation vermutlich auch in Ganzzahlen ausgeführt.

Also anstatt:
50/100*0.5*32767
dann
50.0/100.0*0.5*32767.0

Was dann hoffentlich der Compiler direkt durch eine 8192 Konstante ersetzt.
Wenn 50/100 mit Ganzzahlen gerechnet wird, dann kommt dort eben eine 0 als Ergebnis heraus.
 
Zurück
Oben