Übung -- d001_7-segmentanzeige Übersicht: Der Steuerungsablauf für die Anzeige der Ziffern 0 bis 9 mittels einer 7-Segmentanzeige soll mit einer speicherprogrammierbaren Steuerung realisiert werden. Lehrziele: Sprungfunktionen, Übertragungsfunktionen (Laden & Transferieren), Programmorganisation Quelle: SIEMENS AG, A&D - www.siemens.com/sce Fachhochschule Köln - www.fh-koeln.de/ait Vorraussetzungen: Grundlagen der SPS-Programmierung mit SIMATIC S7-300 (Anhang I) und Grundlegende Programmierbefehle (Anhang III), insbesondere: Zuweisung UND- und ODER-Verknüpfung Dezimales, Hexadezimales und Duales Zahlensystem Zeitaufwand: Schwierigkeit: Seite 1 von 9
Funktionsbeschreibung: Mit den Schaltern S1 bis S4 werden die Dezimalzahlen 0 bis 9 im BCD-Code 8-4-2-1-Code) in die Steuerung eingegeben. Über eine 7-Segmentanzeige sollen die Ziffern 0 bis 9 dargestellt werden. Dazu müssen für jede einzelne Ziffer die entsprechenden Segmente (a bis g) angesteuert werden. Seite 2 von 9
Einführung Dezimal-, Hexadezimal-, Duales Zahlensystem, BCD-Zahlensystem: In diesem Abschnitt werden die genannten Zahlensysteme (zur Erinnerung) kurz vorgestellt, da in der SPS- Technik die Kenntnis darüber unverzichtbar ist. Dezimalsystem: Wird von jedem im alltäglichen Leben gebraucht. Basiszahl: 10 Das heißt: Jede Zahl wird als vielfaches einer Zehnerpotenz dargestellt. Beispiel an der Dezimalzahl 253: 253 = 200 + 50 + 3 = 2 * 100 + 5 * 10 + 3 * 1 = 2 * 10 2 + 5 * 10 1 + 3 * 10 0 Dualsystem: Basiszahl: 2 Das heißt: Jede Zahl wird als vielfaches einer Zweierpotenz dargestellt. Für die Dezimalzahl 253 bedeutet dies: 253 = 128 + 64 + 32 + 16 + 8 + 4 + 0 + 1 = 1 * 2 7 + 1 * 2 6 + 1 * 2 5 + 1 * 2 4 + 1 * 2 3 + 1 * 2 2 + 0 * 2 1 + 1 * 2 0 Dies entspricht 11111101 als Bitmuster eines Bytes (8-Bit). Hexadezimalsystem: Basiszahl: 16 Das heißt: Jede Zahl wird als Vielfaches einer 16er-Potenz dargestellt. Die zur Verfügung stehenden Ziffern sind neben den aus dem dezimalen System bekannten Ziffern 0 bis 9 auch A (für 10) B (für 11) C (für 12) D (für 13) E (für 14) und F(für 15) Für die Dezimalzahl 253 bedeutet dies: 253 = 240 + 13 = 15 * 16 1 + 13 * 16 0 dies entspricht FD in hexadezimaler Darstellung. BCD-kodierte Darstellung von (dezimalen) Zahlen: Bei dieser Art der Darstellung wird eine Dezimalstelle durch die ersten 4 Potenzen des Dual-Codes angezeigt: Beispiel: Darstellung der Dezimalzahl 3 im BCD-Code: 8 4 2 1 0 0 1 1 3 1-er Jeweils eine Zehnerpotenz wird durch eine Tetrade (1, 2, 4, 8) des dualen Systems dargestellt. Das Umwandeln einer BCD-Zahl in eine Dezimalzahl ist aufgrunnd der Übersichtlichkeit der Struktur sehr gut durchführbar. In dieser Programmieraufgabe wird daher die Darstellung der Ziffern einer Tetrade gefordert. Seite 3 von 9
Übertragungsfunktion: Allgemeines: Übertragungsfunktionen werden eingesetzt um Daten in den Akkumulator (Arbeitsregister) zu laden bzw. auszulesen bzw. Daten zwischen den verschiedenen Akkumulatoren auszutauschen. Einsatzbereich: Austausch (Transfer) von Daten zwischen verschiedenen Datenbereichen (Eingängen, Ausgängen, Merker, Konstanten und Datenbausteinen) Digitale Operationen (z.b. Verknüpfungen) Schiebefunktionen In der vorliegenden Aufgabe werden Sie Lade- und Transfer-Funktionen einsetzen. Auf den folgenden Seiten wird die Funktionsweise und die programmtechnische Umsetzung dargestellt. Lade- und Transferfunktionen: Um Daten von einem Datenbereich (z.b. Eingänge, Merker) in einen anderen Datenbereich (z.b. Ausgänge, Datenbaustein) zu übertragen, werden die Quelldaten in den Akkumulator geladen und dann in den Zieldatenbereich transferiert. Bei der Anwendung der Lade- und Transferbefehlen ist zu beachten, dass sie unabhängig vom Verknüpfungsergebnis (VKE) und den Statusbits ausgeführt werden. Da der Akkumulator normalerweise eine Breite von 32 Bit hat können nur die folgenden Operandenlänge bzw. Variablenformate verwendet werden. Operand: Byte Wort Doppelwort Variablen: INT DINT REAL Allgemeiner Hinweis (Für diese Aufgabe nicht wichtig.): Bei den Lade- und Transfer-Befehlen ist je nach Anwendung darauf zu achten, welche Länge der Operand hat und auf welche Art und Weise dieser in den Akku geladen wird, da dieser eine Breite von 4 Bytes (32 Bit) hat. Stichworte dazu: Rechtsbündiges Laden, Highbyte, Lowbyte. Bei der Anwendung innerhalb dieser Aufgabe (Laden und Transferieren eins Bytes) spielt dies keine bedeutende Rolle. Seite 4 von 9
Lade- und Transfer-Funktion in der Programmiersprache FUP und KOP: Im Funktionsplan wird die Lade- und Transferfunktion mit einer MOVE-Box dargestellt. Sie lädt die am Eingang IN anstehenden Daten in den Akku 1 und transferiert gleich anschließend den Inhalt von Akku 1 zum Operanden am Ausgang OUT. Neben dem IN-Eingang und dem OUT-Ausgang hat die MOVE-Box noch den Freigabeeingang EN und den Freigabeausgang ENO. Nachfolgende Darstellungen zeigen die MOVE-Box im FUP und der KOP-Darstellung. Hinweis: Die gewählte Adressierung ist beispielhaft. Wirkungsweise des Aufrufs: Hat der Eingang E 5.3 1 -Signal, werden die Daten aus der Quelle (IN) an das Ziel (OUT) übertragen. In diesem Beispiel steht an IN ein Wert in hexadezimalem Format an: 6D. Der Wert 6D hat den dezimalen Wert 1 * 16 1 + 13 * 16 0 = 96 + 13 = 109 (dez). Der Wert 109 (Dez) hat im dualen Zahlensystem den Wert: 64 + 32 + 8 + 4 + 1 = 1 * 2 6 + 1 * 2 5 + 0 * 2 4 + 1 * 2 3 + 1 * 2 2 + 0 * 2 1 + 1 * 2 0 = 1101101 als Bitmuster Dargestellt im 8-Bit-Muster (= 1 Byte): 01101101 (sog. Darstellung mit führenden Nullen). Auch hier wird erst der Wert 6D(hex) rechtsbündig in den Akku 1 geladen, bevor der Wert an das Ausgangsbyte 0 übertragen wird. Seite 5 von 9
Nachfolgende Tabelle zeigt die Parameter, die möglichen Operanden und die Datentypen der MOVE-Box: Parameter: Operand: Datentyp: EN E, A, M, D, L, T oder Z BOOL IN OUT E, A, M, D, L, P, Konstante oder Variable E, A, M, D, L oder Variable Alle mit 1 Byte, 2 Bytes (Wort) oder 4 Bytes (Doppelwort) Alle mit 1 Byte, 2 Bytes (Wort) oder 4 Bytes (Doppelwort) EN0 E, A, M, D, L, T oder EN BOOL Für den Gebrauch der MOVE-Box sind gewisse Regeln einzuhalten: An den Eingang IN und an den Ausgang OUT können digitale Operanden mit den elementaren Datentypen außer BOOL gelegt werden. Die Variablen am Eingang IN und Ausgang OUT können unterschiedliche Datentypen aufweisen. (Umwandlung von Datentypen beachten!). Die Operandenbreite am Eingang IN und am Ausgang OUT kann unterschiedlich sein. (Stichwort: Was passiert, wenn an IN ein Operand mit 4 Byte ansteht, und an OUT nur eine Breite von 2 Byte zur Verfügung steht. Was geht verloren?). Der Eingang EN und der Ausgang ENO müssen nicht beschaltet werden. Mit dem Eingang EN kann die Abarbeitung der MOVE-Box bedingt durchgeführt werden. (Stichwort: Nicht nur ein Eingangsbit, sondern logische Verknüpfungen können hierzu verwendet werden: UND, ODER,...). EN-/EN0-Mechanismus: Die Freigabe (EN) und der Freigabeausgang (ENO) der FUP/KOP-Boxen wird mittels des BIE-Bits (Störungsbit BIE Register) realisiert. Wenn EN und ENO beschaltet sind, dann gilt: ENO = EN AND NOT (Fehler der Box) Wenn kein Fehler auftritt (Fehler der Box = 0), ist somit ENO = EN. Der EN-/ENO-Mechanismus wird verwendet für: arithmetische Operationen, Übertragungs- und Umwandlungsoperationen, Schiebe und Rotieroperationen, Bausteinaufrufe. Dieser Mechanismus wird nicht verwendet für: Vergleicher, Zähler, Timer. Um die eigentlichen Befehle der Box werden für den EN-/ENO-Mechanismus zusätzliche AWL-Befehle in Abhängigkeit von vorhandenen Vor- und Nachverknüpfungen generiert. Seite 6 von 9
Darstellung der MOVE-Box in AWL: Ergänzende Darstellung (Inhalt) der MOVE-Box ) in AWL: Die nachfolgende AWL-Darstellung zeigt den Inhalt der bereits vorgestellten MOVE-Box und deren Beschaltung. Funktionsweise: Bedingung wird geprüft (E 5.3 = 1?), wenn nein, ist das VKE = 0 und es erfolgt ein bedingter Sprung (bei VKE = 0) an die angegebene Sprungmarke (_001), damit die Lade- und Transferanweisung übersprungen werden kann. Sobald E 5.3 1 -Signal führt, ist das VKE = 1, die Sprungbedingung nicht mehr erfüllt und die Lade- und Transferanweisung wird ausgeführt. Die NOP-Anweisung ist für die unterschiedliche Darstellung in FUP/KOP/AWL notwendig, wie bereits in vorherigen Aufgaben erläutert. Hinweis: Die gewählte Adressierung ist beispielhaft. Die Ladeanweisung (IN) wird in AWL mit einem L gekennzeichnet, die Transferanweisung (OUT) mit einem T. Die Sprunganweisung SPBNB hat folgende Bedeutung: Springe bedingt bei VKE = "0" und SPBNB MARKE Retten des VKE in BIE-Bit Der Sprung an die angegebene Marke innerhalb des Programms erfolgt nur, wenn das VKE = "0" ist. Das aktuelle VKE wird im Statuswort in Bit 8 (*BIE-Bit) gerettet (gespeichert). BIE = Binärergebnisbit: Wenn Sie einen Funktionsbaustein oder eine Funktion in AWL schreiben und in KOP aufrufen wollen, müssen Sie das VKE im BIE-Bit speichern, um so den Freigabeausgang ENO (Stichwort MOVE-BOX ) für die MOVE-Box zu liefern. Die angegebene Sprungmarke _001 wird dabei automatisch erzeugt, wenn die Programmierung in FUP bzw. KOP erfolgt und anschließend auf die Darstellung AWL umgeschaltet wird. Seite 7 von 9
Zuordnungsliste: OPERAND SYMBOL KOMMENTAR E0.0 S1 Dezimalwert 1 E0.1 S2 Dezimalwert 2 E0.2 S3 Dezimalwert 4 E0.3 S4 Dezimalwert 8 A0.0 a Segment a A0.1 b Segment b A0.2 c Segment c A0.3 d Segment d A0.4 e Segment e A0.5 f Segment f A0.6 g Segment g E0.0 S1 Dezimalwert 1 SPS-Schema: Anschluss der Schalter (S1 bis S4) und der einzelnen LED-Segmente (a bis g) an die Steuerung. Seite 8 von 9
Aufgabenstellung: Erstellen Sie ein SPS-Programm, welches die geforderte Funktion erfüllt. Beachten Sie dabei, dass Sie bei einem undefinierten Zustand der Eingänge, alle Segmente ausschalten. Verwenden Sie dazu die im Einführungsteil dieser Aufgabe behandelten STEP 7-Anweisungen (MOVE-Box). In der folgenden Tabelle sind die notwendigen Bitmuster (AB0) und die zugehörigen Hex-Zahlen für den IN- Eingang der MOVE-BOX aufgeführt. Ziffer: BCD (E0.3 - E0.0): Segmente: Bitmuster (AB0): Hex-Zahl: ergänzend: Dez-Zahl: 0 0000 f, e, d, c, b, a 00111111 3F 63 1 0001 c, b 00000110 6 6 2 0010 a, b, d, e, g 01011011 5B 91 3 0011 a, b, c, d, g 01001111 4F 79 4 0100 b, c, f, g 01100110 66 102 5 0101 a, c, d, f, g 01101101 6D 109 6 0110 a, c, d, e, f, g 01111101 7D 125 7 0111 a, b, c 00000111 7 7 8 1000 a, b, c, d, e, f, g 01111111 7F 127 9 1001 a, b, c, d, f, g 01101111 6F 111 Als Lösungsansatz steht Ihnen nachfolgend ein Flussdiagramm zur Verfügung. Seite 9 von 9