Motorsteuerung mit Selbsthaltung programmieren
System- und Taktmerkerbytes setzen
Im Verlaufe der Programmierung wirden System- und Taktmerkerbytes benötigt und deshalb aktiviert.
Das Systemmerkerbyte enthält die Bits "Immer 1 (high)" und "Immer 0 (low)". Beide Konstanten werden im Projektverlauf noch benötigt.
Das Taktmerkerbyte wird außerdem benötigt, um im Projektverlauf eine Warnlampe blinken lassen zu können.
Die Adressvergabe erfolgt dabei so, dass eventuell andere benötigte Merkeradressen davor liegen und nicht gleich in Konflikt mit der System- bzw. Taktmerkeradresse geraten.
System- und Taktmerkerbytes setzen
Variablentabelle anlegen
Ein Blick in die Standard-Variablentabelle zeigt jetzt die bereits vorhandenen Variablen. Unter "<Hinzufügen>" könnten weitere Variablen angelegt werden.
Standard-Variablentabelle
Für die weiteren nötigen Variablen kann aber auch eine extra Tabelle hinzugefügt werden:
PLC-Variablen → Neue Variablentabelle hinzufügen
erzeugt "Variablentabelle_1", die später umbenannt werden kann.
Zunächst werden die nötigen Variablen eingetragen:
Name Datentyp Adresse Kommentar
Start-Taster Bool %I0.0 NO (Normally Open)
Stop-Taster Bool %I0.1 NC (Normally Closed)
Motorschutzschalter Bool %I0.2 NC
Motorschütz Bool %Q0.0
Störungslampe Bool %Q0.1
Die Variablennamen sollte aussagekräftig sein, denn es sind sogenannte "symbolische Adressen", d.h. die tatsächliche physikalische Adresse wird für die Programmierung nicht mehr benötigt. Es wird lediglich Variablennamen im Programm benutzt.
Die Datentypen sind alle vom Typ Boolean. Sie können den Zustand An (=1) oder Aus (=0) annehmen und benötigen dafür ein Bit.
Physikalische Adressen werden mit einem "%"-Zeichen eingeleitet, gefolgt vom Zeichen "I" für Input, bzw. "Q" für Output (Kein "O", wegen der Verwechslungsgefahr mit 0). Dann wird die Nummer bzw. die Adresse des Bytes angeführt. Es folgt ein "." und danach die Nummer des Bits.
Im Kommentar hier wird angemerkt, ob es sich um Kontakte handelt die normalerweise geschlossen sind (sog. "Öffnerkontakte") oder normalerweise offen sind (sog. "Schließer").
Der Stop-Taster und der Motorschutzschalter sollen den Motorschütz abfallen lassen, damit der Motor stehen bleibt. Daher werden beide Eingänge als Öffner ausgeführt. Somit würde auch ein Drahtbruch zum Stoppen des Motors führen (Drahtbrucherkennung).
Variablen anlegen
Danach wird die "Variablentabelle_1" durch einen Rechten Mausklick → Umbenennen oder durch Drücken der Funktionstaste F2 umbenannt in "Variablentabelle_Motorschaltung".
Funktion programmieren
Es ist bereits der Organisationsbaustein "Main [OB1]" vordefiniert. Dieser Baustein stellt das Hauptprogramm des Anwenders dar und wird immer wieder zyklisch in einer Endlosschleife abgearbeitet.
Nun könnte die Funktionalität einfach im Organisationsbaustein "Main" programmiert werden. Übersichtlicher ist es aber das Programm in einem eigenen Baustein zu programmieren und diese Funktion dann in "Main" aufzurufen. Damit kann das Programm später leichter erweitert bzw. gewartet werden.
Neuen Baustein hinzufügen
Motorsteuerung mit Selbsthaltung: Netzwerk 1
Die Funktion wird wird in Netzwerk 1 und Netzwerk 2 unterteilt, die der Reihe nach abgearbeitet werden. Es müssen zwei Netzwerke verwendet werden, denn in jedem Netzwerk darf es jeweils nur eine getrennte Zuweisung "=" geben.
Die erste Zuweisung im Netzwerk 1 betrifft den Motorschütz. Es ist ein Leistungsrelais, also ein elektromechanischer Schalter, der anzieht und den Motor einschaltet, bzw. abschaltet, wenn er abfällt.
Der Start-Taster ist ein Schließer (NO = Normally Open), der gemeinsam mit dem Motorschütz auf eine ODER-Verknüpfung geführt wird. HIerdurch wird eine Selbsthaltung realisiert. Wird der Start-Taster wieder losgelassen, dann hat der Motorschütz den Motor bereits eingeschaltet und er sorgt nun durch sein eigenes Signal, selbst dafür, dass das Signal erhalten bleibt und der Motorschütz weiter eingeschaltet bleibt.
Die UND-Verknüpfung ermöglich die Abschaltung des Motors. Das Ausgangssignal der ODER-Verknüpfung wird mit dem Öffner (NC = Normally Closed) Stop-Taster und dem Öffner (NC) des Motorschutzschalters, der einer Überlastung des Motors vorbeugt und diesen im Falle einer zu hohen Stromaufnahme abschaltet. Der Motorschütz bleibt eingeschaltet, wenn beide Signale EIN sind, bzw. schaltet ab, wenn der Stop-Taster oder der Motorschutzschalter öffnen, d.h. auf logisch 0 schalten.
Die zweite Zuweisung betrifft die Störungslampe. Dieser Ausgang soll mit 2,5 Hz blinken, wenn der Motorschutzschalter auslöst, d.h. öffnet, also auf logisch 0 geht. Daher wird sein Signal invertiert und dann mit dem 2,5Hz-Bit des Taktmerker-Bytes UND-verknüpft und das Ausgangssignal dann der Störungslampe zugewiesen.
Diese zweite Zuweisung muss im nächsten Netzwerk definiert werden, denn es kann jeweils nur eine getrennte Zuweisung pro Netzwerk erfolgen. Die Netzwerke werden nacheinander abgearbeitet.

Motorsteuerung mit Selbsthaltung
Nur Organisationsbausteine werden zyklisch immer wieder abgearbeitet. Damit die Funktion "Motorsteuerung mit Selbsthaltung" auch zyklisch immer wieder abgearbeitet wird, muss es in einem Organisationsbaustein aufgerufen werden. Die Funktion wird daher per Drag and Drop in das Netzwerk 1 des vordefinierten Organisationsbausteins Main [OB1] gezogen:
Die Funktion wird in den Organisationsbaustein "Main [OB1]" gezogen
Nun muss das Programm noch auf die SPS übertragen, also "in das Gerät geladen werden". Das kann über eine Menüleiste, die mit einem Rechten-Mausklick auf das Gerät oder über die Auswahl des Gerätes und den entsprechenden Button in der Werkzeugleiste des TIA Portals erfolgen:
Software in das Gerät laden
Falls nicht bereits geschehen, muss das Programm auf der SPS noch gestartet werden. Dafür muss die "CPU gestartet" werden setzen:
Online → CPU starten oder entsprechendes Icon anklicken, nachdem die CPU ausgewählt wurde.
CPU starten
Quellen:





![Die Funktion wird in den Organisationsbaustein "Main [OB1]" gezogen](https://moodle.eick-at.de/pluginfile.php/1109/mod_page/content/16/Organisationsbaustein.png)

