Tabelle 0-20mA zu Dezimal / Hex

Zuviel Werbung?
-> Hier kostenlos registrieren
Ehrlich gesagt (als blutiger S7-Anfänger):

Ich kann das Programm nicht nachvollziehen.
Gibt es eine kurze Erklärung?

weiß nicht ob volker was dagegen hat, aber wenn ich den code sehen würde könnte man da sicher auch ne erklärung zu machen :rolleyes:
 
Ich hoffe auch, das VOLKER nichts dagegen hat. Falls doch, SORRY !!!

OB1:
Code:
      U     M      2.0
      =     L     20.0
      BLD   103
      CALL  "Analog_IN"
       In            :=MW10
       Obergrenze    :=2.000000e+003
       Untergrenze   :=0.000000e+000
       Typ           :=L20.0
       Ueberlauf_High:=M2.1
       Ueberlauf_Low :=M2.2
       Out           :=MD14
      NOP   0


FC105 /NW1 :
Code:
// OUT = [ ((IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
      L     #In
      ITD   
      DTR   
      T     #Inr
      L     2.764800e+004
      T     #k2
      L     -2.764800e+004
      U     #Typ
      SPB   m001
      L     0
m001: T     #k1
      L     #Inr
      L     #k2
      >R    
      =     #Ueberlauf_High
      L     #Inr
      L     #k1
      <R    
      =     #Ueberlauf_Low


FC105 /NW2 :
Code:
      L     #Obergrenze
      L     #Untergrenze
      -R    
      T     #puffer3
      L     #k2
      L     #k1
      -R    
      T     #puffer2
      L     #Inr
      L     #k1
      -R    
      T     #puffer1
      L     #puffer2
      /R    
      L     #puffer3
      *R    
      L     #Untergrenze
      +R    
      T     #Out


Mein Anliegen ist folgendes:
Ich möchte die PEW's zu den PAW's transferien.
Diese Werte gleichzeitig auf 0 bis 20mA skalieren und in den DB1 ablegen.
Dort möchte ich diese später über WinCC abholen und visualisieren.

Quasi nur ein Transferieren von analogen Messwerte (plus Visualisierung)...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nun der baustein macht genau das was in der formel angegeben worden ist.
beschaltet wird der genauso wie der fc105 von siemens.
die überlaufbit kommen wenn 27648 überschritten.
der ausgang gibt aber auch bei überlauf den umgerechneten wert aus

der tansfer ist doch einfach
L PEW xy
T PAW xy
 
OK - somit wäre ich immer auf der richtigen Seite.
Verstanden.

Wäre aber trotzdem gut wenn Du mir den Teil im OB1 erklären könntest

vor allem die Zeilen "Typ, Ueberlauf High und Überlauf Low".
Muss ich bei der Obergrenze nicht 2.000000e+001 angeben?

Was steht hinter M2.1 und M2.2 ???

Die Lade- u Transferbefehle sind klar...
 
FC105
Code:
*
// OUT = [ ((IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
      L     #In                        //als integer
      ITD                              //in DINT
      DTR                              //und DINT zu REAL
      T     #Inr                       //speichern
      L     2.764800e+004              //skalierungsfaktorobergrenze
      T     #k2                        //speichern
      L     -2.764800e+004             //skalierungsfaktoruntergrenze bipolar
      U     #Typ                       //in abhängigkeit vom typ uni-/bipolar
      SPB   m001
      L     0                          //skalierungsfaktoruntergrenze unipolar
m001: T     #k1                        //speichern
      L     #Inr                       //wenn input
      L     #k2
      >R                               //größer als skalierungsfaktorobergrenze
      =     #Ueberlauf_High            //wird überlauf "angezeigt"
      L     #Inr                       //wenn input
      L     #k1
      <R                               //kleiner als skalierungsfaktoruntergrenze
      =     #Ueberlauf_Low             //wird unterlauf angezeigt

      L     #Obergrenze                //aus skalierungsobergrenze
      L     #Untergrenze               //und skalierungsuntergrenze
      -R                               //ein delta bilden
      T     #puffer3                   //und speichern
      L     #k2                        //aus skalierungsfaktoruntergrenze
      L     #k1                        //und skalierungsfaktorobergrenze
      -R                               //ein delta bilden
      T     #puffer2                   //und speichern
      L     #Inr                       //vom input
      L     #k1                        //die skalierungsfaktorobergrenze 
      -R                               //subtrahieren
      T     #puffer1                   //und speichern
      L     #puffer2                   //und mit dem delta der skalierungsfaktoren
      /R                               //dividieren
      L     #puffer3                   //und mit dem delta der skalierungsgrenzen
      *R                               //multiplizieren
      L     #Untergrenze               //und die untergrenze
      +R                               //addieren
      T     #Out                       //fertig ist der skalierte wert
und ansonsten eben den anweisungen von volker folgen ... also skalieren für die visualisierung und MOVE von PEW auf PAW fürs durchreichen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wäre aber trotzdem gut wenn Du mir den Teil im OB1 erklären könntest

vor allem die Zeilen "Typ, Ueberlauf High und Überlauf Low".

typ: unipolar oder bipolar
ueberlauf_high: übersteuerungsbereich erreicht
ueberlauf_low: untersteuerungsbereich erreicht

Muss ich bei der Obergrenze nicht 2.000000e+001 angeben?

glaube nicht, dass volker die zip extra für dich gemacht hat ... er skaliert halt auf 0...2000 (eier, birnen, äpfel)

Was steht hinter M2.1 und M2.2 ???

was soll da dahinter stehen?
 
Super Jungs, jetzt habe ich es endlich gerafft.
Werde nun mein Programm so umschreiben, dass ich den FC105 von Volker verwende.

Somit sollte ich nun das Überlaufproblem beseitigt haben.
VIELEN DANK an Euch beiden!!!
 
Zurück
Oben