14
491 14 Normierungsbausteine für Analogwertverarbeitung Analogwertverarbeitung bedeutet die Weiterverarbeitung von digitalisierten Analogwerten in Steuerungsprogrammen. Nach abgeschlossener Digitalisierung steht der im Anlagenprozess entstandene ursprüngliche Analogwert in einem Peripherie-Eingangswort PEW der Analog- eingangsbaugruppe zur Verfügung. Unabhängig vom eigentlichen Ziel der Weiterverarbeitung des digitalisierten Analogwertes hat es der SPS-Programmierer mit immer wieder auftretenden Programmierproblemen zu tun. Dazu zählen Messwert-Normierungen beim Einlesen von digi- talisierten Analogwerten, um von den speziellen Zahlenwerten, wie sie in den Messbereichs- tabellen für die verschiedenen Signalgeber angegeben sind, wegzukommen (z. B. +27648 für +10 V). Auf der Seite der Analogwertausgabe müssen die vom Programm erzeugten Digital- werte im richtigen Format dem Peripherie-Ausgangswort PAW übergeben werden. Auch tre- ten ständig Probleme mit den Datentypen der Digitalwerte auf, weil zwischen 16-Bit-Integer, Real und 4-Stellen-BCD gewechselt werden muss. Selbstverständlich könnte man die erwähnten Probleme im Rahmen eines Anwenderpro- gramms genau an der Stelle lösen, wo es erforderlich wird. Effizienter ist es jedoch, mit spe- ziellen Normierungsbausteinen aus der einer Programmbibliothek zu arbeiten, die nur das Einfügen bereits ausgetestete Teillösungen erforderlich machen. Normierungsbausteine wer- den in folgenden Abschnitten auch als Bibliotheksfunktionen bezeichnet. 14.1 Messwerte einlesen und normieren Digitalisierte Analogwerte liegen mit dem Datentyp „INT“ im Eingangsspeicherbereich der CPU vor. Die jeweilige Adresse ist durch die Hardwareprojektierung vorgegeben. Mit den Ladebefehlen L EW x //x < 256 (Bei Profibusankopplungen möglich)oder allgemein L PEW y //y >= 256 (Analogadressen auf dem Baugruppenträger) können die Werte in den Akku 1 geladen werden. Wie im Abschnitt 13.2.4 beschrieben, ist die Bitbelegung der Werte bei allen Auflösungen so, dass das Bitmuster als 16-Bit Ganzzahl (In- teger) interpretiert werden kann. Aus den Tabellen der Messbereiche lassen sich dann die zum Analogsignal proportionalen Eingangs-Nennwerte ableiten. Liefert beispielsweise ein Mess- wertgeber ein Signal von +7,5 V an eine S7-Analogeingabebaugruppe mit dem Messbereich ±10 V, so steht nach dem Ladebefehl der Zahlenwert 20 736 im Akku. Werden über den PROFIBUS-DP Analogeingabebaugruppen anderer Hersteller an die S7 angeschlossen, so sind die entsprechenden Messbereichstabellen dieser Baugruppen zu berücksichtigen. Für die Weiterverarbeitung der digitalisierten Analogwerte in einem Steuerungsprogramm ist es häufig erforderlich, den Eingangs-Nennbereich auf einen anderen Wertebereich umzurech- nen. Die Umrechnung bezeichnet man als Normierung oder lineare Skalierung. Dazu sind in der Regel Rechenoperationen mit Gleitpunktzahlen erforderlich. Beispiel für eine nichtstandardisierte Problemlösung Ein Durchflussmesser für Gase liefert ein analoges Ausgangssignal von 4 bis 20 mA proporti- onal zum Volumenstrom von 0 bis 500 m 3 /h (Normvolumenstrom bezogen auf 0 ºC und 1013 mbar). Zur weiteren Verarbeitung der Messgröße soll der Zahlenwert innerhalb des Steue- rungsprogramms dem tatsächlichen Wert (0 bis 500 m 3 /h) des Volumenstroms entsprechen.

14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

491

14 Normierungsbausteine für Analogwertverarbeitung

Analogwertverarbeitung bedeutet die Weiterverarbeitung von digitalisierten Analogwerten in Steuerungsprogrammen. Nach abgeschlossener Digitalisierung steht der im Anlagenprozess entstandene ursprüngliche Analogwert in einem Peripherie-Eingangswort PEW der Analog-eingangsbaugruppe zur Verfügung. Unabhängig vom eigentlichen Ziel der Weiterverarbeitung des digitalisierten Analogwertes hat es der SPS-Programmierer mit immer wieder auftretenden Programmierproblemen zu tun. Dazu zählen Messwert-Normierungen beim Einlesen von digi-talisierten Analogwerten, um von den speziellen Zahlenwerten, wie sie in den Messbereichs-tabellen für die verschiedenen Signalgeber angegeben sind, wegzukommen (z. B. +27648 für +10 V). Auf der Seite der Analogwertausgabe müssen die vom Programm erzeugten Digital-werte im richtigen Format dem Peripherie-Ausgangswort PAW übergeben werden. Auch tre-ten ständig Probleme mit den Datentypen der Digitalwerte auf, weil zwischen 16-Bit-Integer, Real und 4-Stellen-BCD gewechselt werden muss. Selbstverständlich könnte man die erwähnten Probleme im Rahmen eines Anwenderpro-gramms genau an der Stelle lösen, wo es erforderlich wird. Effizienter ist es jedoch, mit spe-ziellen Normierungsbausteinen aus der einer Programmbibliothek zu arbeiten, die nur das Einfügen bereits ausgetestete Teillösungen erforderlich machen. Normierungsbausteine wer-den in folgenden Abschnitten auch als Bibliotheksfunktionen bezeichnet.

