14. GEMISCHT LOGISCH-ANWEISUNGEN

14.1.  Übersicht

Die Option für Gemischt Logisch-Anweisungen bietet eine beliebige Kombination von Operatoren und Daten in den TP-Programm-Zuordnungsanweisungen, IF-Anweisungen und WAIT-Anweisungen. Gemischt Logisch unterstützt zudem den NOT-Operator (!) und Klammern ("(" und ")").

Sie können Gemischt Logisch-Anweisungen über das Menü "Register", das Menü "E/A", das Menü "WENN/AUSWAHL" und das MENÜ "WARTE" angeben.

Gemischt Logisch-Anweisungen müssen in Klammern angegeben werden, wie unten gezeigt:

  • DO[1]=(DI[1] AND !DI[2])

  • IF (DI[1]) JMP,LBL[1]

  • WAIT (DI[1])

Wenn die Anweisung keine Klammern hat, wird die Anweisung wie jede andere Logik-Anweisung ausgeführt.

Gemischt Logisch bietet zudem die zusätzlichen booleschen Datentypen Flag und Marker sowie die zusätzliche Anweisung TC_Online.

Gemischt Logisch bietet zudem die Hintergrundlogik, welche die gleichzeitige, kontinuierliche, wiederholte Ausführung von bis zu acht TP-Programme ermöglicht, die nur Zuordnungsanweisungen enthalten.

14.2. Datentypen

Die folgenden Datentypen sind für Gemischt Logisch-Anweisungen verfügbar:

Tabelle 9. Datentypen

Typ Wert Data

Numerisch

Die Daten können einen numerischen Wert haben. Es sind sowohl Ganzzahl- als auch Realwerte verfügbar.

Register, Konstante, GI/O, AI/O, Positionsregisterelement, Argument, Systemvariable

Boolesch

Die Daten können On oder Off sein

.

DI/O, RI/O, UI/O, SI/O, WI/O, On, Off, Flag, Marker


Hinweis

Positionstypdaten und Palettierungstypdaten können nicht für Gemischt Logisch-Anweisungen verwendet werden.

14.3. Operatoren

Die folgenden Operatoren sind für Gemischt Logisch-Anweisungen verfügbar:

Tabelle 10. Arithmetische Operatoren

Operator Betrieb

+

Addition von linker und rechter Seite.

-

Subtraktion der rechten Seite von der linken Seite.

*

Multiplikation von linker und rechter Seite.

/

Division von linker und rechter Seite.

MOD

Rest der Division von linker und rechter Seite.

DIV

Rundung des Dezimalteils der Division von linker und rechter Seite.


  • Arithmetische Operatoren werden nur für numerische Daten verwendet. Wenn numerische Operatoren für boolesche Daten verwendet werden, tritt der Fehler "INTP-205 Variablentyp falsch" auf.

  • Der Ausgabedatentyp der arithmetischen Operatoren ist immer numerisch.

Tabelle 11. Logische Operatoren

Operator Betrieb

UND

Division von linker und rechter Seite.

ODER

Logisches OR von linker und rechter Seite.

!

Logisches NOT von linker und rechter Seite.


  • Logische Operatoren werden nur für boolesche Daten verwendet. Wenn logische Operatoren für numerische Daten verwendet werden, tritt der Fehler "INTP-205 Variablentyp falsch" auf.

  • Der Ausgabedatentyp der arithmetischen Operatoren ist immer boolesch.

Tabelle 12. Vergleichsoperatoren

Operator Betrieb

=

Wenn linke und rechte Seite gleich sind, wird ON zurückgegeben; wenn ungleich, wird OFF zurückgegeben.

<>

Wenn die linke und rechte Seite ungleich sind, wird ON zurückgegeben; wenn gleich, wird OFF zurückgegeben.

<

Wenn die linke Seite kleiner als die rechte Seite ist, wird ON zurückgegeben; wenn größer, wird OFF zurückgegeben.

>

Wenn die linke Seite größer als die rechte Seite ist, wird ON zurückgegeben; wenn kleiner, wird OFF zurückgegeben.

<=

Wenn die linke Seite kleiner als die rechte Seite ist, oder wenn sie gleich sind, wird ON zurückgegeben; wenn größer, wird OFF zurückgegeben.

>=

Wenn die linke Seite größer als die rechte Seite ist, oder wenn sie gleich sind, wird ON zurückgegeben; wenn kleiner, wird OFF zurückgegeben.


  • "=" und "<>" können sowohl für numerische Daten als auch booleschen Daten verwendet werden.

  • "<", ">", "<=" und ">=" werden nur für numerische Daten verwendet. Wenn sie für boolesche Daten verwendet werden, tritt der Fehler "INTP-205 Variablentyp falsch" auf.

Die Priorität der Operatoren ist in der folgenden Tabelle angegeben.

Tabelle 13. Priorität der Operatoren

Priorität

Operator

HÖCHSTE

!

*, /, DIV , MOD
+, —

MITTEL

<, >, <=, >=

=, <>
UND

NIEDRIGSTE

ODER


14.4. Ausdrücke

Gemischt Logisch-Anweisungen können in Zuordnungsanweisungen, IF-Anweisungen und WAIT-Anweisungen angegeben werden.

Zuordnungsanweisungen

Folgendes ist ein Beispiel für eine Mischlogik-Zuordnungsanweisung.

R[1] = ((GI[1] + R[1]) * AI[1])
DO[1] = (DI[1] AND (GI[1] — GI[2]))
  • Das erste = von links gibt eine Zuordnungsanweisung an. Das andere = gibt einen Vergleich an. Das Ergebnis des Ausdrucks auf der rechten Seite wird den Daten auf der linken Seite zugeordnet.

  • Wenn der Datentyp auf der linken Seite boolesch und das Ergebnis des Ausdrucks auf der rechten Seite numerisch ist, werden die Daten auf der linken Seite OFF, wenn der Wert auf der rechten Seite kleiner als 1 und größer als -1 ist. Die Daten auf der linken Seite werden ON, wenn der Wert auf der rechten Seite größer als 1 oder kleiner als -1 ist. Dieses Verhalten entspricht einer normalen Zuordnungsanweisung.

  • Wenn der Datentyp auf der linken Seite numerisch und das Ergebnis des Ausdrucks auf der rechten Seite boolesch ist, werden die Daten auf der linken Seite 0, wenn der Wert auf der rechten Seite OFF ist. Die Daten auf der linken Seite werden 1, wenn der Wert auf der rechten Seite ON ist. Dieses Verhalten entspricht einer normalen Zuordnungsanweisung.

  • Wenn ein reeller Wert einer GO oder AO oder einer ganzzahligen Systemvariable zugeordnet wird, wird der Dezimalteil gerundet.

  • "Pulse" kann in einer Gemischt Logisch-Anweisung nicht angegeben werden. Sie müssen normale Logikbefehle verwenden, um "Pulse" anzugeben.

  • Positionstypdaten und Palettierungstypdaten können weder auf der rechten noch linken Seite von Gemischt Logisch-Anweisungen angegeben werden. Sie müssen normale Logikbefehle verwenden, um Positions- oder Palettierungstypdaten anzugeben.

  • Die maximale Anzahl an Elementen (Daten oder Operatoren) in einer Zuordnungsanweisung beträgt etwa 20. Die genaue maximale Anzahl an zulässigen Elementen variiert je nach Datentyp.

Auf der linken Seite der Anweisung können die folgenden Daten angegeben werden:

Tabelle 14. Datenzuordnungen

Typ Data
Boolesch DO, RO, UO, SO, WO, Flag, Marker
Numerisch Register, GO, AO, Element eines Positionsregisters, Systemvariable

IF-Anweisungen

Das Folgende ist ein Beispiel für eine Mischlogik-WENN-Anweisung.

IF (R[1] = (GI[1] + R[1]) * AI[1]) JMP LBL[1]
IF (DI[1] AND (!DI[2] OR DI[3])) JMP LBL[1]
  • Sie können Gemischt Logisch-Ausdrücke im Bedingungsteil einer WENN-Anweisung angeben.

  • Das Ergebnis der WENN-Anweisung muss vom booleschen Datentyp sein.

  • Wenn das Ergebnis des Ausdrucks ON ist, wird der Aktionsteil der Anweisung, beispielsweise JMP LBL, ausgeführt.

  • Wenn Mischlogik im Bedingungsteil verwendet wird, können im Aktionsteil einer WENN-Anweisung die folgenden Anweisungen verwendet werden:

    JMP LBL[ ]
    CALL
    Gemischt Logisch-Zuordnungsanweisung
    Impuls-Anweisung
    
  • Mischlogik-Zuordnungsanweisungen und Impuls-Anweisungen können im Aktionsteil einer IF-Anweisung nur angegeben werden, wenn der Bedingungsteil ein Gemischt Logisch-Ausdruck ist. Siehe folgendes Beispiel:

    IF (DI[1]), DO[1]=(On)
    IF (DI[2]), DO[1]=Pulse
    
    
  • Die maximale Anzahl an Elementen (Daten oder Operatoren) in einer WENN-Anweisung beträgt etwa 20. Die genaue maximale Anzahl an Elementen variiert je nach Datentyp.

WAIT-Anweisungen

Folgendes ist ein Beispiel für eine Mischlogik-WAIT-Anweisung:

WAIT (DI[1] AND (!DI[2] OR DI[3]))
  • Gemischt Logisch-Ausdrücke können in der Bedingung einer WAIT-Anweisung angegeben werden.

  • Das Ergebnis des Ausdrucks muss vom booleschen Datentyp sein.

  • Die WAIT-Anweisung wartet, bis das Ergebnis des Ausdrucks auf ON gesetzt wird.

  • "On+", "Off-" und "ERR_NUM" können in Gemischt Logisch-Anweisungen nicht angegeben werden. Sie müssen normale Logikbefehle verwenden, um sie anzugeben.

  • Die maximale Anzahl an Elementen (Daten oder Operatoren) in einer WAIT-Anweisung beträgt etwa 20. Die genaue maximale Anzahl an Elementen variiert je nach Datentyp.

14.5. Hinzufügen von Gemischt Logisch-Anweisungen

Die Bearbeitung von gemischten logischen Anweisungen ist komplexer als die Bearbeitung normaler Anweisungen, da eine größere Vielfalt an Datentypen und Operatoren verwendet werden kann und die Flexibilität, mit der sie kombiniert werden können.

Zur Erleichterung der Bearbeitung stehen folgende Funktionen zur Verfügung:

  • Um mit dem Teachen einer Gemischt Logisch-Anweisung zu beginnen, müssen Sie zunächst eine Anweisung mit Klammern wählen.

  • Im Auswahlmenü werden die Elemente angezeigt, die entsprechend der Position der Anweisung verfügbar sind.

  • Wenn die Kombination von Elementen ungültig ist, z. B. zwei Operatoren nebeneinander, wird automatisch ein leeres Element eingefügt und Sie werden aufgefordert, ein Element auszuwählen.

  • Wenn ein Element gelöscht wird, werden die zugehörigen Elemente gleichzeitig gelöscht. Wenn z. B. ein Operator gelöscht wird, werden gleichzeitig die nachfolgenden Daten gelöscht.

  • Wenn sich der Cursor auf einem Element in einem Gemischt Logisch-Ausdruck befindet und der Ausdruck falsch ist, wird in der Eingabeaufforderung eine Fehlermeldung angezeigt. Die folgenden Meldungen können angezeigt werden:

    Tabelle 15. Gemischt Logisch-Fehlermeldungen

    Fehlermeldung Erläuterung
    Klammerfehler Die Anzahl der linken und rechten Klammern stimmt nicht überein.
    Ungültiger Index Die Indexnummer ist falsch.
    Variablentyp falsch Der Datentyp für den Operator ist falsch.
    Ungültiger Parametername Der Name der Systemvariablen ist falsch.
    Element n. vorhanden Leeres Element (...) existiert.
    Ungültige Bewegungsgruppe Die angegebene Bewegungsgruppe von PR[ ] ist für das Programm nicht verfügbar.
    Ungültig für Ausgabe Das Element auf der linken Seite der Zuordnungsanweisung ist ungültig.
    Ungültig bei Gemischt Logisch Das Element kann im Gemischt Logisch-Ausdruck nicht verwendet werden.
    Syntaxfehler Ungültige Anweisung

