Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Werkzeugstatus abfragen

Beitrag 26.09.2010, 10:30 Uhr
haglschdegga
Level 1 = Community-Lehrling
*
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
   
Beitrag 26.09.2010, 12:50 Uhr
Michi1965
Level 3 = Community-Techniker
***
IF $TC_TP8[$P_TOOLNO] B_AND 'B1000' ; Pruefen ob aktives Werkzeug vermessen ist (Bit3 auf "1" gesetzt)
GOTOF _M1
ENDIF


--------------------
"Geht nicht", gibt es nicht!
   
Beitrag 26.09.2010, 19:16 Uhr
haglschdegga
Level 1 = Community-Lehrling
*
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
   
Beitrag 26.09.2010, 20:59 Uhr
Michi1965
Level 3 = Community-Techniker
***
Wenn Du die interne Nummer des entsprechenden Werkzeuges schon kennst, kannst Du die auch gleich eintragen, klar!


--------------------
"Geht nicht", gibt es nicht!
   
Beitrag 04.10.2010, 13:57 Uhr
haglschdegga
Level 1 = Community-Lehrling
*
QUOTE (Michi1965 @ 26.09.2010, 20:59 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
   
Beitrag 04.10.2010, 14:27 Uhr
Michi1965
Level 3 = Community-Techniker
***
Ich würds so machen:
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


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!
   
Beitrag 04.10.2010, 16:08 Uhr
haglschdegga
Level 1 = Community-Lehrling
*
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
   
Beitrag 04.10.2010, 17:55 Uhr
Michi1965
Level 3 = Community-Techniker
***
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!
   
Beitrag 04.10.2010, 19:19 Uhr
haglschdegga
Level 1 = Community-Lehrling
*
Vielen Dank
jetzt steigt das Verständnis werde die sichere Variante 'B1000' verwenden

super mach weida so
   
Beitrag 04.10.2010, 22:05 Uhr
Michi1965
Level 3 = Community-Techniker
***
Und wenn Du abfragen willst, das Bit 3 nicht gesetzt ist:

IF NOT ($TC_TP8[_TNR] B_AND 'B1000' )


--------------------
"Geht nicht", gibt es nicht!
   
Beitrag 31.03.2014, 07:40 Uhr
stoeckl_grisi
Level 2 = Community-Facharbeiter
**
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
   
Beitrag 01.04.2014, 18:15 Uhr
nixalsverdruss
Level 7 = Community-Professor
*******
QUOTE (stoeckl_grisi @ 31.03.2014, 07:40 Uhr) *
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?


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 an Doofen Pack im Forum
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: