0BA5 Dekodierung - brickpool/logo GitHub Wiki

Undocumented LOGO! 0BA5

Aufbau, Funktionsweise und Programmierung

Ausgabe Ay

December 2019

Vorwort

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.

Verwendete oder weiterführende Publikationen

Wertvolle Informationen finden Sie in den folgenden Veröffentlichungen:

Einzelheiten zum LOGO!-Adresslayout finden Sie in den folgenden Veröffentlichungen:

Einzelheiten zum LOGO!-P-Bus finden Sie in den folgenden Veröffentlichungen:

Inhalt


Kapitel 1 - Architektur

Systemarchitektur

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)

Steuereinheit

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:

  1. 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.
  2. Anschließend werden die Anweisungsbefehle vom Steuerungsprogramm sequentiell abgearbeitet, wobei weitere Werte wie Zeiten, Zählern und Merker berücksichtigt werden.
  3. 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.

Rechenwerk

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.

Zeiten, Zähler und Merker

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.

Prozessabbild der Eingänge und Ausgänge

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

Programmierschnittstelle (PG)

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

Bussystem

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.

Hardware

Es gilt DIN IEC 61131-3 für eine normgerechte SPS.

Eingangsschutzschaltung 24V

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

Eingangsschaltkreise

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

Relais-Ausgang

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

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

Speicherarchitektur

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

Festwertspeicher

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.

Ladespeicher

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.

Arbeitsspeicher

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

Systemspeicher

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

Adressierung

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.

Speichereinheit

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

Byte-Reihenfolge

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

Adressübersicht

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

Parameter

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)

Textbausteine

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)

Indirekte Adressierung

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)

Schaltprogramm

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

Firmware

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

Systemfunktion Uhr, S/W, Stundenzähler

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

Systemfunktion Passwortschutz

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?

Parameter Zeit/Hardware-Uhr

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


Kapitel 2 - Parameterspeicher

Displayinhalt nach Netz-Ein

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

Darstellungsformat im Ladespeicher

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

Analogausgang im Betriebszustand STOP

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

Darstellungsformat im Ladespeicher

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

Programmname

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

Verweis auf Blocknamen

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

Blockname

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

Textfeld

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

Darstellungsformat im Ladespeicher

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

Ident und Firmware Version

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

Schutzstufe

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

Schutzstufe 3

Befehl:

send> 01 41 00 00
recv< 06

Schutzstufe 2

Befehl:

send> 01 48 00 00
recv< 06

Schutzstufe 1

Befehl:

send> 01 47 40 00
recv< 06

Passwort erforderlich

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.

Passwort erforderlich?

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

Passwort R/W

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.

Hardware-Uhr, S/W

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.

Übergabespeicher

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

Hardware-Uhr auslesen (LOGO->PC)

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

Hardware-Uhr setzen (PC->LOGO)

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

Sommer-/Winterzeitumstellung auslesen (LOGO->PC)

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

Sommer-/Winterzeitumstellung setzen (PC->LOGO)

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

Kapitel 3 - Klemmenspeicher

Konstanten und Klemmen - Co

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

Darstellung am Verknüpfungseingang

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

Format im Speicher

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

Verweis auf Ausgänge, Merker

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

Digitalausgänge - Q

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

Merker - M

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

Analogausgänge, Analoge Merker - AQ, AM

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

Offene Klemmen - X

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

Format im Online-Test

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 

Digitale Klemmen im Modus RUN

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

Analoge Klemmen im Modus RUN

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

Kapitel 4 - Programmzeilenspeicher

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.

Blöcke und Blocknummern

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.

Darstellung am Verknüpfungseingang

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

Zuordnen einer Blocknummer

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

Darstellung im Modus RUN

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

Verweis auf Blöcke

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

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

Format im Speicher

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

AND

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

OR

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

NOT

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

NAND

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

NOR

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

XOR

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

AND mit Flankensteuerung

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

NAND 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 - SF

Sonderfunktionen sind ähnlich wir die Grundfunktionen im Speicher abgelegt. Neben den Verknüpfungseingängen beinhalten diese jedoch Zeitfunktionen, Remanenz und verschiedenste Parametriermöglichkeiten.

Darstellungsformat im Ladespeicher

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

Grundwissen Sonderfunktionen

Bezeichnung der Eingänge:

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

Zeitverhalten

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

Zähler

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

Einschaltverzögerung

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.

alt text

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

Darstellungsformat im Ladespeicher

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

Format im Online-Test

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

Ausschaltverzögerung

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.

alt text

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/?

Darstellungsformat im Ladespeicher

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)

Stromstoßrelais

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/?

Darstellungsformat im Ladespeicher

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)

Wochenschaltuhr

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.

alt text

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

Darstellungsformat im Ladespeicher

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=--:--

Selbsthalterelais

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/?

Darstellungsformat im Ladespeicher

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)

Speichernde Einschaltverzögerung

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.

alt text

Abb: Dialog Speichernde Einschaltverzögerung

RAM/Rem/Online: 12/3/?

Darstellungsformat im Ladespeicher

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)

Vor-/Rückwärtszähler

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.

alt text

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

Darstellungsformat im Ladespeicher

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

Format im Online-Test

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

Asynchroner Impulsgeber

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.

alt text

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/?

Darstellungsformat im Ladespeicher

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

Ein-/Ausschaltverzögerung

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.

alt text

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

Darstellungsformat im Ladespeicher

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

Format im Online-Test

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

Treppenlichtschalter

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

Meldetext

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/-/?

Analoger Schwellwertschalter

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/-/?

Analogwertüberwachung

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

Darstellungsformat im Ladespeicher

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

Kapitel 5 - Sonstiger Speicher

Speicherbereich 1E00

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

Speicherbereich 2000

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

Speicherbereiche 0522

AI7-> AM6-> AQ2 / AI2-> AM6-> AQ2

00 74 / 00 00
74 = 0111 0100

Schaltprogramm Checksum

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.

Darstellungsformat im Ladespeicher

send> 02 05 5E
recv< 06 03 05 5E
6D
send> 02 05 5F
recv< 06 03 05 5F
0A

Format im Online-Test

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

Erfassbare Daten

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

Mögliche Anwendung

Ü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

Anhang

0BA5 Ressourcen

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.

Verwendete Abkürzungen

  • 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

FAQ

LOGO! vs. S7

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.

LOGO! vs. MCU

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.

Was macht eine LOGO! Kleinsteuerung?

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.

Wieviel Speicher hat die Hardware?

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.

Wie wird der Remanente Speicher realisiert?

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.

Wie wird die Ausfallssicherheit bei industrieller Elektronik realisiert?

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.

Wie werden die Anforderungen an Temperatur realisiert?

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.

Warum keine Programmiersprache wie C?

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.

FAQ-Quellen

⚠️ **GitHub.com Fallback** ⚠️