Step 7 Positionierung Analogwert

ymani

Level-2
Beiträge
114
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe ein analogsensor und wird fest skaliert von 0-160mm bei (4mA-20mA), aber ich fahre nur von 0-130mm und ich darf nicht die Skalierung ändern (Empfehlung Hersteller)

bitte das Bild gucken

ich habe eine Taste (130mm) und eine Taste (0mm) gebaut um bei fahren hin und her zu positionieren,

aber wenn ich fahre auf Null bleibt meine istwert auf 1mm und/oder 132mm

ich möchte jetzt wenn ich die Taste (0mm) drucke dass die Istwert 0 mm auch zeigt, und/oder wenn ich die Taste (130m) drucke dass die ist wert auch 130mm geanu zeigt.

bitte um hilfe ;)

Scale.png
 
Misst der Sensor ungenau oder ist die Stop-Position des Dings, was da fährt, tatsächlich nicht genau "auf dem Punkt"?
Wie erhält das Ding die Zielposition, wie wird es vor/an der Zielposition gestoppt?
Was für ein Sensor ist das denn?
Warum darf die Skalierung nicht geändert werden? Man wird doch wohl noch einen Sensor kalibrieren dürfen...

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht schreibst du mal was verfährt und wie du das verfährst ...
So, mein Weglänge ist nur 130mm was ich fahre (Hubzylinder Container)
der Sensor laut Hersteller ambesten fährt gut mit einer Scale von 0-160mm (was entspricht 0 - 27648)

und händig wird gefahren auf (Hubweg) von 130mm (mein weglänge) aber istwert zeigt 131mm
da sollte ich diesen istwert auf 130mm korregieren, aber ich weiss nicht wie

anderes gefahren wird auf unterfahren (Hubweg) auf 0mm fahren, aber der istwert zeigt 1mm
da sollte ich diesen istwert auf 0mm korregieren , aber ich weiss auch nicht wie

ich wollte fragen, ob ich diesen Peri-Wert einmalig überschreiben kann , ich meine wenn ich 131mm habe gemessen ist fast 22600
also wenn ich die taste drucke will das der Peri-Wert 22500 was 130mm entspricht.
 
Misst der Sensor ungenau oder ist die Stop-Position des Dings, was da fährt, tatsächlich nicht genau "auf dem Punkt"?
Wie erhält das Ding die Zielposition, wie wird es vor/an der Zielposition gestoppt?
Was für ein Sensor ist das denn?
Warum darf die Skalierung nicht geändert werden? Man wird doch wohl noch einen Sensor kalibrieren dürfen...

Harald

Misst der Sensor ungenau oder ist die Stop-Position des Dings, was da fährt, tatsächlich nicht genau "auf dem Punkt"?
wir gehen davon aus dass das Ding was da fährt, tatsächlich nicht genau "auf dem Punkt" ist

Wie erhält das Ding die Zielposition, wie wird es vor/an der Zielposition gestoppt?
Hubzylinder Steuerung hoch und unterfahren, bei einer weglänge von 0-130mm

Was für ein Sensor ist das denn?
Sensor.jpeg
Warum darf die Skalierung nicht geändert werden? Man wird doch wohl noch einen Sensor kalibrieren dürfen...
laut Hersteller, sagte er misst geanuer bei einer skalierung von 0-160mm
 
Möglicherweise gibts in der Steuerung/Anzeige ein Rundungsproblem. Dem wirst Du mit Änderung der Skalierung auch nicht beikommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Fährt der Zylinder zwischen zwei mechanischen Anschlägen hin und her und kann gar nicht weiter fahren? Kannst Du den Sensor um 1mm verschieben, so daß er bei der 0-Position auch 0 anzeigt? Dann sollte er am anderen Ende 130 anstatt jetzt 131 anzeigen. Oder Du machst nach der Skalierung mathematisch eine Nullpunkt-Verschiebung (Referenz), indem Du 1mm subtrahierst.
Wie wird die Skalierung 0..27648 nach 0..160 gerechnet?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
laut Hersteller, sagte er misst geanuer bei einer skalierung von 0-160mm
Und Skalierung in der SPS (mit kleiners bereich an Eingangswort) geht auch auf die genauigkeit.

Du kannst / solltest das Eingangswort selber skalieren.
Angezeigte Digit bei 0 ist dein Range_LLM
Angezeigte Digit bei 130 ist dein Range_HLM

Code:
FUNCTION "Scale_Free_INT" : Void
TITLE = Scale_Free_INT
{ S7_Optimized_Access := 'TRUE' }
AUTHOR : 'x'
FAMILY : Scale
VERSION : 17.0
//Free Scale of Integer
   VAR_INPUT
      EW_Range_LLM : Int;   // Low Limit EW
      EW_IN : Int;   // INPUT EW
      EW_Range_HLM : Int;   // High Limit EW
      Range_HLM : Real;   // HIGH Limit Measure Range
      Range_LLM : Real;   // LOW Limit Measure Range
   END_VAR

   VAR_OUTPUT
      Actual_Value : Real;   // Actual Value
   END_VAR

   VAR_TEMP
      EW_REAL_Range_LLM : Real;   // Low Limit EW
      EW_REAL_IN : Real;   // INPUT EW
      EW_REAL_Range_HLM : Real;   // High Limit EW
   END_VAR