14.1 Messwerte einlesen und normieren Digitalisierte Analogwerte liegen mit dem Datentyp „INT“ im Eingangsspeicherbereich der CPU vor. Die jeweilige Adresse ist durch die Hardwareprojektierung vorgegeben. Mit den Ladebefehlen L EW x //x < 256 (Bei Profibusankopplungen möglich)oder allgemein L PEW y //y >= 256 (Analogadressen auf dem Baugruppenträger)

können die Werte in den Akku 1 geladen werden. Wie im Abschnitt 13.2.4 beschrieben, ist die Bitbelegung der Werte bei allen Auflösungen so, dass das Bitmuster als 16-Bit Ganzzahl (In-teger) interpretiert werden kann. Aus den Tabellen der Messbereiche lassen sich dann die zum Analogsignal proportionalen Eingangs-Nennwerte ableiten. Liefert beispielsweise ein Mess-wertgeber ein Signal von +7,5 V an eine S7-Analogeingabebaugruppe mit dem Messbereich ±10 V, so steht nach dem Ladebefehl der Zahlenwert 20 736 im Akku. Werden über den PROFIBUS-DP Analogeingabebaugruppen anderer Hersteller an die S7 angeschlossen, so sind die entsprechenden Messbereichstabellen dieser Baugruppen zu berücksichtigen. Für die Weiterverarbeitung der digitalisierten Analogwerte in einem Steuerungsprogramm ist es häufig erforderlich, den Eingangs-Nennbereich auf einen anderen Wertebereich umzurech-nen. Die Umrechnung bezeichnet man als Normierung oder lineare Skalierung. Dazu sind in der Regel Rechenoperationen mit Gleitpunktzahlen erforderlich.

Beispiel für eine nichtstandardisierte Problemlösung Ein Durchflussmesser für Gase liefert ein analoges Ausgangssignal von 4 bis 20 mA proporti-onal zum Volumenstrom von 0 bis 500 m3/h (Normvolumenstrom bezogen auf 0 ºC und 1013 mbar). Zur weiteren Verarbeitung der Messgröße soll der Zahlenwert innerhalb des Steue-rungsprogramms dem tatsächlichen Wert (0 bis 500 m3/h) des Volumenstroms entsprechen.

Page 2: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

492 14 Normierungsbausteine für Analogwertverarbeitung

Zusammenhang der verschiedenen Wertebereiche:

Physikalischer Messwert in m3/h

Analogausgang des Sensors

in mA

Digitaler Eingangs-Nennwert AE_Nenn (s. Stromsignalgeber)

Normierter Zahlenwert AE_Nor zur Weiter-

verarbeitung 0 ...

500

4 ... 20

0 ...

27 648

0 ...

500

Aus den letzten beiden Spalten der Tabelle lässt sich die Berechnungsformel für die Normie-rung ableiten.

Danach ist: .,_ AE_Nenn01808440NennAE64827

500AE_Norm

Zugehörige AWL-Steuerungsanweisungen: in STEP 7: L #AE_Nenn ITD DTR L 1.808440e-002 *R T #AE_Norm

in CoDeSys: LD AE_Nenn INT_TO_REAL MUL 1.80844 ST AE_NOR

Vor der Ausführung der Multiplikation ist der Eingangs-Nennwert AE_Nenn in eine Gleitpunktzahl (REAL) umzu-wandeln. Das Ergebnis der nachfol-genden Multiplikation liegt dann eben-falls als Gleitpunktzahl vor.

Ziele des Normierungsbausteins FC 48 (AE_REALN) Da die Normierung von Analogeingabewerten sehr oft erforderlich ist, bietet sich die

Verwendung einer Bibliotheksfunktion an. Diese soll im Beispiel 14.1 als Normierungs-funktion FC 48 (AE_REALN) entworfen und programmiert werden, bei der sowohl der Eingangs-Nennbereich wie auch der Normierungsbereich vorgegeben werden können. Beide Bereiche werden durch die Angabe der Ober- und Untergrenze bestimmt.

Der universelle Normierungsbaustein (universelle Normierungsfunktion) FC 48 kann damit auch für Analogeingabebaugruppen anderer Hersteller verwendet werden, die einen von den SIMATIC-Baugruppen abweichenden Eingangs-Nennbereich besitzen und über den Profibus DP an eine S7-Steuerung angeschlossen werden. Zum Beispiel liefert eine Analogeingabebaugruppe der Firma WAGO bei einem analogen Spannungsmessbereich von ±10V einen digitalen Eingangs-Nennbereich von –32 768 bis + 32 767.

14.2 Ausgeben von normierten Analogwerten Digitale Analogausgabewerte werden im Datenformat „INT“ über den Akku 1 an die Adresse des Ausgangsspeicherbereichs der CPU transferiert. Die jeweilige Adresse ist durch die Hardwareprojektierung vorgegeben. Mit den Transferbefehlen T AW x //x < 256 (Bei Profibusankopplungen möglich) oder T PAW y //y >=256 (Analogadressen auf dem Baugruppenträger)

können die Werte an die jeweilige Ausgangsadresse transferiert werden. Wie im Abschnitt 13.2.4 beschrieben, ist die Bitbelegung der Ausgabewerte bei allen Auflösungen so, dass das Bitmuster als 16-Bit-Ganzzahl (Integer) interpretiert werden kann. Aus den Tabellen der Aus-gabebereiche lassen sich dann die zum Analogsignal proportionalen Ausgangs-Nennwerte

Page 3: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

14.2 Ausgeben von normierten Analogwerten 493

ableiten. Soll beispielsweise eine Spannung von 7,5 V an eine Analogausgabebaugruppe mit dem Bereich ±10 V ausgegeben werden, so ist an die Ausgangsadresse der Zahlenwert 20 736 zu transferieren. Werden über den PROFIBUS-DP Analogeingabebaugruppen anderer Herstel-ler an die S7-SPS angeschlossen, so sind die entsprechenden Ausgangsbereichstabellen dieser Baugruppen zu berücksichtigen. Zur Ausgabe von normierten Analogwerten ist es häufig erforderlich, den Wertebereich für die Berechnungen innerhalb des Steuerungsprogramms (Normierungsbereich) auf den Ausgangs-Nennbereich umzurechnen. Dazu sind in der Regel Rechenoperationen mit Gleitpunktzahlen erforderlich. Das Ergebnis ist dann an die Adresse des Analogausgangs zu transferieren.

Beispiel für eine nichtstandardisierte Problemlösung Zur Steuerung der Ausgangsfrequenz eines Frequenzumrichters über den Analogeingang des Umrichters ist ein Spannungssignal von 0 ... 10 V erforderlich. Die Vorgabe von 0 V ent-spricht dabei der kleinsten eingestellten Frequenz (z. B. 10 Hz) und 10 V der höchsten Aus-gangsfrequenz (z. B. 60 Hz). Innerhalb des Steuerungsprogramms soll mit den Werten der Ausgabefrequenzen (Normierungsbereich) gerechnet werden.

Zusammenhang der verschiedenen Wertebereiche:

Normierter Wert AA_Norm für die Analogausgabe

Digitaler Ausgangs- Nennwert AA_Nenn

(siehe Tabelle für den Ausgabebereich

0 bis 10 V)

Ausgangsspannung des Analogausgangs

in V

Drehfrequenz des Umrichters

in Hz

10 ... 60

0 ...

27 648

0 ... 10

10 ... 60

Aus den ersten beiden Spalten der Tabelle lässt sich die Berechnungsformel für den digitalen Ausgangs-Nennwert ableiten.

