Siemens
Digital Industries, Motion Control, Machine Tool Systems
Werkzeugstatus abfragen
26.09.2010, 10:30 Uhr
Hallo zusammen
möchte gerne über die Variable $TC_TP8[n] den Zustand des Werkzeugs abfragen , hierbei aber nur ob das Werkzeug vermessen ist .
Werkzeugstatus A/F/G/M/V/W/P/E nur Status M abfragen und bei nicht vermessen Gotof...... wie schreibe ich das korrekt.
IF $TC_TP8[63] ???? abfragen Status M vermessen ja od nein.
GOTOF _M1
Vielen Dank im voraus
möchte gerne über die Variable $TC_TP8[n] den Zustand des Werkzeugs abfragen , hierbei aber nur ob das Werkzeug vermessen ist .
Werkzeugstatus A/F/G/M/V/W/P/E nur Status M abfragen und bei nicht vermessen Gotof...... wie schreibe ich das korrekt.
IF $TC_TP8[63] ???? abfragen Status M vermessen ja od nein.
GOTOF _M1
Vielen Dank im voraus
26.09.2010, 12:50 Uhr
IF $TC_TP8[$P_TOOLNO] B_AND 'B1000' ; Pruefen ob aktives Werkzeug vermessen ist (Bit3 auf "1" gesetzt)
GOTOF _M1
ENDIF
GOTOF _M1
ENDIF
--------------------
"Geht nicht", gibt es nicht!
26.09.2010, 19:16 Uhr
Vielen Dank
werde es morgen mal testen ,
dürfte egal sein ob ich nach aktivem oder der internen T-Nummer frage [$SP_TOOLNO] , [T1-32000] ?
Schönen Abend
werde es morgen mal testen ,
dürfte egal sein ob ich nach aktivem oder der internen T-Nummer frage [$SP_TOOLNO] , [T1-32000] ?
Schönen Abend
26.09.2010, 20:59 Uhr
Wenn Du die interne Nummer des entsprechenden Werkzeuges schon kennst, kannst Du die auch gleich eintragen, klar!
--------------------
"Geht nicht", gibt es nicht!
04.10.2010, 13:57 Uhr
Wenn Du die interne Nummer des entsprechenden Werkzeuges schon kennst, kannst Du die auch gleich eintragen, klar!
HALLO Michi
Die Abfrage des Zustandes über R - Parameter funktioniert einwandfrei M=8 / - =0
Beim folgendem Programm funktioniert der Sprungbefehl oder die Abfrage nicht ??
Was ist am Programm falsch?
Ich möchte je nach Zustand des Bit 3 (0/8) die Sprunganweisung ausführen.
N10 ;LESEN DES WKZ-STATUS M VERMESSEN JA/NEIN
N20 DEF INT _TNR
N30 _TNR=GETT("10",1) ;LESEN DER INTERNEN WKZ-NUMMER WKZ=T10
N40 IF (($TC_TP8[_TNR] AND 8)==8) GOTOF _END
N50 IF (($TC_TP8[_TNR] AND 8)==0) GOTOF _BLUM
N60 ENDIF
N70 ENDIF
N100 G0 G153 Z=-5.1
N110 _BLUM:
N130 G04 F2
N140 G1 X=IC(10) Y=IC(10) Z=IC(-100) F200
N150 _END:
N160 G04 F3
N170 G1 X=IC(-9) Y=IC(-9) Z=IC(99) F200
N180 M17
04.10.2010, 14:27 Uhr
Ich würds so machen:
Du hast zum einen doppelt abgefragt, das kann man sich sparen. Wenn beim o.g. Beispiel Das Bit den Zustand 8 hat, wird zum Ende gesprungen, ist es hingegen unterschiedlich, wird die BLUM-Schleife durchlaufen.
Zum anderen bin ich mir nicht sicher, ob bei unvermessenen Werkzeugen das Bit tatsächlich auf 0 steht, da haben die anderen Zustände bestimmt auch ein Wörtchen mitzureden. Daher lieber mit B_AND 'B1000' abfragen.
Nach Zeilen wie N40 IF ($TC_TP8[_TNR] B_AND 'B1000' ) GOTOF _END kann man sich obendrein das Endif sparen, die Bedingung steht schon im Satz mit drin. Funktioniert aber nur mit Sprungbefehlen, bei Rechenoperationen hingegen nicht.
Der Beitrag wurde von Michi1965 bearbeitet: 04.10.2010, 14:29 Uhr
QUOTE
N10 ;LESEN DES WKZ-STATUS M VERMESSEN JA/NEIN
N20 DEF INT _TNR
N30 _TNR=GETT("10",1) ;LESEN DER INTERNEN WKZ-NUMMER WKZ=T10
N40 IF ($TC_TP8[_TNR] B_AND 'B1000' ) GOTOF _END
N100 G0 G153 Z=-5.1
N130 G04 F2
N140 G1 X=IC(10) Y=IC(10) Z=IC(-100) F200
N150 _END:
N160 G04 F3
N170 G1 X=IC(-9) Y=IC(-9) Z=IC(99) F200
N180 M17
N20 DEF INT _TNR
N30 _TNR=GETT("10",1) ;LESEN DER INTERNEN WKZ-NUMMER WKZ=T10
N40 IF ($TC_TP8[_TNR] B_AND 'B1000' ) GOTOF _END
N100 G0 G153 Z=-5.1
N130 G04 F2
N140 G1 X=IC(10) Y=IC(10) Z=IC(-100) F200
N150 _END:
N160 G04 F3
N170 G1 X=IC(-9) Y=IC(-9) Z=IC(99) F200
N180 M17
Du hast zum einen doppelt abgefragt, das kann man sich sparen. Wenn beim o.g. Beispiel Das Bit den Zustand 8 hat, wird zum Ende gesprungen, ist es hingegen unterschiedlich, wird die BLUM-Schleife durchlaufen.
Zum anderen bin ich mir nicht sicher, ob bei unvermessenen Werkzeugen das Bit tatsächlich auf 0 steht, da haben die anderen Zustände bestimmt auch ein Wörtchen mitzureden. Daher lieber mit B_AND 'B1000' abfragen.
Nach Zeilen wie N40 IF ($TC_TP8[_TNR] B_AND 'B1000' ) GOTOF _END kann man sich obendrein das Endif sparen, die Bedingung steht schon im Satz mit drin. Funktioniert aber nur mit Sprungbefehlen, bei Rechenoperationen hingegen nicht.
Der Beitrag wurde von Michi1965 bearbeitet: 04.10.2010, 14:29 Uhr
--------------------
"Geht nicht", gibt es nicht!
04.10.2010, 16:08 Uhr
Erst mal fett merci !!
das du so flott bist , Danke
Wenn ich in der WKZ_Tabelle das M manuell setze oder lösche und über
R10=($TC_TP8[_TNR] B_AND 8) abfrage erhalte ich die 0 oder die 8
Mir fehlt der Bezug zu 'B1000' was verbirgt sich dahinter ?
warum funktioniert die Abfrage mit Sprung nicht ?
IF (($TC_TP8[_TNR] AND 8)==8)
Doppelt Abfragen musste auch möglich sein wenn auch nicht benötigt.?
Vielleicht fällt euch noch was ein dazu MERCI
das du so flott bist , Danke
Wenn ich in der WKZ_Tabelle das M manuell setze oder lösche und über
R10=($TC_TP8[_TNR] B_AND 8) abfrage erhalte ich die 0 oder die 8
Mir fehlt der Bezug zu 'B1000' was verbirgt sich dahinter ?
warum funktioniert die Abfrage mit Sprung nicht ?
IF (($TC_TP8[_TNR] AND 8)==8)
Doppelt Abfragen musste auch möglich sein wenn auch nicht benötigt.?
Vielleicht fällt euch noch was ein dazu MERCI
04.10.2010, 17:55 Uhr
Die Systemadresse $TP_TP8 besteht aus insgesamt 12 Bits vom Typ BOOL (Unter eben der einen Adresse!), wobei man mit Mit B _AND kann man jedes einzelne Bit auf dessen Wahrheitsgehalt TRUE oder FALSE hin überprüfen kann. Allerdings nicht Dezimal, sondern Bitweise. Jedes Bit hat zwar auch einen einzelnen Dezimalwert, allerdings werden alle Dezimalwerte addiert, bis maximal 256 (bei 16 Bit) Daher ist es schlecht, den INT-Wert von _TP8 für eine Entscheidung heranzuziehen.
Stelle Dir das als ein Miethaus mit 12 Wohnungen vor und Du willst wissen, ob Mieter 3 zu Hause ist. Mit der von Dir gestellten Abrfrage hast Du nachgefragt, wieviele Mieter derzeit im Haus sind, eben 8. Kann sein, das dabei auch der Mieter 3 ist, muss er aber nicht. Und mit IF (($TC_TP8[_TNR] AND 8)==0) hast Du abgefragt auf "Werkzeug nicht freigegeben".
Bit 0 fragt man mit B _AND 'B1' auf TRUE ab
Bit 3 mit B _AND 'B1000'
Bit 12 mit B _AND 'B100000000000'
Werden beispielsweise Bit 3+4 abgefragt so nimmt man B _AND 'B11000' ,
Führende Nullen kann man wieder einmal weglassen und nicht abgefragte Bits werden einfach ignoriert, d.h. ob Zustand 0 oder 1 ist egal.
Anhang aus der DocOnWeb:
Wert 0 nicht freigegeben
Bit 0 aktives Werkzeug (A)
Bit 1 freigegeben (F)
Bit 2 gesperrt (G)
Bit 3 vermessen (M)
Bit 4 Vorwarngrenze erreicht (V)
Bit 5 WZ im Wechsel (W)
Bit 6 festplatzcodiert (P)
Bit 7 WZ war im Einsatz (E)
Bit 8 Kennung für Werkzeuge im Zwischenspeicher
Bit 9=1 ignoriere Gesperrtzustand
Bit 9=0 nicht ignorieren
Bit 10 zu entladen
Bit 11 zu beladen
Bit 12 Stammwerkzeug
Die Buchstaben in Klammern geben die Bezeichnung auf der HMI-Maske wieder. toolState WORD 0=nicht freigegeben
Der Beitrag wurde von Michi1965 bearbeitet: 04.10.2010, 17:58 Uhr
--------------------
"Geht nicht", gibt es nicht!
04.10.2010, 19:19 Uhr
Vielen Dank
jetzt steigt das Verständnis werde die sichere Variante 'B1000' verwenden
super mach weida so
jetzt steigt das Verständnis werde die sichere Variante 'B1000' verwenden
super mach weida so
04.10.2010, 22:05 Uhr
Und wenn Du abfragen willst, das Bit 3 nicht gesetzt ist:
IF NOT ($TC_TP8[_TNR] B_AND 'B1000' )
IF NOT ($TC_TP8[_TNR] B_AND 'B1000' )
--------------------
"Geht nicht", gibt es nicht!
31.03.2014, 07:40 Uhr
stoeckl_grisi
Level 2 = Community-Facharbeiter
Gruppe: Mitglied
Mitglied seit: 31.01.2013
Beiträge: 70
Mitglied seit: 31.01.2013
Beiträge: 70
Hi,
hab auch gerade ein Problem mit der Werkzeugstatusabfrage.
Ich möchte über ein Programm bestimmte Werkzeuge sperren und dann später über ein anderes Programm wieder entsperren.
Ist das möglich? Wenn ja, wie?
Wäre über Hilfe sehr dankbar :-)
PS: Steuerung 840D SL
Gruß
Christoph
hab auch gerade ein Problem mit der Werkzeugstatusabfrage.
Ich möchte über ein Programm bestimmte Werkzeuge sperren und dann später über ein anderes Programm wieder entsperren.
Ist das möglich? Wenn ja, wie?
Wäre über Hilfe sehr dankbar :-)
PS: Steuerung 840D SL
Gruß
Christoph
01.04.2014, 18:15 Uhr
nixalsverdruss
Level 7 = Community-Professor
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
Mitglied seit: 16.11.2003
Beiträge: 1.511
hab auch gerade ein Problem mit der Werkzeugstatusabfrage.
Ich möchte über ein Programm bestimmte Werkzeuge sperren und dann später über ein anderes Programm wieder entsperren.
Ist das möglich? Wenn ja, wie?
Ich möchte über ein Programm bestimmte Werkzeuge sperren und dann später über ein anderes Programm wieder entsperren.
Ist das möglich? Wenn ja, wie?
sind hier eigentlich nur noch Deppen unterwegs ?
wenn man sich schon die mühe macht einen 4 Jahre alten Fred ausgräbt könnte man den ja auch mal lesen
spätestens nach dem man die Antwort von Michi1965 (Geschrieben: 04.10.2010, 17:55 Uhr) gelesen hat, sollte man wissen wie man Werkzeug sperren kann
--------------------
There are only 10 types of people in the world: Those who understand binary, and those who don't
Wir haben einen exponentiellen Zuwachs anDoofen Pack im Forum
Wir haben einen exponentiellen Zuwachs an
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: