In einem früheren Artikel haben wir besprochen, was ein Organisationsblock ist, und wir haben über einen sehr wichtigen Organisationsblock gesprochen, nämlich den Haupt-OB1.
In diesem Artikel werden wir die verschiedenen OBs weiter besprechen und dieses Mal sprechen wir über die Tageszeit-Interrupt-Organisationsblöcke oder OB10.
Inhalt:
- Was ist der Tageszeit-Interrupt OB10?
- Wie erstellt und verwendet man OB10?
- Einfaches Programmbeispiel.
- Wichtige Regeln für Tageszeit-Interrupts.
- Schlussfolgerungen.
Was ist ein Tageszeit-Interrupt (OB10)?
Wie der Name schon sagt, ist ein Tageszeit-Interrupt ein Organisationsblock, der die Ausführung des Hauptzyklus Ihres SPS-Programms zu einer bestimmten Tageszeit unterbricht. Diese Interrupt-Zeit (Datum und Uhrzeit) kann so angegeben werden, dass sie einmal zu einer bestimmten Zeit oder regelmäßig in bestimmten Zeitintervallen auftritt, z. B. jede Minute, Stunde, jeden Tag, jede Woche und einige andere Optionen.
Sie können mehr als einen Tageszeit-Interrupt im selben Programm haben. Sie müssen nicht dieselbe Logik oder denselben Code haben, jeder kann seine eigene Funktionalität haben und jeder kann separat so konfiguriert werden, dass er zu einer bestimmten Zeit auftritt.
Wie erstelle und verwende ich OB10?
Um einen Tageszeit-Interrupt zu erstellen, folgen Sie denselben Schritten, die Sie ausführen würden, wenn Sie einen neuen Block in Ihre Logik einfügen müssen. Siehe Abbildung 1.
Abbildung 1 – Einen Tageszeit-Interrupt hinzufügen
Klicken Sie im Projektbaum links auf die Option „Neuen Block hinzufügen“, wählen Sie den Organisationsblock und dann einen Tageszeit-Interrupt, wie im vorherigen Bild gezeigt.
Jetzt können Sie OB10 öffnen und die SPS-Logik hinzufügen, die Sie ausführen möchten, wenn dieser Block aufgerufen wird. Mit „aufgerufen“ meinen wir, dass das Interrupt-Ereignis oder die Interrupt-Zeit aufgetreten ist und das Betriebssystem daher den Hauptzyklus unterbricht und OB10 ausführt.
Wir werden einen sehr einfachen Code in OB10 schreiben, um besser zu verstehen, wie dieser OB10-Block funktioniert. In dieser Logik haben wir den Add-Befehl verwendet, um einem Speicherbereich, den wir TimeOfDayInterruptCounter genannt haben, einen Wert von 1 hinzuzufügen und das Ergebnis der Summierung dann wieder in denselben Bereich zu schreiben. Auf diese Weise können wir einen Zähler für die Ausführung des OB10 haben.
Jedes Mal, wenn der OB10 aufgerufen und ausgeführt wird, erhöht sich der Wert von TimeOfDayInterruptCounter um 1. Siehe Bild 2.
Bild 2 – Fügen Sie Ihre Logik zum OB10 hinzu
Nachdem wir nun den OB10 erstellt und etwas Logik hineingeschrieben haben, müssen wir die eingestellte Zeit des OB10 konfigurieren und festlegen, wie oft er unseren Hauptzyklus unterbrechen soll.
Um die Zeit- und Intervalleinstellung des OB10 zu konfigurieren, müssen wir zur Eigenschaftenseite des OB10 gehen. Siehe Bild 3.
Bild 3 – Eigenschaften von OB10
In den Eigenschaften von OB10 finden Sie viele Einstellungen und Attribute, die Sie konfigurieren können.
Was wir jetzt brauchen, ist die Seite mit den Tageszeit-Interrupts, damit wir festlegen können, wann und wie oft OB10 aufgerufen wird. Siehe Bild 4.
Bild 4 – Einstellung der Tageszeit-Interrupts
Wie Sie im letzten Bild sehen, können Sie die Ausführung von OB10, das Startdatum und die Tageszeit festlegen, zu der OB10 ausgeführt werden soll.
Zur Simulation haben wir das Ausführungsintervall auf jede Minute festgelegt, sodass OB10 jede Minute aufgerufen und ausgeführt wird. Das bedeutet, dass ab dem Datum 23.03.2023 und der Uhrzeit 09:25 Uhr der Wert von TimeOfDayInterruptCounter jede Minute um 1 erhöht wird.
Sie haben die Möglichkeit, die Zeit entsprechend der SPS-Systemzeit oder der Ortszeit einzustellen, wie Sie im letzten Bild sehen. In einem früheren Artikel haben wir über die System- und Ortszeit der SPS gesprochen, was jede Zeit bedeutet und wie man sie konfiguriert und verwendet.
Wie wir bereits gesagt haben, ist die Ortszeit die Zeit, die Sie jetzt auf Ihrem PC sehen. Es ist also die tatsächliche Zeit der Region, in der die SPS verwendet wird.
Sie müssen die Ortszeit für die SPS konfigurieren, je nachdem, wo sie verwendet wird. Siehe Bild 5.
Bild 5 – Einstellen der Ortszeit für die SPS
Beispiel für ein einfaches SPS-Programm
Wir haben unserem SPS-Programm einen Tageszeit-Interrupt OB10 hinzugefügt und ihn so eingestellt, dass er jede Minute ausgeführt wird. Wir haben auch die Ortszeit der SPS konfiguriert.
Wir haben eine einfache Logik einer ADD-Anweisung erstellt, um den Wert des TimeOfDayInterruptCounter bei jeder Ausführung des OB10 um 1 zu akkumulieren.
Wir werden einen weiteren Befehl hinzufügen, aber im Haupt-OB1 ist dieser Befehl RD_LOC_T oder „Lokalzeit lesen“, damit wir sehen können, wie die Lokalzeit voranschreitet und sie mit der Ausführung von OB10 vergleichen können. Siehe Abbildung 6.
Abbildung 6 – Einfaches Programmbeispiel
Kompilieren Sie Ihr SPS-Programm und starten Sie eine neue Simulation.
Beachten Sie, dass wir die Uhrzeit des Auftretens der Unterbrechung festlegen, damit OB10 aufgerufen und ausgeführt werden kann, während wir die SPS-Logik simulieren. Siehe die folgende Simulation.
Wie Sie der Animation entnehmen können, ist der Wert von TimeOfDayInterruptCounter zu Beginn Null und wird dann ab 09:25 Uhr jede Minute um 1 erhöht, was bedeutet, dass der OB10 jede Minute ausgeführt wird.
Wichtige Regeln für die Uhrzeitalarme
- Wenn Sie einen Uhrzeitalarm so einstellen, dass der entsprechende OB einmalig abgearbeitet werden soll, darf der Startzeitpunkt nicht in der Vergangenheit liegen (bezogen auf die Echtzeituhr der CPU).
- Wenn Sie einen Uhrzeitalarm so einstellen, dass der entsprechende OB periodisch abgearbeitet werden soll, der Startzeitpunkt jedoch in der Vergangenheit liegt, dann wird der Uhrzeitalarm-OB beim nächsten fälligen Zeitpunkt gemäß der aktuellen Uhrzeit abgearbeitet.
- Das Datum periodischer Uhrzeitalarme muss einem realen Datum entsprechen. Beispielsweise ist die monatliche Wiederholung eines Uhrzeitalarm-OBs mit einem Startdatum vom 31.01. daher nicht möglich. In diesem Fall wird ein OB nur in den Monaten gestartet, die 31 Tage haben.
- Ein beim Start aktivierter Zeitinterrupt wird erst ausgeführt, wenn der Start abgeschlossen ist.
- Ein Start löscht alle Zeitinterrupts, die durch eine Anweisung im Benutzerprogramm gesetzt und aktiviert wurden.
Fazit
OB10 ist ein Organisationsbaustein, der so konfiguriert werden kann, dass er den Zyklus Ihres Programms an einem bestimmten Tag und zu einer bestimmten Uhrzeit unterbricht. Dieser Interrupt kann entweder einmal oder regelmäßig in einem bestimmten Zeitintervall auftreten.
Es gibt keinen bestimmten Grund, warum Sie einen OB10 benötigen würden, da dies von Ihrem Prozess und Ihrer Logik abhängt. Und ja, Sie können dieselbe Funktionalität mit Ihrem persönlichen Code erreichen, aber es handelt sich um eine verfügbare und einfach zu verwendende integrierte Funktion. Und Sie wissen, wie man sie verwendet.
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now