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.
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 |
Positionstypdaten und Palettierungstypdaten können nicht für Gemischt Logisch-Anweisungen verwendet werden.
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 |
Gemischt Logisch-Anweisungen können in Zuordnungsanweisungen, IF-Anweisungen und WAIT-Anweisungen angegeben werden.
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 |
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.
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.
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:
Drücken Sie im Menü "Bearbeiten" F1, ANWS, um zum Menü "Anweisung" zu wechseln.
Wählen Sie die Art der Anweisung, die Sie hinzufügen möchten: Register, I/O, IF/SELECT oder WAIT.
Wählen Sie im Menü "Anweisung" die Gemischt Logisch-Anweisung, die Klammern enthält:
(...)
Erstellen Sie die Anweisung, wie Sie es normalerweise tun würden.
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.
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.
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.
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.
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.
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:
|
MODUS | Verwenden Sie dieses Element, um den Ausführungsmodus zu wählen:
|
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
Drücken Sie MENÜ.
Wählen Sie "6 SETUP".
Drücken Sie F1, "TYP".
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
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.
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.
Die Scanzeit der Ausführung im Normalmodus wird in der oberen Zeile des Bildschirms angezeigt.
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.
Drücken Sie die Taste F3, STOP, um die Ausführung eines Programms im Hintergrund zu stoppen.
Um ei Programm aus der Hintergrundausführung zu entfernen, drücken Sie F5, LÖSCHEN.
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
Drücken Sie MENÜ.
Wählen Sie "5 E/A".
Drücken Sie F1 [TYP].
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.
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.
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.
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
Drücken Sie MENÜ.
Wählen Sie "5 (I/O)".
Drücken Sie F1 [TYP].
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 [ ]
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.
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.
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
Drücken Sie im Menü "Bearbeiten" F1, ANWS, um zum Menü "Anweisung" zu wechseln.
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,
Wählen Sie "1 (...)".
Wählen Sie das Element, und vervollständigen Sie die Anweisung wie üblich.
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
Drücken Sie MENÜ.
Wählen Sie "5 (I/O)".
Wählen Sie F1, TYP.
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.
Setzen Sie den Cursor auf "Monitor", um den definierten Ausdruck zu löschen.
Drücken Sie F5, LÖSCHEN. Die folgende Eingabeaufforderung wird angezeigt:
Ausdruck löschen?
Drücken Sie F4, JA.
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.