So fügen Sie Gemischt Logisch-Anweisungen zu einem Programm hinzu:

  1. Drücken Sie im Menü "Bearbeiten" F1, ANWS, um zum Menü "Anweisung" zu wechseln.

  2. Wählen Sie die Art der Anweisung, die Sie hinzufügen möchten: Register, I/O, IF/SELECT oder WAIT.

  3. Wählen Sie im Menü "Anweisung" die Gemischt Logisch-Anweisung, die Klammern enthält:

    (...)
    

  4. Erstellen Sie die Anweisung, wie Sie es normalerweise tun würden.

  5. Um ein Element in einer Gemischt Logisch-Anweisung zu ändern, drücken Sie F4 AUSWAHL, wenn sich der Cursor auf dem zu ändernden Element befindet. Die verfügbaren Elemente werden angezeigt.

  6. Sie können Elemente in einer beliebigen Gemischt Logisch-Anweisung einfügen, jedoch nicht auf der linken Seite einer Zuordnungsanweisung. Drücken Sie F1, EINFÜGEN. Ein leeres Element,

    "..."
    

    wird vor dem Cursor eingefügt, und ein Auswahlmenü wird angezeigt.

    Wenn Sie einen Operator wählen, wird hinter diesem Operator ein leeres Element eingefügt, und das Menü "Daten" wird angezeigt.

  7. Sie können Elemente in einer beliebigen Gemischt Logisch-Anweisung löschen, jedoch nicht auf der linken Seite einer Zuordnungsanweisung. Setzen Sie den Cursor auf ein Element, und drücken Sie [AUSWAHL]. Die Taste LÖSCHE wird auf F2 angezeigt. Wird ein Operand gelöscht, werden auch folgende Datenelemente gelöscht.

  8. Um einen NOT(!)-Operator hinzuzufügen oder zu löschen, wenn sich der Cursor auf einem digitalen E/A-Element eines Gemischt Logisch-Ausdrucks befindet, außer auf der linken Seite einer Zuordnungsanweisung, drücken Sie F5, (!). Der NOT(!)-Operator wird hinzugefügt oder gelöscht.

  9. Um die linke Seite einer Zuordnungsanweisung zu ändern, wenn die rechte Seite der Zuordnungsanweisung eine Gemischt Logisch-Anweisung ist, setzen Sie den Cursor auf das Element auf der linken Seite, und drücken Sie F4, AUSWAHL. Es wird ein Menü angezeigt, das die Elemente enthält, die auf der linken Seite einer Zuordnungsanweisung angegeben werden können.

14.6.  Hintergrundlogik

14.6.1.  Übersicht

Hintergrundlogik ermöglicht die Ausführung von Teach Pendant-Programmen, die nur gemischte logische Anweisungen enthalten, die im Hintergrund ausgeführt werden. Das Programm wird von Anfang bis Ende wiederholt ausgeführt. Diese Ausführung wird nicht durch NOT-AUS, HALT oder Alarme beeinflusst.

In der Hintergrundlogik stehen zwei Ausführungsmodi, Normalmodus und High-Level-Modus, zur Verfügung.

  • Im Normalmodus können alle Gemischt Logisch-Anweisungen im Hintergrund ausgeführt werden. Die Anzahl der Elemente, die alle ITP (ITP ist normalerweise 8 msek) im Normalmodus verarbeitet werden können, ist abhängig von der Gesamtanzahl der Elemente, die im Normal- und High-Level-Modus gescannt werden müssen. Bei einem "Element" handelt es sich um Daten, einen Operator oder eine zulässige Anweisung.

  • Im High-Level-Modus können alle Gemischt Logisch-Anweisungen im Hintergrund ausgeführt werden. Alle 8 msek werden bis zu 540 Elemente verarbeitet.

Weitere Informationen zu den Hintergrundlogik-Ausführungsmodi finden Sie in Tabelle 16, "Hintergrundlogik-Ausführungsmodi".

Verwenden Sie Hintergrundlogik einrichten, um eine Hintergrundlogik auszuführen.

Tabelle 16. Hintergrundlogik-Ausführungsmodi

Modus Max. Anzahl an Elementen Scanzeit Verfügbare Daten Verfügbare Operatoren Verfügbare Anweisungen

Normaler Modus

Keine Einschränkung

(Gesamtanzahl der Elemente / 600) * ITP

Die Anzahl der Elemente bezeichnet die Gesamtanzahl der Elemente in allen Hintergrundlogikprogrammen. (Normal und Hoch). ITP ist normalerweise 8 msek.

F[], M[]*,

DI[], DO[],

AI[], AO[],

GI[],GO[],

SI[], SO[],

UI[], UO[],

RI[], RO[]

WI[], WO[]

Ein, Aus

R[], PR[i.j],

AR[]

Konstante

Parameter

Timer, Timer-Überlauf

(, ), !,

UND, ODER,

=, <>,

<, < =, >, >=,

+,—, *, /,

DIV, MOD

Alle Gemischt Logisch-Operationen

JMP LBL[...] (Nur in Abwärtsrichtung springen),

AUSF

UALRM[...]

High-Level-Modus 540 8 msek

Wie normaler Modus

Wie normaler Modus

Wie normaler Modus


  • M[ ] kann in einer Hintergrundlogik nicht auf der linken Seite einer Zuordnungsanweisung angegeben werden.

  • Als Hintergrundlogik können gleichzeitig 8 Programme ausgeführt werden.

  • Wenn das Programm andere Aussagen als Zuordnungsanweisungen enthält, wird während der Ausführung der Fehler "INTP-443 N. Gültig für gem. Logik" generiert.

  • Während ein Programm im Hintergrund ausgeführt wird, kann das Programm nicht wie eine normale Aufgabe bearbeitet oder ausgeführt werden. Wenn das Programm nicht im Hintergrund läuft, kann es als normale Aufgabe ausgeführt werden, um es zu testen.

  • Wenn ein Programm im Hintergrund ausgeführt wird, kann das Programm nicht als Überschreiben geladen werden.

  • Wenn ein Programm beim Abschalten als Hintergrundlogik ausgeführt wird, wird das Programm beim nächsten Einschalten automatisch im gleichen Ausführungsmodus ausgeführt.

  • Die Ausführung der Hintergrundlogik erfolgt vor der normalen Programmausführung. Die Ausführung der Hintergrundlogik dauert ca. 1 ms in jedem ITP. Die Logikausführung im Hintergrund kann die Zykluszeit des normalen Programms beeinflussen.

    Um die Ausführungszeit der Hintergrundlogik zu verkürzen, ändern Sie $MIX_LOGIC. $ITEM_COUNT auf kleineren Wert. Der Standardwert von $MIX_LOGIC. $ITEM_COUNT ist 600, d. h. die Anzahl der pro ITP verarbeiteten Elemente.

  • Zuordnungsanweisungen mit der IF-Bedingung können von der Hintergrundlogik ausgeführt werden. Die Zuweisungsanweisung wird nicht ausgeführt, wenn die Bedingung OFF ist. Im folgenden Beispiel:

    IF (DI[1]), DO[1]=(DI[2])
    

    der Wert von DO[1] wird auf DI[2] gesetzt, wenn DI[1] ON ist, DO[1] wird nicht geändert, wenn DI[1] OFF ist.

  • Impuls-Anweisungen können in der Hintergrundlogik verwendet werden. Sie können mit der IF-Bedingung kombiniert werden, um einen AUS-Verzögerungs-Timer zu erstellen. Im Beispiel:

    IF (DI[1]), DO[1]=Pulse 1sec
    

    DO[1] hat einen 1-Sek-Impuls, wenn DI[1] 1 Sek. auf ON bleibt. Wenn DI[1] auf vor 1 Sek. zu OFF wechselt, wechselt DO[1] sofort zu OFF. Während DI[1] auf OFF steht, setzt diese Aussage DO[1] nicht.

    Um DO[1] 1 Sek. lang auf ON zu halten, auch wenn DI[1] zu OFF wechselt, verwenden Sie die folgenden Anweisungen.

    F[1]=(DI[1] OR (F[1] AND DO[1]))
      IF (F[1]), DO[1]=Pulse 1sec
    

  • Wenn eine Impuls-Anweisung die Zeit nicht angibt, ist es ein Scan-Impuls in der Hintergrundlogik-Ausführung.. Im Beispiel:

    IF (DI[1]), DO[1]=Pulse
    

    In diesem Fall wechselt DO[1] nur für einen Scan auf ON, wenn DI[1] von OFF zu ON wechselt. Dies kann als Kantenerkennung verwendet werden.

    Pulsanweisung ohne Zeit bedeutet den Impuls von $DEFPULSE in normaler Ausführung, also ist es anders in der Hintergrundlogik.

Mit dem Bildschirm "Hintergrundlogik" können Sie Programme als Hintergrundlogik einrichten und ausführen. Eine Beschreibung der einzelnen Elemente auf dem Bildschirm "Hintergrundlogik" finden Sie in Tabelle 17, "Elemente auf dem Bildschirm "Hintergrundlogik". In Tabelle 18, "Elemente auf dem Bildschirm "Hintergrundlogik" sind die Vorgänge auf dem Bildschirm "Hintergrundlogik" aufgelistet.

Tabelle 17. Elemente auf dem Bildschirm "Hintergrundlogik"

ELEMENT BESCHREIBUNG
PROGRAMM Geben Sie den Namen des Programms ein, den Sie als Hintergrundlogik ausführen möchten.
STATUS

Zeigt den Status des Hintergrundlogik-Programms an:

  • Stop: Das Programm wird angehalten.

  • Läuft: Das Programm wird im Normalmodus ausgeführt.

  • Läuft (Hoch): Das Programm wird im High-Level-Modus ausgeführt.

MODUS Verwenden Sie dieses Element, um den Ausführungsmodus zu wählen:
  • Normal: Das Programm wird immer im Normalmodus ausgeführt.

    Die Standardeinstellung ist "Normal". Wenn Sie das Programm im High-Level-Modus ausführen möchten, es aber im Normal-Modus ausgeführt wird, setzen Sie dieses Element auf "Hoch".

  • Hoch: Das Programm wird immer im High-Level-Modus ausgeführt.


Tabelle 18. Vorgänge auf dem Bildschirm "Hintergrundlogik"

FUNKTIONSTASTE BESCHREIBUNG
AUSF Drücken Sie diese Taste, um das Programm als Hintergrundlogik auszuführen. Enthält es Anweisungen, die im Hintergrundmodus nicht verfügbar sind, wird ein Fehler angezeigt.
STOP Drücken Sie diese Taste, um die Ausführung eines Programms im Hintergrund zu stoppen.
LÖSCH Drücken Sie diese Taste, um ein Hintergrundlogik-Programm aus der Liste zu löschen. (Das Programm muss sich im Modus "STOP" befinden, bevor es entfernt werden kann.)

Verfahren 9. Hintergrundlogik einrichten

  1. Drücken Sie MENÜ.

  2. Wählen Sie "6 SETUP".

  3. Drücken Sie F1, "TYP".

  4. Wählen Sie "BG Logik". Es wird ein Bildschirm ähnlich dem folgenden angezeigt:

    Hintergrundlogik
       Normalmodus Scanzeit: 8 msek    3/8
        PROGRAMM     STATUS         MODUS
        1 LOGIC1     Läuft          Normal
        2 LOGIC2     Stop           High
        3 LOGIC3     Läuft(High)    High
        4            Stop           Normal
        5            Stop           Normal
        6            Stop           Normal
        7            Stop           Normal
        8            Stop           Normal
    
  5. Geben Sie in der Spalte PROGRAM den Namen des Programms ein, das Sie als Hintergrundlogik ausführen möchten. Drücken Sie F4, [WAHL], um eine Liste der Programme anzuzeigen. Wählen Sie das gewünschte Programm in der Liste aus.

    Die Spalte STATUS zeigt den Status des Hintergrundlogik-Programms an:

    • Stop: Das Programm wird angehalten.

    • Läuft: Das Programm wird im Normalmodus ausgeführt.

    • Läuft (Hoch): Das Programm wird im High-Level-Modus ausgeführt.

  6. Wählen Sie in der Spalte "MODE" einen Ausführungsmodus aus. Drücken Sie F4, [WAHL], um eine Liste der Modi anzuzeigen. Wählen Sie den gewünschten Modus in der Liste aus.

    • Normal: Das Programm wird immer im Normalmodus ausgeführt.

    • Hoch: Das Programm wird immer im High-Level-Modus ausgeführt.

    Hinweis

    Die Scanzeit der Ausführung im Normalmodus wird in der oberen Zeile des Bildschirms angezeigt.

  7. Um das Programm als Hintergrundlogik auszuführen, drücken Sie F2, AUSF.

    Das Programm wird ausgeführt. Enthält es Anweisungen, die im Hintergrundmodus nicht verfügbar sind, wird ein Fehler angezeigt.

  8. Drücken Sie die Taste F3, STOP, um die Ausführung eines Programms im Hintergrund zu stoppen.

  9. Um ei Programm aus der Hintergrundausführung zu entfernen, drücken Sie F5, LÖSCHEN.

14.6.2.  Flag

Flags (F[ ]) sind interne E/A-Ports, die gelesen und eingerichtet werden können. Sie sind nicht an ein tatsächliches E/A-Gerät angeschlossen und sind vergleichbar mit einer Variable des Booleschen Datentyps.

Der Wert eines Flags kann mit der Funktion zur Wiederherstellung nach Stromausfall (Warmstart) wiederhergestellt werden. Er ist derselbe wie die anderen Ausgangsports, z. B. DO.

Die folgenden Bedingungen setzen alle Flags auf AUS:

  • KALTSTART

  • KONTROLLIERTER Start

  • INIT-Start

  • Die E/A-Zuordnung wird auch trotz des Warmstarts geändert.

  • Die E/A-Konfiguration wird auch trotz des Warmstarts geändert.

DI, DO, UI, UO, GI und GO können Flags zugeordnet werden, indem sie als Rack 34, Steckplatz 1, Startpunkt 1-1024 konfiguriert werden.

Wen UI/UO Flags zugeordnet werden, kann die Programmausführung vom TP-Programm oder von der Hintergrundlogik gesteuert werden. Zum Beispiel:

Rack	 Platz Start Pt.
UI[1-18]	 34	 1	    1

Wenn in diesem Fall F[6] von ON in OFF geändert wird, wird UI[6:START] von ON in OFF geändert, und das ausgewählte Programm wird ausgeführt.

So zeigen Sie das Menü "Flag-Monitor" an

  1. Drücken Sie MENÜ.

  2. Wählen Sie "5 E/A".

  3. Drücken Sie F1 [TYP].

  4. Wählen Sie "Flag". Es wird ein Bildschirm ähnlich dem folgenden angezeigt:

    Flag
            #      STATUS             1/1024
       F[   1]       ON  [              ]
       F[   2]       OFF [              ]
       F[   3]       OFF [              ]
       F[   4]       ON  [              ]
       F[   5]       OFF [              ]
       F[   6]       OFF [              ]
       F[   7]       OFF [              ]
       F[   8]       OFF [              ]
       F[   9]       OFF [              ]
       F[  10]       OFF [              ]
    
    

    Sie können den Wert der Flags in diesem Menü ändern.

  5. Drücken Sie F2, DETAIL, um den Bildschirm "Port Detail" aufzurufen. Es wird ein Bildschirm ähnlich dem folgenden angezeigt:

    Port Detail
        Flag                  [   1]
        Comment:[                     ]
    

    Sie können die Flag-Kommentare auf diesem Bildschirm ändern.

Beispiele für Kantenerkennung, Zählen und Timer im Schnellmodus der Hintergrundlogik

Der Schnellmodus hat eine bessere Leistung als der Normalmodus, und der Schnellmodus wirkt sich nicht auf die Leistung der normalen Programmausführung aus. Im Schnellmodus können numerische Vorgänge und Impuls-Anweisungen jedoch nicht verwendet werden.

Beispiel 1: Kantenerkennung

Das folgende Programm ist die Kantenerkennung von DI[1]. Nur wenn DI[1] von OFF auf ON gesetzt wird, wird DO[1] auf ON gesetzt.

1: DO[1]=(DI[1] AND !F[1])
2: F[1]=(DI[1])

