Step 7 Positionierung Analogwert

Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, dann ist das ist aber falsch eigestellt und passt nicht zum Sensor.
Egal ob der Sensor 4-20mA oder 0-20mA liefert: ich darf immer 0-20mA am Analogeingang einstellen. Wenn der Sensor 4-20mA liefert, dann kann ich den Analogeingang auf 4-20mA oder 0-20mA einstellen - bei 0-20mA nutzt der Sensor halt nicht den ganzen möglichen Bereich. Ich muß nur immer die Skalierung passend dazu wählen, weil ja 4mA je nach Einstellung des Analogeingangs 0 oder 5529 ergeben.

Drahtbruch kann ich auch selber im Programm feststellen, wenn der Sensor 4-20mA liefert, ich aber den Analogeingang auf 0-20mA eingestellt habe. Da werden bloß keine LEDs rot.

Harald
 
So danke schön für die Antworten, ich habe das gelöst mit einer Gerade-Gleichung y= mx+b

X1 = 5530
X2 = 23500

m =0.07234
b = 400

am ende

Ymin = 0.07234 * 0 - 400
YMax = 0.07234 * 27648 - 400
 
Egal ob der Sensor 4-20mA oder 0-20mA liefert: ich darf immer 0-20mA am Analogeingang einstellen. Wenn der Sensor 4-20mA liefert, dann kann ich den Analogeingang auf 4-20mA oder 0-20mA einstellen - bei 0-20mA nutzt der Sensor halt nicht den ganzen möglichen Bereich. Ich muß nur immer die Skalierung passend dazu wählen, weil ja 4mA je nach Einstellung des Analogeingangs 0 oder 5529 ergeben.

Drahtbruch kann ich auch selber im Programm feststellen, wenn der Sensor 4-20mA liefert, ich aber den Analogeingang auf 0-20mA eingestellt habe. Da werden bloß keine LEDs rot.

Harald
Das ist für mich nur akzeptabel wenn ich keine passende Baugruppe habe aber schnell in Betrieb gehen muss,
Später wird's dann ausgetauscht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist für mich nur akzeptabel wenn ich keine passende Baugruppe habe aber schnell in Betrieb gehen muss,
Später wird's dann ausgetauscht.
Wenn Du Zeit hast, jede Anlagenänderung zweimal zu machen... ;)

Wenn man alle (Reserve-)Analogeingänge immer auf 4DMU 0-20mA konfiguriert, dann kann man da im laufenden Betrieb ohne CPU-Stop (fast) jeden beliebigen 20mA-Sensor anschließen und auswerten. Und muß auch keine Rücksicht auf den Nachbarkanal nehmen, wenn 2 Kanäle zusammen konfiguriert werden.

Harald
 
ich habe das gelöst mit einer Gerade-Gleichung y= mx+b

X1 = 5530
X2 = 23500

m =0.07234
b = 400

am ende

Ymin = 0.07234 * 0 - 400
YMax = 0.07234 * 27648 - 400
Warum jetzt absichtlich etwas ungenau rechnen? Und da kommt doch jetzt auch nicht 0 .. 130 raus?
Wie kommst Du auf die 23500, wo kommen die her? Wie passt diese "Lösung" zu den von Dir im Beitrag #1 genannten Zahlen?
Tust Du solange Zahlen und Formeln raten (lassen), bis passende Werte rauskommen?
Die exakte Formel kann man doch herleiten (bzw. gibt es als fertige Skalier-Bausteine).

Wenn Du einen Sensor 4-20mA = 0..160mm hast, und an einen Analogeingang anschließt, der auf 0..20mA eingestellt ist, dann musst Du mit Skalier-Bausteinen (0..27648) so skalieren, als ob es ein Sensor -40..160mm wäre (weil der 0-Wert (4mA) nicht bei Analogwert=0 ist, sondern bei 5530).

Oder rechne es mit der exakten Formel:
y := (AEW - 5530) * (160 - 0) / (27648 - 5530);
oder zusammengezogen (und so in Ganzzahl rechenbar) y := (AEW - 5530) * 160 / 22118;
oder auch noch die 160/22118 zusammengezogen in REAL rechnen: y := (AEW - 5530) * 0.00723393;
AEW ist der Analogeingangswert; die 160 ist der Sensor-Endwert von 0..160mm

Harald
 
Oder rechne es mit der exakten Formel:
y := (AEW - 5530) * (160 - 0) / (27648 - 5530);
oder zusammengezogen (und so in Ganzzahl rechenbar) y := (AEW - 5530) * 160 / 22118;
Da muss man aber auch aufpassen, das so ohne weiteres als Ganzzahl zu rechnen. Denn auf welchem Datentyp die Rechnung ausgeführt ist vom Typ von AEW abhängig. Ist AEW von Typ 16-Bit Integer, dann gibt es einen bei erlaubten Wertebereich von AEW einen Overflow bei der Multiplikation. Klammert man (160 / 22118) dann ergibt das in Ganzzahl eine 0.
 
Korrekt. Deshalb schrieb ich "Ganzzahl" und nicht "INT".

Wenn ich die Formel in AWL umsetze, dann weiß ich, daß ich nach "(AEW - 5530)" in DINT rechnen muss.
Wenn man die Formel in SCL umsetzt, dann muss man dem Compiler mitteilen, daß das in DINT gerechnet werden soll, z.B. L#160 oder DINT#160 schreiben. y := (AEW - 5530) * L#160 / 22118;
Klammert man (160 / 22118), dann muß man die Formel in REAL rechnen.

Harald
 
Zurück
Oben