Warum ONS-Impulse an einem OTE in Studio 5000 verschwinden
Studio-5000-ONS- und OTE-Anweisungen können einen gültigen Impuls über einen Scan-Zyklus erzeugen, der online unsichtbar ist und als aufrechterhaltener Gerät...
Eine ONS-Anweisung kann genau wie vorgesehen funktionieren, während der daneben angezeigte Ausgang scheinbar nie erregt wird. Der scheinbare Widerspruch entsteht durch das Scan-Timing: ONS lässt eine False-zu-True-Änderung für einen Programmscan passieren, während ein OTE sein Ziel bei jeder Auswertung der Zeilenbedingung schreibt. Werden sie in Reihe geschaltet, ist das Ziel für einen Scan TRUE und danach wieder FALSE.
Dieser Impuls kann für das Inkrementieren eines Zählers, das Aufzeichnen eines Ereignisses oder das Anfordern eines Zustandsübergangs vollkommen gültig sein. Für einen physischen Starter, ein Ventilmagnetventil oder eine Bedieneranzeige, die bis zum Eintreten einer anderen Bedingung aktiv bleiben muss, ist er normalerweise der falsche Befehl.

Die grüne Online-Hervorhebung kann übersehen werden, wenn der TRUE-Zustand nur für eine Task-Ausführung anhält.
Was ONS und OTE tatsächlich zusichern
Rockwell Automation definiert ONS als eine Anweisung, die den Rest einer Leiterzeile für einen Scan TRUE macht, wenn sich die eingehende Zeilenbedingung von FALSE zu TRUE ändert. Ihr Speicherbit merkt sich, ob die vorausgehende Logik bereits TRUE war. Dieses Speicherbit gehört zur Flankenerkennung und sollte nicht ohne Weiteres mit einer anderen One-Shot-Anweisung geteilt werden.
OTE hat eine andere Funktion. Es setzt sein Zielbit, wenn die Zeilenbedingung TRUE ist, und löscht das Bit, wenn die Zeilenbedingung FALSE ist. Die Referenz zu Bit-Anweisungen in Studio 5000 von Rockwell unterscheidet die Aktivierung für einen Scan mit ONS vom gehaltenen und remanenten Verhalten von OTE, OTL und OTU.
In dem Scan, der die steigende Flanke erkennt, lässt ONS die Zeilenfortsetzung zu und das OTE-Ziel wird TRUE. Im nächsten Scan kann der Eingang weiterhin TRUE sein, aber ONS blockiert die Fortsetzung, weil die Flanke bereits verarbeitet wurde. OTE löscht dann sein Ziel. Das Ergebnis ist ein legitimer Impuls für einen Scan und keine fehlerhafte Spule.
Warum der Impuls aus dem Blickfeld verschwindet
Die Ausführung von Logix-Tasks und die Online-Aktualisierung der Engineering-Workstation sind getrennte Prozesse. Eine periodische Task kann zwischen zwei Bildschirmaktualisierungen viele Male ausgeführt werden. Der Ausgang kann sich daher zwischen zwei sichtbaren Aktualisierungen ein- und wieder ausschalten, obwohl der Prozessor beide Zustände korrekt ausgeführt hat.
Ein physischer Ausgang führt eine weitere Grenze ein. Die Steuerung aktualisiert ihre Ausgangsdaten, das Kommunikationsmodul überträgt die Daten nach seinem Zeitplan, und das angeschlossene Gerät hat eine elektrische und mechanische Reaktionszeit. Ein Impuls, der im Abbild der Steuerung für einen Scan existiert, kann zu kurz sein, um das Feldgerät zuverlässig zu erreichen oder zu betätigen. Das genaue Verhalten hängt von Task-Periode, Modulaktualisierung, Netzwerkanordnung, Ausgangshardware und Last ab – nicht von einem universellen Millisekundenwert.
Zur Diagnose können Sie Flanken in einem internen Tag zählen, ein temporäres Diagnosebit setzen, das einen bewussten Reset erfordert, oder das Ereignis mit einer für die Task geeigneten Rate aufzeichnen. Verlängern Sie keinen Produktionsbefehl nur deshalb, damit er sichtbar wird, ohne vorher zu prüfen, was dieser verlängerte Befehl auslösen könnte.
Wählen Sie das Muster anhand des erforderlichen Zustandsverhaltens
Verwenden Sie einen Impuls für einen Scan bei einem Ereignis
ONS eignet sich, wenn die nachgelagerte Anweisung einmal ausgeführt werden soll: zum Inkrementieren eines Zählers, Kopieren eines Rezepts, Erfassen eines Zeitstempels, Initiieren einer Nachricht oder Auffordern einer Zustandsmaschine, in ihren nächsten Zustand zu wechseln. In diesem Design ist das Ein-Scan-Tag ein Ereignis und kein Gerätebefehl.
Benennen Sie es entsprechend – Start_Request_Pulse ist eindeutiger als Pump_Start. Die Zustands- oder Geräteroutine sollte die Anforderung annehmen, Freigabebedingungen prüfen, die Zuständigkeit festlegen und den gehaltenen Laufbefehl erzeugen.
Verwenden Sie eine Selbsthalteschaltung für einen gehaltenen, nicht remanenten Befehl
Wenn ein Start-Ereignis ein Laufbit halten muss, bis eine Stopp-, Fehler- oder Verriegelungslogik TRUE wird, kann eine Selbsthaltegleichung ein OTE ansteuern. Der Befehl bleibt TRUE, weil das Zustandsbit an seiner eigenen Haltebedingung beteiligt ist – nicht weil ONS weiterhin TRUE bleibt.
Ordnen Sie Stopp-, Fehler-, Betriebsart- und Freigabebedingungen so an, dass ihre Priorität eindeutig ist. Vermeiden Sie einen Zweig, der genau die Verriegelung umgeht, die zum Stoppen des Geräts vorgesehen ist. Ein einzelner Besitzer des Ausgangs ist leichter zu prüfen als mehrere Zeilen, die dasselbe BOOL schreiben.

