Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

(Schulungs-Präsentation)

Ähnliche Präsentationen


Präsentation zum Thema: "(Schulungs-Präsentation)"—  Präsentation transkript:

1 (Schulungs-Präsentation)
SPS-Programmierung Teil 2 (Schulungs-Präsentation)

2 Themenübersicht Adressbereiche CJ Schrittkette mit SET / RSET
FOR / NEXT 3 61 72 E/A-Adressen CJ Schrittkette mit STEP/SNXT Benutzerdefinierte Datenstrukturen 28 63 75 Funktionsblock Indirekte 44 66 Skalierung mit FB Arrays 50 71 *In dieser Präsentation werden Funktionen beschrieben, die durch Verwendung der letzen, aktuellen Software CX-Programmer zum Vorschein kommen.

3 Speicher in der CPU-Baugruppe
Anwenderprogr. = UM (user memory) Backup (Flash) SPS-Einstellungen und Parameter Datenspeicher (E/A und DM und EM) CF-Speicherkarte FB-Source-Code-Speicher CJ2M-FB-Speicher In dieser Abbildung wird die interne Struktur der CPU-Baugruppe dargestellt. Außerdem gibt es noch einen Speicher für Kommentare und Symbolnamen. Die CJ2M hat noch einen vom UM-getrennten Speicher für ausführbaren Code der FBs.

4 Adressbereiche anzeigen
Zur Ansicht aller, für die gegebene SPS verfügbaren Speicherbereiche, bitte mit dem Mauszeiger das Speicher-Symbol im Arbeitsbereich (Projektverzeichnisbaum) auswählen und doppelklicken. Hinweis: zur Ansicht aller für die gegebene SPS verfügbaren Speicherbereiche bitte mit dem Mauszeiger das Speicher-Symbol im Arbeitsbereich (Projektverzeichnisbaum) auswählen und doppelklicken. Die Speicherbereiche können zwischen den unterschiedlichen SPS-und-CPU-Typen leicht variieren. Sie werden ausführlich in der Präsentation des SPS-Trainings behandelt.

5 Adressbereiche CJ Ein-/Ausgänge, Arbeitsmerker Timer Systemmerker
Zähler remanent Index-Register Datenregister Task-Merker Datenworte, remanent Haftmerker remanent Erweiterungs- Datenworte, remanent Arbeitsmerker

6 Systemmerker-A-Speicherbereich- CJ
Merker zur Überwachung und Steuerung des SPS-Betriebs: Fehlermerker, Zykluszeit-Merker, Echtzeit-Merker …. Wort- z.B.’A264’ oder Bitadresse z.B.‘A200.11’ Die wichtigsten Systemmerker sind in der CJ sogenannte Condition Flags CF, sie sind in der Symboltabelle schon definiert, man kann sie nicht mit der Datenanzeige aufrufen. Systemmerkerbereich A enthält Merker zur Überwachung und Steuerung des SPS-Betriebs: Fehlermerker, Zykluszeit-Merker, Echtzeit-Merker …. Wort- z.B.’A264’ oder Bitadresse z.B.‘A200.11’ nur lesbar A000 bis A447, lesbar/schreibbar A448 bis A959

7 Haftmerker H und Arbeitsmerker W - CJ
Haftmerker-Bereich H: enthält remanente (spannungsausfallsichere) Arbeitsmerker Wort- z.B.’H511’ oder Bitadresse z.B.‘H511.15’ Arbeitsbereich W: Wort- z.B.’W511’ oder Bitadresse z.B.‘W511.11’ Arbeitsbereich W: Wort- z.B.’W511’ oder Bitadresse z.B.‘W511.11’ Haftmerker-Bereich H: enthält remanente (spannungsausfallsichere) Arbeitsmerker Wort- z.B.’H511’ oder Bitadresse z.B.‘H511.15’

8 Zeitgeber T und Zähler C - CJ
Zeitgeber-Bereich T: Timeristwert- z.B. Wort ’T4095’ , “Zeit abgelaufen”-Bitadresse ‘T4095’ Zähler-Bereich C: Zähleristwert- z.B. Wort ’C4095’ , “Zähler abgelaufen”-Bitadresse ‘C4095’ Zeitgeber-Bereich T: empfehlenswert ist, unterschiedliche Nummern unterschiedlichen Zeitgeberarten zu geben Timeristwert- z.B. Wort ’T4095’ , “Zeit abgelaufen”-Bitadresse ‘T4095’ Zähler-Bereich C: empfehlenswert ist, unterschiedliche Nummern unterschiedlichen Zählerarten zu geben Zähleristwert- z.B. Wort ’C4095’ , “Zähler abgelaufen”-Bitadresse ‘C4095’ Zähler-Istwerte sind remanent (spannungsausfallsicher)

9 Datenmerker D und Erweiterte Datenmerker E
Datenmerker-Bereich D für Daten, Parameter, Werte: nur wortweiser Datenzugriff, z.B. D32767 Bereich E ist nur bei CJ1G-CPU44, -CPU45, CJ1H-CPU64 und höher vorhanden: Bereich E für Daten, Parameter, Werte nur wortweiser Datenzugriff, z.B. E2_32767 für die Bank E2 Datenmerker-Bereich D für Daten, Parameter, Werte: nur wortweiser Datenzugriff, z.B. D32767 D sind remanent (spannungsausfallsicher) Bereich EM ist nur bei CS1G-CPU44, -CPU45, CS1H-CPU64 und höher vorhanden: Bereich EM für Daten, Parameter, Werte nur wortweiser Datenzugriff, z.B. E2_32767 für die Bank E2 EM sind remanent (spannungsausfallsicher)

10 CIO-Speicherbereich - CJ
Ein-/Ausgänge, Arbeitsmerker Wort- z.B.’139’ oder Bitadresse z.B.‘139.11’ Ein-/Ausgänge, Arbeitsmerker Wort- z.B.’139’ oder Bitadresse z.B.‘139.11’

11 CIO-Speicherbereich - CJ
E/A-Bereich ch Frei ch ch frei DeviceNet ch Data Link ch frei ch frei ch CPU-Bus-Baugr. ch Spezial-Baugr. +D20000 bis D29599 ch

12 CJ - E/A - Adresszuordnung
3 Typen von Baugruppen bei der CJ1 . Basis - E/A – Baugruppen Spezial - E/A - Baugruppen CJ1 - CPUbus - Baugruppen (Siehe Handbuch W393 Kapitel 8-1) Den 3 verschiedenen Bereichen in der SPS ist jeweils eine andere Baugruppensorte zugeordnet. Die Baugruppentypen heißen: CS1-CPUbus - Baugruppen Spezial-E/A - Baugruppen Basis-E/A- Baugruppen

13 CJ - E/A - Adresszuordnung
Basis - E/A - Baugruppen CIO ( W393 ) Zu den Basis-E/A-Baugruppen gehören CJ1- Basis - E/A- Baugr. , z.B.: CJ1W-ID_ _ _, OD_ _ _, MD_ _ _ Speicherbereiche CIO 0000 bis Es sind 320 Worte ca Bits stehen zur Verfügung. HINWEIS: Die E/A-Adressen werden durch die Reihenfolge der Baugruppen auf dem Baugruppenträger bestimmt.

14 CJ - E/A - Adresszuordnung
Spezial-E/A- Baugruppen CIO (D20000-D29599) (W393 ) Die Adresse ist nicht vom Steckplatz abhängig, sondern nur der Drehschalter (Spezial-E/A-Baugruppennummer) bestimmt die verwendete Adresse. Spezial E/A- z.B..CJ1W-AD, DA, TC, TS, NC, MC, usw… Der benutzte Speicherbereich ist CIO 2000 bis Worte (10 Worte pro Baugruppennummer x 96 Baugruppen = 960 Worte) Es kann Baugruppen geben, die mehr als eine Baugruppennummer belegen: z..B. Compobus/S-Master,... HINWEIS: Die CJ stellt 96 Baugruppennummern zur Verfügung, Bei den CJ1-Spezial-E/A-Baugruppen kann man die per Drehschalter einstellen, es können aber nur maximal 40 Baugruppen zentral betrieben werden.

15 CJ - E/A - Adresszuordnung
CJ - CPUbus - Baugruppen CIO (W393 ) CPUbus-Baugruppen der CJ sind vergleichbar mit den CPUbus-Baugruppen der CS1-SPS. Es sind hauptsächlich Netzwerkkarten, die meist nur Statusinformationen der CPU zur Verfügung stellen, und sonst mit dem gesamten Speicher der CPU arbeiten können: z.B.: CJ1W-CLK21, CLK11, ETN21, SCU21, CJ1W-MC Speicherbereiche : CIO 1500 bis 1899; 400 Worte Jede Baugruppe belegt 25 Worte. Bis zu 16 CPUbus-Baugruppen können auf dem CPU-Baugruppenträger oder Erweiterungsbaugruppenträger gesteckt werden. Es können aber nur 4 Netzwerkkarten betrieben werden.

16 CJ - E/A - Adresszuordnung
Zuordnungs- Methode (W ) Die E/A-Adressen werden durch die Reihenfolge der Baugruppen bestimmt. Es ist also keine feste Steckplatzabhängige Adressierung, sondern eine ‘fließende’ wie bei der CS1. Die Adresszählung geht von links nach rechts. Wird ein Steckplatz freigelassen, oder mit einer Baugruppe belegt, die keine Adressen im Basis-E/A-Bereich benutzt, so wird diesem Steckplatz KEINE Adresse zugeteilt; beim automatischen erstellen der E/A-Tabelle. Nachträglich eingefügte Baugruppen können dann dazu führen, dass sich alle nachfolgenden Adressen verschieben. Mit dem CX-Programmer kann man E/A-Tabellen editieren und Adressbereiche für späteren Ausbau reservieren (Man fügt Reserve-Baugruppen ein) 8 E/A= 1 Wort 16 E/A=1 Wort 32 E/A=2 Worte 64 E/A = 4 Worte

17 CJ - E/A - Adresszuordnung
Zuordnung bei CJ Erweiterungs-Baugruppenträger Anfangsadresse des Baugruppenträgers wählbar, z.B.: #1=Adresse 20 #2=Adresse 100 (W393 ) Bei Erweiterungsbaugruppenträger geht auch die Reihenfolge der Adressen direkt weiter. Man kann aber auch eine Anfangsadresse für jeden Baugruppenträger vorgeben.

18 E/A-Tabelle öffnen Die CJ kann mit oder ohne registrierte E/A-Tabelle arbeiten Die E/A-Tabelle stellt die Abbildung der Konfiguratuon im CIO-Bereich dar Öffnen der E/A-Tabelle mit Doppelklick auf ‘E/A-Tabelle‘ im Projekt Die CJ kann mit oder ohne registrierte E/A-Tabelle arbeiten E/A-Tabelle stellt die Abbildung der Konfiguratuon im CIO-Bereich dar Öffnen der E/A-Tabelle mit Doppelklick auf ‘E/A-Tabelle‘ im Projekt

19 E/A-Tabelle erstellen
CX-Programmer zeigt die Adressenzuweisung der Baugruppen in der SPS-Konfiguration an, nachdem die E/A-Tabelle in der Program(=Stop)-Betriebsart online erstellt wurde. CX-Programmer zeigt die Adressenzuweisung der Baugruppen in der SPS-Konfiguration an, nachdem die E/A-Tabelle in der Programm-Stop-Betriebsart online erstellt wurde. Schnelle Zähler-Baugruppe: Steckplatz 02, Anfangsadresse 2050

20 Allgemeine Hinweise zum Programmieren
Konstante: #10 (Hex), oder &10 (Dezimal), aber Adresse: 10 Bit-Adresse: 10.15, H05.12 Wort-Adresse: 10, H05, D1002 Konstante: #10 (Hex), oder &10 (Dezimal), aber Adresse: 10 Bit-Adresse: 10.15, H05.12 Wort-Adresse: 10, H05, D1002 Flankentriggerung bedeutet einmalige Befehlsausführung bei Befehlen bei steigender Flanke, %-bei fallender Flanke, !- direkte Auffrischung. Sie sind bei CP1L/H, CJ1, CS1 möglich, abhängig vom Befehl und werden direkt vor der Befehlsmnemonik eingegeben, z.B. %RSET. Anmerkung: bei einer Befehlseingabe erscheint im Eingabefenster die kontextbezogene Hilfe zu den Operanden, außerdem gibt es die Online-Befehlshilfe. Es wird schon bei der Eingabe darauf hingewiesen, welche Speicherbereiche und Werte zulässig sind. Ausführlich sind alle Befehle im Referenz-Handbuch W451 beschrieben.

21 Funktionsblock (FB) CP1L/H, CJ, CS1
FB-Bibliothek mit vielen vorgefertigten FB vorhanden. Zum Einfügen bitte mit dem Mauszeiger auf „Funktionsblöcke“ im Arbeitsbereich (Projektverzeichnisbaum) gehen, klicken, mit rechter Maustaste folgendes auswählen: Als Beispiel wählen wir den Funktionsblock /_CPU007_MakeClockPulse_BCD10.cxf unter omronlib/PLC/CPU. Der Einsatz von Funktionsblöcken (FB) dient der Programmübersichtlichkeit und verbessert die Wiederverwendung von Programmen (Zeitersparnis). Es gibt auch eine umfassende Bibliothek vorgefertigter FB. Zum Einfügen bitte mit dem Mauszeiger auf „Funktionsblöcke“ im Arbeitsbereich (Projektverzeichnisbaum) gehen, klicken, mit rechter Maustaste folgendes auswählen: Als Beispiel wählen wir den Funktionsblock /_CPU007_MakeClockPulse_BCD10.cxf unter omronlib/PLC/CPU. Hinweis: Die Beschreibung zum FB kann man mit der rechten Maustaste öffnen, FB-Bibliotheksreferenz“. Wie oben, müssen zuvor ‚Funktionsblöcke‘ angeklickt gewesen sein. FB gibt es erst bei CJ1, CJ1M, CS1 ab Version V3 und CP1H (CX-Programmer ab Version 5)

22 Netzwerk mit FB kreieren CP1L/H, CJ, CS1
Die Taste „F“ drücken (oder über Menü „Einfügen/ Funktionsblock-aufruf“), danach einen Namen eingeben, z.B. „Takt“. Die Eingangsparameter mit der Taste „P“ editieren, Adressen D0, D1 . Die Eingabeposition muss immer mit dem Mauszeiger markiert gewesen sein. Das Ergebnis sieht dann so aus: PC-Taste „C“ drücken (oder über Menü „Einfügen/Kontakt/Schließer“). Kontakt auswählen, z.B. P_On. Dann die PC-Taste „F“ drücken (oder über Menü „Einfügen/ Funktionsblock-aufruf“), danach den Namen eingeben, z.B. „Takt“. Die Eingangsparameter mit der PC-Taste „P“, den Ausgang am FB mit Taste „O“ aufrufen und eingeben, z.B. als Adressen D0, D1 und 1.00. Die Eingabeposition muss immer mit dem Mauszeiger markiert gewesen sein. Das Ergebnis sieht dann so aus: In einem Netzwerk darf immer nur ein FB vorkommen. FB gibt es erst bei CJ1, CJ1M, CS1 ab Version V3 und CP1H

23 FB - Parameter Alle normalen Ein- und Ausgänge, auch wenn es sich um binäre Werte handelt, können nur mit FB-Parametern belegt werden. Am EN-Eingang können nur Kontakte angeschlossen werden und am ENO-Ausgang können Kontakte, Ausgänge und Befehle angehängt werden.

24 FB - Aufrufbeschränkungen
Zusammen mit einem FB (Funktions-Block) können keine anderen Befehle aktiviert werden. Sie können aber dahinter gesetzt werden.

25 Netzwerk mit FB testen CP1L/H, CJ, CS1
Das fertige Netzwerk kann man entweder online mit der SPS testen, oder mit dem Simulator. Die Werte in D0 und D1 zum Testen eingeben. Das Ergebnis sieht dann so aus, der „Blinker“ blinkt im vorgegebenen Takt: Das fertige Netzwerk kann man entweder online mit der SPS testen, oder mit dem Simulator vom CX-Programmer. Simulator im CX-Programmer über das Menü „SPS/ Online-Simulator“ aufrufen oder Symbol anklicken. Früher mußte man danach im „Herunterladeoptionen“-Dialogfenster auf OK klicken, die virtuelle SPS in die Monitor-Betriebsart umschalten (Symbol oder Menü „SPS/Betriebsart/Monitor“) und die Werte in D0 und D1 zum Testen eingeben. Das Ergebnis sieht dann so aus, der „Blinker“ blinkt im vorgegebenen Takt: FB gibt es erst bei CJ1, CJ1M, CS1 ab Version V3 und CP1H. Die Anwendung von Simulator ist insbesondere bei der Programmentwicklung sinnvoll, um schnell Programmfehler zu beseitigen. Zudem kommt man damit erstmal ohne die Hardware aus.

26 Netzwerk mit FB testen CP1L/H, CJ, CS1
Die Eingangsparameter D0 und D1 sind als BCD Zahlen einzugeben, mit # vorne: Mit dem Mauszeiger auf das SPS-Symbol im Arbeitsbereich (Projektverzeichnisbaum) gehen, klicken, mit rechter Maustaste „Eigenschaften„ auswählen. Die SPS-Einstellung „Zeitgeber/Zähler als Binärwert ausführen“ muss für diesen Fall deaktiviert sein, also für BCD-Werte. Da wir den Funktionsblock mit Timer-Befehlen für BCD-Zahlen ausgewählt haben, wie schon der Name „…BCD“ zeigt, sind die Eingangsparameter D0 und D1 als BCD Zahlen einzugeben, mit # vorne: Die SPS-Einstellung „Zeitgeber/Zähler als Binärwert ausführen“ muss für diesen Fall deaktiviert sein, also für BCD-Werte. Hinweis: bitte mit dem Mauszeiger auf das SPS-Symbol im Arbeitsbereich (Projektverzeichnisbaum) gehen, klicken, mit rechter Maustaste „Eigenschaften„ auswählen. FB gibt es erst bei CJ1, CJ1M, CS1 ab Version V3 und CP1H. Die Anwendung von Simulator ist insbesondere bei der Programmentwicklung sinnvoll, um schnell Programmfehler zu beseitigen. Zudem kommt man damit erstmal ohne die Hardware aus. Bei der CJ2 braucht man nicht mehr zwischen BCD und BIN wählen, da gehen TIM und TIMX beide gleichzeitig in einem SPS-Programm.

27 FB-Beispiel: Skalierung
Eine Skalierung stellt eine lineare Konvertierung dar, wie in der Zeichnung rechts abgebildet. Dabei lässt sich das Ergebnis E mit der folgenden Formel aus der Quelldaten Q berechnen: E:=Bd-((Bd-Ad)/(Bs-As))*(Bs-Q) Eine Skalierung stellt eine lineare Konvertierung dar, wie in der Zeichnung rechts abgebildet. Dabei lässt sich das Ergebnis E mit der folgenden Formel aus der Quelldaten Q berechnen: E:=Bd-((Bd-Ad)/(Bs-As))*(Bs-Q) FB gibt es erst bei CJ1, CJ1M, CS1 ab Version V3 und CP1H.

28 Inhalt des Skalierungs- FB
(E-Ad) / (Q-As) = (Bd-Ad) / (Bs-As) E:=Ad+((Bd-Ad)/(Bs-As))*(Q-As); A1:=(Bd-Ad)/(Bs-As); E:=Ad+A1*(Q-As); Der FB führt Berechnungen mit REAL-Zahlen aus. Falls die Ein-/Ausgangsdaten im anderen Format vorliegen, z. B. INT, ist eine Formatumwandlung mit den Funktionen int_to_real und umgekehrt, real_to_int, notwendig. A1:= int_to_real(Bd-Ad)/int_to_real(Bs-As); E:=Ad+real_to_int(A1*int_to_real(Q-As));

29 Beispiel: Aufruf Skalierungs- FB
Das fertige Netzwerk sieht dann so aus: Hier in der Überwa-chungsbetriebsart dargestellt.

30 Überwachung: Skalierungs- FB
Durch Klicken auf das Symbol oder Ansicht/FB-Instanz überwachen gelangt man eine Ebene tiefer, wenn der Funktionsblock markiert ist, d.h. man kann den Funktionsblock intern online überwachen. Die aktuellen Werte sieht man dann in der rechten Hälfte. Ab CX-Programmer 6.1 möglich

31 Schrittkette Schrittketten werden bei allen automatischen Abläufen benötigt. Sie bestehen aus: Schritten und Transitionen. Als Beispiel kann die Programmsteuerung einer Waschmaschine dienen: Schritte: Vorwäsche Hauptwäsche Spülen Tansitionen: Laufzeiten des Programmreglers

32 Schrittkette mit SET/RSET
Die Schrittkette ist in umgekehrter Reihenfolge programmiert. Dadurch wird die Bearbeitung eines neuen Schrittes erst im nächsten Zyklus begonnen. Es wird keine Zykluszeit eingespart. Es gibt keine Einschränkung in der Benutzung.

33 Übung - Schrittkette mit SET/RSET
Programmieren Sie eine Ampel mit den Schritten: ROT ROT/GELB GRÜN GELB Die Transtionen: 8 sec bis ROT/GELB kommt 2 sec bis GRÜN kommt 5 sec bis GELB kommt 3 sec bis ROT kommt Lampe_rot = 6.00 Lampe_gelb = 6.01 Lampe_grün = 6.02 Timer 1 bis 4 Schrittmerker W0.00 bis W0.03 (automatisch)

34 Übungsauflösung Schrittkette mit SET/RSET
Programmieren Sie eine Ampel mit den Schritten: ROT ROT/GELB GRÜN GELB Die Transtionen: 8 sec bis ROT/GELB kommt 2 sec bis GRÜN kommt 5 sec bis GELB kommt 3 sec bis ROT kommt

