Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: IFM Analog Modul AC5222 liefert 4000 - 20000 Analogwert

  1. #1
    Registriert seit
    07.06.2008
    Beiträge
    69
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein kleines Problem und sitze etwas auf dem Schlauch.

    Ich habe in einer Anlage ein IFM ASi Analog Modul AC5222. Das ahbe ich neu eingebuden und bekomme auch Werte in die CPU eingelesen. Leider nicht korrekt. Es wurde mir gesagt, dass dieses Modul (4 - 20mA) 4000-20000 als Anlalogeingangswert liefert ( und nicht 0 - 2764. Jetzt sitzte ich etwas auf dem Schlauch und weiß nicht wie ich dies Scalieren kann. Der FC105 macht ja "nur" 0 - 27648, oder?

    Bitte kann mir jemand helfen?

    Vielen Dank

    Gruß
    Tom
    Zitieren Zitieren IFM Analog Modul AC5222 liefert 4000 - 20000 Analogwert  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von Bösertom Beitrag anzeigen
    Der FC105 macht ja "nur" 0 - 27648, oder?
    Richtig. Du könntest aber HI_LIM und LO_LIM entsprechend "krumm" angeben oder die Skalierung selber in ein paar Zeilen AWL schreiben. Dreisatz hast Du doch sicher auch in der Schule gehabt?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Bösertom (30.05.2011)

  4. #3
    Registriert seit
    07.06.2008
    Beiträge
    69
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    ne - oder vielleicht doch - saß meistens am Fenster!

    Gruß Tom

  5. #4
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Da hat der werte Hr. Vierlagig auch mal einen Beitrag in den FAQ geschrieben, da steht die (sehr komplizierte ) Formel mit erklärung drin.

    Hier der Link




    Edit: Man bin ich heute wieder langsam, oder der Harald is zu schnell
    Geändert von MW (30.05.2011 um 23:07 Uhr)
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

  6. Folgender Benutzer sagt Danke zu MW für den nützlichen Beitrag:

    Bösertom (30.05.2011)

  7. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von Bösertom Beitrag anzeigen
    ne - oder vielleicht doch - saß meistens am Fenster!
    Dein Ansatz sollte etwa so aussehen:

    Code:
    Phys      mA      IFM  Siemens    FC105
    --------------------------------------------
               0        0        0    LO_LIM = ?
      0 kg     4     4000
    100 kg    20    20000    27648    HI_LIM = ?
    Zitat Zitat von MW Beitrag anzeigen
    Edit: Man bin ich heute wieder langsam, oder der Harald is zu schnell
    Ich hab' die Frage nur zufällig eher gesehen. Du hast sogar noch den FAQ-Link rausgesucht - das dauert halt eine Minute länger.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #6
    Registriert seit
    24.05.2005
    Ort
    Westmünsterland
    Beiträge
    214
    Danke
    8
    Erhielt 45 Danke für 37 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So nun ein kleines Programm zum scalieren:
    Code:
    FUNCTION FC105 : WORD
    TITLE =SCALING VALUES
    //Beschreibung
    //
    //Die Funktion Werte skalieren (SCALE) wandelt einen ganzzahligen Wert (IN) in 
    //einen Realzahlenwert um, der in physikalischen Einheiten zwischen einem unteren 
    //und einem oberen Grenzwert (LO_LIM und HI_LIM) skaliert wird. Das Ergebnis wird 
    //in den Parameter OUT geschrieben. Die Funktion SCALE arbeitet mit der folgenden 
    //Gleichung:
    //
    //OUT = [ ((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
    //
    //
    //Es wird angenommen, daß der ganzzahlige Eingabewert zwischen 
    //LO_IN_INT und HI_IN_INT liegt, deshalb sind K1 = LO_IN_INT und K2 =HI_IN_INT
    //
    //Siemens -10V - +10V =  Eingabewert zwischen -27648 und 27648 
    //Lenze DP            =  Eingabewert zwischen -16348 und 16348
    //
    //Ist der ganzzahlige Eingabewert größer als K2, dann wird der Ausgang (OUT) an 
    //HI_LIM gebunden und ein Fehler ausgegeben. Ist der ganzzahlige Eingabewert 
    //kleiner als K1, dann wird der Ausgang an LO_LIM gebunden und ein Fehler 
    //ausgegeben.
    //
    //Zum umgekehrten Skalieren wird LO_LIM > HI_LIM programmiert. Beim umgekehrten 
    //Skalieren verringert sich der Ausgabewert, während der Eingabewert zunimmt.
    AUTHOR : Si
    FAMILY : Analog
    NAME : SCALE
    VERSION : 1.0
    
    
    VAR_INPUT
      IN : INT ;    // input value to be scaled
      HI_IN_INT : INT ;    //upper limit in input
      LO_IN_INT : INT ;    //lower limit in input
      HI_LIM : REAL ;    // upper limit in engineering units
      LO_LIM : REAL ;    // lower limit in engineering units 
    END_VAR
    VAR_OUTPUT
      OUT : REAL ;    // result of the scale conversion
    END_VAR
    VAR_TEMP
      IN_REAL : REAL ;    // input value as a REAL number
      K1 : REAL ;    // low limit for input value
      K2 : REAL ;    // high limit for input value
      SPAN : REAL ;    // HI_LIM - LO_LIM
      TEMP1 : REAL ;    // temporary result
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
    // convert input HI_IN_INT and LO_IN_INT to real
          L     #LO_IN_INT; //   K1=LO_IN_INT
          ITD   ; 
          DTR   ; 
          T     #K1; //     .
    
          L     #HI_IN_INT; // K2=HI_IN_INT
          ITD   ; 
          DTR   ; 
          T     #K2; //   .
    //
    // convert input (IN) to real
    //
          L     #IN; // ACC1=IN
          ITD   ; // convert to double integer 
          DTR   ; // convert to real
          T     #IN_REAL; // IN_REAL-IN as a real
    //
    // determine SPAN = HI_LIM - LO_LIM
    //
          L     #HI_LIM; // 
          L     #LO_LIM; // .
          -R    ; // .
          T     #SPAN; // .
    
    
          L     #IN_REAL; // 
          L     #K1; //   .
          >=R   ; //   .
          SPB   EL02; // 
          L     8; //   
          T     #RET_VAL; //     .
          L     #LO_LIM; //     ACC1=LO_LIM
          T     #OUT; //   OUT=ACC1
          SPA   FAIL; //   error
    EL02: POP   ; // } else {
          L     #K2; //   if(IN_REAL>K2)
          <=R   ; //     .
          SPB   EI04; //   {
          L     8; //     error
          T     #RET_VAL; //       .
          L     #HI_LIM; //       ACC1=HI_LIM
          T     #OUT; //     OUT=ACC1
          SPA   FAIL; //     error
    EI04: NOP   0; //   }
          NOP   0; // }
    //
    // scale the input
    //
          L     #K2; // TEMP1=K2-K1
          L     #K1; //   .
          -R    ; //   .
          T     #TEMP1; //   .
          L     #IN_REAL; // IN_REAL-K1
          L     #K1; //   .
          -R    ; //   .
          L     #TEMP1; // divide by TEMP1
          /R    ; //   .
          L     #SPAN; // multiply by SPAN
          *R    ; //   .
          L     #LO_LIM; // add LO_LIM
          +R    ; //   .
          T     #OUT; // OUT=scale(IN_REAL)
    //
    // set BR bit : no error-set BR bit to 1; with error-set BR bit to 0.
    //
          L     0; // return error code 0
          T     #RET_VAL; 
          SET   ; // RLO = 1 (NO ERROR)
          SPA   SVBR; // 
    FAIL: CLR   ; // RLO = 0 (ERROR)
    SVBR: SAVE  ; // BR = RLO
    END_FUNCTION
    IN = PEW XXX
    HI_IN_INT = 20000 INT
    LO_IN_INT = 4000 INT
    HI_LIM = deine maximale Ausgangsgröße REAL
    LO_LIM = deine minimale Ausgangsgröße REAL
    RET_VAL = Fehler WORD
    OUT= Ausgangswert REAL

    Gruß Per
    Geändert von Per (31.05.2011 um 10:57 Uhr) Grund: @ Bösertom : Nun kann man die Quelle direkt einfügen
    Suche nicht nach Fehlern, suche nach Lösungen. [Henry Ford]

Ähnliche Themen

  1. Analogwert verarbeiten S5/analog PT100
    Von spspfuscher im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 24.10.2017, 13:28
  2. Antworten: 0
    Letzter Beitrag: 30.05.2011, 22:35
  3. Suche S5 Analog Output Modul
    Von -Andreas- im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 26.09.2008, 09:14
  4. 4000
    Von IBN-Service im Forum Stammtisch
    Antworten: 5
    Letzter Beitrag: 04.02.2008, 07:15
  5. DINT in REAL Bereich 0 bis 4000
    Von Jim Knopf im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 20.09.2006, 09:33

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •