Autor Thema: Anlaufmerker  (Gelesen 7357 mal)

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 790
  • Think easy!
    • mollgruppe
Anlaufmerker
« am: September 13, 2023, 16:29:28 Nachmittag »
Hallo,

heute möchte ich euch zwei Möglichkeiten zeigen um einen Anlaufmerker zu steuern.
Anlaufmerker werden benötigt um diverse Sachen nur im ersten Zyklus einer SPS zu erledigen.
Deshalb ist dieser Merker ausschließlich im ersten Zyklus TRUE.

Die erste und einfache Methode ist es, den Merker mit True zu initialisieren und ihn mit einer Flanke zu resetten.
Dazu kann man folgendes machen:
in der Globalen Variablenliste
VAR_GLOBAL
Anlauf: BOOL:= TRUE; //Anlaufmerker
Startmerker: BOOL;   //Hilfsmerker für Anlauf
END_VAR

im PLC_PRG:
GVL.Anlauf:= NOT GVL.Startmerker;
GVL.Startmerker:= TRUE;

Dieser Aufruf am Anfang des PLC_PRG bewirkt das ausschalten des Anlaufmerkers zu beginn des zweiten Zyklus.
Die Methode funktioniert sicher bei einem Kaltstart der SPS, nicht aber beim Wechsel Run -> Stop -> Run.

Um Sicher zu gehen, das wirklich bei jedem Übergang in den Run-Betrieb der Anlaufmerker korrekt gesetzt wird, kann man folgendermaßen vorgehen:
Im Gerätebaum die Taskkonfiguration aufrufen und den Reiter Systemereignisse auswählen. Über 'Event-Handler hinzufügen...' erstellt man einen Event 'PrepareStart' der die Funktion 'Start' aufruft. Ich wähle noch ST als Sprache aus und die Funktion wird erstellt. Jetzt kann man die Funktion öffnen und Folgendes im Programmteil eintragen:

GVL.Startmerker:= true;

Dies bewirkt, das vor dem Übergang zum Run-Betrieb, egal aus welchem Betriebszustand, der Startmerker auf TRUE ist.
Im PLC_PRG wird als erstes dann aufgerufen:

(*Anlaufmerker nur  im 1. Zykl true steuern*)
GVL.Anlauf:= GVL.Startmerker; (*Startmerker aus EventTask Start*)
GVL.Startmerker:= FALSE;

Ich verwende in meinen Projekten eigentlich immer den FB Uhr, den ich dann als erstes aufrufe. Da der Code in diesem FB integriert ist
brauche/darf ich ihn nicht mehr im PLC_PRG selbst ausführen.

Have a lot of fun!
Weil Einfach einfach Einfach ist!