35 STEP und SNXT SNXT(009) setzt den Schrittmerker für den nächsten Schritt STEP(008)–Befehl mit Schrittmerker zeigt an, dass danach das entsprechende Schrittprogramm beginnt. STEP(008) ohne Schrittmerker zeigt das syntaktische Ende des Schrittkettenprogramms an. SNXT(009) wird direkt vor den STEP(008)–Befehl gesetzt und steuert durch Einschalten des spezifizierten Steuerbits die Schrittausführung. Wenn sich direkt vor SNXT(009) ein anderer Schritt befindet, wird auch das Steuerbit von diesem Schritt ausgeschaltet. STEP(008) wird vor jedem Prozess direkt hinter dem SNXT(009)–Befehl gesetzt. Der Befehl definiert den Anfang für jedes Verfahren und spezifiziert dessen Steuerbit. Er wird auch an das Ende des Schrittprogrammbereichs hinter dem letzten SNXT(009)–Befehl gesetzt, um das Ende des Schrittprogrammbereichs zu kennzeichnen. Wenn der Befehl am Ende des Schrittprogrammbereich auftritt, enthält STEP(008) keine Steuerbits. Ausgänge und Zeiten werden beim verlassen des Schrittes zurückgesetzt. Programmcode von nicht aktiven Schritten wird übersprungen. (Die Zykluszeit der SPS verkürzt sich dadurch) STEP und SNXT können nicht in Unterprogrammen verwendet werden!

36 Schrittkette mit STEP/SNXT
Es sind auch parallele und alternative Verzweigungen der Schrittkette möglich. Sind die Bedingungen c und d gleich, oder gleichzeitig EIN, so werden die Schritte A und B innerhalb eines Zyklus auch gleichzeitig ausgeführt. (Dies ist manchmal nicht erwünscht ; bei Kommuniktions-sequenzen - zu verhindern mit ANDNT A vor dem SNXT) Zur einmaligen Abarbeitung von Befehlen im Schritt kann bei der CS1 das Bit A abgefragt werden, das im ersten Zyklus des aktivierten Schritts EIN ist. (Mit Flanken oder DIFUs geht das nicht) Programmieren Sie eine Ampel mit den Schritten: ROT ROT/GELB GRÜN GELB Die Transtionen: 8 sec bis ROT/GELB kommt 2 sec bis GRÜN kommt 5 sec bis GELB kommt 3 sec bis ROT kommt

37 Übung - Schrittkette mit STEP/SNXT
Programmieren Sie eine Ampel mit den Schritten: ROT ROT/GELB GRÜN GELB Die Transtionen: 8 sec bis ROT/GELB kommt 2 sec bis GRÜN kommt 5 sec bis GELB kommt 3 sec bis ROT kommt Lampe_rot = 6.00 Lampe_gelb = 6.01 Lampe_grün = 6.02 Timer 1 bis 4 Schrittmerker W0.00 bis W0.03 (automatisch)

38 Übungsauflösung - Schrittkette STEP/SNXT

39 Indirekte Adressierung
Befehle arbeiten normalerweise mit festen Adressen. Bei Verwendung von Tabellen (z.B. Rezepturen) müßte für jede Adresse in der Tabelle auch ein Befehl vorhanden sein, der die Adresse in der Tabelle bearbeitet. Einfacher ist es alle Tabelleneinträge mit einem Befehl bearbeiten zu können. Dazu benötigt man einen Zeiger, der auf die zu bearbeitende Tabellenadresse zeigt. In den Befehl wird dann nicht die feste Adresse, sondern die Adresse des Zeigers eingetragen, mit davor: @D. Die SPS liest dann den Inhalt des Zeigers (hier DM1= 1111) und arbeitet dann mit dem Wert als Adresse, die im Zeiger steht (DM1111) . Bei der CS1 kann der Wert im Zeiger entweder binäres oder BCD-Format haben. Ein Stern * vor dem Zeiger bedeutet BCD-Format. 0…9999 Ein vor dem Zeiger bedeutet Binäres Format. 0…32767