BEGIN
    #EW_REAL_IN        := INT_TO_REAL(#EW_IN);
    #EW_REAL_Range_HLM := INT_TO_REAL(#EW_Range_HLM);
    #EW_REAL_Range_LLM := INT_TO_REAL(#EW_Range_LLM);
    
    #Actual_Value := (#EW_REAL_IN - #EW_REAL_Range_LLM)
                  / ((#EW_REAL_Range_HLM - #EW_REAL_Range_LLM) / 100.0)
                  * ((#Range_HLM - #Range_LLM) / 100.0)
                  +   #Range_LLM;
END_FUNCTION
 
Warum hast du bei einer Einstellung von 4-20mA bei 4mA 5632? Normalerweise sind 4mA = 0 und 20 mA = 27648.
Hast du die Analogkarte korrekt eingestellt und die Skalierung korrekt umgesetzt?
Ja, ich habe diese Werte einfach an der Anlage eingelesen, wo die Istwert mir 0 mm angezeigt war den Peri-Wert 5632
 
Warum hast du bei einer Einstellung von 4-20mA bei 4mA 5632? Normalerweise sind 4mA = 0 und 20 mA = 27648.
Hast du die Analogkarte korrekt eingestellt und die Skalierung korrekt umgesetzt?
Wird so sein. Wenn ich einen Sensor von 4-20mA habe darf der nicht 5632 bei 4mA anzeigen.

Wenn ich im mm Bereich positionieren will, muss ich mindestens mit einer 10 fach größeren Aulösung arbeiten, also 1/10 mm Auflösung.
Laut dem Datenblatt kann der Geber doch 0,05mm Auflösung.
 
ich möchte eine mathematische Formel wo ich die Werte 1mm auf 0mm wenn ich die taste drucke nur einmalig
und auch die 131mm will ich auf 130mm korrigieren
Wenn du dir unbedingt etwas murksen willst, bevor du den eigentlichen Fehler gefunden hast, dann mach doch eine einfache Offsetermittlung via Button „Nullstellen“ im HMI. Mit dem Button errechnest du dir dann ganz einfach deinen Offset und hast immer genullt.
Somit hättest du einen Offset von -1 und einen Anzeigewert von 0-130, statt 1-131. Eine komplizierte Formel braucht man hierfür auch keine.

Aber das behebt deinen Fehler in der Analogkarte nicht, denn bei 4-20mA ist ein Wert vom 5632 bei 4mA definitiv falsch und macht dir im Prozess nur Probleme, weil dein Messtaster keine korrekten. Werte ausgibt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
WERT = U_GRENZ + A_EING * (O_GRENZ-U_GRENZ)/27648
Rechnet das mit Ganzzahlen? Stelle sicher, daß die Berechnung mit REAL ausgeführt wird.

Genauigkeit 0.3% des Sensors sind schon mal 0.48mm. Dazu kommt noch die Genauigkeit des Analogeingangs - was für einen Analogeingang (Hardware) verwendest Du?

Die in Deinem Diagramm angegebenen Werte 5632 und 23680 sind die Werte, die Dein SPS-Analogeingang an den beiden Positionen liefert? Das ist im Rahmen der Genauigkeit von Sensor und Analogeingang durchaus normal. z.B. 5632 entspricht 4.07mA

Wie ich in #9 schon schrieb, zuerst die mechanische Position des Sensors kontrollieren, ggf. exakt justieren. Dann "referenziere" den Nullpunkt und subtrahiere vom skalierten Ergebniswert den Wert, der bei der 0-Position rauskommt. Das dürfte ca 1.0 sein. Da würden sich die erwarteten Werte 0...130 ergeben.

Harald
 
Die in Deinem Diagramm angegebenen Werte 5632 und 23680 sind die Werte, die Dein SPS-Analogeingang an den beiden Positionen liefert? Das ist im Rahmen der Genauigkeit von Sensor und Analogeingang durchaus normal. z.B. 5632 entspricht 4.07mA


Harald
ja, bei einem 0-20mA Sensor. Der TE hat 4-20mA angegeben.
 
ja, bei einem 0-20mA Sensor. Der TE hat 4-20mA angegeben.
Nein. Das hat mit dem Sensor nichts zu tun, sondern wie der Analogeingang konfiguriert ist. Wenn der Analogeingang bei ca. 4mA ungefähr 5529 oder 5632 liefert, dann ist er offensichtlich auf 0-20mA eingestellt.

Harald
 
Zurück
Oben