Die One-Shot-Anweisung sollte eine Zustandsänderung anfordern; die gehaltene Logik sollte den Gerätebefehl verwalten.
Verwenden Sie OTL und OTU nur mit eindeutig festgelegter Reset-Zuständigkeit
OTL setzt ein Bit und OTU löscht es. Dies kann ein sauberes Muster für die Umwandlung eines Ereignisses in einen Zustand sein, aber für jeden Setzpfad muss ein überprüfter Rücksetzpfad vorhanden sein. Legen Sie fest, was beim ersten Scan, bei einem Betriebsartwechsel, beim Download, beim Neustart des Prozessors, beim Verlust der Rückmeldung und beim Übergang in einen Fehlerzustand geschieht. Gehen Sie niemals davon aus, dass eine Bediener-Stopp-Taste die einzige Bedingung ist, die den Befehl zurücksetzen muss.
Bei komplexen Geräten ist eine Zustandsmaschine normalerweise übersichtlicher als verstreute Setz- und Rücksetzanweisungen. Sie bietet eine zentrale Stelle, an der das Verhalten für Idle, Starting, Running, Stopping und Faulted sowie die zulässigen Übergänge zwischen diesen Zuständen definiert werden.
Eine fehlerorientierte Vorgehensweise zur Fehlersuche
Prüfen Sie zunächst, ob die Logik vor ONS tatsächlich von FALSE zu TRUE wechselt. Wenn sie bereits TRUE ist, sobald die Routine mit der Ausführung beginnt, gibt es möglicherweise keine neue Flanke. Prüfen Sie, ob die Routine kontinuierlich gescannt, bedingt aufgerufen oder in einer gesperrten Task platziert wird.
Prüfen Sie zweitens, ob das ONS-Speicherbit eindeutig ist. Wird dasselbe Speichertag an zwei Stellen wiederverwendet, verknüpft dies die Flankenhistorie unabhängiger Zeilen und kann erwartete Impulse unterdrücken.
Prüfen Sie drittens per Querverweis das OTE-Ziel. Ein anderes OTE, OTL, OTU, ein erzeugtes Tag, ein Alias oder ein externer Schreibzugriff kann dasselbe Bit später im Scan oder in einer anderen Task ändern. Die OTE-Dokumentation von Rockwell warnt ausdrücklich davor, dass Operanden überschrieben werden können. Legen Sie einen einzigen Besitzer für den endgültigen Befehl fest und lassen Sie andere Routinen Änderungen über separate Tags anfordern.
Trennen Sie viertens den Steuerungszustand vom physischen Zustand. Beobachten Sie das Befehls-Tag, den Verbindungsstatus des Moduls, die Ausgangsdaten, die Feldspannung, das Koppelrelais, den Starteingang und die Geräterückmeldung als unterschiedliche Punkte in der Signalkette. Ein korrektes Tag beweist keine Feldspannung, und eine leuchtende Ausgangs-LED beweist nicht, dass sich der Aktor bewegt hat.
Entfernen Sie schließlich nach dem Test alle Forcierungen und temporären Diagnoseverriegelungen. Dokumentieren Sie die Testmethode, damit das Wartungspersonal nicht ein nur für den Service vorgesehenes Bit übernimmt, das unbemerkt das Produktionsverhalten verändert.
Anwendungsbeispiel: Auswahl der führenden Pumpe
Eine Lead-/Lag-Routine kann einen One-Shot-Impuls erzeugen, wenn Pumpe 1 als führende Einheit ausgewählt wird. Diese Flanke sollte nicht direkt mit dem physischen Ausgang verbunden werden. Sie sollte eine Startanforderung an das Pumpenmodul richten. Das Modul prüft anschließend den Automatikbetrieb, Freigabebedingungen, den Auslösezustand, die Mindeststillstandszeit, den Prozessbedarf und die Verfügbarkeit, bevor es einen gehaltenen Laufbefehl setzt.
Die Rückmeldung sollte den Zustand von Starting nach Running wechseln lassen, während eine Startzeitüberschreitung eine Fehlerreaktion erzeugt. Stoppanforderungen und Fehler sollten den Zustand je nach Prozessdesign in Richtung eines kontrollierten Stopps oder einer sofortigen Abschaltung führen. Diese Trennung verhindert, dass ein kurzzeitiges Auswahlereignis das Einzige ist, was einen Motorbefehl aufrechterhält.
Ein weiteres Beispiel dafür, wie sich eine boolesche Absicht in eine wartbare Leiterstruktur überführen lässt, finden Sie in der korrigierten Anleitung zu XOR- und Ungleichparitätslogik mit drei Schaltern. Steuerungs- und E/A-Optionen können außerdem über SPS- und PAC-Systeme geprüft werden.
Der Designtest ist die Zuständigkeit
Redaktionelle Einschätzung: Der wiederkehrende Fehler besteht nicht darin, eine One-Shot-Anweisung misszuverstehen, sondern darin, einem Ereignisbit zu erlauben, sich als Gerätezustand auszugeben. Flankendetektoren beantworten die Frage „Ist dieser Übergang aufgetreten?“ Zustandslogik beantwortet die Frage „Was soll die Maschine jetzt tun?“ Wenn diese Fragen getrennt bleiben, entsteht Code, der leichter in Betrieb zu nehmen, beim Neustart sicherer und deutlich weniger anfällig für Änderungen mit doppelten Spulen ist.
Häufig gestellte Fragen
Erregt ONS das nachfolgende OTE?
Ja, in dem Scan, in dem sich die eingehende Zeilenbedingung von FALSE zu TRUE ändert. Im folgenden Scan blockiert ONS die Zeile, bis die Eingangsbedingung zunächst wieder FALSE wird und anschließend erneut auf TRUE wechselt.
Warum kann ich online nicht sehen, dass sich das OTE einschaltet?
Der Impuls für einen Scan kann zwischen zwei Aktualisierungen der Engineering-Workstation beginnen und enden. Verwenden Sie einen internen Ereigniszähler, eine kontrollierte Diagnoseverriegelung oder eine entsprechend konfigurierte Aufzeichnung, um nachzuweisen, dass die Flanke aufgetreten ist.
Sollte ich das OTE durch ein OTL ersetzen?
Nur wenn ein gehaltener Zustand tatsächlich erforderlich ist und jede Rücksetzbedingung ausdrücklich entworfen wurde. Für viele Gerätebefehle ist eine Zustandsmaschine oder eine Selbsthaltegleichung mit einem einzigen OTE-Besitzer leichter zu prüfen.
Dürfen zwei ONS-Anweisungen dasselbe Speicherbit verwenden?
Das sollten sie nicht. Das Speicherbit zeichnet die Flankenhistorie auf. Durch die gemeinsame Verwendung werden die beiden Anweisungen gekoppelt, sodass eine Zeile den erwarteten Impuls der anderen unterdrücken kann.
Kann ein OTE für einen Scan einen physischen Ausgang ansteuern?
Die Steuerung kann diesen Zustand schreiben, aber der Impuls wird möglicherweise nicht lange genug übertragen oder gehalten, damit das Modul und das Feldgerät reagieren können. Physische Befehle sollten auf einer klar definierten Anforderung eines gehaltenen Zustands beruhen.