40 Beispiel: Rezepturverwaltung
Tabelle mit Brot-Rezepten in der SPS: Eingabebild auf dem Bediengerät: 40.00 D0 D12 D10 In der SPS gibt es eine Tabelle, die bei Adresse D100 beginnt. Jeder Rezepteintrag hat 10 Worte. Das Rezept, der Rezeptnummer, die ausgewählt ist, wird in den Adressen D10 bis D19 angezeigt. Die Rezeptnummer liegt in D0 und geht von 0 bis 99. Wenn der eingegebene Datensatz in die Tabelle geschrieben werden soll, wird das Bit aktiviert. Zuerst berechnet das Programm den Zeiger auf D4, es wird die Rezeptnummer in D0 mit der Anzahl der Worte pro Rezept (10) multipliziert, und dann den Wert der Anfangsadresse der Tabelle (100) addiert. Wenn der Datensatz in die Tabelle geschrieben werden soll, überträgt der XFER-Befehl 10 Worte von D10 bis D19 in die Tabelle, dahin, wo der Zeiger zeigt. Ein neuer Datensatz wird angezeigt, wenn sich die Rezeptnummer ändert. Die vorherige Rezeptnummer steht auf D6 D11 D13 D14

41 Übung: Indirekte Adressierung
Erweitern Sie Ihr bisheriges Programm mit einer Messwertanzeige . Je nach Eingabewert in Adresse 0, soll in der Anzeige (Adresse 4 und 5) entweder Messwert 1, 2 , 3 oder 4 angezeigt werden. Die Messwerte sollen zwei Worte belegen, und die Tabelle soll in D20 beginnen.

42 Übungsauflösung: Indirekte Adressierung

43 Arrays Programme mit indirekter Adressierung sind sehr undurchsichtig.
Einfacher ist es, Symbolische Namen anzulegen und diesen als Array (Feld) zu definieren. Schaltfläche „Erweiterte Einstellungen“ klicken.

44 Rezepturverwaltung mit Arrays
Tabelle mit Brot-Rezepten in der SPS: In der SPS gibt es eine Tabelle, die bei Adresse D100 beginnt. Jeder Rezepteintrag hat 10 Worte. Das Rezept, der Rezeptnummer, die ausgewählt ist, wird in den Adressen D10 bis D19 angezeigt. Die Rezeptnummer liegt in D0 und geht von 0 bis 99. Wenn der eingegebene Datensatz in die Tabelle geschrieben werden soll, wird das Bit aktiviert. Zuerst berechnet das Programm den Zeiger auf D4, es wird die Rezeptnummer in D0 mit der Anzahl der Worte pro Rezept (10) multipliziert, und dann den Wert der Anfangsadresse der Tabelle (100) addiert. Wenn der Datensatz in die Tabelle geschrieben werden soll, überträgt der XFER-Befehl 10 Worte von D10 bis D19 in die Tabelle, dahin, wo der Zeiger zeigt. Ein neuer Datensatz wird angezeigt, wenn sich die Rezeptnummer ändert. Die vorherige Rezeptnummer steht auf D6

45 Beispielprogramm: Rezepte mit Arrays
Das Programm macht das gleiche wie bei der indirekten Adressierung Array-Element-Zugriff mit eckigen Klammern: Rezept[n]

46 Übung: Arrays Ändern Sie Ihr bisheriges Programm mit der Messwertanzeige durch die Definition eines Arrays . Je nach Eingabewert in Adresse 0, soll in der Anzeige (Adresse 4 und 5) entweder Messwert 1, 2 , 3 oder 4 angezeigt werden. Die Messwerte sollen zwei Worte belegen, und die Tabelle soll in D20 beginnen.

47 Übungsauflösung: Arrays
Könnte natürlich auch mit MOVL gelöst werden.

48 FOR- NEXT- Schleife Die Befehle zwischen FOR(512) und NEXT(513) werden N Mal ausgeführt. (z.B. N=3) Wenn N auf 0 gesetzt ist, werden die Befehle) als NOP(000)-Befehle verarbeitet. Schleifen können zur Verarbeitung von Datentabellen verwendet werden. FOR-NEXT-Schleifen können in bis zu 15 Ebenen verschachtelt werden. Totalizing Timer Wenn der Zeitgebereingang auf EIN gesetzt ist, wird der Istwert von TTIM(087)/TTIMX(555) inkrementiert. Wenn der Zeitgeberausgang auf AUS gesetzt wird, stoppt der Zeitgeber die Inkrementierung des Istwerts, der Istwert behält jedoch seinen Wert. Ist der Zeitgebereingang wieder auf EIN gesetzt, wird die Zeitmessung wieder aufgenommen und der Istwert weiter inkrementiert. Das Zeitgeber-Fertig-Bit wird auf EIN gesetzt, wenn der Istwert den Sollwert erreicht. Der Status von Zeitgeberistwert und Fertig-Bit wird nach Ablauf des Zeitgebers beibehalten. Der Zeitgeber kann auf drei verschiedene Weisen wieder gestartet werden: Der Zeitgeber-Istwert kann auf einen Wert größer Null geändert werden (z.B. mit MOV(021), der Rücksetzeingang kann auf EIN gesetzt oder der Befehl CNR(545)/CNRX(547) kann ausgeführt werden.

49 Benutzerdefinierte Datenstrukturen
Noch transparenter wird es, wenn man jedem Rezept-Element den richtigen Namen geben kann. Geht nur mit CJ2. Im Verzeichnisbaum gibt es: Datentypen Um einen neuen Datentyp zu definieren: „Rechte Maustaste“ „Einsetzen“ „Strukt..“ wählen

50 Benutzerdefinierte Datenstrukturen
Um einen neuen Datentyp zu definieren: „Rechte Maustaste“ „Einsetzen“ „Strukt..“ wählen

51 Rezepturverwaltung mit Datenstrukturen
Tabelle mit Brot-Rezepten in der SPS: In der SPS gibt es eine Tabelle, die bei Adresse D100 beginnt. Jeder Rezepteintrag hat 10 Worte. Das Rezept, der Rezeptnummer, die ausgewählt ist, wird in den Adressen D10 bis D19 angezeigt. Die Rezeptnummer liegt in D0 und geht von 0 bis 99. Wenn der eingegebene Datensatz in die Tabelle geschrieben werden soll, wird das Bit aktiviert. Zuerst berechnet das Programm den Zeiger auf D4, es wird die Rezeptnummer in D0 mit der Anzahl der Worte pro Rezept (10) multipliziert, und dann den Wert der Anfangsadresse der Tabelle (100) addiert. Wenn der Datensatz in die Tabelle geschrieben werden soll, überträgt der XFER-Befehl 10 Worte von D10 bis D19 in die Tabelle, dahin, wo der Zeiger zeigt. Ein neuer Datensatz wird angezeigt, wenn sich die Rezeptnummer ändert. Die vorherige Rezeptnummer steht auf D6

52 Beispielprogramm: Rezepte mit Strukturen
Das Programm macht das gleiche wie bei der Array-Adressierung Struktur-Array-Element-Zugriff mit eckigen Klammern: Rezept[n].Wasser

53 Übung: Benutzerdefinierte Datenstrukturen
Ändern Sie Ihr bisheriges Programm mit der Messwertanzeige durch die Definition eines Arrays . Je nach Eingabewert in Adresse 0, soll in der Anzeige (Adresse 4 und 5) entweder Messwert 1, 2 , 3 oder 4 angezeigt werden. Die Messwerte sollen zwei Worte belegen, und die Tabelle soll in D20 beginnen.

54 Übungsauflösung: Datenstrukturen
Könnte natürlich auch mit MOVL gelöst werden.

55 Structures „hands on“ Benutzerdefinierten Datentyp anlegen
Elemente des Datentyps festlegen Variable mit dem Datentyp anlegen Struktur als Arrayvariable Auf Elemente der Struktur zugreifen

56 Benutzerdefinierten Datentyp anlegen
Neue SPS: CJ2M-CPU33 Im Verzeichnisbaum gibt es etwas Neues: Datentypen Sieht aus wie die Symboltabelle Um einen neuen Datentyp zu definieren: „Rechte Maustaste“ „Einsetzen“ „Strukt..“ wählen

57 Elemente des Datentyps festlegen
Eben angelegten Datentyp „Rezept“ markieren: „Rechte Maustaste“ „Einsetzen“ „Mitglied..“ wählen RezeptID, INT Backzeit, WORD Temperatur, REAL Oberhitze, BOOL

58 Variable mit dem Datentyp anlegen
In der Symboltabelle: Symbol einfügen: Ofenrezept Als Datentyp kann jetzt die Struktur „Rezept“ ausgewählt werden.

59 Struktur als Arrayvariable
Symbol einfügen Backwarenrezept, Erweiterte Einstellungen: Array anklicken, Größe 30 angeben. Speicherzuordnung: Backwarenrezept[0].RezeptID D100 Backwarenrezept[0].Backzeit D101 Backwarenrezept[0].Temperatur D102/103 Backwarenrezept[0].Oberhitze D104.00 Backwarenrezept[1].RezeptID D105 Backwarenrezept[1].Backzeit D106 Backwarenrezept[1].Temperatur D107/108 Backwarenrezept[1].Oberhitze D109.00 …u.s.w. Bis: Backwarenrezept[30].Oberhitze D249.00


Herunterladen ppt "(Schulungs-Präsentation)"

Ähnliche Präsentationen


Google-Anzeigen