umgekehrtes analoges Signal

perez

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Fachmänner!

Ich habe einen Sensor, der mir ein umgekehrtes Signal liefert. D.h. bei Wasserstand 0 bekomme ich 10V und bei Wasserstand max bekomme ich 0V.
Wie soll ich den mein FC105 beschalten?
Außerdem habe ich einen Versatz von ca. 30 Liter. D.h. zu dem, vom Sensor gelieferten Wert muß ich diese 30 L immer hinzuaddieren. Der Sensor arbeitet im Bereich 0 (30)Liter bis 155 (185) Liter. Wie könnte ich diesen Versatz am besten realisieren?
 
so mach ichs bei 4...20mA

Code:
FUNCTION "ANALOG_IN_SM331" : VOID
TITLE =ANALOG INPUT 0..20mA  OR 4..20 mA
//SM 331 0..20mA oder 4..20mA SIGNAL EINLESEN UND SCALIEREN
//0000 --> 0 oder 4 mA   6c00 --> 20 mA  7FFF-->ERROR
AUTHOR : 
FAMILY : 
NAME : SM331
VERSION : 0.1


VAR_INPUT
  PWORD : WORD ;    //EINGANGSWORT Z.B.EW12
  SCALEMAX : REAL ;    //MAX WERT
  SCALEMIN : REAL ;    //MIN WERT
  OFFSET : REAL ;    //OFFSET ZUM CALIBRIEREN
  FORCEWERT : REAL ;    //FORCEWERT
  FORCEBIT : BOOL ;    //FORCE ENABLED
END_VAR
VAR_OUTPUT
  VALUE_R : REAL ;    //SKALIERTER WERT ZUR REGELUNG
  VALUE_V : REAL ;    //SKALIERTER WERT ZUR VISUALISIERUNG
END_VAR
VAR_IN_OUT
  ERROR : BOOL ;    //DRAHTBRUCH MUß QUITTIERT WERDEN
END_VAR
VAR_TEMP
  DELTA : REAL ;    //MAX WERT - MIN WERT
END_VAR
BEGIN
NETWORK
TITLE =

      L     #PWORD; //EINGANGSWORT LADEN
      L     L#32767; //MIT 7FFFhEX VERGLEICHEN  >22.81mA
      <I    ; //VKE AUF TRUE
      =     #ERROR; //FEHLERMELDEBIT RÜCKSETZEN SELBSTQUITTIEREND

      L     #PWORD; //EINGANGSWORT LADEN
      L     -1728; //MIT -1728 DEZ VERGLEICHEN >3mA
      >I    ; 
      U     #ERROR; 
      =     #ERROR; 

      L     #SCALEMAX; //MAX WERT
      L     #SCALEMIN; //MIN WERT
      -R    ; 
      T     #DELTA; //MAX-MIN WERT

      L     #PWORD; //EINGANGSWORT 0..27648
      ITD   ; //IN 32 BIT GANZZAHL WANDELN
      DTR   ; //IN GLEITPUNKTFORMAT WANDELN 
      L     #DELTA; //EINGANGSWORT MIT SKALIERWERT MULTIPLIZIEREN
      *R    ; 
      L     2.764800e+004; //UND DURCH AUFLÖSUNG DIVIDIEREN 27648=20mA
      /R    ; 
      L     #SCALEMIN; //MIN WERT ADDIEREN
      +R    ; 
      L     #OFFSET; //OFFSET ADDIEREN
      +R    ; 
      UN    #FORCEBIT; //FORCEBIT ABFRAGEN
      SPB   GEMP; 
      L     #FORCEWERT; //FORCEBIT GESETZT DANN FORCEWERT EINTRAGEN

GEMP: T     #VALUE_R; //ZUM AUSGANG SCHREIBEN
      T     #VALUE_V; //ZUR VISU SCHREIBEN



END_FUNCTION
nur noch die auflösung angepasst und die drahtbruch-überwachung rausgeknackt, min als max und max als min definiert, offset angelegt, fertig
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Perez,

die Lösung für dein Problem lautet Polygonzug.

Link zu Siemens A&D

Der dort beschriebene Baustein ist allerdings kostenpflichtig. Die Formel dafür
ist aber auf der Seite ersichtlich.

In der Oscat-Library ist bestimmt auch ein passender Baustein enthalten.

Link zu Oscat

Oder ebene selber einen Baustein schreiben. Ist eigentlich gar net so schwer, wenn man mal ein bisschen das Hirn einschaltet und die gute alte Mathematik auspackt - Stichwort

Steigung

Mfg

uncle_tom
 
Hi vierlagig!

Danke für die schnelle Hilfe! So wie ich das sehe, brauche ich gar kein FC105.
Wenn ich die min und max Werte einfach vertausche, bekomme ich aber ein negatives Delta. Muss ich es noch evtl. ins positive umwandeln?
 
Ich habe einen Sensor, der mir ein umgekehrtes Signal liefert. D.h. bei Wasserstand 0 bekomme ich 10V und bei Wasserstand max bekomme ich 0V.

Außerdem habe ich einen Versatz von ca. 30 Liter. D.h. zu dem, vom Sensor gelieferten Wert muß ich diese 30 L immer hinzuaddieren. Der Sensor arbeitet im Bereich 0 (30)Liter bis 155 (185) Liter. Wie könnte ich diesen Versatz am besten realisieren?

Hier mal eine kurze Beispielrechnung:

Code:
[B]Geradengleichung:[/B]
 
X1 =  0 V =     0   Y1 = 185 Liter
 
X2 = 10 V = 27648   Y2 =  30 Liter
 
 
Y - Y1    Y2 - Y1
------- = -------
X - X1    X2 - X1
 
    (X  - X1)
Y = --------- * (Y2 - Y1) + Y1
    (X2 - X1)
 
      (X - 0)
Y = ----------- * (30 Liter - 185 Liter) + 185 Liter
    (27648 - 0)
 
        X
Y = - ----- * 155 Liter + 185 Liter 
      27648

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi vierlagig!

Danke für die schnelle Hilfe! So wie ich das sehe, brauche ich gar kein FC105.
Wenn ich die min und max Werte einfach vertausche, bekomme ich aber ein negatives Delta. Muss ich es noch evtl. ins positive umwandeln?

probier es aus ;) ... durch die addition des min-wertes kommst du wieder ins positive ... glaub ich ... :rolleyes:

[edit]
gerade nochmal getestet und für gut befunden
[/edit]
 
Zuletzt bearbeitet:
angenommen, ich habe ein aktuellen Wert von 5V.
Diesen setze ich in die Formel ein:

y=-5/27648*155+185=184,97 ? :confused:
 
angenommen, ich habe ein aktuellen Wert von 5V.
Diesen setze ich in die Formel ein:

y=-5/27648*155+185=184,97 ? :confused:

Du musst folgendermaßen rechnen:

Code:
 0 V =     0
 
 5 V = 13824
 
10 V = 27648
 
 
Für X = 5 V = 13824 gilt also:
 
 
        X
Y = - ----- * 155 Liter + 185 Liter 
      27648
 
      13824
Y = - ----- * 155 Liter + 185 Liter 
      27648
 
Y = 107,5 Liter

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und hier noch mal der Programmcode in STEP 7:

Code:
          X
  Y = - ----- * 155 Liter + 185 Liter 
        27648

Code:
      L     PEW  288              // 0 bis 10 V entspricht 0 bis 27648 Ganzzahl
      ITD   
      DTR   
      L     2.764800e+004
      /R    
      L     -1.550000e+002
      *R    
      L     1.850000e+002
      +R    
      T     MD    10              // normierter Wert 30 bis 185 Gleitpunktzahl

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst folgendermaßen rechnen:

Code:
 0 V =     0
 
 5 V = 13824
 
10 V = 27648
 
 
Für X = 5 V = 13824 gilt also:
 
 
        X
Y = - ----- * 155 Liter + 185 Liter 
      27648
 
      13824
Y = - ----- * 155 Liter + 185 Liter 
      27648
 
Y = 107,5 Liter
Gruß Kai

Danke Kai,
selbstverständlich kommt hier das Equivalänt rein und nicht die 5V :rolleyes:
Da war ich einfach nicht ganz bei der Sache.
 
Zurück
Oben