(Schulungs-Präsentation)

Slides:



Advertisements
Ähnliche Präsentationen
ABCD Data Provider Workshop Berlin - january 2004
Advertisements

Automation and Drives SIMATIC Software STEP 7 V5.4 Highlights der neuen STEP 7 Version SIMATIC Software.
Highlights der neuen Version
S E P A – Gläubiger Identifikationsnummer beantragen
Befehlssatz und Struktur
Einführung in die Informatik: Programmierung und Software-Entwicklung
© 2007 Cisco Systems, Inc. All rights reserved. 1 This document is Cisco Confidential. For Channel Partner use only. Not for distribution. Einführung in.
Telefonnummer.
Grundlagen der Elektronischen Datenverarbeitung
Übung 2.1 Information Wieviele Fragen benötigen Sie beim „Zahlenraten“
ENIGMA – Teil II Welcome to Bletchley Park!
= = = = 47 = 47 = 48 = =
Atmel AVR JTAG Einführung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
IS: Datenbanken, © Till Hänisch 2000 Tabellen In relationalen DB werden Daten in Tabellen organisiert Jede Spalte enthält eine bestimmte Art von Information,
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 3 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Vorlesung 5 Interrupts Peter B. Ladkin
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Ich zerteile diesen Balken in 8 Teile! 8 Kästchen! Stimmt´s? von 8 Kästchen sind? 1212.
Einführung Dezimalbrüche
Titel Beispiel Elektronischer Kontoauszug
Auf Wunsch einer einzelnen Dame
Einführung Capitol Betriebskostenabrechnung
OMRON 1 FINS Befehle schicken mit CX – Server Lite Aufgabe :
Einführung Capitol Betriebskostenabrechnung
Matrizenrechnung und Technologieeinsatz
zur Präsentation online - shopping
Icons in der OPAC-Kurzanzeige
Computerorientierte Physik SS 2006 USB Experiment Interface Board.
1 Workshop Service Grundlagen Saia Service an PCD's Grundlagen I. Workshop Einführung Service an Saia PCD Grundlagen.
Manuelle Installation von Windows XP auf Geräten mit ICH8 Chipsatz
Zeit bzw. FREQUENZMESSUNG
Passive Angriffe ... nicht-invasiv.
Gelegentlich wird nach einer Uhr in Powerpoint gefragt.
Hallo Allerseits, um im Sprachunterricht zu verwenden, brauchte ich zwei Felder nebeneinander, auf denen per Zufallsgenerator zwei Begriffe aus einer vorgegebenen.
Server.
Wie Programmiere ich in der Roboter-AG???
Anwendungsentwicklung. … überlegen sie mal… Wir beschäftigen uns mit dem Aufbau der Arbeitsweise und der Gestaltung von betrieblichen Informationssystemen.
Inhalt Was ist A-Plan? Einsatzgebiete Organisation der Daten
Elektronische RAI-Pflegedokumentation (RAI-ePDok)
Eine Einführung in die CD-ROM
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Applikationseinstieg • wählen Sie die Gruppe • Klicken Sie
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 14: Mehrfachvererbung.
ETS4 - Was ist neu? - Wie fange ich an? - Noch Fragen?
Speichermodulverwendung mit der kompakten Steuerung CP1L
Von der Planung bis zum Hauptmenü Seminar: Softwaretechnologie II Dozent: Prof. Manfred Thaller Referent: Jan Bigalke.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Algorithmen und Datenstrukturen Übungsmodul 6
Computerorientierte Physik VORLESUNG
Aufgabe 1 In einem Mikroprozessorsystem mit 32-bit-Datenzugriff auf den Hauptspeicher ist ein Daten-Cache vorhanden. Das Laden des Caches erfolgt in Blöcken.
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Gruppe 7 – 2,5 Dimensional Tourismus Informationssystem
DATEISPEICHER in der S P S
Logik-Programm-Erstellung
Multivendor Anwendung NB Kopplung an S über Ethernet
LCD-Optionsboard CP1W-DAM01
Befehle in der Kontaktplan-Programmierung
1 Erstellung von Funktionen und FBs Inklusive der Erstellung einer Library.
3 8 ! 3 8 Zähler Bruchstrich Nenner.
Musterlösung zum Arbeitsblatt Nr. 1
1 VeranstaltungThemaTeilnehmerBetreuer AINF-Lehrgang PROGRAMMIEREN Martina GREILER Wolfgang KATOLNIG Peter RENDL Helfried TUISEL Peter ZYCH Heinz STEGBAUER.
A&D Persa K TB Herzlich Willkommen zum Flash 4 - Seminar.
Arbeiten mit WordSmith 4. Inhalt 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus) 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus)
Theorie. Was ist Drupal? Content-Management-System, Open Source Software Hauptanwendung in der Organisation von Websites In PHP geschrieben und wird als.
 Präsentation transkript:

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

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 Adressierung:@ 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.

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.

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.

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

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

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’

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)

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)

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’

CIO-Speicherbereich - CJ E/A-Bereich 3000-3049ch Frei 3100-3131ch 0400-0999ch frei DeviceNet 3200-3599ch Data Link 1000-1199ch frei 3600-6143ch frei 1200-1499ch CPU-Bus-Baugr. 1500-1999ch Spezial-Baugr. +D20000 bis D29599 2000-2959ch

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

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

CJ - E/A - Adresszuordnung Spezial-E/A- Baugruppen CIO2000-2959 (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 2959 - 960 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.

CJ - E/A - Adresszuordnung CJ - CPUbus - Baugruppen CIO1500-1899 (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.

CJ - E/A - Adresszuordnung Zuordnungs- Methode (W393 8-1-2) 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

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.

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

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

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 mit @-Präfix 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.

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)

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

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.

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

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.

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.

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.

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));

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

Ü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

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

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.

Ü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)

Ü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

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!

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 A200.12 vor dem SNXT) Zur einmaligen Abarbeitung von Befehlen im Schritt kann bei der CS1 das Bit A200.12 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

Ü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)

Übungsauflösung - Schrittkette STEP/SNXT

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 einem @ 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 Alpha @ vor dem Zeiger bedeutet Binäres Format. 0…32767

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 40.00 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

Ü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.

Übungsauflösung: Indirekte Adressierung

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.

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 40.00 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

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

Ü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.

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

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.

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

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

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 40.00 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

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

Ü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.

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

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

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

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

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

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