Danach ist: )0,10Norm_AE(96,552)0,10Norm_AA(1060

64827Nenn_AA .

Probe: Bei AA_Norm = 35 (Mitte des Frequenzbereichs) ergibt sich aus der Berechnungsfor-mel AA_Nenn = 13 824 (Mitte des Ausgangs-Nennbereichs). Zugehörige AWL Steuerungsanweisungen in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn

in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT ST AA_Nenn

Es wird angenommen, dass der Aus-gabewert AA_Norm im Datenformat Gleitpunktzahl vorliegt. Zur Ausga-be an die Analogbaugruppe muss das Ergebnis der Berechnung in eine Integer-Zahl umgewandelt und der Variablen AA-Nenn zugewiesen werden.

Page 4: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

494 14 Normierungsbausteine für Analogwertverarbeitung

Ziele des Normierungsbausteins FC 49 (REALN_AA) Da die Umrechnung von normierten Analogausgabewerten sehr oft erforderlich ist, bietet

sich die Verwendung eines Bibliotheksbausteins an. Das Beispiel 14.3 zeigt das Steue-rungsprogramm der universellen Normierungsfunktion FC 49 (REALN_AA), bei der so-wohl der Normierungsbereich wie auch der Ausgangs-Nennbereich vorgegeben werden kann. Beide Bereiche werden durch die Angabe der Ober- und Untergrenze bestimmt.

Diese universelle Ausgabefunktion FC 49 kann damit auch für Analogausgabebaugruppen anderer Hersteller verwendet werden, die einen von den SIMATIC-Baugruppen unter-schiedlichen Ausgangs-Nennbereich besitzen und über den Profibus DP an eine S7-Steue-rung angeschlossen sind. Zum Beispiel besitzt eine Analogausgabebaugruppe der Firma WAGO mit einem analogen Spannungsbereich von ±10V einen Ausgangs-Nennbereich von –32 768 bis + 32 767.

14.3 Beispiele Beispiel 14.1: Universelle Normierungsfunktion Analogeingabe (FC 48: AE_REALN)

Es ist eine Normierungsfunktion FC 48 (AE_REALN) zu entwerfen, die einen vorgebbaren Eingangs-Nennbereich einer Analogeingabebaugruppe auf einen wählbaren Normierungsbereich umrechnet. Übergabeparameter: Beschreibung der Parameter:

AE: INT Digitalisierter Analogeingabewert OGREB: INT Obergrenze Eingangs-Nennbereich UGREB: INT Untergrenze Eingangs-Nennbereich OGRNB: REAL Obergrenze Normierungsbereich UGRNB: REAL Untergrenze Normierungsbereich

REAW: REAL Normierter Analogeingabewert als Gleitpunktzahl

Zum Test der Funktion FC 48 wird der Baustein im Organisationsbaustein OB 1 aufgerufen. An den Ein-gangsparameter AE wird das Eingangswort EW einer Analogeingabebaugruppe gelegt. In der Hardware-projektierung wurde der Bereich ±10 V gewählt. Damit müssen die Werte +27 648 bzw. –27 648 an die Funktions-Eingänge OGREB bzw. UGREB gelegt werden. Dieser Eingangs-Nennbereich soll für die interne Weiterverarbeitung in den Bereich von + 10.0 bis –10.0 linear gewandelt werden. Deshalb müs-sen diese Werte an die Funktions-Eingänge OGRNB bzw. UGRNB geschrieben werden. Der Ausgangsparameter REAW liefert dann einen zur angelegten Spannung proportionalen Digitalwert als Gleitpunktzahl im Bereich von –10.0 bis +10.0. Das Programm hat die Funktionsweise eines Spannungsmessers mit digitaler Anzeige. Eine angelegte Spannung von 4,5 V erscheint auf der Ziffernanzeige als Wert 4 500, also als Spannungswert in mV.

Bausteinaufrufe im OB 1 bzw. PLC_PRG in freigrafischer Funktionsplandarstellung:

Page 5: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

14.3 Beispiele 495

Zur Überprüfung, ob die Funktion FC 48 richtig arbeitet, wird über die Bibliotheksfunktion FC 706 (REA_BCD4) der Ausgabewert REAW an eine vierstellige BCD-Anzeige gelegt und kann dort als Span-nungswert in mV abgelesen werden.

Zuordnungstabelle der Eingänge und Ausgänge:

Eingangsvariable Symbol Datentyp Logische Zuordnung Adresse Analogeingang PEW INT Bereich –27.648 bis +27.648 PEW 320 Ausgangsvariable Vorzeichen Ziffernanzeige

P1 AW

BOOL WORD

Negativ P1 = 1 BCD-Wert

A 4.0 AW 12

Die allgemeine Berechnungsformel für die Normierung kann aus den Linearfunktionen des Eingangs-nennbereichs und des Normierungsbereichs abgeleitet werden. Für den Eingangsnennbereich spielt es dabei keine Rolle, ob es sich um einen Messbereich für Spannungen, Ströme oder Widerstände handelt. Für die Herleitung der Normierungsformel wurde ein Spannungsmessbereich (mit U1 = 0) angenommen.

Linearfunktion Eingangs-Nennbereich: Linearfunktion Normierungsbereich:

UGREBUU1U2UGREBOGREBAE AE UGRNBU

U1U2UGRNBOGRNBREAW AE

Die beiden Gleichungen werden nach UAE aufgelöst und gleichgesetzt. Die Differenz U2 – U1 fällt dabei heraus und es ergibt sich folgende allgemeine Normierungsformel:

UGRNBUGREBAEUGREBOGREBUGRNBOGRNBREAW

Da die Berechnung des Ausgangswertes REAW nach der Normierungsformel im Datenformat REAL durchgeführt wird, sind drei lokale Variable AER, OGREBR und UGREBR einzuführen, welche die entsprechenden Werte im Datenformat REAL aufnehmen. Zur Umsetzung der Normierungsformel in ein Steuerungsprogramm sind zwei Zwischenergebnisse zu bilden. Deshalb werden die Differenzen OGREBR – UGREBR bzw. OGRNB – UGRNB den temporären Variablen D1 bzw. D2 zugewiesen.

STEP 7 Programm (AWL-Quelle): FUNCTION FC48 : VOID VAR_INPUT AE : INT ; OGREB : INT ; UGREB : INT ; OGRNB : REAL ; UGRNB : REAL ; END_VAR

VAR_OUTPUT REAW : REAL ; END_VAR

VAR_TEMP AER : REAL ; OGREBR : REAL ; UGREBR : REAL ; D1 : REAL ; D2 : REAL ; END_VAR

Page 6: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

496 14 Normierungsbausteine für Analogwertverarbeitung

BEGIN L #AE; ITD; DTR; T #AER; L #OGREB; ITD; DTR; T #OGREBR;

L #UGREB; ITD; DTR; T #UGREBR; L #OGRNB; L #UGRNB; -R ; T #D1;

L #OGREBR; L #UGREBR; -R ; T #D2; L #AER; L #UGREBR; -R ; L #D1;

*R ; L #D2; /R ; L #UGRNB; +R ; T #REAW; END_FUNCTION

CodeSys Programm (AWL): FUNCTION FC48 :REAL VAR_INPUT AE: INT; OGREB:INT; UGREB:INT; OGRNB:REAL; UGRNB:REAL; END_VAR

VAR AER: REAL; OGREBR: REAL; UGREBR: REAL; D1: REAL; D2: REAL; END_VAR

// Anweisungsteil

LD AE INT_TO_REAL ST AER

LD OGREB INT_TO_REAL ST OGREBR LD UGREB INT_TO_REAL ST UGREBR

LD OGRNB SUB UGRNB ST D1 LD OGREBR SUB UGREBR ST D2

LD AER SUB UGREBR MUL D1 DIV D2 ADD UGRNB ST FC48

Das folgende Beispiel zeigt die Anwendung der Normierungsfunktion FC 48 (AE_REALN). Die Normierung mit Hilfe der Funktion FC 48 ist dort erforderlich, weil die analoge Eingangsspannung an eine Analogbaugruppe des Herstellers WAGO ange-

schlossen ist, die über den Profibus DP mit der CPU verbunden ist und der Eingangsspannungswert von 0 ... 10 V einem Winkel von 0 ... 60° entsprechen soll.

Beispiel 14.2: Drosselklappe mit 0 ... 10-V-Stellungsgeber

In einem ringförmigen Klappengehäuse ist das Klappenblatt drehbar gelagert. Durch Verdrehen des Klappenblattes verändert die Drosselklappe ihren wirksamen Querschnitt und damit die Durchfluss menge. Im Regelbetrieb wird das Klappenblatt zwischen Schließstellung „ZU“ und Öffnungsstellung „AUF“ um maximal 60° geschwenkt. Dies entspricht einem Antriebsdrehwinkel von 90°. Um die Positionierung des Klappenblattes kontrollieren zu können, ist mit dem Antrieb ein 10-V-Stellungsgeber G verbunden. Ein Drehwinkel von 90° entspricht dabei einem vollen Spannungshub von 0 bis 10 V. Ein Antriebsmotor öffnet die Klappe durch ein „1“-Signal an Q1 und schließt sie durch ein „1“-Signal an Q2. Die elektromechanische Klappenbremse blockiert das Klappenblatt beim Abschalten des Motors durch Q1 = Q2 = 0 automatisch. Mit einem Zifferneinsteller soll das Klappenblatt auf einen Öffnungswinkel zwischen 0,0 ... 60,0° ein-stellbar sein. Werte über 60,0 am Zifferneinsteller (600) werden dabei als maximaler Winkel von 60,0° interpretiert. Mit einer Betätigung des Übernahmetasters S wird das Stellen der Klappe eingeleitet. Der Motor dreht dabei solange nach links oder rechts, bis der am Zifferneinsteller vorgegebene Stellungswin-kel erreicht ist. Während des Stellvorgangs haben Änderungen am Zifferneinsteller nur dann eine Aus-wirkung, wenn der Übernahmetaster S1 erneut betätigt wird. Eine Meldeleuchte P1 zeigt an, wenn der gewünschte Öffnungswinkel erreicht ist.

Page 7: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

14.3 Beispiele 497

Technologieschema:

Bild 14.1: Drosselklappe

Die analoge Spannung des Stellungsgebers SG wird über einen Profibus-DP-Feldbusknoten an den Profi-bus-Master-Kommunikationsprozessor CP des Automatisierungssystems gelegt. An dem Feldbusknoten ist eine analoge Eingangsklemme angeschlossen, welche eine Spannung von 0 ... 10 V in einen Eingangs-Nennbereich von 0 ... 32 767 umwandelt.

Zuordnungstabelle der Eingänge und Ausgänge:

Eingangsvariable Symbol Datentyp Logische Zuordnung Adresse Übernahmetaster Zifferneinsteller Stellungsgeber

S1 EW SG

BOOL WORD

INT

Betätigt S1 = 1 BCD-Wert Bereich 0 bis +32.767

E 0.0 EW 8 EW 20

Ausgangsvariable Motor Rechtslauf Motor Linkslauf Meldeleuchte Sollw. erreicht Ziffernanzeige

Q1 Q2 P1

AW

BOOL BOOL BOOL WORD

Klappe öffnet Q1 = 1 Klappe schließt Q2 = 1 Leuchtet P1 = 1 BCD-Wert

A 4.1 A 4.2 A 4.3 AW 12

Es ist eine Funktion FC 1401 zu entwerfen, welche aus dem Sollwert und dem Istwert die Ansteuerung der Leistungsschütze des Antriebsmotors für das Klappenblatt und der Meldeleuchte P1 übernimmt.

Übergabeparameter: Beschreibung der Parameter:

EIN: BOOL Verstellung einschalten SOW: REAL Sollwertvorgabe ISW: REAL Istwert der Drosselklappe RE: BOOL Ansteuerung Schütz Q1 für Rechtslauf LI: BOOL Ansteuerung Schütz Q2 für Linkslauf POS: BOOL Ansteuerung Meldeleuchte Position erreicht

Zum Einlesen des Sollwertes für die gewünschte Stellung des Klappenblatts wird die Bibliotheksfunktion FC 705 (BCD4_INT) verwendet. Der Istwert für die tatsächliche Stellung des Klappenblatts wird über die Normierungsfunktion FC 48 (AE_REAN) vom Stellungsgeber SG eingelesen. Zur Anzeige des Ist-wertes an einer BCD-Ziffernanzeige wird die Bibliotheksfunktion FC 706 (INT_BCD4) verwendet.

Page 8: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

498 14 Normierungsbausteine für Analogwertverarbeitung

Bausteinaufrufe im OB 1 bzw. PLC_PRG in freigrafischer Funktionsplandarstellung: Lokale Variablen im OB 1/PLC_PRG: FO1, FO2, FO3 (BOOL): Flankenope-randen Ver (BOOL): Speichervariable für die Dauer der Verstellung. Beim Erreichen der gewünschten Stellung des Klappen-blatts wird der Speicher mit einer Flan-ke zurückgesetzt. Sollw (REAL): Übergabevariable für den Sollwert Istw (REAL): Übergabevariable für den Istwert

Anzeige des Istwertes:

HO1 (BOOL): Hilfsoperand HO2 (BOOL): Hilfsoperand

Das Steuerungsprogramm der Funktion FC 1401 ist durch das nachfolgende Struktogramm beschrieben.

Hinweise: Zunächst werden alle Ausgänge der Funktion zu-rückgesetzt. Die Sollwertvorgabe wird überprüft, ob sie inner-halb der richtigen Grenzen liegt. Damit kein ständiges Ein- und Ausschalten ent-steht, wenn der Sollwert den Istwert erreicht hat, wird eine Schalthysterese von H = 0.2 (entspricht 0,2°) bei dem Vergleich von Soll- und Istwert eingeführt. Das Ergebnis des Soll-Istwert-Vergleichs bestimmt, welche Ausgangsvariable (Motor Rechtslauf oder Linkslauf) mit „1“-Signal angesteuert wird.

STEP 7 Programm (AWL-Quelle): FUNCTION FC1401 : VOID VAR_INPUT EIN : BOOL ; SOW : REAL ; ISW : REAL ; END_VAR

VAR_OUTPUT Q1 : BOOL ; Q2 : BOOL ; POS : BOOL ; END_VAR

Page 9: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

14.3 Beispiele 499

BEGIN SET ; R #Q1; R #Q2; R #POS; UN EIN BEB L #SOW; L 0; <I ; SPBN M001;

L 0; T #SOW; SPA M002; M001: NOP 0; L #SOW; L 600; <I ; SPB M002; L 600; T #SOW;

M002: NOP 0; L #SOW; L 1.0000e-001; -R ; L #ISW; TAK ; <R ; = #Q1; BEB ; L #SOW;

L 1.0000e-001; +R ; L #ISW; TAK ; >R ; = #Q2; BEB ; SET ; = #POS; END_FUNCTION

CodeSys Programm (AWL): TYPE FC1401_OUT : STRUCT Q1, Q2 ,POS : BOOL; END_STRUCT END_TYPE

FUNCTION FC1401 :FC1401_OUT VAR_INPUT EIN : BOOL; SOW, ISW:REAL; END_VAR

// Anweisungsteil

LD FALSE ST FC1401.Q1 ST FC1401.Q2 ST FC1401.POS LDN EIN RETC

LD SOW LT 0 SEL SOW,0 ST SOW LD SOW GT 600 SEL SOW,600

ST SOW LD ISW LT( SOW SUB 0.1 ) ST FC1401.Q1 RETC

LD ISW GT( SOW ADD 0.1 ) ST FC1401.Q2 RETC LD TRUE ST FC1401.POS

Beispiel 14.3: Universelle Normierungsfunktion Analogwertausgabe (FC 49: REALN_AA)

Es ist eine Normierungsfunktion FC 49 (REALN_AA) zu entwerfen, die einen vorgebbaren Normie-rungsbereich auf einen wählbaren Ausgangs-Nennbereich einer Analogausgabebaugruppe umrechnet.

Übergabeparameter: Beschreibung der Parameter:

REAW: REAL Interner normierter Analogausgabewert als Gleit-punktzahl

OGRNB: REAL Obergrenze Normierungsbereich UGRNB: REAL Untergrenze Normierungsbereich OGRAB: INT Obergrenze Ausgangs-Nennbereich UGRAB: INT Untergrenze Ausgangs-Nennbereich AA: INT Digitaler Ausgabewert für die analoge Ausgabe-

baugruppe

Zum Test der Funktion FC 49 ist ein Programm zu entwickeln, das ein 0 ... 10 V Spannungssignal am Eingang der SPS proportional in ein 4 ... 20 mA Stromsignal am Ausgang der SPS umwandelt.

Technologieschema: Bild 14.2: SPS als Signalumsetzer

Page 10: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

500 14 Normierungsbausteine für Analogwertverarbeitung

Zuordnungstabelle der Eingänge und Ausgänge: Eingangsvariable Symbol Datentyp Logische Zuordnung Adresse Analogeingang 0 ... 10 V PEW INT Bereich 0 bis +27.648 PEW 320 Ausgangsvariable Analogausgang AW INT Bereich 0 bis +32.767 AW 30

Zum Einlesen und Normieren der Signaleingangsspannung wird im Organisationsbaustein OB 1 bzw. PLC-PRG zunächst die universelle Normierungsfunktion FC 48 (AE_REAN) aufgerufen und paramet-riert. Die Eingangs-Nennbereichsgrenzen dabei sind: OGREB = 27 648 und UGREB = 0. Der Normie-rungsbereich ist durch die Grenzen 20.0 (OGRNB) und 4.0 (UGRNB) bestimmt. Der Ausgangswert REAW der Funktion FC 48 wird der lokalen Variablen „Signal“ zugewiesen. Durch die vorgegebenen Bereiche entspricht der Wert der Variablen „Signal“ bereits dem Wert des Stromsignals am Analogaus-gang. Zur Ausgabe des Werte wird die Funktion FC 49 (REAN_AA) aufgerufen und parametriert. Die Ober-grenze des normierten Bereichs OGRNB ist mit 20.0 und die Untergrenze UGRNB mit 4.0 anzugeben. Durch die Verwendung der Analogausgabebaugruppe der Firma WAGO ist der Ausgangs-Nennbereich durch die Werte OGRAB = 32 767 und UGRAB = 0 vorgegeben.

Bausteinaufrufe im OB 1 bzw. PLC_PRG in frei-grafischer Funktionsplan-darstellung:

Die allgemeine Berechnungsformel für die Normierung kann aus den Linearfunktionen des Normie-rungsbereichs und des Ausgangs-Nennbereichs abgeleitet werden. Für den Ausgangsnennbereich spielt es dabei keine Rolle, ob es sich um eine Spannungsausgabe oder Stromausgabe handelt. Für die Herleitung der Normierungsformel wurde eine Spannungsausgabe (mit U1 = 0) angenommen.

Linearfunktion Normierungsbereich: Linearfunktion Ausgangs-Nennbereich:

UGRNBUU1U2UGRNBOGRNBREAW AA UGRABU

U1U2UGRABOGRABAA AA

Die beiden Gleichungen werden nach UAA aufgelöst und gleichgesetzt. Die Differenz U2 – U1 fällt dabei heraus und es ergibt sich folgende allgemeine Berechnungsformel:

UGRABUGRNBREAWUGRNBOGRNBUGRABOGRABAA

Page 11: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

14.3 Beispiele 501

Für die Ausführung der Berechnungsregel werden zwei lokale Variable eingeführt. Die Variable D1 ist durch die Differenz von OGRAB und UGRAB (Ausgabe-Nennbereich) und die Variable D2 durch die Differenz von OGRNB und UGRNB (Normierungsbereich) bestimmt. Die beiden lokalen Variablen haben das Datenformat REAL. Bevor die Untergrenze des Ausgabe-Nennbereichs UGRAB addiert wird, ist das Zwischenergebnis in eine Integer-Zahl umzuwandeln.

Auf die Darstellung der AWL der schon bekannten Bibliotheksfunktion FC 48 (AE_REALN) wird im nachfolgenden STEP 7 Programm verzichtet.

STEP 7 Programm (AWL-Quelle): FUNCTION FC49 : VOID

VAR_INPUT REAW : REAL ; OGRNB : REAL ; UGRNB : REAL ; OGRAB : INT ; UGRAB : INT ; END_VAR

VAR_OUTPUT AA : INT ; END_VAR

VAR_TEMP D1 : REAL ; D2 : REAL ; END_VAR

BEGIN L #OGRAB; ITD DTR L #UGRAB; ITD DTR -R ; T #D1;

L #OGRNB; L #UGRNB; -R ; T #D2; L #REAW; L #UGRNB; -R ; L #D1;

*R ; L #D2 /R ; RND; L #UGRAB; +I ; T #AA; END_FUNCTION

CodeSys Programm (AWL): FUNCTION FC49 :INT VAR_INPUT REAW: REAL; OGRNB:REAL;

UGRNB:REAL; OGRAB:INT; UGRAB:INT; END_VAR

VAR D1: REAL; D2: REAL; END_VAR

// Anweisungsteil

LD OGRAB INT_TO_REAL SUB( UGRAB INT_TO_REAL )

ST D1 LD OGRNB SUB UGRNB ST D2

LD REAW SUB UGRNB MUL D1 DIV D2

REAL_TO_INT ADD UGRAB ST FC49

Das folgende Beispiel zeigt eine Anwendung der universellen Ausgabefunktion FC 49 (REALN_AA). Als Analogausgabebaugruppe wird ein Signalmodul angenommen, welches den Zahlenbereich von 0 bis 27648 in eine Spannung von 0 bis 10 V ausgibt.

Beispiel 14.4: Lackiererei In einer Lackiererei mit 16 Farbspritz-Arbeitsplätzen muss für eine ausreichende Be- und Entlüftung gesorgt werden. Für jede Spritzpistole, die eingeschaltet wird, meldet der zugehörige Geber ein „1“-Signal. Die Lüftungsleistung der Zuluft- und Abluftventilatoren soll mit jeder eingeschalteten Spritzpisto-le um 5 % von der Gesamtleistung erhöht werden. Die Farbspritzarbeitsplätze können nur in Betrieb genommen werden, wenn der Schalter S eingeschaltet ist, was mit einer Lüftungsgrundleistung von 20 % verbunden ist. Die jeweils eingeschaltete Lüftungsleistung zwischen 0 ... 100 % soll an einem Analogausgang als Span-nungssignal von 0 ... 10 V ausgegeben und an einer Ziffernanzeige angezeigt werden.

Page 12: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

502 14 Normierungsbausteine für Analogwertverarbeitung

Technologieschema:

Bild 14.3: Lackiererei

Zuordnungstabelle der Eingänge und Ausgänge:

Eingangsvariable Symbol Datentyp Logische Zuordnung Adresse Lüftungshauptschalter Geber: Farbspritzplatz

S_EIN S0…S15

BOOL BOOL

Betätigt S-EIN = 1 Spritzpistole ein: S0 ... S15 = 1

E 8.0 EW 0

Ausgangsvariable Lüfterleistung: Spannungs-Signal Anzeige

PAW AW

INT

WORD

Integerwerte von 0 ... 27648 BCD-Wert

PAW 336

AW 12

Für die Ermittlung der Anzahl der eingeschalteten Farbspritzpistolen und die daraus resultierende Be-rechnung der Lüftungsgesamtleistung wird eine Funktion FC 1402 verwendet. Eingang der Funktion ist das Bitmuster der Geber S0 ... S15 (BMG) und Ausgang der Funktion ist die berechnete Lüftungsgesamt-leistung (LGL). Aufgerufen wird die Funktion allerdings nur, wenn sich das Bitmuster ändert und der Lüftungshauptschalter betätigt ist oder beim Einschalten des Lüftungshauptschalters. Zur Feststellung einer Änderung des Bitmusters ist das aktuelle Bitmuster EW0 in einer lokalen Variablen BMALT für den nächsten Programmzyklus zu speichern. Durch einen Vergleich des aktuellen Bitmusters EW0 mit dem Bitmuster des vorherigen Programmzyklus BMALT kann eine Änderung erkannt werden.

Programmschritte im OB 1 bzw. PLC_PRG: 1. Aufruf der Funktion FC 1402:

2. Zuweisung EW BMALT

Ein- und Ausgabevariablen FC 1402:

BMG: Bitmuster der Geber

LGL: Lüftergesamtleistung

Page 13: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

14.3 Beispiele 503

Das Ergebnis der Funktion FC 1402 liegt als Prozentwert von 0.0 ... 100.0 in der lokalen Variablen LGL_PR als Gleitpunktzahl vor. Ist der Lüftungshauptschalter S_EIN ausgeschaltet, wird die Funktion FC 1402 nicht mehr bearbeitet. In die Variable LGL_PR wird dann über eine MOVE-Anweisung der Wert 0.0 transferiert. Für die Ausgabe des Analogwertes von 0 ... 10 V wird die Variable LGL_PR an den Eingang REAW der Ausgabefunktion FC 49 gelegt.

3. Bei S_EIN = 0 : LGL_PR:= 0.0 4. Ausgabefunktion FC 49

5. BCD-Ausgabe

Zur Anzeige der Lüftergesamtleistung von 0 ... 100 % kann die Bibliotheksfunktion FC 706 (REAW_BCD4) verwendet werden. Der Faktor 1 am Eingang EAF (Exponent Anzeigefaktor) bedeutet, dass die Lüfterge-samtleistung mit 10 multipliziert wird. Damit erscheint der Wert auf der vierstelligen BCD-Anzeige mit einer Kommastelle.

Die Aufgabe der Funktion FC 1402 besteht in der Ermittlung der eingeschalteten Farbspritzarbeitsplätzen und der daraus resultierenden Berechnung der Lüftergesamtleistung. Das Steuerungsprogramm der Funk-tion FC 1402 ist durch das nachfolgende Struktogramm beschrieben. Die Schleife wird im STEP 7 Steue-rungsprogramm mit einer LOOP-Anweisung realisiert.

Um festzustellen, wie viele Spritzpisto-len eingeschaltet sind, wird die lokale Variable BMGL, die das Bitmuster der Geber enthält, zunächst um eine Stelle nach rechts und dann wieder um eine Stelle nach links geschoben. Ist der Vergleich mit dem nicht geschobenen Bitmuster nicht erfüllt, wurde eine „1“ herausgeschoben und somit eine einge-schaltete Spritzpistole ermittelt. Bei jedem nicht erfüllten Vergleich wird zur prozentualen Lüftergesamtleistung LGL der Wert 5 dazu addiert.

Das Bitmuster der lokalen Variablen BML wird dann um eine Stelle nach rechts geschoben. Dieser Vor-gang wird 16-mal wiederholt, bis alle Bitstellen des Bitmusters überprüft sind.

STEP 7 Programm (AWL-Quelle):

FUNCTION FC1402 : VOID VAR_INPUT BMG : WORD ; END_VAR

VAR_OUTPUT LGL : REAL ; END_VAR

VAR_TEMP ZAE : INT ; BML : WORD ; END_VAR

Page 14: 14 Normierungsbausteine für Analogwertverarbeitung · in STEP 7: L #AA_Norm L 1.000000e+001 -R L 5.529600e+002 *R RND T #AA_Nenn in CoDeSys: LD AA_NORM SUB 10.0 MUL 552.96 LREAL_TO_INT

504 14 Normierungsbausteine für Analogwertverarbeitung

BEGIN L 2.000000e+001; T #LGL; L #BMG; T #BML; L 16; M001: T #ZAE; L #BML; SRW 1; SLW 1; L #BML; ==I;

SPB M002; L #LGL; L 5.000000e+000; +R ; T #LGL; M002: L #BML; SRW 1; T #BML; L #ZAE; LOOP M001; END_FUNCTION

Hinweis: Die Subtraktion von 1 bei der Variablen ZAE bei jedem Schleifen-durchlauf, so wie im obigen Struktogramm dargestellt, wird von der LOOP-Anweisung eigenständig mit ausge-führt.

CodeSys Programm (AWL): FUNCTION FC1402 :REAL VAR_INPUT BMG: WORD; END_VAR

VAR ZAE:INT; BML:WORD; END_VAR

VAR _REAL_0:REAL; END_VAR

// Anweisungsteil

LD 20 ST FC1402 LD BMG ST BML LD 16 ST ZAE

M001: LD FC1402 ADD 5 ST _REAL_0 LD BML NE( BML SHR 1 SHL 1 ) SEL FC1402,_REAL_0 ST FC1402

LD BML SHR 1 ST BML LD ZAE SUB 1 ST ZAE LD ZAE GT 0 JMPC M001

Aufruf aller Bausteine und deren Verschaltung im PLC_PRG in der Programmiersprache CFC: