universal analog baustein

mzva

Level-1
Beiträge
144
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo zusammen,

ich versuche einen analog FC zu basteln der universel einsetzbar ist, d.h.
umschalten absolut(0-65535)/+-wert(+-32767), messwert invertieren, range einstellbar. Vielleicht hat jemand ein paar Tips auf Lager.
Besten Dank schon im voraus.

:rolleyes:
 
Hallo,

ich habe mir mal einen AE-Baustein geschrieben, vielleicht kannst Du ihn ja gebrauchen.

Code:
FUNCTION "FC85 AE_Scale" : WORD
TITLE =Analogwert einlesen und normieren
//Der FC85 "Analogwert einlesen und normieren" unterscheidet sich von Standard 
//FC105 dadurch, dass die Normierung auch bei Über- bzw. Unterschreitung des 
//Nennbereiches noch funktioniert. Es wird nur (ab ca. der Mitte des Über- bzw. 
//Untersteuerungsbereiches) eine Meldung ausgegeben:
//- BIE (Binärergebnis) wird auf "0" gesetzt
//- Ret_Val wird auf W#16#0008 gesetzt (wie bei FC105)
//
//Formel:
//OUT = [((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
//
//K1 bipolar = -27648
//K1 unipolar = 0
//K2 = 27648                   
//K3 = K2-K1         K3 biploar = 0        K3 unipolar = 27648
//
//(c) Peter Wahlen
AUTHOR : Wahlen
NAME : Ana_Ein
VERSION : 1.0
 
VAR_INPUT
  In : INT ; //Analog-Eingang
  max : REAL ; //oberer Grenzwert (bei max. Nennbereicheingang)
  min : REAL ; //unter Grenzwert (bei min. Nennbereicheingang)
  Bipolar : BOOL ; //0=unipolar (0 bis 10V), 1=bipolar (-10 bis +10V)
END_VAR
VAR_OUTPUT
  Out : REAL ; //normierter Analogwert
END_VAR
VAR_TEMP
  K1 : REAL ; //Konstante 1 (unipolar: 0, Bipolar: -27648)
  K3 : REAL ; //Konstante 3 (K2-K1)
  MaxMin : REAL ; //HM Max Grenzwert - Min Grenzwert
  gr_min : INT ; //HM Minimaler Grenzwert
END_VAR
BEGIN
NETWORK
TITLE =Konstanten zur Berechnung setzen
      U     #Bipolar; // Bipolar angewählt
      SPB   bipo; // dann Sprung
      L     0.000000e+000; // K1 auf 0
      T     #K1; 
      L     2.764800e+004; // K3 auf 27648
      T     #K3; 
      L     -2000; // Minimaler Grenzwert auf -2000
      SPA   kon3; 
bipo: L     -2.764800e+004; // K1 auf -27648
      T     #K1; 
      L     0.000000e+000; // K3 auf 0
      T     #K3; 
      L     -30000; // Minimaler Grenzwert auf -30000
kon3: T     #gr_min; // Minimaler Grenzwert setzen
NETWORK
TITLE =Eingangswert normieren
      L     #max; // HM Max Grenzwert - Min Grenzwert
      L     #min; 
      -R    ; 
      T     #MaxMin; 
      L     #In; // Eingangswert nach Real wandeln
      ITD   ; 
      DTR   ; 
      L     #K1; 
      -R    ; 
      L     #K3; 
      /R    ; 
      L     #MaxMin; 
      *R    ; 
      L     #min; 
      +R    ; 
      T     #Out; 
NETWORK
TITLE =Grenzwertüberprüfung
      U(    ; 
      L     30000; // Obergrenze
      L     #In; 
      >I    ; 
      )     ; 
      U(    ; 
      L     #gr_min; // Untergrenze
      >I    ; 
      )     ; 
      SPBB  io; 
      L     W#16#8; 
      SPA   ende; 
io:   L     0; 
ende: T     #RET_VAL; 
END_FUNCTION

Zum Verständnis wie die AE-Karte die Eingänge intern darstellt hier noch eine Excel Tabelle:

vill Jröß (viele Grüße)
Peter
 

Anhänge

  • Messbereiche_Analog.zip
    6,2 KB · Aufrufe: 59
Zuviel Werbung?
-> Hier kostenlos registrieren
Also das was du da oben schreibst wird zu 100% vom FC105 aus der Standardbibliothek abgedeckt.

"Innen" dürfte der FC105 mit Sicherheit so oder so ähnlich aussehen wie das Beispiel von "Peter Wahlen".

Ich komme mit den Ausdruck "universell" noch nicht so ganz klar.
Grundsätzlich ist Analogwertskalierung (wenigstens bei Linearen Geräten, und das dürften ca. 90% der Messtechnik sein) nur ordinärer Dreisatz,
egal ob bei Siemens oder wen auch immer.
 
Zurück
Oben