F[1] hat den DI[1]-Wert des vorherigen Scans. DO[1] wird auf ON gesetzt, wenn DI[1] ON und der vorherige Wert von DI[1] OFF ist.

Beispiel 2: Zähler

Das Folgende ist das Beispiel eines 4-Bit-Zählers der DI[1]-Kante. Der Zählerwert ist in F[41-44] festgelegt. Sie können den Zählerwert von GI[1] lesen, wenn GI[1] als Rack 34, Steckplatz 1, Startpunkt 41 und Punkt 4 zugeordnet ist.

1:  F[2]=(DI[1] AND !F[1]) ;
2:  F[1]=(DI[1]) ;
3:  ! BIT1 ;
4:  F[3]=(F[41]) ;
5:  F[41]=((F[2] AND !F[3]) OR (!F[2] AND F[3])) ;
6:  F[2]=(F[2] AND F[3]) ;
7:  ! BIT2 ;
8:  F[3]=(F[42]) ;
9:  F[42]=((F[2] AND !F[3]) OR (!F[2] AND F[3])) ;
10:  F[2]=(F[2] AND F[3]) ;
11:  ! BIT3 ;
12:  F[3]=(F[43]) ;
13:  F[43]=((F[801] AND !F[3]) OR (!F[801] AND F[3])) ;
14:  F[2]=(F[2] AND F[3]) ;
15:  ! BIT4 ;
16:  F[3]=(F[44]) ;
17:  F[44]=((F[2] AND !F[3]) OR (!F[2] AND F[3])) ;
18:  F[2]=(F[2] AND F[3]) ;

Die ersten 2 Zeilen der Kantenerkennung von DI[1], F[2] wechselt in einem Scan auf ON, wenn DI[1] von OFF zu ON geändert wird.

Die Zeilen 4-6 berechnen das erste Bit des Zählers (F[41]). F[3] ist die Arbeitsvariable, die den Originalwert beibehält. In Zeile 5 wird F[41] zurückgesetzt, wenn F[2] ON ist, und F[41] wird nicht geändert, wenn F[2] OFF ist. In Zeile 6 wird F[2] auf OFF gesetzt, wenn Original-F[41] OFF ist, d. h. es findet kein Überlauf statt.

Die Zeilen 8-10 beziehen sich auf das zweite Bit (F[42]), die Zeilen 12-14 beziehen sich auf das dritte Bit (F[43]) und die Zeilen 16-18 beziehen sich auf das vierte Bit (F[44]).

Beispiel 3: Timer

Der Timer kann mit dem Zähler programmiert werden, weil die Scanzeit im Schnellmodus immer 8 ms ist. Es folgt ein Beispiel für den 8-ms-Impuls. Dieses Programm funktioniert wie "IF (DI[1]), DO[1]=Pulse 80msec".

1:  F[1]=(DI[1]);
2:  F[2]=(F[1] AND !F[4]);
3:  DO[1]=F[2]
4:  ! BIT1 ;
5:  F[3]=(F[41]) ;
6:  F[41]=(F[1] AND ((F[2] AND !F[3]) OR (!F[2] AND F[3]))) ;
7:  F[2]=(F[2] AND F[3]) ;
8:  ! BIT2 ;
9:  F[3]=(F[42]) ;
10:  F[42]=(F[1] AND ((F[2] AND !F[3]) OR (!F[2] AND F[3]))) ;
11:  F[2]=(F[2] AND F[3]) ;
12:  ! BIT3 ;
13:  F[3]=(F[43]) ;
14:  F[43]=(F[1] AND ((F[2] AND !F[3]) OR (!F[2] AND F[3]))) ;
15:  F[2]=(F[2] AND F[3]) ;
16:  ! BIT4 ;
17:  F[3]=(F[44]) ;
18:  F[44]=(F[1] AND ((F[2] AND !F[3]) OR (!F[2] AND F[3]))) ;
19:  F[2]=(F[2] AND F[3]) ;
20:  ! 80 msek ist 10 * 8 msek. 10=0b1010 ;
21:  F[4]=(F[44] AND !F[43] AND F[42] AND !F[41])

F[1] ist die Arbeitsvariable, die den DI[1]-Wert beibehält.

Alle Bits des Zählers (F[41-44]) werden gelöscht, wenn F[1] OFF ist.

F[2] ist die Arbeitsvariable, und der Zählerwert wird erhöht, wenn F[2] ON ist.

Wenn der Zählerwert 10 (F[41]:ON, F[42]:OFF, F[43]:ON, F[44]:OFF) ist, wird F[4] auf ON und F[2] auf OFF gesetzt, sodass der Zähler erst erhöht wird, wenn DI[1] auf OFF gesetzt wird.

14.6.3.  Merker

Auf dem Bildschirm "Merker" können Sie den Status der Merker überwachen.

Merker (M[ ]) sind mit Flags vergleichbar, der Wert von Merkern wird jedoch nicht direkt festgelegt. Wenn ein Merker (M[ ]) auf der linken Seite einer Zuordnung (=) in einem TP-Programm angegeben und die Anweisung ausgeführt wird, wird der Ausdruck intern als Hintergrundlogik definiert und wiederholt ausgeführt. Die Marke (M[ ]) enthält immer das Ergebnis des Ausdrucks.

Die Merker-Funktion ist standardmäßig deaktiviert, das Merker-Menü wird nicht angezeigt, und M[ ] kann im TP-Programm nicht geteacht werden. Um die Merker-Funktion zu verwenden, setzen Sie $MIX_LOGIC.$USE_MKR auf TRUE.

Beispiel:

M[1]=(DI[1] AND DI[2])

Nachdem diese Zeile in einem normalen TP-Programm ausgeführt wurde (nicht in einer Hintergrundlogik), enthält M[1] immer das Ergebnis des Ausdrucks auf der rechten Seite. Sind sowohl DI[1] als auch DI[2] auf ON gesetzt, steht M[1] auf ON; ansonsten ist M[1] auf OFF gesetzt.

  • Wenn die Zuordnungsanweisung für einen Merker in einem normalen TP-Programm ausgeführt wird, wird die Anweisung als Hintergrundoperation registriert. Die Anweisung wird als Hintergrundlogik ausgeführt, bis ein anderer Ausdruck den Merker neu definiert. Die Ausführung der Anweisung wird nicht gestoppt, auch wenn das Programm angehalten oder abgebrochen wird, weil sie Hintergrundlogik ist.

  • Standardmäßig gibt es 8 Merker (M[1]-M[8]). Die Anzahl der Merker kann mit der Systemvariablen "$MIX_LOGIC.$NUM_MARKERS" geändert werden. Die maximale Anzahl an Merkern ist 100. Ein Merker nimmt 300 Byte permanenten Speicherpool in Anspruch.

  • Die Scanzeit zum Berechnen einer Zuordnungsanweisung für einen Merker ist die gleiche wie die Scanzeit der Hintergrundlogik im Normalmodus. Wenn Zuordnungsanweisungen für Merker definiert sind, wirkt sich dies auf die Scanzeit der Hintergrundlogik aus.

  • Löschen Sie den definierten Merker-Ausdruck, um die Berechnung zu stoppen. Um den definierten Ausdruck zu löschen, führen Sie LÖSCHEN im Menü "Marker Detail oder die folgende Zeile des TP-Programms aus.

    M[1]=()
    

  • Wenn eine Marke in einem Ausdruck nicht zugeordnet ist und in einer anderen Anweisung verwendet wird, wird der Fehler "INTP-438 I/O Fehler Lesen E/A-Wert" generiert, wenn der Merker-Wert gelesen wird.

  • M[ ] kann in einer Hintergrundlogik nicht auf der linken Seite einer Zuordnungsanweisung angegeben werden.

So zeigen Sie das Menü "Merker-Monitor" an

  1. Drücken Sie MENÜ.

  2. Wählen Sie "5 (I/O)".

  3. Drücken Sie F1 [TYP].

  4. Wählen Sie "Merker". Es wird ein Bildschirm ähnlich dem folgenden angezeigt:

    Marker
            #      STATUS              1/8
       M[   1]       ON  [              ]
       M[   2]       OFF [              ]
       M[   3]       OFF [              ]
       M[   4]       ON  [              ]
       M[   5]       OFF [              ]
       M[   6]       OFF [              ]
       M[   7]       OFF [              ]
       M[   8]       OFF [              ]
    
    

  5. Drücken Sie F2, DETAIL, um den Bildschirm "Port Detail" aufzurufen. Es wird ein Bildschirm ähnlich dem folgenden angezeigt:

    Port Detail
     Marker                [   1]
     Comment:[                        ]
     Ausdruck:
      M[1]=((DI[1] OR DI[2]) AND !DI[3]
          AND !(DI[4] AND DI[5]))
     Monitor:
      M [1]                  ON
      DI[1]                  OFF
      DI[2]                  ON
      DI[3]                  OFF
      DI[4]                  OFF
      DI[5]                  ON
    
    

    Sie können die Merker-Kommentare auf diesem Bildschirm ändern.

    • Auf dem Bildschirm "Port Detail" wird der definierte Ausdruck angezeigt.

      Drücken Sie F5, LÖSCHEN, um den definierten Ausdruck zu löschen. Wenn die Meldung

      Ausdruck löschen?
      

      angezeigt wird, drücken Sie F4, JA.

    • Die aktuellen Werte aller Datenelemente im definierten Ausdruck werden im Überwachungsbereich angezeigt.

    • Sie können die Merker-Kommentare auf diesem Bildschirm ändern.

14.6.4. TC_ONLINE

TC_ONLINE ist vergleichbar mit einem Merker. Die TC_ONLINE-Anweisung definiert den Ausdruck, und der Ausdruck wird als Hintergrundlogik berechnet. Während das Ergebnis des Ausdrucks OFF ist, wird die Ausführung aller TP-Programme mit Gruppenbewegung gestoppt.

Die TC_ONLINE-Funktion ist standardmäßig deaktiviert, das TC-ONLINE-Menü wird nicht angezeigt, und die TC-ONLINE-Anweisung kann im TP-Programm nicht geteacht werden. Um die TC_ONLINE Funktion zu verwenden, muss $MIX_LOGIC.$USE_TCOL auf TRUE gesetzt werden.

Zum Beispiel

TC_ONLINE (DI[1] AND DI[2])

Nach dem Ausführen dieser Zeile werden alle TP-Programme gestoppt, wenn DI[1] oder DI[2] OFF ist. Siehe Tabelle 19, "TC-Online-Anweisung" .

Tabelle 19. TC-Online-Anweisung

TC_ONLINE (...) Definiert die Mixed Logic-Anweisung als TC_ONLINE-Ausdruck und aktiviert die TC_ONLINE-Funktion.
TC_ONLINE DEAKTIV* Deaktiviert die TC_ONLINE-Funnktion. Es wird kein TP-Programm gestoppt von TC_ONLINE, wenn TC_ONLINE deaktiviert ist.
TC_ONLINE AKTIV* Aktiviert die TC_ONLINE-Funktion. Wird verwendet, um den TC_ONLINE-Befehl zu aktivieren, der durch TC_ONLINE DEAKTIV deaktiviert wurde.

* TC_ONLINE DEAKTIV und TC_ONLINE AKTIV sind standardmäßig nicht verfügbar. Setzen Sie $MIX_LOGOC.$USE_TCOLSIM auf FALSE, um diese Anweisungen zu verwenden.

  • Wenn die Anweisung TC_ONLINE (...) ausgeführt wird, wird der angegebene Ausdruck als TC_ONLINE-Ausdruck definiert.

    Während TC_ONLINE aktiviert ist, wird der definierte Ausdruck als Hintergrundlogik berechnet.

    Während das Ergebnis des Ausdrucks OFF ist, wird die Ausführung aller TP- und KAREL-Programme außer NOPAUSE gestoppt.

  • Wenn ein Programm gestartet wird, während der TC_ONLINE-Ausdruck OFF ist, wird das Programm sofort angehalten. Alle Startarten sind von TC_ONLINE betroffen, außer SHIFT+BWD.

  • Nur wenn ein Programm von SHIFT+BWD ausgeführt wird, kann das Programm auch dann ausgeführt werden, wenn der TC_ONLINE-Ausdruck OFF ist.

  • Der TC_ONLINE-Ausdruck wird alle ITP (ITP ist normalerweise 8 ms), auch wenn die Scanzeit der Hintergrundlogik länger als ITP ist.

  • Programme, die keine Bewegungsgruppe haben, oder in denen der Parameter "Pause ignorieren" WAHR ist, werden nicht angehalten, auch wenn die TC_ONLINE-Bedingung OFF ist.

  • Wenn $MIX_LOGIC.$USE_TCOLSIM TRUE ist (Standardwert), können TC_ONLINE DEAKTIV und TC_ONLINE AKTIV im Menü "Bearbeiten" nicht geteacht werden. Die Einstellung AKTIV./DEAKTIV von TC_ONLINE muss im Menü TC_ONLINE geändert werden. In diesem Fall wird TC_ONLINE automatisch aktiviert, wenn die Ausführung der Bewegungsanweisung abgeschlossen ist. Dies bedeutet, dass TC_ONLINE nur deaktiviert wird, wenn der Bediener den Roboter temporär bewegt.

  • Wenn $MIX_LOGIC.$USE_TCOLSIM auf FALSCH gesetzt ist, können TC_ONLINE DEAKTIV und TC_ONLINE AKTIV im Menü "Bearbeiten" programmiert werden. Die Einstellung von AKTIV./DEAKTIV von TC_ONLINE wird nicht automatisch geändert, wenn die Ausführung der Bewegungsanweisung abgeschlossen ist.

Verwenden Sie Eine TC_ONLINE-Anweisung hinzufügen, um eine TC_ONLINE-Anweisung hinzuzufügen. Verwenden Sie Das Menü "TC_ONLINE-Monitor" anzeigen, um das Menü "TC_ONLINE-Monitor" anzuzeigen.

Verfahren 10. Eine TC_ONLINE-Anweisung hinzufügen

Schritte
  1. Drücken Sie im Menü "Bearbeiten" F1, ANWS, um zum Menü "Anweisung" zu wechseln.

  2. Wählen Sie TC_ONLINE.

    Wenn $MIX_LOGIC.$USE_TCOLSIM auf TRUE gesetzt ist, wählen Sie das Element, und vervollständigen Sie die Anweisung wie üblich.

    Wenn $MIX_LOGIC.$USE_TCOLSIM auf FALSE gesetzt ist,

    1. Wählen Sie "1 (...)".

    2. Wählen Sie das Element, und vervollständigen Sie die Anweisung wie üblich.

  3. Um eine TC_ONLINE-Anweisung zu ändern, drücken Sie F4 WAHL an der ersten "(" der TC_ONLINE-Anweisung, und wählen Sie 2 AKTIV.

Verfahren 11. Das Menü "TC_ONLINE-Monitor" anzeigen

Schritte
  1. Drücken Sie MENÜ.

  2. Wählen Sie "5 (I/O)".

  3. Wählen Sie F1, TYP.

  4. Wählen Sie TC ONLINE. Es wird ein Bildschirm ähnlich dem folgenden angezeigt:

    TC_ONLINE
    						                    1/6
     Status:                  Ein
     Aktiv:                   WAHR
     Ausdruck:
      ((DI[1] OR DI[2]) AND !DI[3] AND
      !(DI[4] UND DI[5]))
     Monitor:
      DI[1]                   ON
      DI[2]                   OFF
      DI[3]                   ON
      DI[4]                   OFF
      DI[5]                   OFF
    

    • Die Zeile "Aktivieren" zeigt an, ob TC_ONLINE aktiviert ist oder nicht. Der Benutzer kann dieses Element in diesem Menü ändern.

    • In der Zeile "Status" wird der Status von TC_ONLINE angezeigt. Dies ist das Ergebnis des definierten Ausdrucks.

    • Der aktuelle Wert aller Daten im definierten Ausdruck wird im Überwachungsbereich angezeigt.

    • Der definierten Ausdruck wird im Überwachungsbereich angezeigt.

  5. Setzen Sie den Cursor auf "Monitor", um den definierten Ausdruck zu löschen.

    1. Drücken Sie F5, LÖSCHEN. Die folgende Eingabeaufforderung wird angezeigt:

      Ausdruck löschen?
      

    2. Drücken Sie F4, JA.

14.7. Sichern/Wiederherstellen

Alle Daten der Mixed Logic-Anweisungen werden wie folgt gespeichert.

  • Mixed Logic-Anweisungen werden in der TP-Datei des Programms gespeichert.

  • Hintergrundlogik-Programme werden in der TP-Datei gespeichert.

  • Die Einstellung des Menüs "Hintergrundlogik" wird in MIXLOGIC.SV gespeichert.

    MIXLOGIC.SV hat den Wert der folgenden Systemvariablen.

    • $MIX_LOGIC

    • $MIX_BG

    • $MIX_MKR

    • $DRYRUN

    • $DRYRUN_PORT

    • $DRYRUN_SUB

  • Kommentare zu Flags und Merkern werden in DIOCFGSV.IO gespeichert.

  • Wenn DI/O, UI/O oder GI/O Flags zugewiesen sind, werden deren Zuweisungen in DIOCFGSV.IO gespeichert.