TIA Graph 7 Bit in Aktion negiert setzen

Ralle

Super-Moderator , User des Jahres 2006-2007
Teammitglied
Beiträge
15.424
Reaktionspunkte
4.046
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte folgendes in einer Graph 7 - Aktion ausführen:

(Kennung: N) "014_DATA_Station_14".Achse_01.bTravelToFixedStop := NOT "CELL_ORG".Cell[#CellIdx].NIGHTMODE

Das läßt Graph-7 offensichtlich nicht zu:

Fehlermessung: "Klammer ( erwartet"
Setze ich die Klammer --> Fehlermeldung "Operand vom Typ Bool ist nicht kompatibel mit dem erwarteten Typ USInt, LReal, Real, LInt, DInt, Int, SInt, ULInt, UDInt, UInt, LWord, DWord, Word, Byte, WChar, Char.,"

Ohne NOT geht es und funktioniert auch.
In einem normalen SCL-FB kann man das natürlich auch so machen.

Gibt es einen anderen Trick ioder muß ich dafür echt in der vorgeschalteten Aktion eine eigene negierte Variable beschreiben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
(Kennung: N) "014_DATA_Station_14".Achse_01.bTravelToFixedStop := NOT "CELL_ORG".Cell[#CellIdx].NIGHTMODE
Würde Graph7 denn
(Kennung: N) "014_DATA_Station_14".Achse_01.bTravelToFixedStop := "CELL_ORG".Cell[#CellIdx].NIGHTMODE XOR TRUE
akzeptieren?

Gruss, Heinileini

PS:
da war einer schneller! ;)
 
So richtig kann ich mir das nicht vorstellen das TIA das mit einen XOR zulässt,
das es ein Bit ist will er der Schritt es einfach auf TRUE zuweisen, solange der Schritt
aktiv ist.

Die Operation N führt eine Programmanweisung aus, solange der Schritt aktiv ist und eine optionale Interlock-Bedingung erfüllt ist. In Verbindung mit einem Ereig- nis wird die Programmanweisung einmalig in dem Programmzyklus ausgeführt, der dem Ereignis folgt.

Als Programmanweisungen sind alle Anweisungen zugelassen, die im Aufgaben- fenster in der Palette Anweisungen gelistet sind (mit Ausnahme der Verknüpfungen und Vergleicher im Ordner KOP bzw. FUP unter Einfache Anweisungen). Zusätzlich sind die Zuweisung und die einfache arithmetische Verknüpfung digitaler Werte erlaubt. Beispiele für Programmanweisungen in einer Aktion:

Code:
var1 := var2
var1 := var2 + var3
var1 := SIN(var2)
var1 := SHL_WORD(var2,var3)
CALL WAIT
(WT := var1
)
CALL TP TIME, "DB_name"
(IN := var1
 PT := var2
 Q  => var3
 ET => var4
)




Um es vernünftig zu machen, erstellst du einen FC, denn du im Schritt aufrufst und weißt
darin das Bit entsprechend zu oder du fragst den Schritt mit Schriit.X in den nachgeschalteten
Anweisungen ab und weißt dort zu. Finde ich irgendwie sauberer.
 
Nein, XOR ist das Selbe, wie mit NOT, er akzeptiert das nicht für boolsche Var. :cool:
Ich hab es nun in den vorgeschalteten Aktionen (FUP) invertiert auf eine Temp geschrieben.

Aber RN, ein FC dafür???

Es geht um primitive Zuweisungen in der Schrittkette, wie z.B.
Mit dem N hast du recht, vielleicht liegt es daran? Aber dann dürfte er das gar nicht erlauben, auch für Word nicht.

N: #Teil_IO := not #I_Teil_NIO_von_Kamera

So etwas muß doch einfach möglich sein, ohne einen Spagat hinzulegen.
S: #Teil_IO := not #I_Teil_NIO_von_Kamera

wäre mir auch lieber, nimmt er aber schon mit := nicht.

Man kann es über Verzweigungen machen, einmal mit UND, einmal mit UN.
 
Zuletzt bearbeitet:
Sieht doch auch komisch aus, wenn ich z.B. das IO-Bit erst setze und dann am Ende invertiere.
Da findet sich keiner mehr durch.
 
Man kann es über Verzweigungen machen, einmal mit UND, einmal mit UN.

Genauso mache ich es in so einem Fall.
Hab mich zwar auch schon oft über die Einschränkungen von Graph geärgert, aber mit der Verzweigung ist es übersichtlich und jeder sieht eigentlich schnell um was es geht.

Gruß
Blockmove
 
Zurück
Oben