0BA5 Dekodierung - brickpool/logo GitHub Wiki
Ausgabe Ay
December 2019
Dieses Handbuch beschreibt die Interna einer LOGO! Kleinsteuerung Version 0BA5, um unter Nutzung der PG-Schnittstelle darauf zuzugreifen. Die PG-Schnittstelle verwendet hierzu ein nicht dokumentiertes Protokoll zum Programm laden, lesen und zur Diagnose.
Die hier beschriebenen Informationen und Beispiele sind unverbindlich und dienen dem allgemeinen Verständnis über Aufbau, Adressierung und Anwendung der Systeminterna. Die eigene Kleinsteuerung kann sich hiervon unterscheiden.
Für einen ordnungsgemäßen Betrieb ist der Benutzer selbst verantwortlich. Verweisen möchte ich auf die jeweils gültigen Handbücher und Vorgaben und systembezogenen Installationsvorschriften vom Hersteller.
Siemens und LOGO! sind eingetragene Marken der Siemens AG.
Wertvolle Informationen finden Sie in den folgenden Veröffentlichungen:
- LOGO! Handbuch Ausgabe 05/2006, Bestellnummer 6ED1050-1AA00-0AE6
- SPS Grundlagen
- Translation Method of Ladder Diagram on PLC with Application to an Manufacturing Process von Hyung Seok Kim und weiteren Autoren
Einzelheiten zum LOGO!-Adresslayout finden Sie in den folgenden Veröffentlichungen:
- neiseng @ https://www.amobbs.com dekodierte den Datenadressraum einer 0BA5 (@post 42)
Einzelheiten zum LOGO!-P-Bus finden Sie in den folgenden Veröffentlichungen:
- Kapitel 1 - Architektur
- Kapitel 2 - Parameterspeicher
- Kapitel 3 - Klemmenspeicher
-
Kapitel 4 - Programmzeilenspeicher
- Blöcke und Blocknummern
- Verweis auf Blöcke
- Grundfunktionen - GF
- Sonderfunktionen - SF
- Grundwissen Sonderfunktionen
- Einschaltverzögerung
- Ausschaltverzögerung
- Stromstoßrelais
- Wochenschaltuhr
- Selbsthalterelais
- Speichernde Einschaltverzögerung
- Vor-/Rückwärtszähler
- Asynchroner Impulsgeber
- Ein-/Ausschaltverzögerung
- Treppenlichtschalter
- Meldetext
- Analoger Schwellwertschalter
- Analogwertüberwachung
- Kapitel 5 - Sonstiger Speicher
- Anhang
Das LOGO! Basismodul ist das "Herzstück". In dem Basismodul wird das Schaltprogramm sequentiell und zyklisch abgearbeitet, sowie alle logischen Funktionen ausgeführt. Das Basismodul besitzt neben den installierten Ein-/Ausgängen (I/Q) eine Verbindungsschnittstelle zum Programmiergerät (PC/PG) und eine BUS-Erweiterung, um angeschlossenen Erweiterungsmodulen zu kommunizieren.
Innerhalb des Basismoduls sind verschiedene Systembereiche untergebracht, damit die verschieden Vorgänge ablaufen können. Im folgenden Bild ist der Aufbau schematisch dargestellt.
.------------------------.
| Eingänge |
'------------------------'
..........|..|..|..|..|..|..|..|..........
v v v v v v v v
.---+------------------------------------.
| | PE O O O O O O O O | :
| +------------------------------------+ :
| | .-------> PG-Schnittstelle ### <--:--> Programmiergerät
| | v | :
| | .------------.----------.--------. | :
| | | Steuereinh.| Speicher | Zähler | | :
| P | '-----o------'-----o----'----o---' | :
| S | =====|=====Busverbindung====|===### <--:--> Erweiterungsmodule
| U | .-----o------.-----o----.----o---. | :
| | | Rechenwerk | Merker | Zeiten | | :
| | '------------'----------'--------' |
| | |
| +------------------------------------+
| | PA O O O O O O O O |
'---+------------------------------------'
..........|..|..|..|..|..|..|..|..........
v v v v v v v v
.------------------------.
| Ausgänge |
'------------------------'
Abb: Schema Systembereiche
Zu den Systembereichen eines Basismoduls gehören:
- Steuereinheit
- Rechenwerk
- Speicher
- Prozessabbild der Eingänge (PAE)
- Prozessabbild der Ausgänge (PAA)
- Zeiten
- Zähler
- Merker
Zur Peripherie gehören
- Stromversorgung (PSU)
- PG-Schnittstelle und Progammiergerät (PC mit LOGO!Soft Comfort)
- Eingänge (Eingangsklemmen)
- Ausgänge (Relais: LOGO! R/RC/RCo, Transitoren:LOGO! 24/24o)
- Erweiterungsmodule (DM8, DM16, AM2, CM)
Die Steuereinheit wird verwendet, um den gesamten Ablauf innerhalb des Basismoduls zu koordinieren. Dazu gehören u.a. die Koordination der internen Vorgänge und der Datentransport.
Die Übersetzung des Schaltprogramms in ausführbare Anweisungen erfolgt, sobald LOGO! in den Betriebszustand RUN wechselt. Die Verknüpfungen vom Schaltprogramm werden aus dem Ladespeicher gelesen, in einem Zwischencode (Steuerungsprogramm) übersetzt und in den Arbeitsspeicher gehalten (1).
Kennzeichen einer jeden SPS ist die über die Firmware gesteuerte zyklische Programmabarbeitung, so auch bei der LOGO! Kleinsteuerung. Im Betriebszustand RUN führt die LOGO! die Anweisungem vom Schaltprogramm zyklisch aus. Die Steuereinheit ruft bei jedem Zyklus das Steuerungsprogramm auf und führt die Anweisungsbefehle Schrittweise aus. Die Zykluszeit liegt im Bereich zwischen 7 und 70 ms (Zykluszeit je Funktion < 0,1ms) und ist abhängig von der Programmgröße.
Die Version 0BA5 führt alle Anweisungen für Ihre Automatisierungsaufgaben nacheinander aus und kennt (noch) keine modulare Programmstruktur. Typischerweise werden bei einem linearen Programm alle Programmanweisungen am Stück abgelegt (vergl. S7 Anwenderprogramm).
Ein Programmzyklus wird in drei Schritten ausgeführt:
- Zuerst erfolgt eine Initialisierung des Programmzyklus. Hierbei werden Zeiten gestartet, die Ausgänge anhand des Prozessabbildes der Ausgänge PAA gesetzt, sowie die Zustände der Eingänge ausgelesen und in das Prozessabbild der Eingänge PAE übernommen.
- Anschließend werden die Anweisungsbefehle vom Steuerungsprogramm sequentiell abgearbeitet, wobei weitere Werte wie Zeiten, Zählern und Merker berücksichtigt werden.
- Als letzter Schritt wird die PG-Schnittstelle für Senden/Empfangen von Daten bedient, der interne Status aktualisiert und der Zyklus beginnt erneut.
.------->--------.
| V
| .-------------o-------------. ...
| | Zeiten starten | :
| |...........................| Initialisierung
| | PA auf Ausgänge abbilden | :
| |...........................| :
| | Eingänge auf PAE abbilden | :
| o---------------------------o ...
| | Programmausführung unter | :
| | von Nutzung PAE, PAA sowie| Ausführung,
| | Zeiten, Zähler und Merker | Steuerungsprogramm
^ | 1. Anweisung | :
| | 2. Anweisung | :
| | ... | :
| | n. Anweisung | :
| o---------------------------o ...
| | Senden/Empfangen von | :
| | Daten der | Daten austauschen,
| | PG-Schnittstelle | Status aktualisieren
| |...........................| :
| | Status aktualisieren | :
| '-------------o-------------' ...
| V
'-------<--------'
Abb: Schematische Darstellung Prozessabbild
Die Steuereinheit ist über die Busverbindung mit den anderen Systembereichen wie Rechenwerk, Zeiten, Zähler usw. verbunden. Unmittelbar nach Anlegen der Netzspannung werden die remanenten Zähler, Zeiten und Merker sowie die Prozessabbilder der Eingänge und Ausgänge gesetzt.
Der Begriff wird häufig synonym mit Arithmetisch-Logischen Einheit (ALU) gebraucht, genau genommen stellt eine ALU jedoch lediglich die zentrale Komponente eines Rechenwerks dar, das zusätzlich aus einer Reihe von Hilfs- und Statusregistern besteht. Die ALU selbst enthält hingegen keine Registerzellen und stellt somit ein Teil eines Rechenwerks da.
Beim Ausführen von Operationen verknüpft die ALU zwei Binärwerte (Akku 1 und Akku 2) mit gleicher Stellenzahl miteinander und stellt das Ergebnis der Rechenoperation in Akku 1 zur Verfügung. Es können sowohl Bit, Byte als auch Wortoperationen durchgeführt werden, was einer optimale Bearbeitung von binären und dipgitalen Operatioen zulässt.
/---------------------------------------------------\
< Datenbus 16 bit >
\---------------------------------------------------/
^ |
| |
v v
|--- Akku1 16bit ---| |--- Akku2 16bit ---|
|++++*++++|++++*++++|-. .-|++++*++++|++++*++++|
^ | |
| v v .-------------.
| .-. .-. <--- | Ablauf- |
| \ \___/ / ---> | Steuerung |
| \ ALU / +-------------+
| \_____/ | Status/Flag-|
| | | Register |
'-------<-------' '-------------'
Abb: Schematische Darstellung Arithmetisch-Logischen Einheit
Das Rechenwerk ist Teil der Prozessor-Architektur und zusammen mit der Peripherie auf einem einzigen Chip integriert, dem Mikrocontroller. Der in der LOGO! 0BA5 verwendete Mikrocontroller ist der von NEC Electronics (heute bekannt als Renesas Electronics) produzierte V850ES/Kx1.
Für diese Systembereiche sind eigene Speicherbereiche vorhanden, in denen die Steuereinheit die Daten entsprechend der Datentypen ablegt. Merker sind interne Ausgänge, in die Zwischenergebnisse gespeichert werden. Auf sie kann lesend und schreibend zugegriffen werden. Merker sind flüchtig, die bei Spannungsausfall ihre Daten verlieren.
Die Zustände der Eingänge und Ausgänge werden in den Speicherbereichen PAE und PAA gespeichert. Auf diese Daten wird während der Programmbearbeitung zugegriffen.
: :
o---------------------------o
| I1-I24/AI1-8 => PAE |
|...........................|
| Eingänge lesen und Werte |
| in das "Prozessabbild der |
| Eingänge" (PAE) schreiben |
o---------------------------o
: :
: :
o---------------------------o
| PAA => Q1-16/AQ1-2 |
|...........................|
| Ausgänge setzen anhand |
| der Werte vom "Prozess- |
| abbild der Ausgänge" (PAA)|
o---------------------------o
: :
Abb: Schema PAE und PAA im Programmzyklus
Die LOGO! Kleinsteuerung besitzt eine PG-Schnittstelle, um die Verbindung zum Programmiergerät bzw. PC herzustellen. Im Betriebszustand STOP kann über die Schnittstelle das Schaltprogramm zwischen PC und Basismodul (und umgekehrt) übertragen, sowie Parameter (Hardware-Uhr, Displayanzeige, Passwort, Programmname) gesetzt werden. Im Betriebszustand RUN können mittels der Online-Test-Funktion aktuelle Werte (Eingänge, Ausgänge, Zustände, Zeiten, Zähler etc.) ausgelesen werden. Die Schnittstelle dient leider nicht zum Anschluss von Erweiterungsbaugruppen oder Bedien- und Beobachtungsgeräten, wie bei einer Standard SPS.
N nicht unterstützt, R lesen unterstützt, W schreiben unterstützt
Funktion, Datenelement | RUN | STOP |
---|---|---|
Netz-Ein Anzeige | N | R/W |
Wert AQ bei STOP | N | R/W |
Passwort | N | R/W |
Programmname | N | R/W |
Blockname | N | R/W |
Meldetexte | N | R/W |
Schaltprogramm | N | R/W |
Parameter | N | R/W |
Ident Nummer | R | R |
Firmware | N | R |
Hardware-Uhr | N | R/W |
Blocksignalzustand | R | N |
Digitaleingänge I | R | N |
Digitalausgänge Q | R | N |
Digitale Merker M | R | N |
Cursor C | R | N |
Schiebregisterbits S | R | N |
Analoge Eingänge AI | R | N |
Analoge Ausgänge AQ | R | N |
Analoge Merker AM | R | N |
Aktuelle Zeitwerte | R | N |
Aktuelle Zählerwerte | R | N |
Aktuelle Analogwerte | R | N |
Tab: Unterstützte Datenkommunikation mit Programmiergerät
Das Bussystem kann unterteilt werden in ein Rückwandbus und ein Peripheriebus. Der Rückwandbus ist ein interner Bus der optimiert ist für die interne Kommunikation im Basismodul. Der Peripheriebus dient als Schnittstelle für Erweiterungsmodule und wird auch als P-Bus bezeichnet. Hierüber läuft der Datenverkehr zwischen dem Basismodul und den Erweiterungsmodulen. An der rechten Seite vom Basismodul befindet sich hinter eine Klappe die Schnittstelle für den P-Bus. Über Busverbinder (integrierte Stecker und Buchsen) werden die Erweiterungsmodule untereinander und mit dem Basismodul verbunden.
.-----------.
.---' '---.
| ### |
.---' : '---.
| : |
| : |
'-------------------:-------'
:
.......
:
v
.-------------------------.
| o o o o o o |
'-------------------------'
GND SCK MOSI MISO VCC GND
6 5 4 3 2 1
Abb: Pin-Belegung P-Bus
Beim P-Bus handelt es sich um einen seriellen Bus, dem Serial Peripheral Interface (SPI). Der SPI-Bus wurde von Motorola für den Master-Slave-Betrieb zwischen Prozessoren und Komponenten entwickelt. Er arbeitet synchron und eignet sich besonders für die Signalverarbeitung und wurde wohl deshalb von Siemens für die Kommunikation zwischen Basis- und Erweiterungsmodule ausgewählt.
Der P-Bus hat sechs Anschlüsse, nutzt aber nur drei Steuerleitungen für die synchrone Kommunikation zwischen Basismodul (Master) und Erweiterungsmodul (Slave): Zwei Signalleitungen übertragen die Signale "Master Output, Slave Input" (MOSI) und "Master Input, Slave Output" (MISO), die dritte Signalleitung ist für das Taktsignal der Slaves (SCK). Zwei weitere Leitungen werden für die Spannungsversorgung (VCC und GND) genutzt und es existiert eine zusätzliche Leitung für Masse (GND).
Das Taktsignal wird im Basismodul generiert und an alle Erweiterungsmodule geführt. Die Taktfrequenz beträgt bei einer 0BA5 250kHz (spätere Versionen nutzen Taktraten bis zu einem Megahertz, bspw. 0BA8). Über die MOSI-Leitung wird das Ausgangssignal des Basismoduls zu den Erweiterungsmodulen geführt und über die MISO-Leitung das Ausgangssignal eines Erweiterungsmodul zurück zum Basismodul.
Hinsichtlich der Spannungsklassen gelten Regeln, die beim Verbinden mit dem P-Bus beachtet werden müssen! Detaillierte Informationen zur Integration der Erweiterungs- bzw. Kommunikationsmodule (Einbaureihenfolge etc.) finden sich im LOGO! Handbuch.
Es gilt DIN IEC 61131-3 für eine normgerechte SPS.
Bauteile
- 4A SMD-Sicherung OMF-125
- Widerstand 0 Ohm
- Kondensator 22nF, 220nF, ...
- Gleichrichter UG18
- Unidirektionale Suppressordiode PJ1409 FMX
- Elektrolytkondensator 220uF 35V
Eingangsschutzschaltung:
24V 4A ___
L+ o--|Fuse|---|___|--+--------+----|>|----+--------+--------+--o
OMF-125 0 | | UG18 | | |
| | | | |
_|_ _|_ Z === _|_
--- 22n --- 220n | FMX --- 220u ---
| | | | |
| | | | |
M o------------------+--------+-----------+--------+--------+--o
|
===
Abb: Eingangsschutzschaltung 24V
Allgemeine Beschreibung für Eingangsschaltkreise nach IEC 61131-2 Input Types 1, 2, 3 findet sich bei Beckhoff.
LOGO! Variante mit 12/24 bzw. 24 in der Typenbezeichnung:
....
:
----o L+ o +Ub = 5V
: __|___________ ____
I1 : ___ ___ | 1 | |
-->-o---|___|---+------+---|___|--3| 1/6 HEF4050B |2--| MCU
: 3K6 | | 270K |______________| |____
: _|_ .-. |8
: C1 --- | | 2K2 ===
----o M | '-'
: | |
:... === ===
Abb: Eingangsbeschaltung 12/24V DC
LOGO! Variante mit 230 in der Typenbezeichnung:
....
| :
.-+---o L1
| : o +Ub = 5V
/ : __|___________ ____
| I1 : ___ ___ ___ | 1 | |
'-----o--|___|--|>|--+--|___|--+---|___|--3| 1/6 HEF4050B |2--| MCU
: 390K | R7 | 270K |______________| |____
: _|_ .-. |8
: 100n --- | | R8 ===
----o N | '-'
: | |
:... === ===
Abb: Eingangsbeschaltung 100-240V AC/DC
An die Ausgänge können verschiedene Lasten angeschlossen werden, z.B. Lampen, Leuchtstoffröhren, Motoren, Schütze usw. Siehe folgend die Eigenschaften der an die LOGO! Variante mit Relaisausgang (Typenbezeichnung mit Buchstabe R) angeschlossenen Lasten:
Spannung AC | ohmsche Last | induktive Last * |
---|---|---|
12/24V AC | max. 10 A | max. 2 A |
115/120V AC | max. 10 A | max. 3 A |
230/240V AC | max. 10 A | max. 3 A |
Tab: Schaltvermögen bei Wechselspannung
Spannung DC | ohmsche Last | induktive Last * |
---|---|---|
12/24V DC | max. 10 A | max. 2 A |
120V DC | max. 0,2 A | max. 0,2 A |
240V DC | max. 0,1 A | max. 0,1 A |
Tab: Schaltvermögen bei Gleichspannung
*) stark induktive Last nach IEC 947-5-1 DC13/AC15
Das Relais schaltet ein, wenn der zugehörige Microcontrollerausgang high ist.
... 240V AC
+Ub = 9V o : 24V DC o
| :2 |
.-----+ .---o--(L1/L+)--|Fuse|--'
| _|_ | :
| |___|--/ : Q1 240V/10A
| | | :
____ '-|<|-+ '---o--.
| ___ | :1 |
MCU |---|___|--+---|< NPN : |
____| 47K | |E : |
.-. | .-.
27K | | | | | RL
'-' | '-'
| | |
=== === === (N/M)
Abb: Relais-Ausgang
LOGO! Varianten mit Transistorausgängen (Buchstabe R in der Typenbezeichnung fehlt) sind kurzschluss- und überlastfest. Der Ausgang ist P-schaltend, kann einen maximalen Ausgangsstrom von 0,3 A schalten und besitzt eine Kurzschlussstrombegrenzung von ca. 1 A. Zum Einsatz kommt ein Infineon Leistungs-MOSFET mit Ladungspumpe und stromgesteuertem Eingang vom Typ TS4140. Eine getrennte Einspeisung der Lastspannung ist nicht vorgesehen.
Hinweis: Beim Einschalten der LOGO! Variante mit Transistorausgang wird ca. 50 Mikrosekunden lang das Signal 1
an die Digitalausgänge gesendet. Eine Parallelschaltung von Ausgängen zur Leistungserhöhung ist nicht zulässig.
Bauteile
- 4A SMD-Sicherung OMF-125
- SMD PROFET ITS 4140N
- Schottky Diode / Gleichrichter PJ1539 SK34
- Kondensator 10nF, ...
Der PROFET trennt die Verbindung nach Plus und schaltet durch, wenn der zugehörige Microcontrollerausgang high ist.
...
24V : L+ 4A SK34
---o--|Fuse|--+--|>|---------------.
: OMF125 _|_ |
: --- 220n |
| |
=== 2/4 | :
||-+ :
TS4140||<- :
+---||-+ : 24V/0.3A
____ | 1 |3 :
| ___ | | Q :1
MCU |---|___|--+----+---|< NPN '----o---.
____| 10K | | |E : |
.-. _|_ | : .-.
3K3 | | --- | : | | RL
'-' | | : '-'
| | | : |
=== === === --o---'
M :2
:
...
Abb: Transistor-Ausgang
Der Speicherbereich innerhalb eines Basismoduls ist in mehrere Bereiche aufgeteilt, wobei jeder Speicherbereich eigene Aufgaben erfüllt. Vereinfacht gesagt besteht der Speicher im Basismodul aus dem Ladespeicher, dem Arbeitsspeicher und dem Systemspeicher.
Zusätzlich ist die Firmware mit untergebracht. Die Firmware sorgt dafür, dass das Programm in der korrekten Reihenfolge abgearbeitet wird. Für die Firmware ist ein eigener Festwertspeicher im Basismodul vorhanden.
Folgend die Auflistung der verwendeten Speichertypen:
Die Programmbearbeitung erfolgt ausschließlich im Bereich von Arbeitsspeicher und Systemspeicher. Die folgende Abbildung veranschaulicht das Zusammenspiel:
Ladespeicher Arbeitsspeicher Systemspeicher
.-----------------. .---------------. .-------------------.
| Klemmenspeicher |--1->| Interpreter |--. | Prozessabb. Eing. |
| Programmzeilen- | |...............| | |...................|
| speicher | .->| Funktionen | | | Prozessabb. Ausg. |
|.................| | |...............| 2 |...................|
| Passwort | 5 | Programmdaten | | | Zeiten (T) |
| Programmname | | | Anweisungs- | | | Zähler (C) |
| ... | '--| befehle (4) |<-' | Merker (M) |
| | | ... | |...................|
| | | | | Stack |
| | | |<-3->|...................|
| | | | | Statusdaten |
| | | | | ... |
'-----------------' '---------------' '-------------------'
Abb: Speicher Blockdiagramm
Der Festwertspeicher ist ein Nur-Lese-Speicher (engl. Read Only Memory, kurz ROM). Hierauf befindet sich die LOGO! Firmware, welche vom Hersteller Siemens stammt. Read Only deshalb, weil der Speicher nicht gelöscht oder geändert werden kann und zudem nicht flüchtig ist. Bei Spannungsausfall bleiben die Daten erhalten.
Alle Konfigurationsdaten sind im Ladespeicher vom Basismodul gespeichert. Unter anderem das Anwenderprogramm, sowie die Funktionsparameter und evtl. noch Passwort, Programmname, Meldetexte und Blocknamen. Der Ladespeicher ist ein digitaler Flash-EEPROM Speicherbaustein. Die Daten bleiben auch bei Spannungsausfall erhalten. Über die Schnittstelle zum Programmiergerät werden die Schaltdaten inkl. der Konfiguration (kurz Schaltprogram) in den Ladespeicher geladen.
Beim Arbeitsspeicher (engl. Random Access Memory, kurz RAM) handelt es sich um einen flüchtiger Speicher, d.h. der Inhalt geht nach einem Spannungsausfall verloren. Er ist als ein Schreib-/Lesespeicher konzipiert.
Im Arbeitsspeicher werden die ablaufrelevanten Programm- und Datenbausteine sowie Konfigurationsdaten abgelegt (4). Der Arbeitsspeicher dient zur Abarbeitung, sowie zur Bearbeitung der Daten des Steuerungsprogramms (5). Dazu werden die vom Ladespeicher ablaufrelevanten Teile des Schaltrogramms beim Wechsel vom Betriebszustand STOP nach RUN geladen (1) und von einem Interpreter übersetzt und das Ergebnis als Steuerungsprogramm im Arbeitsspeicher gespeichert (2).
Der Systemspeicher ist ein flüchtiger Speicher (RAM) und in Operandenbereiche aufgeteilt. Im Systemspeicher werden die Zustände der Eingänge und Ausgänge über das Prozessabbild (PAE und PAA), die Zeiten (T), Zähler (C), Merker (M) und der Stack und Statusdaten gespeichert. Während eine Programzyklus werden auf die Daten im Systemspeicher zugegriffen und Programmzustände aktualisiert (3).
LOGO! 0BA5 nutzt eine 16-Bit-Adressierung. Vereinfacht dargestellt bedeutet dies, dass die Speicherarchitektur so ausgelegt ist, dass jede Speicherstelle durch einen 16Bit-Zeiger (also 2 Byte) direkt adressiert werden kann. Die LOGO! Kleinsteuerung 0BA5 nutzt teilweise eine Segmentierung, sodass auch 8Bit-Zeiger (Verweise) zu Anwendung kommen, um eine Speicherstelle zu adressieren.
Die kleinste adressierbare Einheit (Speicherstelle) ist ein Byte. Diese besteht aus 8 Bits und der Inhalt wird hier mit zwei hexadezimalen Ziffern angegeben, wobei jede Ziffer für 4 Bits entsprechend einem Halb-Byte steht. Das Halb-Byte wird in dieser Dokumentation teilweise auch als Nibble bezeichnet. Ein Nibble umfasst eine Datenmenge von 4 Bits.
Bei Bit-Darstellungen werden die Bits innerhalb einer Binärzahl nach LSB-0 nummeriert, d.h. gemäß ihrer absteigenden Wertigkeit (gelesen von links nach rechts) ist das Bit0 (= das Bit Index 0) das niedrigstwertige.
Darstellung:
|<-------------Byte------------>|
.---.---.---.---.---.---.---.---.
MSB | 7 6 5 4 | 3 2 1 0 | LSB
'---'---'---'---'---'---'---'---'
|<----Nibble--->|<----Nibble--->|
Abb: Byte, Nibble
Die Byte-Reihenfolge im LOGO! ist Little-Endian, sprich das niederwertige Byte wird an der Anfangsadresse gespeichert bzw. die niederwertige Komponente zuerst genannt.
Beispiel:
16bit Wert
.--.--.
|0A 0B|
'--'--' Speicher
| | :____:
| '---->| 0B | Adresse a
'------->| 0A | Adresse a+1
: :
Abb: Byte-Reihenfolge im Speicher bei Little-Endian
Das folgende Adresslayout ist ein Abbild des dekodierten Ladespeichers einer LOGO! 0BA5. Auf den Ladespeicher kann (bis auf wenige Ausnahmen) nur im Betriebszustand STOP zugegriffen werden.
R lesender Zugriff, W schreibender Zugriff
Beispiel | Adresse | Länge | ||
---|---|---|---|---|
01 05 22 00 | 0522 | 1 | W | |
02 05 52 | 0552 | 1 | Displayinhalt nach Netz-Ein | |
05 05 53 00 05 | 0553 - 0557 | 5 | Einstellung der Analogausgänge im Betriebszustand STOP | |
02 05 5E | 055E | 1 | Schaltprogramm Checksum HiByte | |
02 05 5F | 055F | 1 | Schaltprogramm Checksum LoByte | |
05 05 66 00 0A | 0566 - 056F | 10 | Passwortspeicherbereich | |
05 05 70 00 10 | 0570 - 057F | 16 | Programmname | |
02 05 80 | 0580 - 05BF | 64 | = 00 (64 = 0040h) |
Beispiel | Adresse | Länge | |
---|---|---|---|
05 05 C0 00 40 | 05C0 - 05FF | 64 | Verweis auf Blockname |
05 06 00 02 00 | 0600 - 07FF | 512 | Blocknamen 8 Zeichen |
05 08 00 02 80 | 0800 - 0A7F | 640 | 10 Meldetexte; jeweils 64 Bytes pro Textfeld |
05 0A 80 01 80 | 0A80 - 0BFF | 384 | = 00 (384 = 0180h) |
Beispiel | Adresse | Länge | |
---|---|---|---|
05 0C 00 00 14 | 0C00 - 0C13 | 20 | Verweis auf Ausgänge, Merker (0E20 - 0EE8) |
05 0C 14 01 04 | 0C14 - 0D17 | 260 | Verweis auf Programmzeilenspeicher (130 Blöcke) |
02 0D 18 | 0D18 - 0E1F | 264 | = 00 (264 = 0108h) |
Beispiel | Adresse | Länge | |
---|---|---|---|
05 0E 20 00 28 | 0E20 - 0E47 | 40 | Digitalausgänge Q1 bis Q16 |
05 0E 48 00 3C | 0E48 - 0E83 | 60 | Merker M1 bis M24 |
05 0E 84 00 14 | 0E84 - 0E97 | 20 | Analogausgang AQ1, AQ2 / Analoge Merker AM1 bis AM6 |
05 0E 98 00 28 | 0E98 - 0EBF | 40 | Offene Klemme X1 bis X16 |
05 0E C0 00 28 | 0EC0 - 0EE7 | 40 | |
05 0E E8 07 D0 | 0EE8 - 16B7 | 2000 | Programmzeilenspeicher |
Beispiel | Adresse | Länge | ||
---|---|---|---|---|
02 1F 00 | 1F00 | 1 | R | = 04 (Passwort Zugriff?) |
02 1F 01 | 1F01 | 1 | R | = 00 (Passwort Zugriff?) |
02 1F 02 | 1F02 | 1 | R | Ident Nummer |
02 1F 03 | 1F03 - 1F08 | 6 | R | Revision der Firmware |
Beispiel | Adresse | Länge | ||
---|---|---|---|---|
01 43 00 00 | 4300 | 1 | W | Werte speichern: RTC=00 |
01 43 01 00 | 4301 | 1 | W | Werte speichern: S/W=00 |
01 44 00 00 | 4400 | 1 | W | Werte laden: RTC=00 |
01 44 01 00 | 4400 | 1 | W | Werte laden: S/W=00 |
Beispiel | Adresse | Länge | ||
---|---|---|---|---|
01 41 00 00 | 4100 | 1 | W | = 00, Schutzstufe 3 |
01 47 40 00 | 4740 | 1 | W | = 00, Schutzstufe 1 |
01 48 00 00 | 4800 | 1 | W | = 00, Schutzstufe 2 |
02 48 FF | 48FF | 1 | R | Passwort erforderlich? |
Beispiel | Adresse | Länge | |
---|---|---|---|
02 FB 00 | FB00 - FB05 | 6 | Uhr, Sommer-/Winterzeit, Stundenzähler |
Hinweis:
Maximaler Bereich = 05 0E 20 08 98
= Adr. 0E20
- 16B7
= 2000 Bytes
Mit Displayinhalt nach Netz-Ein wird festgelegt, was auf dem Display der LOGO! Kleinsteuerung angezeigt wird, wenn diese eingeschaltet wird.
Die Festlegung des Displayinhaltes nach Netz-Ein ist Teil der Parametereigenschaften und wird beim Übertragen des Schaltprogramms ebenfalls übertragen und auf der LOGO! Kleinsteuerung gespeichert.
Speicherbereich: 0552
, 1 Byte
Zugriffsmethode: Lesen und Schreiben
send> 02 05 52
recv< 06
03 05 52 00
05 52 00
05 52 [Val]
Val:
00 = Text
01 = Ein-/Ausgänge
FF = Datum/Uhrzeit
Analogausgänge können nach einem Wechsel von RUN in STOP auf vordefinierte Ausgangswerte oder auf die Werte, die vor dem Wechsel in den Betriebszustand STOP vorhanden waren, gesetzt werden.
Das Verhalten der Analogausgänge im Zustand STOP ist Teil der Parametereigenschaften und wird beim Übertragen des Schaltprogramms ebenfalls übertragen und auf der LOGO! gespeichert.
Speicherbereich: 0553..0557
, Anzahl = 5 Bytes
Abfrage:
send> 05 05 53 00 05
recv< 06
00 C4 03 D5 01
13
Wertebereich: 0.00 - 9.99
00 [C4 03] [D5 01]
Val [AQ1 ] [AQ2 ]
Pa:
if (Val == 01)
{
Alle Ausgänge behalten den letzten Wert bei;
}
else
{
AQ1 Wert im Betriebsart STOP;
AQ2 Wert im Betriebsart STOP;
}
AQn:
[C4 03] [D5 01]
\ / \ /
/ \ / \
03 C4 01 D5 (HEX)
964 469 (Dec)
-------------
9.64 4.69
Speicherbereich: 0570, 16 Bytes
Zugriffsmethode: Lesen und Schreiben
Standarddaten
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
Speicherbereich: 05C0..05FF
, 64 Bytes
Folgend die Schematische Darstellung der Adressverweis auf die Programmzeilenspeicher:
Speicher 05C0 Speicher 0600
.---------------. .---------------.
05C0| Blockindex 1 |------->| 8 Bytes/ASCII |0600
05C1| 2 |------->| 8 Zeichen |0608
05C2| 3 |------->| 8 Zeichen |0610
: | : | | : | :
: | : | | : | :
| | | |
| | | |
05FE| Blockindex 63 |------->| 8 Zeichen |07F0
05FF| Blockindex 64 |------->| 8 Zeichen |07F8
'---------------' '---------------'
Abb: Adressverweis Blocknamen
Hinweis: Es können maximal 64 Blöcke einen Blocknamen erhalten.
Beispiel:
send> 05 05 C0 00 10
recv< 06
0A 0C FF FF FF FF FF FF FF FF FF FF FF FF FF FF
06
HEX | DEC | Block | Adresse |
---|---|---|---|
0A | 10 | B001 | 0600 |
0C | 12 | B003 | 0608 |
FF | 255 | - | - |
Tab: Auswertung Beispiel Adressverweis Blocknamen
In LOGO!Soft Comfort können für bis zu 64 Blöcke achtstellige Blocknamen vergeben werden.
Speicherbereich: 0600..07FF
, 512 Bytes (8 * 64)
Die Länge beträgt 8 Byte, bei weniger als 8 Byte wird der Text mit 00
terminiert und mit FF
aufgefüllt.
Standarddaten:
send> 05 06 00 00 18
recv< 06
FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF
FF FF ...
Beispiel:
send> 05 06 00 00 18
recv< 06
31 32 33 34 00 FF FF FF // 12345
38 37 36 35 34 33 32 31 // 87654321
41 42 43 44 45 00 FF FF // ABCDE
B2 // XOR
Das Beispiel zeigt die Blöcke B001 bis B003
Ein Meldetext belegt 64 Bytes: jeweils 4 Zeilen a 12 Bytes für <Daten/Zeichen>
zzgl. 2 Bytes <Header-Daten>
und 2 Bytes 00 00
.
Speicherbereich: 0800..0A7F
, 640 Bytes (10416)
Vergl. S7 Datenbaustein
Standarddaten:
FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // (40x)
...
03 04 20 20 20 20 00 00 00 00 00 00 00 00 00 00
02 04 0B 2B 00 00 4C 65 6E 3A 20 20 00 00 00 00
02 04 0B 2B 01 00 43 6E 74 3A 20 20 00 00 00 00
01 00 80 50 72 69 20 81 4E 78 74 20 20 20 00 00
-------------------------------------------------
03 04 [20 20 20 20 00 00 00 00 00 00 00 00] 00 00
02 04 [0B 2B 00 00 4C 65 6E 3A 20 20 00 00] 00 00
02 04 [0B 2B 01 00 43 6E 74 3A 20 20 00 00] 00 00
01 00 [80 50 72 69 20 81 4E 78 74 20 20 20] 00 00
Pa Po [--------------- Txt ---------------]
Pa: Parameter
01: Reiner Text
02: Blockparameter
02 04 [0B 2B 01 00 ...
+- +- +- '-+-'
| | | '-- Parameter 2
| | '------- ASCII Zeichen "+"
| '---------- Blocknummer B002
'-------------- Startposition 4
03: aktuelle Uhrzeit, Breite 8
04: aktuelles Datum, Breite 10
05: Nachrichtenaktivierungszeit, Breite 8
06: Nachrichtenaktivierungsdatum, Breite 10
Po: Position
Bei Pa=01 : Anfangsposition des Textes (linksbündig)
Bei Pa=02 : Position Blockparameter (linksbündig)
Bei Pa=03-06: Anfangsposition Zeit oder Datum (linksbündig)
Txt: Text
maximal 12 ASCII-Zeichen
Sonderzeichen:
80: Pfeil nach oben ▲
81: Pfeil nach unten ▼
Hinweis: wenn die Zeile einen Block hat, repräsentieren die ersten 2 Bytes den Block
und die nächsten 2 Bytes den Parameter.
Auswertung:
03 04 [20 20 20 20 00 00 00 00 00 00 00 00] 00 00
02 04 [0B 2B 00 00 4C 65 6E 3A 20 20 00 00] 00 00
0B 2B 00 00 // Block B002, Parameter 1
0B 2B 01 00 // Block B002, Parameter 2
4C 65 6E 3A // Text "Len:"
43 6E 74 3A // Text "Cnt:"
80 50 72 69 20 81 4E 78 74 // Text "▲Pri ▼Nxt"
Beispiele:
01 00 [00 00 00 00 00 00 00 00 00 00 00 00] 00 00 //
02 02 [14 2B 00 00 41 20 20 5A 20 20 00 00] 00 00 // Block B011; "+"; Parameter 1; "A__Z"
02 05 [17 2B 00 00 54 69 6D 65 73 20 00 00] 00 00 // Block B014; "+"; Parameter 1; "Times"
01 00 [80 50 72 69 20 81 4E 78 74 20 20 20] 00 00 // Text "▲Pri ▼Nxt"
03 04 [20 20 20 20 00 00 00 00 00 00 00 00] 00 00 // aktuelle Uhrzeit
04 00 [20 BA 00 00 00 00 00 00 00 00 00 00] 00 00 // aktuelles Datum
05 00 [00 00 00 00 00 00 00 00 20 20 20 9F] 00 00 // Nachrichtenaktivierungszeit
06 00 [00 00 00 00 00 00 00 00 00 00 20 8F] 00 00 // Meldungsaktivierungsdatum
Software Version und Release sind nicht offengelegt. Siemens pflegt üblicherweise Bezeichnungen für (geplante) veröffentlichte Entwicklungsstände, die hier jedoch nicht 1:1 angewandt werden können. Zur Benennungen der Firmware verwendet dieses Handbuch den Begriff Version. Die verwendete LOGO! Hardware wird über eine Kennung kurz Ident Nummer identifiziert.
Chip:
.-----------------.
| o |
| LOGO |
| V2.0.2 |
| 721533 |
| 0650EP004 |
| |
'-----------------'
Abb: Aufdruck auf Chip
Befehle:
send> 02 1F 02
recv< 06 03 1F 02 42
send> 02 1F 03
recv< 06 03 1F 03 56
send> 02 1F 04
recv< 06 03 1F 04 32
send> 02 1F 05
recv< 06 03 1F 05 30
send> 02 1F 06
recv< 06 03 1F 06 32
send> 02 1F 07
recv< 06 03 1F 07 30
send> 02 1F 08
recv< 06 03 1F 08 32
Auswertung:
Read Byte | HEX | BIN | Bedeutung |
---|---|---|---|
1F02 | 42 | 0100 0010 | Ident = 0BA5 |
Tab: Ident Nummer
Read Byte | HEX | DEC | ASCII |
---|---|---|---|
1F03 | 56 | 86 | V |
1F04 | 32 | 50 | 2 |
1F05 | 30 | 48 | 0 |
1F06 | 32 | 50 | 2 |
1F07 | 30 | 48 | 0 |
1F08 | 32 | 50 | 2 |
Tab: Speicheradressen der Firmware Version
Firmware = V2.02.02
Die LOGO! Steuerung bietet drei verschiedene Schutzstufen mit unterschiedlichen Zugriffseinschränkungen. Jede Schutzstufe lässt auch ohne Eingabe eines Passworts den Zugriff auf bestimmte Funktionen zu. Die Voreinstellung ist die Schutzstufe 3 (Mindestrechte).
Die Schutzstufe 2 (Teilrechte) kann durch einen Schreibzugriff auf den Speicherbereich 4800
erlangt werden. Die Schutzstufe 1 (Alle Rechte) kann durch einen Schreibzugriff auf den Speicherbereich 4740
erlangt werden. Besteht ein Passwortschutz, fordert LOGO!Soft Comfort zur Passworteingabe auf, um die jeweilige Schutzstufe zu setzen.
- Schutzstufe 1: Alle Rechte (z.B. Schaltprogramm schreiben)
- Schutzstufe 2: Teilrechte (z.B. Schaltprogramm lesen)
- Schutzstufe 3: Mindestrechte (z.B. Start/Stop)
Nachdem eine Schutzstufe aktiviert wurde, bleibt die Schutzstufe der LOGO! maximal eine Minute lang wirksam. Durch Schreibzugriff auf den Speicherbereich 4100
gelangt man in die voreingestellte Schutzstufe 3 (Mindestrechte).
Befehl:
send> 01 41 00 00
recv< 06
Befehl:
send> 01 48 00 00
recv< 06
Befehl:
send> 01 47 40 00
recv< 06
LOGO! 0BA5 bietet einen Passwortschutz, um den Zugriff auf das Schaltprogramm einzuschränken. Durch das Einrichten eines Passworts kann nur nach Eingabe eines Passwortes auf das Schaltprogramm und bestimmte Parameter zugegriffen werden. Ohne Passwort ist der uneingeschränkte Zugriff auf die LOGO! Ressourcen möglich, abhängig von der gesetzten Schutzstufe.
Das Passwort hat eine Länge von 10 Zeichen. Groß- und Kleinschreibung spielt beim Passwort keine Rolle, da das Passwort in Großbuchstaben abgespeichert wird. Das Passwort ist ein Parameter (vergl. S7 SZL-ID W#16#0232 Index W#16#0004) und wird beim Übertragen des Schaltprogramms auf die LOGO! ebenfalls übertragen und dort gespeichert.
Um auf das Passwort zuzugreifen muss mindestens die Schutzstufe 2 eingestellt sein.
Befehl:
send> 02 48 FF
recv< 06 03 48 FF 00
Read Byte | Wert | Beschreibung |
---|---|---|
48FF | 40 | ja |
48FF | 00 | nein |
Tab: Passwort gesetzt/nicht gesetzt
Ein Schaltprogramm mit Passwort sollte geschützt bleiben. Das Knacken eines Passwortes ist nicht Zielsetzung dieser Beschreibung, daher sind die Systemfunktionen und Befehlsfolgen für das Auslesen und Setzen des Passwortes hier nicht beschrieben.
Nur die C-Varianten (LOGO! RC bzw. RCo) besitzen eine Hardware-Uhr. Auf der Platine sitzt hierfür ein RTC-8564JE. Die Genauigkeit der Uhr in LOGO! ist stark von der Umgebungstemperatur abhängig. Die angegebene Abweichung beträgt +/-5 Sek pro Tag bei konstant 25 °C Umgebungstemperatur. Schwankt die Temperatur, können höhere Abweichungen auftreten.
Nach längerem Stromausfall (mehr als 80 Stunden) oder nach Speicherverlust steht die Hardware-Uhr auf einen festen Wert. Die Uhranzeige blinkt und das Datum, die Zeit und der Wochentag verbleiben auf:
- Datum:
01-Jan-2003
- Zeit:
00:00:00
- Wochentag: Sonntag
Hinweis: LOGO! prüft nicht, ob der Wochentag mit dem Datum übereinstimmt.
Im LOGO! kann eine automatische Sommer-/Winterzeitumstellung (S/W) aktivieren werden. Zusätzlich können Beginn und Ende der Sommerzeit parametrisiert werden. Entweder über vordefinierte Profile (EU, UK, US, AUS, AUS-TAS, NZ) oder manuell. Die Profile haben einen Zeitunterscheid von 60 Minuten. Bei der manuellen Eingabe kann eine minutengenaue Angabe von bis zu 180 Minuten hinterlegt werden.
Die jeweilige Systemfunktion (SFC) für die Hardware-Uhr und Sommer-/Winterzeitumstellung wird über einen Schreibbefehl unter Angabe eines Parameters (1 Byte) auf eine vordefinierte Adresse (PC->LOGO: 4300
,4301
/ LOGO->PC: 4400
,4401
) aufgerufen. Die Werte der Hardware-Uhr bzw. die S/W-Parameter werden in einem dafür reservierten Speicherbereich zwischen dem Programmiergerät (PG/PC) und den internen LOGO! Ressourcen ausgetauscht (sogenannter Übergabespeicher).
Speicherbereich: FB00..FB05
, 6*1 Byte
Adresse | RTC-Wert | S/W-Wert |
---|---|---|
FB00 | Tag | Länderauswahl *) |
FB01 | Monat | Ende Monat |
FB02 | Jahr | Ende Tag |
FB03 | Minuten | Beginn Monat |
FB04 | Stunden | Beginn Tag |
FB05 | Wochentag **) | Zeitverschiebung |
Tab: Übergabespeicher von Hardware-Uhr und Sommer-/Winterzeitumstellung
*) 0=deaktiviert
**) 1=Sonntag, 7=Samstag
Wert | Länderauswahl |
---|---|
00 | deaktiviert |
01 | EU: Europäische Union |
02 | UK: Großbritannien und Nordirland |
03 | US: Vereinigte Staaten von Amerika |
04 | Frei einstellbar *) |
05 | AUS: Australien |
06 | AUS-TAS: Tasmanien |
07 | NZ: Neuseeland |
Tab: Übergabespeicher FB00, Länderauswahl
*) FB01..FB05
hat benutzerdefinierte Daten und Uhrzeiten für die Umstellung
Die Systemfunktion Hardware-Uhr lesen (Byte 00
an Adresse 4400
schreiben) liest die aktuelle Uhrzeit und das aktuelle Datum aus der Hardware-Uhr und lädt die Werte in einen 6-Byte-Übergabespeicher, welcher an Adresse FB00
beginnt. Alle Datums- und Zeitwerte sind Bytewerte (vergl. S7 SFC 1 READ_CLK).
Befehlsfolge:
send> 01 44 00 00 // Werte der Hardware-Uhr laden
recv< 06 // OK
send> 02 FB XX // XX = [00-05]
recv< 06 03 FB XX YY // YY = Wert
Hinweis: Der Befehl ist nicht erfolgreich, sofern LOGO! nicht mit einer Hardware-Uhr ausgestattet ist (6ED1052-xCC00-0BA5
).
Die Systemfunktion Hardware-Uhr setzen (Byte 00
an Adresse 4300
schreiben) schreibt die aktuelle Uhrzeit und das aktuelle Datum der Hardware-Uhr in den 6-Byte-Übergabespeicher Adresse FB00..FB05
(vergl. S7 SFC 0 SET_CLK).
Befehlsfolge:
send> 01 FB 00 01 // Tag = 01
recv< 06 // OK
send> 01 FB 01 02 // Monat = 02 (Februar)
recv< 06 // OK
send> 01 FB 02 12 // Jahr = 18 (2018)
recv< 06 // OK
send> 01 FB 03 1E // Minuten = 30
recv< 06 // OK
send> 01 FB 04 0C // Stunden = 12
recv< 06 // OK
send> 01 FB 05 01 // Wochentag = 01 (Sonntag)
recv< 06 // OK
send> 01 43 00 00 // Werte in Hardware-Uhr übernehmen
recv< 06 // OK
Hinweis: Der Befehl ist nicht erfolgreich, sofern LOGO! nicht mit einer Hardware-Uhr ausgestattet ist (6ED1052-xCC00-0BA5).
Die Systemfunktion S/W-Umstellung lesen (Byte 00
an Adresse 4401
schreiben) liest die Werte für die Sommer-/Winterzeitumstellung aus der Hardware-Uhr und lädt diese in den Übergabespeicher (Adresse FB00..FB05
).
Befehlsfolge:
send> 01 44 01 00 // Parameter S/W-Umstellung laden
recv< 06 // OK
send> 02 FB XX // XX = [00-05]
recv< 06 03 FB XX YY // YY = Wert
Die Systemfunktion S/W-Umstellung setzen (Byte 00
an Adresse 4301
schreiben) schreibt die Werte für die Sommer-/Winterzeitumstellung der Hardware-Uhr in den 6-Byte-Übergabespeicher (Adresse FB00..FB05
).
Befehlsfolge:
send> 01 FB 00 04 // 04 = Frei einstellbar
recv< 06 // OK
send> 01 FB 01 0A // Sommerzeit Ende Monat = 10 (Oktober)
recv< 06 // OK
send> 01 FB 02 19 // Sommerzeit Ende Tag = 25
recv< 06 // OK
send> 01 FB 03 03 // Sommerzeit Anfang Monat = 03 (März)
recv< 06 // OK
send> 01 FB 04 05 // Sommerzeit Anfang Tag = 05
recv< 06 // OK
send> 01 FB 04 3C // Zeitverschiebung 60 Minuten
recv< 06 // OK
send> 01 43 01 00 // Parameter S/W-Umstellung übernehmen
recv< 06 // OK
Als Klemme werden alle Anschlüsse und Zustände bezeichnet (engl. Connectors = Co). Hierzu zählen Digitaleingänge, Analogeingänge, Digitalausgänge, Analogausgänge, Merker (inkl. Anlaufmerker), Analoge Merker, Schieberegisterbits, Cursortasten, Pegel und die Offenen Klemmen.
Klemmen sind Bestandteil des Schaltprogramms (vergl. S7 Anwenderprogramm) und somit Teil des Hauptprogramms (vergl. S7 Zyklisches Programm OB1).
Sie sind nicht im Programmzeilenspeicher 0EE8
abgelegt, sondern werden mit einem festen 16bit Wert (Datentyp Word) und einem Wertebereich 0000..00FE
am Eingang eines Blocks, Merkers oder einer Ausgangsklemme dargestellt.
Das höherwertige Byte vom Word ist immer 00
. Das niederwertige Byte vom Word (LoByte) zeigt den Klemmentyp bzw. nennt die Konstante.
LoByte HEX | Klemme/Merker | Beschreibung |
---|---|---|
00-17 | I1..24 | Digitaleingänge |
30-3F | Q1..16 | Digitalausgänge |
50-67 | M1..24 | Merker |
80-87 | AI1..8 | Analogeingänge |
92-97 | AM1..6 | Analoge Merker |
A0-A3 | C1..3 | Cursortasten (▲, ▼, <, >) |
B0-B7 | S1..8 | Schieberegisterbits |
Tab: Liste Klemmen
LoByte HEX | Konstante | Beschreibung |
---|---|---|
FC | Float | (Verwendung ??) |
FD | Pegel hi | Blockeingang logisch = 1 |
FE | Pegel lo | Blockeingang logisch = 0 |
FF | x | nicht benutzter Anschluss |
Tab: Liste Konstanten
Klemmen, die aufgrund eines Verknüpfungseinganges ein Speicherplatz besitzen, sind die Ausgänge Q1 bis Q16, AQ1 und AQ2, die Merker M1 bis M24 und AM1 bis AM6, sowie die 16 unbeschaltete Ausgänge X1 bis X16.
Die Verdrahtung auf den Eingang einer Ausgangsklemme oder eines Merkes werden im Speicherbereich 0E20..0EBF
mit 200 Bytes (10*20 Bytes) abgelegt.
Das Format ist einheitlich und ist als vielfache von 20 Bytes = 2 Bytes 80 00
+ 16 Bytes <Daten>
+ 2 Bytes FF FF
abgelegt.
80 00 1a 1b ... ... 8a 8b FF FF // (20 Byte)
Nicht benutzte Anschlüsse (freie Eingänge) im Schaltprogramm werden mit FFFF
angezeigt.
Na: Eingang, abhängig von b7
Nb: BIN MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7 = 0, Xa = Konstante oder Klemme
b7 = 1, Xa = Blocknummer
b6 = 0
b5 = 0
b4 = 0
Na Nb: N = Element 1-8
Das folgende Beispiel zeigt, dass wie der Eingang von Q1 mit der Klemme I1 (0000
) verbunden ist.
Schaltprogramm:
.---
|
I1--| Q1
'---
Abfrage der Klemmen Q1-16
send> 05 0E 20 00 28
recv< 06
80 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
80 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00
Das Beispiel zeigt auch, dass die anderen Ausgänge Q2-Q16 im Schaltprogramm nicht verwendet werden (FFFF
).
20 Bytes fest, die auf jeweils (weitere) 10*20 Bytes im Speicherbereich für Ausgänge und Merker verweisen. Der Verweis wird als 16 Bit-Offset-Adresse dargestellt.
Die Adressverweise befinden sich im Speicherbereich 0C00..0C13
(10*2 Bytes).
Adressverweis:
Speicher 0C00 Speicher 0E20
.----------------. .---------------.
0C00| 0E20 Offset 1 |------>| 20 Bytes |0E20+0000 = 0E20
0C02| 0E20 Offset 2 |------>| 20 Bytes |0E20+0014 = 0E34
o----------------o o---------------o
0C04| 0E20 Offset 3 |------>| 20 Bytes |0E20+0028 = 0E48
: | : | | : | :
: | : | | : | :
o----------------o o---------------o
| | | |
o----------------o o---------------o
| | | |
| | | |
o----------------o o---------------o
0C10| 0E20 Offset 9 |------>| 20 Bytes |0E20+00A0 = 0EC0
0C12| 0E20 Offset 10 |------>| 20 Bytes |0E20+00B4 = 0ED4
'----------------' '---------------'
Abb: Verweis auf Ausgänge, Merker
Bereich | Anz | Zeiger | Beschreibung |
---|---|---|---|
0E20 - 0E48 | 40 | 0000, 0014 | Digitaler Ausgang 1-16 |
0E48 - 0E84 | 60 | 0028, 003C, 0050 | Merker 1-24 |
0E84 - 0E98 | 20 | 0064 | Analogausgang 1-2; Analogmerker 1-6 |
0E98 - 0EC0 | 40 | 0078, 008C | offener Ausgang 1-16 |
0EC0 - 0EE8 | 40 | 00A0, 00B4 | (Reserve ??) |
Tab: Adressübersicht Ausgänge und Merker
Befehl:
send> 05 0C 00 00 14
recv< 06
00 00 14 00 28 00 3C 00 50 00 64 00 78 00 8C 00 A0 00 B4 00
D4
Auswertung:
|<----------------------- 20 Bytes ---------------------->|
HEX (Lo Hi): 00 00 14 00 28 00 3C 00 50 00 64 00 78 00 8C 00 A0 00 B4 00
HEX (Hi,Lo): 00,00 00,14 00,28 00,3C 00,50 00,64 00,78 00,8C 00,A0 00,B4
Dezimal: 00 20 40 60 80 100 120 140 160 180
Speicherbedarf: 20 -- 20 -- 20 -- 20 -- 20 -- 20 -- 20 -- 20 -- 20
Die Digitalausgänge Q1 bis Q16 befinden sich im Speicherbereich 0E20..0EBF
(2*20 Bytes).
Darstellungsformat
80 00 Q1a Q1b ... ... Q8a Q8b FF FF // (20 Byte)
80 00 Q9a Q9b ... ... Q16a Q16b FF FF
Q<n>a Q<n>b
: n = Element 1-16
Die Digitalausgänge M1 bis M24 befinden sich im Speicherbereich 0EC0..0E83
(3*20 Bytes).
Darstellungsformat:
80 00 M1a M1b ... ... M8a M8b FF FF // (20 Byte)
80 00 M9a M9b ... ... M16a M16b FF FF
80 00 M17a M17b ... ... M24a M24b FF FF
M<n>a M<n>b
: n = Element 1-24
Die Analogen Ausgänge AQ1 und AQ2 befinden sich im Speicherbereich 0E84..0E97
(1*20 Bytes).
Darstellungsformat:
80 00 AQ1a AQ1b AQ2a AQ2b AM1a AM1b ... ... AM6a AM6b FF FF // (20 Byte)
80 00 [AQ1 ] [AQ2 ] [AM1 ] ... ... [AM6 ] FF FF // (20 Byte)
A<Xn>:
X = Q oder M (AQ<n> oder AM<n>)
n = 1..8
Beispiel:
X=Q und n=2: AQ2
AXa AXb
\ /
/ \
AXb,AXa = AX
AX ist ein 16bit Interger Wert
| AXb (byte) | AXa (byte) |
MSB --*--+--+--+--+--+--+--|--+--+--+--+--+--+--+-- LSB
bF|bE .. .. b8|b7 .. .. b1 b0
bF: Vorzeichenbit
bF=1:negativ; bE..b9:Zahlenwert
bF=0:positiv; bE..b9:Zahlenwert
Beispiel:
int16_t i = AX; // signed int
AQ<n>
: n = Element AQ1-2
AM<n>
: n = Element AM1-6
Die Offenen Klemmen X1 bis X16 befinden sich im Speicherbereich 0E98..0EBF
(2*20 Bytes).
Darstellungsformat:
80 00 X1a X1b ... ... X8a X8b FF FF // (20 Byte)
80 00 X9a X9b ... ... X16a X16b FF FF
X<n>a X<n>b
: n = Element 1-16
Die Zustände der Klemmen - Eingänge I1 bis I24, Ausgänge Q1 bis Q16, AQ1 und AQ2, Merker M1 bis M24 und AM1 bis AM6 - können im Betriebszustand RUN über die PG-Schnittstelle ausgelesen werden.
Beispielschaltprogramm:
.---.B001
.----------| & |
| .--| |-- Q1
| | '---'
I1--o I2--o
| | .---.B130
| '--|>=1|
'----------| |-- Q2
'---'
Abb: Schaltprogramm Signalzustand im Online-Test
Befehl:
send> 55 13 13 00 AA
recv< 06
recv< 55 11 11 40 00
6D 0A
11
2A
00
80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52
03 00 00 03 00 00 00 00
00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00
AA
Der Signalzustand für die Digitalen Eingänge I1-24, Ausgänge Q1-16 und Merker M1-24 kann mittels des Online-Test Befehls 55 13 13 .. AA
abgefragt werden. Der Signalzustand wird dabei als 1Bit-Wert im Datenbereich von Byte 23 bis Byte 30 dargestellt (24I + 16Q + 24*M = 24 + 16 + 24Bits = 8 Bytes).
Darstellungsformat:
55 11 11 40 00 ...... 03 00 00 03 00 00 00 00 00 ...
55 11 11 40 00 xxxxxx [03 00 00] [03 00] [00 00 00] xx ...
D1-D22 [D23 D24 D25 D26 D27 D28 D29 D30]
[I1-24 ] [Q1-16] [M1-24 ]
xx: irgendwelche Bytes
Dn: Datenbyte an Stelle n
D23: BIN MSB --+--+--+--*--+--+--+-- LSB
b7 b6 b5 b4 b3 b2 b1 b0
b7 = Signalzustand I8
b6 = Signalzustand I7
b5 = Signalzustand I6
b4 = Signalzustand I5
b3 = Signalzustand I4
b2 = Signalzustand I3
b1 = Signalzustand I2
b0 = Signalzustand I1
D24-25: BIN MSB --+--+--+--*--+--+--+-- LSB
b7 b6 b5 b4 b3 b2 b1 b0
b7 = Signalzustand I16, I24, ...
b6 = Signalzustand I15, I23, ...
b5 = Signalzustand I14, I22, ...
b4 = Signalzustand I13, I21, ...
b3 = Signalzustand I12, I20, ...
b2 = Signalzustand I11, I19, ...
b1 = Signalzustand I10, I18, ...
b0 = Signalzustand I09, I17, ...
D26-27: BIN MSB --+--+--+--*--+--+--+-- LSB
b7 b6 b5 b4 b3 b2 b1 b0
b7 = Signalzustand Q8, Q16
b6 = Signalzustand Q7, Q15
b5 = Signalzustand Q6, Q14
b4 = Signalzustand Q5, Q13
b3 = Signalzustand Q4, Q12
b2 = Signalzustand Q3, Q11
b1 = Signalzustand Q2, Q10
b0 = Signalzustand Q1, Q09
D28-30: BIN MSB --+--+--+--*--+--+--+-- LSB
b7 b6 b5 b4 b3 b2 b1 b0
b7 = Signalzustand M8, M16, M24
b6 = Signalzustand M7, M15, M23
b5 = Signalzustand M6, M14, M22
b4 = Signalzustand M5, M13, M21
b3 = Signalzustand M4, M12, M20
b2 = Signalzustand M3, M11, M19
b1 = Signalzustand M2, M10, M18
b0 = Signalzustand M1, M09, M17
Auswertung:
xx [03 00 00] [03 00] [00 00 00] xx ...
[D23 D24 D25 D26 D27 D28 D29 D30]
Datenbyte 23: 03 = 0000 0011 // I1 = 1; I2 = 1; I3-8 = 0
Datenbyte 24-25: 00 = 0000 0000 // I9-I24 = 0
Datenbyte 26: 03 = 0000 0011 // Q1 = 1; Q2 = 1; Q3-8 = 0
Datenbyte 28-30: 00 = 0000 0000 // M1-M24 = 0
Der Wert für die Anlogen Eingänge AI1-8, Ausgänge AQ1-2 und Merker AM1-6 kann mittels des Online-Test Befehls 55 13 13 ..AA
abgefragt werden. Der Signalzustand wird dabei als 16Bit-Wert im Datenbereich von Byte 31 bis Byte 63 dargestellt (8AI + 2AQ + 6AM = 816 + 216 + 616Bits = 32 Bytes).
Der Wertebereich ist von -32768 bis +32767, wobei 0-10V auf interne Werte von 0 bis 1000 abgebildet werden.
Darstellungsformat:
55 11 11 40 00 xxxxxx
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 xx
55 11 11 40 00 [D1-D30]
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[AI1] [AI2] [AI3] [AI4] [AI5] [AI6] [AI7] [AI8]
00 00 00 00
[AQ1] [AQ2]
00 00 00 00 00 00 00 00 00 00 00 00 xx
[AM1] [AM2] [AM3] [AM4] [AM5] [AM6]
xx: irgendwelche Bytes
Dn: Datenbyte an Stelle n
AXn:
X = I,Q oder M (AIn, AQn oder AMn)
n = 1..8
Beispiel:
X=I und n=8: AI8
AXa AXb
\ /
/ \
AXb,AXa = AX
AX ist ein 16bit Interger Wert
| AXb (byte) | AXa (byte) |
MSB --*--+--+--+--+--+--+--|--+--+--+--+--+--+--+-- LSB
bF|bE .. .. b8|b7 .. .. b1 b0
bF: Vorzeichenbit
bF=1:negativ; bE..b9:Zahlenwert
bF=0:positiv; bE..b9:Zahlenwert
Der Programmzeilenspeicher ist Teil des Schaltprogramms (vergl. S7 Anwenderprogramm) und wird zur Abarbeitung des Hauptprogramm (vergl. S7 Zyklisches Programm OB1) in den Arbeitsspeicher geladen. Der zugehörige Code ist Teil der Firmware und daher nicht adressierbar.
Ein Block ist eine Funktion, die eine Ausgangsinformationen Aufgrund einer Informationen an den Eingängen setzt. Die Firmware bestimmt die nutzbaren Funktionen, die für unterschiedliche Aufgaben eingesetzt werden können.
Alle Blöcke sind ab Programmzeilenspeicher 0EE8
abgelegt und werden mit einem 16bit Wert (Datentyp Word) im Wertebereich 8000..C08C
am Eingang eines Blocks, Merkers oder einer Ausgangsklemme dargestellt.
Bei einem Block ist das Most Significant Bit (MSB = 1
) vom Word immer gesetzt. Das niederwertige Byte vom Word (LoByte) benennt die Blocknummer im Wertebereich 0A..8C
, entsprechend B001 bis B130.
Bestimmte Eingänge von Grund- und Sonderfunktionen können einzeln negiert werden, d.h. liegt an dem bestimmten Eingang eine 1
an, so verwendet das Schaltprogramm eine 0
. Liegt eine 0
an, so wird eine 1
verwendet. Diese Information ist im Bit 7 vom HiByte gespeichert:
Eingang | HiByte | BIN |
---|---|---|
normal | 80 | 1000 0000 = 80 |
negiert | C0 | 1100 0000 = C0 |
Die Erklärung erfolgt Anhand eines Beispiels. Im Beispiel kommen die Klemmen Q1 und Q2 zur Anwendung (ungleich FFFF
).
Die Klemmen sind wie folgt verdrahtet:
- Der Eingang von Q1 ist mit dem Ausgang von Block B001 verbunden
- Eingang Q2 mit Ausgang B005
So sieht das zugehörige Schaltprogramm aus:
.---
|
B1--| Q1
'---
.---
|
B5--| Q2
'---
Abb: Schaltprogramm Zuordnung der Blocknummer
Abfrage der Klemmen Q1-Q16
send> 05 0E 20 00 28
recv< 06
80 00 0A 80 0E 80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF
80 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
04
Klemme | Block | HEX | DEC |
---|---|---|---|
Q1 | B001 | 0A | 10 |
Q2 | B005 | 0E | 14 |
Q3-16 | - | FF | - |
Tab: Zuordnung der Blocknummer zum Ausgang
Block | HEX | DEC | Offset (-9) |
---|---|---|---|
B001 | 0A | 10 | 1 |
B005 | 0E | 14 | 5 |
Tab: Bestimmung der Blocknummer
Das Signalergebnis am Ausgang eines Blockes kann mittels des Online-Test Befehls 55 13 13 .. AA
abgefragt werden. Das Signalergebnis wird dabei als 1Bit-Wert im Datenbereich von Byte 6 bis Byte 22 dargestellt (130 Blöcke = 128+2 Bits = 16 Bytes + 2 Bits).
Beispielschaltprogramm:
.---.B001
.----------| & |
| .--| |-- Q1
| | '---'
I1--o I2--o
| | .---.B130
| '--|>=1|
'----------| |-- Q2
'---'
Abb: Schaltprogramm Signalzustand im Online-Test
Befehl:
send> 55 13 13 00 AA
recv< 06
recv< 55 11 11 40 00
6D 0A 11 2A
00
80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52
03 00 00 03 00 00 00 00
00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00
AA
Darstellungsformat:
55 11 11 40 00 ..... 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 03 ...
55 11 11 40 00 xxxxx [80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52] x ...
D1-D5 [D6 D7 ... ... D16 D22]
x: irgendein Byte
Dn: Datenbyte an Stelle n
D6: BIN MSB --+--+--+--*--+--+--+-- LSB
b7 b6 b5 b4 b3 b2 b1 b0
b7 = Signalergebnis Block B008
b6 = Signalergebnis Block B007
b5 = Signalergebnis Block B006
b4 = Signalergebnis Block B005
b3 = Signalergebnis Block B004
b2 = Signalergebnis Block B003
b1 = Signalergebnis Block B002
b0 = Signalergebnis Block B001
D7-21: BIN MSB --+--+--+--*--+--+--+-- LSB
b7 b6 b5 b4 b3 b2 b1 b0
b7 = Signalergebnis Block B016, B024, ...
b6 = Signalergebnis Block B015, B023, ...
b5 = Signalergebnis Block B014, B022, ...
b4 = Signalergebnis Block B013, B021, ...
b3 = Signalergebnis Block B012, B020, ...
b2 = Signalergebnis Block B011, B019, ...
b1 = Signalergebnis Block B010, B018, ...
b0 = Signalergebnis Block B009, B017, ...
D22: BIN MSB ++++*++---+-- LSB
xxxx xx b1 b0
b7-b3: x = irgendein Bit
b1 = Signalergebnis Block B130
b0 = Signalergebnis Block B129
Auswertung:
xx [80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52] xx
D6 --------------------------------------------D22
Datenbyte 6: 80 = 1000 0000 // B001: Q = 1; B002-B008: Q = 0
Datenbyte 7-21: 00 = 0000 0000 // B009-B128: Q = 0
Datenbyte 22: 52 & 03 = xxxx xx10 // B129: Q = 0; B130: Q = 1
Zeiger auf die Blöcke im Programmzeilenspeicher 0EE8
. Jeweils ein 16bit-Zeiger (ungleich FFFF
) zeigt auf ein Block. Ein Block ist eine Funktion, die Eingangsinformationen in Ausgangsinformationen umsetzt. Die Länge eine Blocks im Programmzeilenspeicher ist variabel.
Die Größe beträgt 260 Bytes (0BA5 hat maximal 130 Blöcke und der Zeiger eines Funktionsblocks belegt 2 Bytes: 260/2 = 130).
Speicherbereich: 0C14..0D17
(130*2 Bytes).
Adressverweis:
Speicher 0C14 Speicher 0EE8
.-----------------. .---------------.
0C14| 0E20 Offset 1 |----->| Block n Bytes |0E20+Offset 1 = 0EE8
0C16| 0E20 Offset 2 |----->| Block n Bytes |0E20+Offset 2
0C18| 0E20 Offset 3 |----->| Block n Bytes |0E20+Offset 3
: | : | | : | :
: | : | | : | :
| | | |
| | | |
0D14| 0E20 Offset 129 |----->| Block n Bytes |0E20+Offset 129
0D16| 0E20 Offset 130 |----->| Block n Bytes |0E20+Offset 130
'-----------------' '---------------'
Abb: Adressverweis auf Blöcke
Zeigerarithmetik: unter Verwendung des ausgelesen Wertes ist es möglich, einen Zeiger auf 0E20
um den gelesen Offset-Anteil zu erhöhen und damit den Block im Speicherbereich anzusprechen.
Der erste Block liegt im Programmzeilenspeicher 0EE8
= 0E20
+ 00C8
, d.h. Der Wert an Adresse 0C14
(Offset 1) ist entweder 00C8
oder FFFF
, wenn kein Programm vorhanden ist.
Befehl:
send> 05 0C 14 01 04
Ausgabe mit gelöschten Programm:
recv< 06
FF FF FF FF FF FF FF FF FF FF FF FF ...
Programm bestehend aus einem Block:
recv< 06
C8 00 FF FF FF FF FF FF FF FF FF FF ...
Folgend das Beispielschaltprogramm Ermittlung von Speicherbedarf aus dem Handbuch:
B3
.---. B2
No1--|.-.| .---.
No2--|'-'|------| & | B1
No3--| | x-| | .---.
'---' .--| |------|>=1|
| '---' x-| |
B4 | I2--| |--Q1
.---. | '---'
|.-.| |
I1--|--'| |
Par--| |---'
'---' B6
.---. B5
I3--| & | .---.
I4--| | |'--|
x-| |------|.-.|
'---' Par--| |--Q2
'---'
Abb: Schaltprogramm Ermittlung von Speicherbedarf
Block | Funktion | Speicherbedarf |
---|---|---|
B1 | OR | 12 Bytes |
B2 | AND | 12 Bytes |
B3 | Wochenschaltuhr | 20 Bytes |
B4 | Einschaltverzögerung *) | 8 Bytes |
B5 | Treppenlichtschalter | 12 Bytes |
B6 | AND | 12 Bytes |
*) Parametriert mit Remanenz
Abfrage der Offset-Werte:
send> 05 0C 14 00 14
recv< 06
C8 00 D4 00 E0 00 F4 00 FC 00 08 01 FF FF FF FF FF FF FF FF FD
Auswertung:
HEX (Lo-Hi): C8 00 D4 00 E0 00 F4 00 FC 00 08 01 FF FF FF FF FF FF FF FF
HEX (Hi-Lo): 00 C8 00 D4 00 E0 00 F4 00 FC 01 08 FF FF FF FF FF FF FF FF
Dezimal: 200 212 224 244 252 264
Speicherbedarf: 12 -- 12 -- 20 --- 8 -- 12 --
Grundfunktionen sind einfache Grundverknüpfungsglieder der boolschen Algebra. Die Grundfunktionen verfügen bei einer 0BA5 über drei Eingänge (hiervon ausgenommen ist die Grundfunktion NOT).
HEX | BIN | RAM (Bytes) | Bezeichnung der Grundfunktion |
---|---|---|---|
01 | 0000 0001 | 12 | AND (UND) |
02 | 0000 0010 | 12 | OR (ODER) |
03 | 0000 0011 | 4 | NOT (Negation, Inverter) |
04 | 0000 0100 | 12 | NAND (UND nicht) |
05 | 0000 0101 | 12 | NOR (ODER nicht) |
06 | 0000 0110 | 8 | XOR (exklusiv ODER) |
07 | 0000 0111 | 12 | AND mit Flankenauswertung |
08 | 0000 1000 | 12 | NAND mit Flankenauswertung |
Tab: Liste Grundfunktionen
Die Formatlänge ist variabel und hat 4, 8 oder 12 Bytes = 2 Bytes <GF> 00
+ 0 bis 8 Bytes <Eingänge>
+ 0 bis 2 Bytes FF FF
.
GF 00 1a 1b // (4 Bytes)
GF 00 1a 1b 2a 2b FF FF // (8 Bytes)
GF 00 1a 1b 2a 2b 3a 3b 4a 4b FF FF // (12 Bytes)
GF: Funktionsblock, siehe Liste Grundfunktionen
Na: Eingang, abhängig von b7
Nb: BIN MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7 = 0, Xa = Konstante oder Klemme
b7 = 1, Xa = Blocknummer
b6 = 0, Konnektor normal (nicht negiert)
b6 = 1, Konnektor negiert
b5 = 0
b4 = 0
Na Nb: N = Element 1-4
Nicht benutzte Anschlüsse im Schaltprogramm werden mit FFFF
angezeigt.
Folgend das der Ausschnitt von Block B001 aus dem Beispiel Ermittlung von Speicherbedarf.
Schaltprogramm:
B1
.---.
B2--|>=1|
x-| |
I2--| |--Q1
'---'
Abb: Programm Ermittlung von Speicherbedarf, Block B001
Abfrage von Block B001:
send> 05 0E E8 00 0C
recv< 06
02 00 0B 80 FF FF 01 00 FF FF FF FF
88
Auswertung:
02 00 [0B 80] [FF FF] [01 00] [FF FF] FF FF // Little-Endian
02 00 [80,0B] [FF,FF] [00,01] [FF FF] FF FF // Hi,Lo
GF 00 [Nr,B2] [--,--] [Co,I2] [--,--] // OR
Am Ausgang Q erscheint der Signalzustand 1
, wenn alle Eingänge I gleichzeitig den Signalzustand 1
aufweisen. Am Ausgang Q erscheint der Signalzustand 0
, wenn mindestens ein Eingang I den Signalzustand 0
hat.
.---.
I1--| & |
I2--| |
I3--| |--Q
'---'
Abb: UND-Schaltsymbol
| __ __ __ .-. |
|--o o--o o--o o--|\|--|
| I1 I2 I3 '-' |
Q
Abb: UND-Verknüpfung
Am Ausgang Q erscheint Signalzustand 1
, wenn mindestens ein Eingang I den Signalzustand 1
hat. Am Ausgang Q erscheint der Signalzustand 0
, wenn alle Eingänge I gleichzeitig den Signalzustand 0
aufweisen.
.---.
I1--|>=1|
I2--| |
I3--| |--Q
'---'
Abb: ODER-Schaltsymbol
| __ I1 |
|--o o---. |
| __ I2 | .-. |
|--o o---+--|\|--|
| __ I3 | '-' |
|--o o---' Q |
| |
Abb: ODER-Verknüpfung
Am Ausgang Q erscheint Signalzustand 1
, wenn der Eingang I den Signalzustand 0
hat. Am Ausgang Q erscheint der Signalzustand 0
, wenn der Eingänge I den Signalzustand 1
aufweisen.
.---.
I--| 1 |o--Q
'---'
Abb: NICHT-Schaltsymbol
| .-. |
|--o__o---|\|--|
| '-' |
I Q
Abb: NICHT-Verknüpfung
Am Ausgang Q erscheint der Signalzustand 0
, wenn alle Eingänge I gleichzeitig den Signalzustand 1
aufweisen. Am Ausgang Q erscheint der Signalzustand 1
, wenn mindestens ein Eingang I den Signalzustand 0
hat.
.---.
I1--| & |
I2--| |
I3--| |o--Q
'---'
Abb: NICHT UND-Schaltsymbol
| I1 |
|--o__o---. |
| I2 | .-. |
|--o__o---+--|\|--|
| I3 | '-' |
|--o__o---' Q |
| |
Abb: NICHT UND-Verknüpfung
Am Ausgang Q erscheint Signalzustand 0
, wenn mindestens ein Eingang I den Signalzustand 1
hat. Am Ausgang Q erscheint der Signalzustand 1
, wenn alle Eingänge I gleichzeitig den Signalzustand 0
aufweisen.
.---.
I1--|>=1|
I2--| |
I3--| |o--Q
'---'
Abb: NICHT ODER-Schaltsymbol
| .-. |
|--o__o--o__o--o__o--|\|--|
| I1 I2 I3 '-' |
Q
Abb: NICHT ODER-Verknüpfung
Um am Ausgang Q eine 1
zu erhalten muss entweder an dem Eingang I1 oder am anderen I2 der Signalzustand 1
anliegen. Die Bedingung gilt als nicht erfüllt, wenn an beiden Eingängen eine 1
anliegt. Dann erscheint Ausgnag Q den Signalzustand 0
.
.---.
I1--| =1|
I2--| |--Q
'---'
Abb: Exklusiv-ODER-Schaltsymbol
I1 | I2 | Q ---+----+-- 0 | 0 | 0 1 | 0 | 1 0 | 1 | 1 1 | 1 | 0
Tab: Wahrheitstabelle
Der Ausgang Q nimmt nur dann den Signalzustand 1
an, wenn alle Eingänge I den Signalzustand 1
haben und im vorherigen Zyklus mindestens ein Eingang I den Signalzustand 0
hatte. Der Ausgang Q bleibt für genau einen Zyklus auf 1
. Bevor der Ausgang Q erneut den Signalustand 1
annehmen kann muss für mindestens einen Zyklus eine 0
anstehen.
.---.
I1--|& ^|
I2--| |
I3--| |--Q
'---'
Abb: UND-Schaltsymbol mit Flankensteuerung
. _______________ . _______________ .
I1 ._| . . . . |___| . . . . |_.
. . ___________________________ . .
I2 .___._| . . . . . . . |_.___.
. _______________________ . __________
I3 __| . . . . . . |___| . . .
. . .___. . . .___. .___. .
Q .___.___| |___.___.___| |___| |___.
Zyklus : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10:
Abb: Zeitdiagramm UND mit Flankensteuerung
Der Ausgang Q nimmt nur dann den Signalzustand 1
an, wenn mindestens ein Eingang I den Signalzustand 0
hat und im vorherigen Zyklus alle Eingänge I den Signalzustand 1
hatten. Der Ausgang Q bleibt für genau einen Zyklus auf 1
. Bevor der Ausgang Q erneut den Signalustand 1
annehmen kann muss für mindestens einen Zyklus eine 0
anstehen.
.---.
I1--|& v|
I2--| |
I3--| |--Q
'---'
Abb: NICHT UND-Schaltsymbol mit Flankensteuerung
. ___________ . . _______________ .
I1 ._| . . . |_.___._| . . . . |_.
. . ___________________________ . .
I2 .___._| . . . . . . . |_.___.
. _______________________ . __________
I3 __| . . . . . . |___| . . .
. . . . .___. .___. .___.
Q .___.___.___.___| |___.___| |___| |
Zyklus : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10:
Abb: Zeitdiagramm NICHT UND mit Flankensteuerung
Sonderfunktionen sind ähnlich wir die Grundfunktionen im Speicher abgelegt. Neben den Verknüpfungseingängen beinhalten diese jedoch Zeitfunktionen, Remanenz und verschiedenste Parametriermöglichkeiten.
Die Formatlänge ist variabel und hat 8, 12, 20 oder 24 Bytes = 2 Bytes <SF> <Pa>
+ 4 bis 20 Bytes <Daten>
+ 2 Bytes FF FF
.
SF: Block, siehe Liste Sonderfunktionen
Pa: Parameter, siehe Blockparameter
HEX | RAM (Bytes) | REM (Bytes) | Beschreibung |
---|---|---|---|
21 | 8 | 3 | Einschaltverzögerung |
22 | 12 | 3 | Ausschaltverzögerung |
23 | 12 | 1 | Stromstoßrelais |
24 | 20 | - | Wochenschaltuhr |
25 | 8 | 1 | Selbsthalterelais |
27 | 12 | 3 | Speichernde Einschaltverzögerung |
2B | 24 | 5 | Vor-/Rückwärtszähler |
2D | 12 | 3 | Asynchroner Impulsgeber |
2F | 12 | 3 | Ein-/Ausschaltverzögerung |
31 | 12 | 3 | Treppenlichtschalter |
34 | 8 | - | Meldetext |
35 | 16 | - | Analoger Schwellwertschalter |
39 | 20 | - | Analogwertüberwachung |
Tab: Liste Sonderfunktionen
-
S (Set): Über den Eingang S kann der Ausgang auf
1
gesetzt. -
R (Reset): Der Rücksetzeingang R schaltet Ausgänge auf
0
. - Trg (Trigger): Über diesen Eingang wird der Ablauf einer Funktion gestartet.
- Cnt (Count): Über diesen Eingang werden Zählimpulse aufgenommen.
- Fre (Frequency): Auszuwertende Frequenzsignale werden an den Eingang mit dieser Bezeichnung angelegt.
- Dir (Direction): Über diesen Eingang legen Sie die Richtung fest.
-
En (Enable): Dieser Eingang aktiviert die Funktion eines Blocks. Liegt der Eingang auf
0
, werden andere Signale vom Block ignoriert. - Inv (Invert): Das Ausgangssignal des Blocks wird invertiert, wenn dieser Eingang angesteuert wird.
- Ral (Reset all): Alle internen Werte werden zurückgesetzt.
Bei bestimmten Sonderfunktionen kann eine Zeit parametriert werden. LOGO! verfügt über Zeiten, die in unterschiedlichen Auflösungen (Inkrementen der Zeitbasis) zählen. Jede Zeit wird als Speichertyp TW gespeichert mit folgenden zwei Angaben:
- Zeitwert: Diese ganze Zahl (14 Bit) ohne Vorzeichen speichert den Wert der Zeit.
- Zeitbasis: Bit 16 und 15 legen die Zeitbasis fest, die mit dem voreingestellten Zeitwert eingegeben wird.
Darstellung | Zeitbasis | Inkrement | Wert |
---|---|---|---|
(s:1/100) | s | 10 ms | 1 |
(m:s) | m | Sekunden | 2 |
(h:m) | h | Minuten | 3 |
Tab: Darstellung der Zeitbasis
Darstellungsformat:
.. xx T1 T2 xx ..
.. xx [T ] xx ..
xx: irgendein Byte
T: Zeit, 16bit (Word)
T1 T2
\ /
/ \
T2 T1 = T
| T2 (byte) | T1 (byte) |
MSB --+--*--+--+--+--+--+--|--+--+--+--+--+--+--+-- LSB
bF bE|bD .. .. b8|b7 .. .. b1 b0
bF,bE = 0,0 Zeitbasis (h:m), Wertebereich (0-23:0-59)
bF,bE = 1,1 Zeitbasis (h:m), Wertebereich (0-99:0-59)
bF,bE = 1,0 Zeitbasis (m:s), Wertebereich (0-99:0-59)
bF,bE = 0,1 Zeitbasis (s:1/100s), Wertebereich (0-99:0-99)
byte b = T >> 14; // bF..bE (2bit) -> Zeitbasis (VB)
word v = T & 7FFF; // bD..b0 (14bit) -> Zeitwert (VW)
if (b == 3)
{
// Zeitbasis Stunden; Inkrement Minuten; (h:m)
h = v / 60;
m = v % 60;
}
else if (b == 2)
{
// Zeitbasis Minuten; Inkrement Sekunden; (m:s)
m = v / 60;
s = v % 60;
}
else if (b == 1)
{
// Zeitbasis Sekunden; Inkrement 10ms; (s:1/100)
s = v / 100;
10ms = v % 100;
}
Beispiel:
21 40 01 00 7A 80 00 00 // Einschaltverzögerung 2:02 (m: s)
21 40 01 00 7A C0 00 00 // Einschaltverzögerung 2:02 (h: m)
21 40 01 00 CA 40 00 00 // Einschaltverzögerung 2:02 (s: 1 / 100s)
21 C0 01 00 FE 41 00 00 // Einschaltverzögerung 5:10 (s: 1 / 100s), Remanenz
21 00 01 00 FE 41 00 00 // Einschaltverzögerung 5:10 (s: 1 / 100s), Parameterschutz
LOGO! 0BA5 verfügt nur über eine Art von Zähler, welcher an einem Zähleingang die steigenden Flanken zählt. Der Zähler zählt sowohl vorwärts als auch rückwärts. Der Zählerwert ist eine 32Bit Ganzzahl vom Datentyp VD und wird ohne Vorzeichen gespeichert. Der gültige Wertebereich des Zählers liegt zwischen 0...999999.
Darstellungsformat:
.. xx 00 06 6C BC xx ..
.. xx C1 C2 C3 C4 xx ..
.. xx [C ] xx ..
xx: irgendein Byte
C1-C4: Zählerwert, 32bit (DWord)
C1 C2 C3 C4
\ /
/ \
C4 C3 C2 C1
00 06 6C BC = 421052
Maximaler Zählerwert F423F:
C1 C2 C3 C4
\ /
/ \
C4 C3 C2 C1
00 0F 42 3F = 999999
Mit der Funktion Einschaltverzögerung (vergl. S7 SFB 4 TON) wird das Setzen des Ausgangs Q um die programmierte Zeitdauer T verzögert. Die Zeit Ta startet (Ta ist die in LOGO! aktuelle Zeit vom Datentyp TW), wenn das Eingangssignal Trg von 0
auf 1
wechselt (positive Signalflanke). Wenn die Zeitdauer abgelaufen ist (Ta > T), liefert der Ausgang Q den Signalzustand 1
. Der Ausgang Q bleibt so lange gesetzt, wie der Triggereingang die 1
führt. Wenn der Signalzustand am Triggereingang von 1
auf 0
wechselt, wird der Ausgang Q zurückgesetzt. Die Zeitfunktion wird wieder gestartet, wenn eine neue positive Signalflanke am Starteingang erfasst wird.
Abb: Dialog Einschaltverzögerung
Die Flags für Remananz und Parameterschutz sowie die Beschaltung von Eingang Trg und der Parameter T werden im Mode STOP abgefragt. Der Zeitoperand Ta und der Signalzustand am Ausgang Q sind im Mode RUN abfragbar.
RAM/Rem/Online: 8/3/4
21 40 01 00 7A 80 00 00 FF FF FF FF
21 40 [01 00] [7A 80] 00 00 FF FF FF FF
SF Pa [Trg ] [Par ] 00 00 FF FF FF FF
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
Trg: Eingang Trg (Co oder GF/SF)
Par: Parameter T (T ist die Zeit, nach der der Ausgang eingeschaltet wird)
Folgend das Beispiel Ermittlung von Speicherbedarf aus dem Handbuch.
Schaltprogramm:
B4
.---.
|.-.|
I1--|--'|
Par--| |--B2
'---'
Abb: Programm Ermittlung von Speicherbedarf, Block B004
Abfrage von Block B004:
send> 05 0F 14 00 08
recv< 06
21 40 00 00 7A 80 00 00
9B
Auswertung:
21 40 [00 00] [7A 80] 00 00 // Little-Endian
21 40 [00 00] [80,7A] 00 00 // Hi,Lo
SF Pa [Co I1] [Par T] 00 00 // Einschaltverzögerung, 02:02 (m: s)
Weitere Beispiele:
21 40 01 00 7A C0 00 00 // Einschaltverzögerung 02:02 (h: m)
21 C0 01 00 FE 41 00 00 // Einschaltverzögerung 05:10 (s: 1/100s), Remanenz aktiviert
send> 55 13 13 01 0D AA
recv< 06
recv< 55 11 11 44 00
F4 5F
11 2A
04
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00
01 00 0B 80
AA
55 11 11 44 00 F4 5F 11 2A 04
55 [11 11] [44 00] [F4 5F] 11 2A 04
Co [Fc ] [Bc ] [Chk ] C1 C2 C3
-----------------------------------
01 00 0B 80 AA
01 00 [0B 80] AA
Pa [Ta ] Ed
Co: Kontrollbefehl = 55
Fc: PG-Funktion = 1111
Bc: 16bit-Wert; Anzahl Datenbytes (inkl. Extrabytes)
B1 B2
\ /
/ \
B1 B2
00 44 = 68 (DEC)
Chk: Schaltprogramm Checksum
C1: Anzahl Bytes für Blöcke
C2: Anzahl Bytes für Klemmen
C3: Anzahl Extrabytes
Pa: Funktionsbeschreibung Ta
Pa = 0; Ta stop; Ta = 0 (Standard)
Pa = 1: Ta läuft; Ta < T
Pa = 2: Ta stop; Ta = T
Ta: Aktuelle Zeit, siehe Zeitverhalten
Ed: AA = Ende Trennzeichen
Schaltprogramm:
B4
.---.
|.-.|
I1--|--'|
Par--| |--B2
'---'
Abb: Programm Ermittlung von Speicherbedarf, Block B004
Abfrage von Block B004:
send> 55 13 13 01 0D AA
recv< 06
recv< 55 11 11 44 00
F4 5F
11
2A
04
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00
01 00 0B 80
AA
Auswertung:
55 11 11 // Kontrollbefehl; Antwort Online-Test
44 00 // 68 Bytes folgen (exkl. AA)
F4 5F // Schaltprogramm Prüfsumme
11 // 17 Bytes für Blöcke im Datenfeld
2A // 42 Bytes für Klemmen im Datenfeld
04 // 4 Extra Bytes im Datenfeld
04 00....00 // B,I,M,Q,C,S,AI,AM,AQ (17+42 Bytes)
01 // Ta läuft; Ta < T
00 // VB = 0
0B 80 // Ta = 11s; Zeitbasis (m:s)
AA // Befehlsende Trennzeichen
Mit der Funktion Ausschaltverzögerung (vergl. S7 SFB 5 TOF) wird das Zurücksetzen des Ausgangs Q um die parametrierte Zeitdauer T verzögert. Der Ausgang Q wird mit positiver Signalflanke gesetzt (Eingang Trg wechselt von 0
auf 1
). Wenn der Signalzustand am Eingang Trg wieder auf 0
wechselt (negative Signalflanke), läuft die parametrierte Zeitdauer T ab. Der Ausgang Q bleibt gesetzt, solange die Zeitdauer Ta läuft (Ta < T). Nach dem Ablauf der Zeitdauer T (T > Ta) wird der Ausgang Q zurückgesetzt. Falls der Signalzustand am Eingang Trg auf 1
wechselt, bevor die Zeitdauer T abgelaufen ist, wird die Zeit zurückgesetzt. Der Signalzustand am Ausgang Q bleibt weiterhin auf 1
gesetzt.
Abb: Dialog Auschaltverzörgerung
Die Flags für Remanenz und Parameterschutz sowie die Beschaltung von Eingang Trg und der Parameter T werden im Mode STOP abgefragt. Der Zeitoperand Ta und der Signalzustand am Ausgang Q sind im Mode RUN abfragbar.
RAM/Rem/Online: 12/3/?
22 80 01 00 02 00 1F CD 00 00 00 00
22 80 [01 00] [02 00] [1F CD] 00 00 00 00
SF Pa [Trg ] [R ] [Par ] 00 00 00 00
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
Trg: Eingang Trg (Co oder GF/SF)
R: Eingang R (Co oder GF/SF)
Par: Parameter T (Der Ausgang schaltet aus, wenn die Verzögerungszeit T abläuft)
Beispiel:
22 80 01 00 02 00 1F CD 00 00 00 00 // Ausschalterzögerung 55:59 (h: m)
Bei der Funktion Stromstoßrelais wechselt der Ausgang Q bei jedem elektrischen Impuls am Eingang Trg sein Signalzustand. Ist der Ausgang Q zurückgesetzt (0
) so wird er gesetzt (1
) ist der Ausgang Q gesetzt (1
) wird dieser zurückgesetzt (0
).
Der Ausgang Q kann mittels der Eingänge S und R vorbelegt werden. Wenn der Signalzustand am Eingang S = 1
und am Eingang R = 0
ist, wird der Ausgang Q auf 1
gesetzt. Wenn der Signalzustand am Eingang S = 0
und am Eingang R = 1
ist, wird der Ausgang Q auf 0
zurückgesetzt. Der Eingang R dominiert den Eingang S.
Die Flags für Remanenz und Parameterschutz sowie die Beschaltung von Eingang S und R werden im Mode STOP abgefragt. Der Signalzustand am Ausgang Q ist im Mode RUN abfragbar.
RAM/Rem/Online: 12/1/?
23 00 02 00 FF FF FF FF 00 00 00 00
23 00 [02 00] [FF FF] [FF FF] 00 00 00 00
SF Pa [Trg ] [S ] [R ] 00 00 00 00
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
Trg: Eingang Trg (Co oder GF/SF)
S: Eingabe S (Co oder GF/SF)
R: Eingang R (Co oder GF/SF)
Par:
RS (Vorrang Eingang R) oder
SR (Vorrang Eingang S)
Der Ausgang Q wird über drei parametrierbares Ein- und Ausschaltzeiten (Einstellnocken No1, No2, No3) gesteuert. Der Wertebereich für die Schaltzeitpunkte (Ein- oder Ausschaltzeit) liegt zwischen 00:00
und 23:59
Uhr. In Summe können 6 Schaltzeitpunkte vom Datentyp TW angegeben sein. Die Auswahl der Wochentage erfolgt durch Aktivierung der zugeordneten Tage, wobei jeder Tag einem Speicher-Bit innerhalb eines Bytes zugeordnet ist. Wenn das zugehörige Bit auf 1
gesetzt ist, ist der Tag festgelegt.
Abb: Dialog Wochenschaltuhr
Hinweis: Da die LOGO! Kleinsteuerung Typ 24/24o keine Uhr besitzt, ist die Wochenschaltuhr bei dieser Variante nicht nutzbar.
RAM/Rem/Online: 20/-/5
24 40 F2 00 A0 00 FF FF FF FF FF FF FF FF 2A 00 00 00 00 00
24 40 [F2 00] [A0 00] [FF FF] [FF FF] [FF FF] [FF FF] 2A 00 00 00 00 00
SF Pa [On1 ] [Off1 ] [On2 ] [Off2 ] [On3 ] [Off3 ] D1 D2 D3
SF Pa [No1 ] [No2 ] [No3 ] [Wo-Tage ]
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein; * REM (Standard)
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
No1: Nockenparameter 1
No2: Nockenparameter 2
No3: Nockenparameter 3
OnX: Einschaltzeitpunkt hh:mm (0-23:0-59); min. 0000, max. 059F
FF FF = deaktiviert
OnL OnH
\ /
/ \
OnH,OnL = T
word t = T & 0x07FF; // Zeitwert in Minuten
h = t / 60;
m = t % 60;
Beispiel:
F2 = 1111 0010 = 242 (Dec) = 60 × 4 + 2 = 242 // On = 04:02h
OffX: Ausschaltzeitpunkt hh:mm (0-23:0-59)
FF FF = deaktiviert
OffL OffH
\ /
/ \
OffH,OffL = T
word t = T & 0x07FF; // Zeitwert in Minuten
h = t / 60;
m = t % 60;
Beispiel:
A0 = 1010 0000 = 160 (Dec) = 60 * 2 + 40 = 160 // Off = 02:40h
Dx: Wochentage
Dx = 00 (Standard)
Dx = täglich (D=MTWTFSS) = 7F
MSB --+--+--+--*--+--+--+-- LSB
b7 b6 b5 b4 b3 b2 b1 b0
- S F T W T M S
b0 = Sonntag, // D=------S
b1 = Montag, // D=M------
b2 = Dienstag, // D=-T-----
b3 = Mittwoch, // D=--W----
b4 = Donnerstag, // D=---T---
b5 = Freitag, // D=----F--
b6 = Samstag, // D=-----S-
b7 = - (ohne Bedeutung)
Beispiele:
2A = 0010 1010 // D=M-W-F--
0E = 0000 1110 // D=MTW----
41 = 0100 0001 // D=-----SS
Folgend das Beispiel Ermittlung von Speicherbedarf aus dem Handbuch.
Schaltprogramm:
B3
.---.
No1--|.-.|
No2--|'-'|--B2
No3--| |
'---'
Abb: Programm Ermittlung von Speicherbedarf, Block B003
Abfrage, Block B003
send> 05 0F 00 00 14
recv< 06
24 40 F2 00 A0 00 36 01 FF FF FF FF FF FF 2A 0E 00 00 00 00
25
Auswertung:
24 40 F2 00 A0 00 36 01 FF FF FF FF FF FF 2A 0E 00 00 00 00
24 40 [F2 00] [A0 00] [36 01] [FF FF] FF FF FF FF [2A 0E] 00 00 00 00
No1: D=M-W-F---, On=04:02, Off=02:40
No2: D=MTW ----, On=05:10, Off=--:--
Mit der Funktion Selbsthalterelais wird der Ausgang Q abhängig vom Signalzustand an den Eingängen S und R gesetzt oder zurückrücksetzt. Wenn der Signalzustand am Eingang S = 1
und am Eingang R = 0
ist, wird der Ausgang Q auf 1
gesetzt. Wenn der Signalzustand am Eingang S = 0
und am Eingang R = 1
ist, wird der Ausgang Q auf 0
zurückgesetzt. Der Eingang R dominiert den Eingang S. Bei einem Signalzustand 1
an beiden Eingängen S und R wird der Signalzustand des Ausganges Q auf 0
gesetzt.
RAM/Rem/Online: 8/1/?
25 00 0A 80 FF FF 00 00
25 00 [0A 80] [FF FF] 00 00
SF Pa [S ] [R ] 00 00
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
S: Eingang S (Co oder GF/SF)
R: Eingang R (Co oder GF/SF)
Wenn der Eingang Trg ein- und wieder ausschaltet wird, startet die parametrierbare Zeit T. Der Ausgang Q wird nach Ablauf dieser Zeit T auf 1
gesetzt. Über den Eingang R wird die Zeit für die Einschaltverzögerung zurückgesetzt und der Ausgang Q erhält den Signalzustand 0
. Das Rücksetzen an R hat Vorrang vor Trg.
Abb: Dialog Speichernde Einschaltverzögerung
RAM/Rem/Online: 12/3/?
27 80 02 00 FF FF 36 81 00 00 00 00
27 80 [02 00] [FF FF] [36 81] 00 00 00 00
SF Pa [Trg ] [R ] [Par ] 00 00 00 00
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
Trg: Eingang Trg (Co oder GF/SF)
R: Eingang R (Co oder GF/SF)
Par: Parameter T (T ist die Zeit, nach der der Ausgang eingeschaltet wird)
Beispiel:
27 80 02 00 FF FF 36 81 00 00 00 00
Remanenz aktiv, Parameterschutz aktiv, Trg = I3, R = -, 05:10 (h:m)
Der Zähler erfasst binäre Impulse am Eingang Cnt und zählt den internen Zähler Cv hoch oder runter. Über den Eingang Dir (0
:Cv=Cv+1, 1
:Cv=Cv-1) wird zwischen Vorwärts- und Rückwärtszählen (vergl. S7 SFB 2 CTUD) umgeschaltet. Der interne Zähler Cv kann durch den Rücksetzeingang R auf den Wert 0
zurückgesetzt werden. Über den Parameter On oder Off wird die Schaltschwelle für den Ausgang Q definiert. Sofern der Zähler Cv die obere Schaltschwelle (Cv > On) erreicht bzw. überschreitet wird der Ausgang Q auf 1
und bei erreichen bzw. unterschreiten der unteren Schaltschwelle (Cv < Off) wird Q auf 0
gesetzt. Der Wertebereich für On, Off und Cv ist von 0 bis 999999.
Abb: Dialog Vor-/Rückwärtszähler
Mit dem Rücksetzeingang R kann der internen Zählwert Cv auf 0 zurückgestellt werden. Solange R gleich 1
ist, ist auch der Ausgang Q auf 0
zurückgesetzt.
Die Flags für Remanenz und Parameterschutz sowie die Beschaltung der Eingänge R, Cnt und Dir und der Parameter On und Off werden im Mode STOP abgefragt. Der Signalzustand am Ausgang Q und der interne Zählerwert Cv ist im Mode RUN abfragbar.
RAM/Rem/Online: 24/5/10
send> 05 0F 00 00 18
recv< 06
2B 40 FF FF FF FF FF FF 3F 42 0F 00 BC 6C 06 00 00 00 00 00 00 00 00 00 CF
2B 40 [FF FF] [FF FF] [FF FF] [3F 42 0F 00] [BC 6C 06 00] 00 00 00 00 00 00 00 00
SF Pa [R ] [Cnt ] [Dir ] [On ] [Off ] 00 00 00 00 00 00 00 00
SF Pa [R ] [Cnt ] [Dir ] [Par ] 00 00 00 00 00 00 00 00
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
R: Eingang R (Co oder GF/SF)
Cnt: Eingang Cnt (Co oder GF/SF)
Dir: Eingang Dir (Co oder GF/SF)
Par:
On: Einschaltschwelle (0 ... 999999)
B1 B2 B3 B4
\ /
/ \
B4 B3 B2 B1
00 0F 42 3F = 999999
Off: Ausschaltschwelle (0 ... 999999)
B1 B2 B3 B4
\ /
/ \
B4 B3 B2 B1
00 06 6C BC = 421052
send> 55 13 13 01 0A AA
recv< 06
recv< 55 11 11 4A 00
3E C9
11 2A
0A
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00
03 00 00 00 02 00 00 00 00 00
AA
55 11 11 4A 00 3E C9 11 2A 0A
55 [11 11] [4A 00] [3E C9] 11 2A 0A
Co [Fc ] [Bc ] [Chk ] C1 C2 C3
-----------------------------------
03 00 00 00 02 00 00 00 00 00 AA
[03 00 00 00] [02] 00 00 00 00 00 AA
[Cv ] [Pa] 00 00 00 00 00 Ed
Co: Kontrollbefehl = 55
Fc: PG-Funktion = 1111
Bc: 16bit-Wert; Anzahl Datenbytes (inkl. Extrabytes)
B1 B2
\ /
/ \
B1 B2
00 4A = 74 (DEC)
Chk: Schaltprogramm Checksum
C1: Anzahl Bytes für Blöcke
C2: Anzahl Bytes für Klemmen
C3: Anzahl Extrabytes
Cv: 32bit-Wert; Aktueller Zählerstand
C1 C2 C3 C4
\ /
/ \
C4 C3 C2 C1
00 00 00 03 = 3 (DEC)
Pa: Funktionsblockparameter
MSB ++++*--+--+--+-- LSB
0000 b3 b2 b1 b0
b1: Ausgang Q; 1 = high, 0 = low
b0: Eingang Cnt; 1 = high, 0 = low
Ed: AA = Ende Trennzeichen
Auswertung:
55 11 11 // Kontrollbefehl; Antwort Online-Test
4A 00 // 74 Bytes folgen (excl. AA)
3E C9 // Schaltprogramm Prüfsumme
11 // 17 Bytes für Blöcke im Datenfeld
2A // 42 Bytes für Klemmen im Datenfeld
0A // 10 Extra Bytes im Datenfeld
01 00....00 // B,I,M,Q,C,S,AI,AM,AQ (17+42 Bytes)
03 00 00 00 // akt. Zählerstand Cv = 3
02 // Ausgang Q = 1; Eingang Cnt = 0
00 00 00 00 // VD = 0; ??
00 // VB = 0; ??
AA // Befehlsende Trennzeichen
Mit der Funktion Asynchroner Impulsgeber können wird der Ausgang Q für eine vorprogrammierte Zeitdauer TH gesetzt und für eine vorprogrammierte Zeitdauer TL zurückgesetzt. Die Funktion startet, wenn das Signal am Eingang En von 0
auf 1
(positive Flanke) wechselt. Mit dem Start läuft die programmierte Zeitdauer TH bzw. TL ab. Der Ausgang Q wird für die Zeitdauer TH gesetzt und für TL zurückgesetzt. Über den Eingang Inv lässt sich der Ausgang Q des Impulsgeber invertieren. Eingang En und Inv, Ausgang Q sowie die Parameter TH und TL können im Betriebszustand STOP ausgelesen werden.
Abb: Dialog Asynchroner Impulsgeber
Die aktuelle Zeit Ta benennt die Zeitdauer des letzten Flankenwechsels (Wechsel von 1
auf 0
bzw. von 0
auf 1
) von Ausgang Q. Ser Signalzustand am Ausgang Q, sowie die Variable Ta könne im Betriebszustand RUN ausgelsen werden.
RAM/Rem/Online: 12/3/?
2D 40 02 00 FF FF 02 80 02 80 00 00
2D 40 [02 00] [FF FF] [02 80] [02 80] 00 00
SF Pa [En ] [Inv ] [TH ] [TL ] 00 00
SF Pa [En ] [Inv ] [Par ] 00 00
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
En: Eingang En (Co oder GF/SF)
Inv: Eingang Inv (Co oder GF/SF)
Par:
TH: Parameter TH (Impulsdauer), siehe Zeitverhalten
TL: Parameter TL (Impulspausendauer), siehe Zeitverhalten
Mit der Funktion Ein-/Ausschaltverzögerung wird das Setzen sowie das Zurücksetzen des Ausgangs Q um die programmierte Zeitdauer TH bzw. TL verzögert. Die Einschaltverzögerung wird gestartet, wenn das Eingangssignal an Trg von 0
auf 1
wechselt (positive Signalflanke). Mit dem Start läuft die programmierte Zeitdauer TH ab. Wenn die Zeitdauer (Ta > TH) abgelaufen ist, liefert der Ausgang Q den Signalzustand 1
.
Wenn der Signalzustand am Eingang Trg wieder auf 0
wechselt (negative Signalflanke), läuft die parametrierte Zeitdauer TL ab. Der Ausgang Q bleibt gesetzt, solange die Zeitdauer Ta läuft. Nach dem Ablauf der Zeitdauer TL (Ta > TL) wird der Ausgang Q zurückgesetzt.
Abb: Dialog Ein-/Ausschaltverzögerung
Die Flags für Remanenz und Parameterschutz sowie die Beschaltung von Eingang Trg und die Zeit-Parameter TH und TL werden im Mode STOP abgefragt. Der Zeitoperand Ta und der Signalzustand am Ausgang Q sind im Mode RUN abfragbar.
RAM/Rem/Online: 12/3/6
2F 40 00 00 03 80 E9 43 00 00 FF FF
2F 40 [00 00] [03 80] [E9 43] 00 00 FF FF
SF Pa [Trg ] [Par ] 00 00 FF FF
SF Pa [Trg ] [TH ] [TL ] 00 00 FF FF
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
Trg: Eingang Trg (Co oder GF/SF)
Par: siehe Zeitverhalten
TH: Einschaltzeit, nach der der Ausgang eingeschaltet wird
TH: Ausschaltzeit, nach der der Ausgang ausgeschaltet wird
send> 55 13 13 01 0A AA
recv< 06
recv< 55 11 11 46 00
22 8D
11 2A
06
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00
04 00 00 00 01 80
AA
55 11 11 46 00 22 8D 11 2A 06
55 [11 11] [4A 00] [22 8D] 11 2A 06
Co [Fc ] [Bc ] [Chk ] C1 C2 C3
-----------------------------------
04 00 00 00 01 80 AA
04 00 00 00 [01 80] AA
Pa [Ta ] Ed
Co: Kontrollbefehl = 55
Fc: PG-Funktion = 1111
Bc: 16bit-Wert; Anzahl Datenbytes (inkl. Extrabytes)
B1 B2
\ /
/ \
B1 B2
00 4A = 74 (DEC)
Chk: Schaltprogramm Checksum
C1: Anzahl Bytes für Blöcke
C2: Anzahl Bytes für Klemmen
C3: Anzahl Extrabytes
Pa: Funktionsbeschreibung Ta
Pa = 0; Ta stop; Ta = 0 (Standard)
Pa = 2: Ta stop; Ta = TH
Pa = 4: Ta läuft; Ta < TH
Pa = 8: Ta läuft; Ta < TL
Ta: Aktuelle Zeit, siehe Zeitverhalten
Ed: AA = Ende Trennzeichen
Auswertung:
55 11 11 // Kontrollbefehl; Antwort Online-Test
46 00 // 70 Bytes folgen (exkl. AA)
22 8D // Schaltprogramm Prüfsumme
11 // 17 Bytes für Blöcke im Datenfeld
2A // 42 Bytes für Klemmen im Datenfeld
06 // 6 Extra Bytes im Datenfeld
00 00....00 // B,I,M,Q,C,S,AI,AM,AQ (17+42 Bytes)
04 // Ta läuft; Ta < TH
00 00 00 // VB = 0; VW = 0;
01 80 // Ta = 1s; Zeitbasis (m:s)
AA // Befehlsende Trennzeichen
Mit einem positiven Flankenwechsel (von 0
auf 1
) am Eingang Trg wird der Ausgang Q auf 1
gesetzt. Die parametrierte Zeit T läuft ab, sofern ein negativer Flankenwechsel (von 1
auf 0
) erfolgt. Erreicht die ablaufende Zeit Ta die Zeit T, dann wird der Ausgang Q auf 0
zurückgesetzt. Ein erneuter Eingangsimpuls am Eingang Trg setzt die ablaufende Zeit Ta zurück, sofern die Zeit T noch nicht erreicht wurde. Vor Ablauf der Zeit kann eine Ausschaltvorwarnung mit einer Vorwarnzeit T! und Vorwarndauer T!L gegeben werden.
RAM/Rem/Online: 12/3/?
_ __
Trg _| |____| |______________________________
.___________________ _____
Q _| . . |_________| |____
._________________________________.
Ta ___| . . . |____
. :<- T!L ->: .
. :<-- T! ------->:
:<-- T --------------------->:
Abb: Zeitdiagramm Treppenlichtschalter
Diese Funktion zeigt Meldetexte und Parameter anderer Blöcke im Betriebszustand RUN der LOGO! Kleinsteuerung auf dem integriertem Display an.
Wenn der Zustand am Eingang En von 0
auf 1
wechselt, wird der parametrierte Meldetext (Text Txt, Aktualwert Par, Uhrzeit Time oder EnTime, Datum Date oder EnDate) ausgegeben und Ausgang Q gesetzt. Wechselt der Zustand am Eingang En von 1
nach 0
wird der Meldetext ausgeblendet und der Ausgang Q zurückgesetzt, sofern keine Quittierung aktiviert wurde (Ack = Off
). Der Meldetext bleibt dagegen bei aktiver Quittierung bestehen (Ack = On), bis die Meldung mit der Taste OK quittiert wird. Solange En den Zustand 1
behält, kann der Meldetext nicht quittiert werden und Ausgang Q bleibt gesetzt. Wurden mehrere Meldetextfunktionen ausgelöst, wird der Meldetext angezeigt, der den höchsten Prioritätswert (Wertebereich 0..30) für den Parameter P besitzt.
RAM/Rem/Online: 8/-/?
Die Funktion liest den Analogwert des Signals ein, das an dem Analogeingang Ax anliegt. Der Ausgang Q wird in Abhängigkeit von dem eingestellten Schwellwert On und dem Differenzwert d gesetzt oder zurückgesetzt.
RAM/Rem/Online: 16/-/?
Mit steigender Flanke (wechsel von 0
nach 1
) am Eingang En wird der Wert am analogen Eingang Ax gespeichert (Aen). Der Ausgang Q wird auf 1
gesetzt, sobald der Analogwert am Eingang Ax den gespeicherten Analogvergleichswert Aen zuzüglich eines parametrierbaren Differenzwerts unter- oder überschreitet.
RAM/Rem/Online: 20/-/?
___________________________
En ___| |__________
. *** **** .
Aen+d1 ---.-*---*------------*----**--.---------*
Aen ---**.---.***--------*.----.-****-------*-
Aen-d2 --*--.---.---**-----*-.----.-----**----*--
* . . . ***** . . . ****
Ax * .___. .______. .____.
Q _____| |___| |_| |______________
Abb: Zeitdiagramm Analogwertüberwachung
39 40 FD 00 92 00 C8 00 66 00 00 00 00 00 00 00 00 00 00 00
39 40 [FD 00] [92 00] [C8 00 66 00 00 00 00 00 00 00 00 00 00 00
SF Pa [En ] [Ax ] [Par ...
SF: Funktionsblock, siehe Liste Sonderfunktionen
Pa: Funktionsblockparameter
MSB --+--+--+--*++++ LSB
b7 b6 b5 b4 0000
b7: Remanenz; 1 = aktiv, 0 = nein; * REM (Standard)
b6: Parameterschutz; 0 = aktiv, 1 = inaktiv (Standard)
En: Eingang En (Co oder GF/SF)
Ax: Eingang Ax (Co oder GF/SF)
Par:
A: Verstärkung (Gain) (+/-10,00)
B: Nullpunktverschiebung (Offset) (+/-10000)
d1: Differenzwert über Aen: Ein-/Ausschwellwert (+/-20000)
d2: Differenzwert unter Aen: Ein-/Ausschwellwert (+/-20000)
p: Anzahl der Nachkommastellen (0,1,2,3)
C8 = 1100 1000 = 200
66 = 0110 0110 = 102
send>
02 1E 00
02 1E 01
02 1E 02
02 1E 03
02 1E 04
02 1E 05
02 1E 06
02 1E 07
recv< 00 00 00 00 00 00 00 00
send>
02 20 00
02 20 01
02 20 02
02 20 03
02 20 04
02 20 05
02 20 06
02 20 07
recv< 00 00 00 00 00 00 00 00
AI7-> AM6-> AQ2 / AI2-> AM6-> AQ2
00 74 / 00 00
74 = 0111 0100
Im Betriebszustand RUN können mittels der Online-Test-Funktion aktuelle Werte ausgelesen werden. Bei der Übertragung wird eine Check-Summe mitgesendet, die mit den Werten von Adresse 055E-055F
übereinstimmen muss. Sofern die Werte nicht identisch sind, stimmt das Schaltprogramm in der LOGO! SPS nicht mit dem in LOGO!Soft Comfort geladenen Schaltprogramm überein. Üblicherweise fordert LOGO!Soft Comfort den Anwender auf, das Schaltprogramm zu aktualisieren.
send> 02 05 5E
recv< 06 03 05 5E
6D
send> 02 05 5F
recv< 06 03 05 5F
0A
send> 55 13 13 01 0A AA
recv< 06
recv< 55 11 11 40 00
6D 0A
11 2A
00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0C 00 00 00 00 00 00 00 00 00 00 0A 02 F1 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00
AA
55 11 11 40 00 6D 0A 11 2A 00
55 [11 11] [40 00] [6D 0A] 11 2A 00
Co [Fc ] [Bc ] [Chk ] C1 C2 C3
Co: Kontrollbefehl = 55
Fc: PG-Funktion = 1111
Bc: 16bit-Wert; Anzahl Datenbytes (inkl. Extrabytes)
Chk: Schaltprogramm Checksum; identisch mit den Werten an Speicheradresse 055E-055F
C1: Anzahl Bytes für Blöcke
C2: Anzahl Bytes für Klemmen
C3: Anzahl Extrabytes
Die Tabelle zeigt die erfassbaren Variablen und Parameter inkl. zugehörigen Datentyp, die über den Befehl 55
oder 05
abgefragt werden können. Die Angabe VB, VW oder VD (Byte = 1, Wort = 2 oder Doppelwort = 4) gibt gleichzeitig die Anzahl der Bytes vor, die der Datentyp benötigt.
Blockbeschreibung | Aktualwerte oder Parameter | Datentyp |
---|---|---|
Einschaltverzögerung | T, Ta | 2*VW |
Ausschaltverzögerung | T, Ta | 2*VW |
Ein-/Ausschaltverzögerung | Ta, TH, TL | 3*VW |
Speichernde Einschaltverzögerung | T, Ta | 2*VW |
Wischrelais (Impulsausgabe) | T, Ta | 2*VW |
Flankengetriggertes Wischrelais | Ta, TH, T | 3*VW |
Asynchroner Impulsgeber | Ta, TH, TL | 3*VW |
Zufallsgenerator | TH, TL | 2*VW |
Treppenlichtschalter | Ta, T, T!, T!L | 4*VW |
Komfortschalter | Ta, T, TL, T!, T!L | 5*VW |
Wochenschaltuhr | 3* On/Off/Tag | 3*VW/VW/VB |
Vor-/Rückwärtszähler | Cv, On, Off | 3*VD |
Betriebsstundenzähler | MI, MN, OT | 2*VW, VD |
Analogkomparator | On, Off, A, B, Ax, Ay, dA | 7*VW |
Analoger Multiplexer | V1, V2, V3, V4, AQ | 5*VW |
Rampensteuerung | L1, L2, MaxL, StSp, Rate, A, B, AQ | 8*VW |
PI-Regler | SP, Mq, KC, TI, Min, Max, A, B, PV, AQ | 10*VW |
Tab: Erfassbare Daten
Über den Blocknamen könnten bis zu 64 Parameter einem Variablenspeicher ähnlich 0BA7 zugeordnet werden. Die obige Tabelle zeigt neben den erfassbaren Variablen und Block-Parametern auch den zugehörigen Datentyp für eine mögliche Anwendung mit einem Variablenspeicher (VM Adressbereich 0 bis 850 bei Adresstyp VB).
Im Folgenden die VM-Adressierung mit zugehörigem Datentyp nach 0BA7:
V B 100
| | '--- Adresse des Byte
| '----- Zugriff auf Byteformat
'------- Bereichskennung
MSB LSB
|-+-+-+-+-+-+-+-|
|7 VB100 0|
V W 100
| | '--- Adresse des Bytes
| '----- Zugriff auf Wortformat
'------- Bereichskennung
MSB LSB
|-+-+-+-+-+-+-+-||-+-+-+-+-+-+-+-|
|15 VB100 8||7 VB101 0|
V D 100
| | '--- Adresse des Bytes
| '----- Zugriff auf Doppelwortformat
'------- Bereichskennung
MSB LSB
|-+-+-+-+-+-+-+-||-+-+-+-+-+-+-+-||-+-+-+-+-+-+-+-||-+-+-+-+-+-+-+-|
|31 VB100 24||23 VB101 16||15 VB102 8||7 VB103 0|
Abb: VM-Adresstypen
Dieses Handbuch beschreibt ausschließlich das LOGO! Gerät in der Version 0BA5. Die folgend genannten Ressourcen dienen der Vergleichbarkeit:
- Funktionsblöcke: 130
- Rem: 60
- Digitaleingänge: 24
- Digitalausgänge: 16
- Merker: 24
- Analogeingänge: 8
- Meldetexte: 10
- Analogausgänge: 2
- Programmzeilenspeicher: 2000
- Blocknamen: 64
- Analoge Merker: 6
- Cursortasten: 4
- Schieberegister: 1
- Schieberegisterbits: 8
- Offene Klemme: 16
- max. Tiefe des Programmpfads: 58
Alle LOGO! haben 8 digitale Eingänge I und 4 digitale Ausgänge Q. Bei den Gleichspannungsversionen können bis zu 4 der Eingänge als 0..10V Analogeingang AI verwendet werden. Alles weitere wird über Erweiterungsmodule realisiert.
Übersicht der Bestellnummern der 0BA5 Hardware:
Variante | Bezeichnung | Bestellnummer | SIPLUS-Typ ** |
---|---|---|---|
Basic | LOGO! 12/24RC * | 6ED1 052-1MD00-0BA5 | 6AG1 052-1MD00-2BA5 |
Basic | LOGO! 24 * | 6ED1 052-1CC00-0BA5 | 6AG1 052-1CC00-2BA5 |
Basic | LOGO! 24RC (AC) | 6ED1 052-1HB00-0BA5 | 6AG1 052-1HB00-2BA5 |
Basic | LOGO! 230RC (AC) | 6ED1 052-1FB00-0BA5 | 6AG1 052-1FB00-2BA5 |
Pure | LOGO! 12/24RCo * | 6ED1 052-2MD00-0BA5 | 6AG1 052-2MD00-2BA5/2BY5 |
Pure | LOGO! 24o * | 6ED1 052-2CC00-0BA5 | 6AG1 052-2CC00-2BA5/2BY5 |
Pure | LOGO! 24RCo (AC) | 6ED1 052-2HB00-0BA5 | 6AG1 052-2HB00-2BA5/2BY5 |
Pure | LOGO! 230RCo | 6ED1 052-2FB00-0BA5 | 6AG1 052-2FB00-0BA5/2BY5 |
Tab: 0BA5 Bestellnummern
*: zusätzlich mit Analogeingängen
**: LOGO! Steuerung für den Einsatz unter erschwerten Umgebungsbedingungen mit erweitertem Temperaturbereich von -25°C (2BA5) / -40 °C (2BY5) bis +70 °C.
- 0BA5: LOGO! Kleinsteuerung der 6. Generation (wird in diesem Handbuch beschrieben)
- 0BA7: LOGO! Kleinsteuerung der 8. Generation
- A: Verstärkung (Gain)
- ALU (Arithmetic Logic Unit): elektronisches Rechenwerk
- AND: Und-Verknüpfung
- Ax: Analogkomparator Eingang Ax
- Ay: Analogkomparator Eingang Ay
- d (delta): Analoger Differenzwert
- dA: Differenzwert von Ax - Ay
- AQ: Analoger Ausgang
- B: Nullpunktverschiebung (Offset)
- B001: Block Nummer, B1
- Bc (Byte count): Anzahl Bytes
- BIN: Binärwert
- Cnt (Count): Zählimpulse
- Co (Connector): Klemme
- CRC (Cyclic Redundancy Check): Prüfsummenberechnung
- Cv (Counter value): Zählerwert
- DB: Datenbaustein einer S7
- DEC (Decimal): Dezimalwert
- Dir (Direction): Festlegung der Richtung
-
Ed: Ende Trennzeichen
AA
- En (Enable): aktiviert die Funktion eines Blocks.
- FB: Funktionsbaustein einer S7
- FC: Funktion einer S7
- Fre (Frequency): Auszuwertende Frequenzsignale
- GF: Grundfunktionen
- HEX: Hexadezimaler Wert
-
Hi (High): Signalwert
1
- I (Input): Digitaler Eingang
- Inv (Invert): Ausgangssignal des Blocks wird invertiert
- KC: Regler Verstärkung
-
Lo (Low): Signalwert
0
- LSB (Least Significant Bit): Bit mit dem niedrigsten Stellenwert
- M: Merker
- MI: Parametriertes Wartungsintervall
- MN: Verbleibende Restzeit vom Wartungsintervall
- Mq: Reglerwert von AQ bei manuellem Betrieb
- MSB (Most Significant Bit): Bit mit dem höchsten Stellenwert
- No (Nocken): Parameter der Zeitschaltuhr
- OB: Organisationsbaustein einer S7
- Off: Aus
- On: Ein
- OR: Oder-Verknüpfung
- OT: Aufgelaufene Gesamtbetriebszeit
- p (position): Anzahl der Nachkommastellen
- PA: Prozessabbild der Ausgänge
- Par: Parameter
- PE: Prozessabbild der Eingänge
- PV: Regelgröße
- Q: Digitaler Ausgang
- R (Reset): Rücksetzeingang
- Ral (Reset all): internen Werte werden zurückgesetzt
- RAM (Random-Access Memory): Speicher mit wahlfreiem, direktem Zugriff
- Rem (Remanenz): Speicherbereich um Zustände oder Werte zu sichern
- S (Set): Eingang wird gesetzt
- SF: Sonderfunktionen
- SFB: Systemfunktionsbaustein einer S7
- SFC: Systemfunktion einer S7
- SP: Regler Sollwertvorgabe
- T (Time): Zeit-Parameter
- Ta (Time actual): Aktueller Wert einer Zeit
- TH (Time High): oberer Zeitwert
- TI (Time Integral): Regler Zeitintegral
- TL (Time Low): unterer Zeitwert
- Trg (Trigger): Ablauf einer Funktion wird gestartet
- X: Offene Klemme
- XOR: Exklusiv-Oder-Verknüpfung
Meist werden in der Industrie die großen Steuerungen für die Automatisierung von Produktionsstrassen verwendet. Da ist der Kaufpreis nicht so entscheidend. Dafür erhält man aber auch im Produktionsausfall schnell Ersatzteile bzw. die Versorgung ist noch für bis zu 10 Jahre gesichert.
Im privaten Bereich ist dies nicht so wichtig. Da zählt der Preis und die Anforderung an Funktion und Verfügbarkeit ist meist geringer. Eine LOGO! Kleinsteuerung ist deutlich günstiger und wenn man bei Ausfall ein paar Tage bestimmte Dinge manuell bedienen muss, geht dies meist auch.
Wenn das Programm auf einen Microcontroller eingebracht ist, dann hat man nur den "nackten" Chip. Eine stabile Spannungsversorgung, die Zuordnung der PINs auf die Ein- und Ausgänge, die Pegelanpasusng für die Eingangssignale, passend geschützte Ausgänge, usw. müssen zusätzlich bedacht werden.
Bei einer LOGO! Kleinsterung muss man sich um diese Dinge wenig Gedanken machen. Technik und spielerei sind schön, müssen aber auch im Heimumfeld zuverlässig, intuitiv und einfacher als ohne funktionieren. Eine Lösung mittels LOGO! kann daher im Zweifel aus Gründen der Wartbarkeit und Nachvollziehbarkeit sinnvoller als eine Controller-Lösung sein.
Oberflächlich gesehen nur drei Sachen:
- Eingänge lesen
- Logische Verknüpfungen ausführen
- Ausgänge schreiben
Aber eine LOGO! Steuerung macht mehr als das reine Abarbeiten des Schaltprogrammes, z.B. Kommunikation mit der Peripherie, Parameteränderungen in RUN-Modus verwalten, Diagnose druchführen usw. Es ist ein eigenes Betriebssystem auf der LOGO! vorhanden, welches diese Aufgaben verwaltet. Näher betrachtet gibt es vielfältige Aufgaben, die die Steuerung übernimmt:
- Kommunikation über PG-Schnittstelle
- Kommunikation mit Erweiterungsmodulen
- Visualisierung
- Datenverwaltung
- Regelung
- Analogwertverarbeitung
- ...
Aber ein Wunderwerk der Technik ist die LOGO! Kleinsteuerung eher nicht. Genauso wie es unzählige Varianten gibt ein Gerät zu bauen, gibt es unzählige Varianten eine vernünftige SPS zu bauen. Eine LOGO! Kleinsteuerung ist nichts anderes als ein normales Gerät, dass einige Bits liest und ausgibt. Daher ist aktuell jeder halbwegs geeignete Mikrocontroller schnell genug für den Ablauf eines Schaltprogramms einer 0BA5.
Der Hauptaufwand einer LOGO! liegt nicht in der CPU, sondern in der ordentlichen Entkopplung und Schutz der Aus- und Eingänge. Nicht ohne Grund haben sich SPS-Systeme im Industrieumfeld durchgesetzt. Auch schon vor 15 Jahren waren einige Unternehmer tätig und wollten eigene Kleinsteuerungen mit Standard-Microcontroller verkaufen. Heute will aber Niemend mehr diese Lösungen haben, denn standardisierte und erprobte Industriegeräte sind gefragt.
Die größe des Schaltprogramm ist fest vorgegeben und liegt in einem Flash (bzw. EEPROM). Die variablen Teile eines Schaltprogrammes, die Ein- und Ausgaben, Datenbereiche liegen im RAM. Fällt wirklich einmal der Strom aus, so wird die Vorbesetzung von Datenbereichen aus einem Anlaufverfahren durchgeführt. Alle Werte haben erst nach einem Zyklus gültige Werte.
Ich weiß zwar nicht, wie es Siemens macht, könnte mir aber vorstellen, dass die Daten im Betrieb im RAM liegen (somit wäre das Flash vor den vielen Schreibzyklen geschützt). Im Falle eines Stromausfalls werden die Daten ins Flash kopiert, wobei die Spannungsversorgung der am Kopiervorgang beteiligten Komponenten beispielsweise durch ein paar Kondensatoren aufrechterhalten wird.
Wenn es um Fehlererkennung und Behandlung geht, muss man im Betrieb damit rechnen, dass irgend etwas passiert, was nicht zum normalen Ablauf gehört (Kurzschlüsse, Abreißen von Verbrauchern, Verrechnen). Je größer die Gefahr bei Fehlern, desto größer der Schaltungstechnische Aufwand. Für sicherheitsrelevante Funktionen gibt es Normen. Bei Microchip sind hierzu ein paar der Tests beschrieben.
Die Temperaturanforderungen an eine LOGO! sind nicht so hoch wie Vergleichsweise zur Automobiltechnik, die Temperaturbereiche zwischen -40 .. 85 oder 105 oder 125 Grad Celsius kennen. Eigens hierzu hat aber Siemens die SIPLUS Serie aufgelegt. Bei einem LOGO! SIPLUS-Produkt wird eine LOGO! fit gemacht für Temperaturbereiche von -40°C bis +70°C. Hinzu kommt aber auch, dass erweiterte Anforderungen an Luftfeuchtigkeit (bis zu 100% RH), mechanische Belastung (wie z.B. Sand und Staub oder Salznebel) oder auch Einsatzorte (Aufstellhöhen bis zu 5000m) dabei umgesetzt werden.
Eine LOGO! Kleinsteuerung programmiert man nicht, sondern es wird ein Schaltprogramm geschrieben für eine Art Interpreter. Der Interpreter übernimmt die Arbeit und als Anwender braucht man sich keinerlei Gedanken darüber machen, das irgendwo ein Speicher überläuft oder ein Pointer falsch gesetzt wird. Das Erstellen eines Schaltprogrammes mit LOGO!Soft Comfort ist speziell für die Bedürfnisse einer LOGO! erdacht. Man erhält ein funktionierendes Programm in kürzerer Zeit. Wenn man z.B. nur zwei Eingänge miteinander verknüpfen will, ist die Wahrscheinlichkeit einen Fehler einzubauen, geringer als bei Assembler oder C.
Auf der anderen Seite kann nichts kompliziertes eingebracht werden, weil es die Programmierung nicht zulässt und ein simples Schaltprogramm ist evtl. für den Anwendungsfall zu langsam, weil es über den internen Interpreter läuft. Die maximale Schaltfrequenz ist von der Zykluszeit des Schaltprogramms abhängig und die liegt laut Handbuch für die Transistor-Ausgänge bei 10Hz (was vergleichsweise langsam ist). Auch eigene Funktionsbausteine können bei einer LOGO! der Bauart 0BA5 nicht selbst erstellt werden.
- https://www.mikrocontroller.net/topic/179963
- https://www.mikrocontroller.net/topic/267188
- https://support.industry.siemens.com/tf/ww/de/posts/maximale-schaltfrequenz-der-ausg-nge/51331/?page=0&pageSize=10
- http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.7.10
- https://startingelectronics.org/projects/small-open-source-PLC/PLC-components/
- https://www.circuitsonline.net/forum/view/126854
- https://www.sps-forum.de/simatic/67846-erweiterungsmodul-logo-dm8-12-24r-2.html