vierlagig
Level-1
- Beiträge
- 9.882
- Reaktionspunkte
- 2.022
-> Hier kostenlos registrieren
S7 Analogwerte - Ich hab da mal ne Frage
Grundlagen
Analogwertverarbeitung nutzt man, wenn nicht nur die Zustände AN und AUS betrachtet werden sollen, sondern einen Bereich z.B. eines Temperatur- oder Füllstandssignals oder zur Sollwertvorgabe.
Typische Analogsignale sind 0..20mA, 4..20mA, 0..10V und der normierte Widerstandswert eines Pt100. Dabei stellen die Werte dieser Signale nur ein Abbild der tatsächlichen physikalischen Größe dar.
Bsp.: Füllstand 0...100% mit 4..20mA
Der Messbereich umfasst 16mA daraus resultiert, dass 0,16mA einem Prozent entsprechen.
für 75% Füllstand errechnet sich demnach 0,16mA/% * 75% = 12mA im Messbereich, dass heißt an der Analogeingang wird ein Wert von 16mA (12mA + Offset 4mA) gemessen und diese 16mA entsprechen einem Füllstand von 75%. 60% Füllstand liefern demnach 13,6mA
Da Werte kleiner 4mA im normalen Betrieb nicht vorkommen dürfen, können diese als Drahtbruchüberwachung genutzt werden.
Aber wie bekomm ich diese Werte nun in mein Programm?
Einlesen
Im Falle einer korrekt aufgebauten Hardware und konsistenten Systemdaten ist das alles ganz einfach.
Was automatisch passiert?
Um Analogsignale in einer SPS verarbeiten zu können müssen diese digitalisiert werden. Das übernimmt die Baugruppe mit unterschiedlichen Auflösungen. Typische Auflösungen sind 8, 12 und 15 Bit, jeweils zuzüglich Vorzeichen. Je größer die Auflösung desto genauer die Signalauswertung.
Bsp.: 8 Bit
mit 8 Bit können 256 Bereiche abgebildet werden
bei 0..10V bedeutet das 10V : 256 = 0,039 V/Bit
daraus folgt: Es werden Spannungsunterschiede > 39mV erkannt
Neben der Auflösung sind auch Wandlungs- und Zykluszeit von Interesse bei der Einsatzplanung von Analogbaugruppen.
Die Wandlungszeit für einen Kanal setzt sich zusammen aus der Grundwandlungszeit und zusätzlichen Bearbeitungszeiten der Baugruppe für:
- Widerstandsmessung
- Drahtbruchüberwachung.
Die Grundwandlungszeit hängt direkt ab vom Wandlungsverfahren (integrierendes Verfahren, sukzessive Approximation) des Analogeingangs. Bei integrierenden Wandlungsverfahren geht die Integrationszeit direkt mit in die Wandlungszeit ein.
Die Zykluszeit für die Analogbaugruppe setzt sich aus den Wandlungszeiten der Kanälen zusammen, da diese sequentiell den digitalisierten Wert übergeben.
Bei Analogausgaben gilt es zusätzlich zu Wandlungszeiten und Zykluszeit, die Einschwing- und Antwortzeit zu beachten.
Als Einschwingzeit wird die Zeit vom Anliegen des gewandelten Wertes
bis zum Erreichen des spezifizierten Wertes am Analogausgang bezeichnet. Sie ist lastabhängig. Dabei muß zwischen ohmscher, kapazitiver und induktiver Last unterschieden werden
Die Antwortzeit, d. h. die Zeit vom Anliegen der digitalen Ausgabewerte im internen Speicher bis zum Erreichen des spezifizierten Wertes am Analogausgang ist im ungünstigsten Fall die Summe aus Zykluszeit und Einschwingzeit. Der ungünstigste Fall liegt dann vor, wenn kurz vor Übertragung eines neuen Ausgabewertes der Analogkanal gewandelt wurde und erst nach Wandlung der anderen Kanäle wieder gewandelt wird (Zykluszeit).
Die entsprechenden Werte können den Baugruppendaten entnommen werden.
Was muß ich jetzt eigentlich noch machen?
Die Adresse des Kanals herausfinden. Dazu in der Hardwarekonfiguration den Eingangs-Bereich der Eingangskarte betrachten und entsprechend interpretieren. Analogsignale werden WORD-weise Adressiert.
z.B. eine 8-Kanal-Analogeingangskarte
der E-Bereich ist mit 6...21 angegeben.
bedeutet:
Kanal 1 ---> EW 6
Kanal 2 ---> EW 8
Kanal 3 ---> EW 10
...
Kanal 8 ---> EW 20
Mit dieser Adresse kann man dann, den digitalisierten Wert des Analogwertes im Programm aufrufen:
Aber es gibt doch auch noch PEW
Der Unterschied zwischen EW und PEW liegt in der Zuordnung und damit auch der Aktualität des Wertes.
EW bezeichnet einen Eingangswert der im Prozessabbild der CPU liegt (typisch bis EB 255, bei größeren SPS aber auch einstellbar) und am Ende des Zykluses in das Prozessabbild geladen werden.
PEW bezeichnet einen Eingangwert der beim Aufruf gelesen wird. Liegt das EW außerhalb des Prozessabbildes muss mit PEW gearbeitet werden, in den anderen Fällen kann mit PEW gearbeitet werden. Bei der Verwendung von PEW kann dieses innerhalb eines Zykluses an unterschiedlichen Aufrufstellen unterschiedliche Werte haben.
Verarbeiten
Lädt man den digitalisierten Wert eines Analogeinganges erschließt sich daraus noch nicht für jeden der Wert des Messwertgebers. Da könnte zum Beispiel sowas stehen wie: 16#1719
Um mit einem Analogwert sinnvoll arbeiten zu können bietet es sich an, ihn zu skalieren und im Format REAL weiter zu verarbeiten.
Dafür gibt es den Siemens-Standard-Baustein FC 105 SCALE. Dieser funktioniert auf Grund des Siemens-typischen Skalierungsfaktors K nur mit Siemens-Baugruppen. Für andere Hersteller kann man sich aber mit Hilfe der Berechnungsvorschrift des FC105 sehr schnell eigene Skalierungsumgebungen schaffen.
Der FC 105 macht eigentlich nichts anderes als:
Der Skalierungsfaktor ergibt sich aus der Spezifikation der A/D-Wandlung. Nachzulesen in den Baugruppendaten.
Mit dem skalierten und konvertierten Real-Wert kann man dann wie gewohnt weiterarbeiten.
Die Angaben oben beziehen sich auf Strom- und Spannungssignale. Das Einlesen und skalieren des Widerstandswertes eines Pt100 ist wesentlich einfacher:
Schreiben
Neben dem Erfassen von Messwerten dienen Analogsignale auch der Vorgabe von Sollwerten.
Die Analogausgangskarten wandeln einen digitalen Wert in ein analoges Spannungs- oder Stromsignal (0..10V; 4..20mA)
Im wesentlichen gelten die selben Grundlagen wie für Analogeingänge.
Skalierung und Konvertierung eines REAL-Wertes in ein Analogkompatibles WORT übernimmt hier für Siemens-Baugruppen der FC106 UNSCALE mit der Berechnungsvorschrift
OUT = [ ((IN - LO_LIM)/(HI_LIM - LO_LIM)) * (K2 - K1) ] + K1
oder eben
____________________________________________________________________________________________________
Dank an Ralle für Korrektur und Hinweise!
Viel Spaß!
Grundlagen
Analogwertverarbeitung nutzt man, wenn nicht nur die Zustände AN und AUS betrachtet werden sollen, sondern einen Bereich z.B. eines Temperatur- oder Füllstandssignals oder zur Sollwertvorgabe.
Typische Analogsignale sind 0..20mA, 4..20mA, 0..10V und der normierte Widerstandswert eines Pt100. Dabei stellen die Werte dieser Signale nur ein Abbild der tatsächlichen physikalischen Größe dar.
Bsp.: Füllstand 0...100% mit 4..20mA
Code:
0% 75% 100%
|<---- 12mA ---->| |
| | |
|<--------- 16mA --------->|
| | |
4mA | 20mA
[B]16mA[/B]
für 75% Füllstand errechnet sich demnach 0,16mA/% * 75% = 12mA im Messbereich, dass heißt an der Analogeingang wird ein Wert von 16mA (12mA + Offset 4mA) gemessen und diese 16mA entsprechen einem Füllstand von 75%. 60% Füllstand liefern demnach 13,6mA
Da Werte kleiner 4mA im normalen Betrieb nicht vorkommen dürfen, können diese als Drahtbruchüberwachung genutzt werden.
Aber wie bekomm ich diese Werte nun in mein Programm?
Einlesen
Im Falle einer korrekt aufgebauten Hardware und konsistenten Systemdaten ist das alles ganz einfach.
Was automatisch passiert?
Um Analogsignale in einer SPS verarbeiten zu können müssen diese digitalisiert werden. Das übernimmt die Baugruppe mit unterschiedlichen Auflösungen. Typische Auflösungen sind 8, 12 und 15 Bit, jeweils zuzüglich Vorzeichen. Je größer die Auflösung desto genauer die Signalauswertung.
Bsp.: 8 Bit
mit 8 Bit können 256 Bereiche abgebildet werden
bei 0..10V bedeutet das 10V : 256 = 0,039 V/Bit
daraus folgt: Es werden Spannungsunterschiede > 39mV erkannt
Neben der Auflösung sind auch Wandlungs- und Zykluszeit von Interesse bei der Einsatzplanung von Analogbaugruppen.
Die Wandlungszeit für einen Kanal setzt sich zusammen aus der Grundwandlungszeit und zusätzlichen Bearbeitungszeiten der Baugruppe für:
- Widerstandsmessung
- Drahtbruchüberwachung.
Die Grundwandlungszeit hängt direkt ab vom Wandlungsverfahren (integrierendes Verfahren, sukzessive Approximation) des Analogeingangs. Bei integrierenden Wandlungsverfahren geht die Integrationszeit direkt mit in die Wandlungszeit ein.
Die Zykluszeit für die Analogbaugruppe setzt sich aus den Wandlungszeiten der Kanälen zusammen, da diese sequentiell den digitalisierten Wert übergeben.
Bei Analogausgaben gilt es zusätzlich zu Wandlungszeiten und Zykluszeit, die Einschwing- und Antwortzeit zu beachten.
Als Einschwingzeit wird die Zeit vom Anliegen des gewandelten Wertes
bis zum Erreichen des spezifizierten Wertes am Analogausgang bezeichnet. Sie ist lastabhängig. Dabei muß zwischen ohmscher, kapazitiver und induktiver Last unterschieden werden
Die Antwortzeit, d. h. die Zeit vom Anliegen der digitalen Ausgabewerte im internen Speicher bis zum Erreichen des spezifizierten Wertes am Analogausgang ist im ungünstigsten Fall die Summe aus Zykluszeit und Einschwingzeit. Der ungünstigste Fall liegt dann vor, wenn kurz vor Übertragung eines neuen Ausgabewertes der Analogkanal gewandelt wurde und erst nach Wandlung der anderen Kanäle wieder gewandelt wird (Zykluszeit).
Die entsprechenden Werte können den Baugruppendaten entnommen werden.
Was muß ich jetzt eigentlich noch machen?
Die Adresse des Kanals herausfinden. Dazu in der Hardwarekonfiguration den Eingangs-Bereich der Eingangskarte betrachten und entsprechend interpretieren. Analogsignale werden WORD-weise Adressiert.
z.B. eine 8-Kanal-Analogeingangskarte
der E-Bereich ist mit 6...21 angegeben.
bedeutet:
Kanal 1 ---> EW 6
Kanal 2 ---> EW 8
Kanal 3 ---> EW 10
...
Kanal 8 ---> EW 20
Mit dieser Adresse kann man dann, den digitalisierten Wert des Analogwertes im Programm aufrufen:
Code:
L EW 10
Der Unterschied zwischen EW und PEW liegt in der Zuordnung und damit auch der Aktualität des Wertes.
EW bezeichnet einen Eingangswert der im Prozessabbild der CPU liegt (typisch bis EB 255, bei größeren SPS aber auch einstellbar) und am Ende des Zykluses in das Prozessabbild geladen werden.
PEW bezeichnet einen Eingangwert der beim Aufruf gelesen wird. Liegt das EW außerhalb des Prozessabbildes muss mit PEW gearbeitet werden, in den anderen Fällen kann mit PEW gearbeitet werden. Bei der Verwendung von PEW kann dieses innerhalb eines Zykluses an unterschiedlichen Aufrufstellen unterschiedliche Werte haben.
Verarbeiten
Lädt man den digitalisierten Wert eines Analogeinganges erschließt sich daraus noch nicht für jeden der Wert des Messwertgebers. Da könnte zum Beispiel sowas stehen wie: 16#1719
Um mit einem Analogwert sinnvoll arbeiten zu können bietet es sich an, ihn zu skalieren und im Format REAL weiter zu verarbeiten.
Dafür gibt es den Siemens-Standard-Baustein FC 105 SCALE. Dieser funktioniert auf Grund des Siemens-typischen Skalierungsfaktors K nur mit Siemens-Baugruppen. Für andere Hersteller kann man sich aber mit Hilfe der Berechnungsvorschrift des FC105 sehr schnell eigene Skalierungsumgebungen schaffen.
Ein Aufruf des FC 105 könnte so aussehen:FC105-STEP 7-Hilfe schrieb:OUT = [ ((FLOAT (IN) - K1)/(K2-K1)) * (HI_LIM-LO_LIM)] + LO_LIM
Die Konstanten K1 und K2 werden unterschiedlich gesetzt, je nachdem, ob der Eingabewert BIPOLAR oder UNIPOLAR ist.
· BIPOLAR: Es wird angenommen, daß der ganzzahlige Eingabewert zwischen -27648 und 27648 liegt, deshalb sind K1 = -27648,0 und K2 = +27648,0.
· UNIPOLAR: Es wird angenommen, daß der ganzzahlige Eingabewert zwischen 0 und 27648 liegt, deshalb sind K1 = 0,0 und K2 = +27648,0
Code:
CALL "SCALE"
IN :=PEW10 //Eingangswort
HI_LIM :=1.000000e+002 //Skalierungsobergrenze
LO_LIM :=0.000000e+000 //Skalierungsuntergrenze
BIPOLAR:="LOG0" //bi- oder unipolar - hier unipolar
RET_VAL:=MW8 //Fehlerinformation
OUT :=MD10 //Skalierter Messwert in REAL
Code:
L #in
ITD
DTR
T #in_real
L #hi_lim
L #lo_lim
-R
L #in_real
*R
L 2.764800e+004 //Skalierungsfaktor
/R
L #lo_lim
+R
T #out
Mit dem skalierten und konvertierten Real-Wert kann man dann wie gewohnt weiterarbeiten.
Die Angaben oben beziehen sich auf Strom- und Spannungssignale. Das Einlesen und skalieren des Widerstandswertes eines Pt100 ist wesentlich einfacher:
Code:
L PEW 10
ITD
DTR
L 1.000000e+001
/R
T MD 10
Neben dem Erfassen von Messwerten dienen Analogsignale auch der Vorgabe von Sollwerten.
Code:
T PAW 10
Im wesentlichen gelten die selben Grundlagen wie für Analogeingänge.
Skalierung und Konvertierung eines REAL-Wertes in ein Analogkompatibles WORT übernimmt hier für Siemens-Baugruppen der FC106 UNSCALE mit der Berechnungsvorschrift
OUT = [ ((IN - LO_LIM)/(HI_LIM - LO_LIM)) * (K2 - K1) ] + K1
oder eben
Code:
L #hi_lim
L #lo_lim
-R
T #delta
L #wert //der auszugebende Wert
L #lo_lim
-R
L #delta
/R
L 2.764800e+004 //Skalierungsfaktor
*R
RND
T #out
Dank an Ralle für Korrektur und Hinweise!
Viel Spaß!
Zuletzt bearbeitet von einem Moderator: