Siemens
Digital Industries, Motion Control, Machine Tool Systems
8841
Follower:innenÜbersicht Magazinbelegung, Werkzeugübersicht erstellen + drucken
22.05.2008, 13:07 Uhr
Ich (bzw. die Werker an der Maschine) hätten gern eine Übersicht mit den im Magazin vorhandenen Werkzeugen, damit sie sich nicht immer durch die Menüs hangeln müssen, wenn sie mal etwas suchen oder vergleichen wollen.
Gibt es eine Möglichkeit, die belegten Plätze mit den dazugehörigen Daten auszulesen? Ideal wäre ein Script, welches die betreffenden Daten gleich in eine Datei schreibt, welche man dann ausdrucken könnte.
Hat jemand so etwas schon mal probiert, oder kennt eine Lösung für das Problem?
Danke an alle, die sich die Mühe machen und helfen!
Gibt es eine Möglichkeit, die belegten Plätze mit den dazugehörigen Daten auszulesen? Ideal wäre ein Script, welches die betreffenden Daten gleich in eine Datei schreibt, welche man dann ausdrucken könnte.
Hat jemand so etwas schon mal probiert, oder kennt eine Lösung für das Problem?
Danke an alle, die sich die Mühe machen und helfen!
22.05.2008, 14:40 Uhr
TheBlackBird®
Level 2 = Community-Facharbeiter
Gruppe: Mitglied
Mitglied seit: 21.01.2006
Beiträge: 78
Mitglied seit: 21.01.2006
Beiträge: 78
Moin,
Die Fragen dabei sind dann:
-Wieviele Magazine hat die Anlage?
-Wenn mehrere Magazine-> wieviele Plaetze haben die einzelnen Magazine?
-Soll der Zwischenspeicher (Spindel, evtl. vorhandener Doppelgreifer etc.) beruecksichtigt werden?
-Wenn Zwischenspeicher ja-> Wieviele Plaetze hat dieser? Welche davon sollen beruecksichtigt werden?
-Welche Daten sollen pro Wkz erfasst werden?
-...
Nachfolgend mal ein Ansatz:
Die Maschine hat 1 Magazin mit 80 Plaetzen.
Der Zwischenspeicher hat 6 Plaetze, wovon aber nur 1, 5 und 6 ausgelesen werden sollen.
Erfasst werden nur der Werkzeugbezeichner und die DuploNr. der belegten Magazinplaetze.
Aufzurufen ist das dann z.B. im MDI mittels:
Dabei kommt dann folgende Liste als WKZLISTE.MPF im MPF.DIR zustande.
Das M30 ist fuer den Fall, dass das File aus Versehen doch einmal ausgefuehrt wird. Es folgen Datum und Uhrzeit der Erstellung auf der Maschine. 8stellige Zahl ist bei uns der WKZ-Bezeichner, die Ziffer hinter dem Doppelpunkt ist die DuploNummer.
Cu TheBlackBird ®
Der Beitrag wurde von TheBlackBird® bearbeitet: 22.05.2008, 14:45 Uhr
Die Fragen dabei sind dann:
-Wieviele Magazine hat die Anlage?
-Wenn mehrere Magazine-> wieviele Plaetze haben die einzelnen Magazine?
-Soll der Zwischenspeicher (Spindel, evtl. vorhandener Doppelgreifer etc.) beruecksichtigt werden?
-Wenn Zwischenspeicher ja-> Wieviele Plaetze hat dieser? Welche davon sollen beruecksichtigt werden?
-Welche Daten sollen pro Wkz erfasst werden?
-...
Nachfolgend mal ein Ansatz:
Die Maschine hat 1 Magazin mit 80 Plaetzen.
Der Zwischenspeicher hat 6 Plaetze, wovon aber nur 1, 5 und 6 ausgelesen werden sollen.
Erfasst werden nur der Werkzeugbezeichner und die DuploNr. der belegten Magazinplaetze.
Aufzurufen ist das dann z.B. im MDI mittels:
CODE
UP_IWZ_IM
M2
M2
CODE
PROC UP_IWZ_IM SBLOF DISPLOF
DEF INT ERROR, MAGNUM, ZAEHL, DUNR
DEF STRING[8] WZNAME
DEF STRING[10] NAME="WKZLISTE" ;NAME DER ZIELDATEI
DEF STRING[20] PFAD="_N_MPF_DIR" ;PFAD FUER DIE ZIELDATEI
DEF STRING[40] DATEI ;ZUSAMMENFASSUNG PFAD UND NAME
DEF STRING[12] SIGNATURE
DEF STRING[3] SCRATCH
DATEI="/"<<PFAD<<"/_N_"<<NAME<<"_MPF"
DELETE(ERROR,DATEI) ;ALTES ZIEL LOESCHEN
WRITE(ERROR,DATEI,"M30")
;DATUM UND ZEIT SCHREIBEN
IF $A_DAY<10
SCRATCH="0"<<$A_DAY<<"."
ELSE
SCRATCH=""<<$A_DAY<<"."
ENDIF
SIGNATURE=SCRATCH
IF $A_MONTH<10
SCRATCH="0"<<$A_MONTH<<"."
ELSE
SCRATCH=""<<$A_MONTH<<"."
ENDIF
SIGNATURE=SIGNATURE<<SCRATCH
IF $A_YEAR<10
SCRATCH="0"<<$A_YEAR<<""
ELSE
SCRATCH=""<<$A_YEAR<<""
ENDIF
SIGNATURE=SIGNATURE<<SCRATCH
WRITE(ERROR,DATEI,SIGNATURE)
IF $A_HOUR<10
SCRATCH="0"<<$A_HOUR<<":"
ELSE
SCRATCH=""<<$A_HOUR<<":"
ENDIF
SIGNATURE=SCRATCH
IF $A_MINUTE<10
SCRATCH="0"<<$A_MINUTE<<":"
ELSE
SCRATCH=""<<$A_MINUTE<<":"
ENDIF
SIGNATURE=SIGNATURE<<SCRATCH<<"00"
WRITE(ERROR,DATEI,SIGNATURE)
WRITE(ERROR,DATEI,";----------------")
;ZWISCHENSPEICHER AUSLESEN
MAGNUM=9998
FOR ZAEHL=1 TO 6
IF NOT (ZAEHL==2) XOR (ZAEHL==3) XOR (ZAEHL==4);Plaetze 2, 3 und 4 nicht benoetigt
IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0
WZNAME=$TC_TP2[$TC_MPP6[MAGNUM,ZAEHL]]
DUNR=$TC_TP1[$TC_MPP6[MAGNUM,ZAEHL]]
WRITE(ERROR,DATEI,WZNAME <<" : "<<DUNR)
IF NOT ERROR==0 GOTOF FEHLER
ENDIF
ENDIF
ENDFOR
;MAGAZIN ABGRASEN
FOR ZAEHL=1 TO 80
IF NOT $TC_MPP6[1,ZAEHL]==0
WZNAME=$TC_TP2[$TC_MPP6[1,ZAEHL]]
DUNR=$TC_TP1[$TC_MPP6[1,ZAEHL]]
WRITE(ERROR,DATEI,WZNAME <<" : "<<DUNR)
IF NOT ERROR==0 GOTOF FEHLER
ENDIF
ENDFOR
M17
FEHLER:
MSG("BEIM AUSLESEN DER Wz-DATEN IST EIN FEHLER AUFGETRETEN! (NR:"<<ERROR<<")")
STOPRE
DELETE(ERROR,DATEI)
M0
M17
DEF INT ERROR, MAGNUM, ZAEHL, DUNR
DEF STRING[8] WZNAME
DEF STRING[10] NAME="WKZLISTE" ;NAME DER ZIELDATEI
DEF STRING[20] PFAD="_N_MPF_DIR" ;PFAD FUER DIE ZIELDATEI
DEF STRING[40] DATEI ;ZUSAMMENFASSUNG PFAD UND NAME
DEF STRING[12] SIGNATURE
DEF STRING[3] SCRATCH
DATEI="/"<<PFAD<<"/_N_"<<NAME<<"_MPF"
DELETE(ERROR,DATEI) ;ALTES ZIEL LOESCHEN
WRITE(ERROR,DATEI,"M30")
;DATUM UND ZEIT SCHREIBEN
IF $A_DAY<10
SCRATCH="0"<<$A_DAY<<"."
ELSE
SCRATCH=""<<$A_DAY<<"."
ENDIF
SIGNATURE=SCRATCH
IF $A_MONTH<10
SCRATCH="0"<<$A_MONTH<<"."
ELSE
SCRATCH=""<<$A_MONTH<<"."
ENDIF
SIGNATURE=SIGNATURE<<SCRATCH
IF $A_YEAR<10
SCRATCH="0"<<$A_YEAR<<""
ELSE
SCRATCH=""<<$A_YEAR<<""
ENDIF
SIGNATURE=SIGNATURE<<SCRATCH
WRITE(ERROR,DATEI,SIGNATURE)
IF $A_HOUR<10
SCRATCH="0"<<$A_HOUR<<":"
ELSE
SCRATCH=""<<$A_HOUR<<":"
ENDIF
SIGNATURE=SCRATCH
IF $A_MINUTE<10
SCRATCH="0"<<$A_MINUTE<<":"
ELSE
SCRATCH=""<<$A_MINUTE<<":"
ENDIF
SIGNATURE=SIGNATURE<<SCRATCH<<"00"
WRITE(ERROR,DATEI,SIGNATURE)
WRITE(ERROR,DATEI,";----------------")
;ZWISCHENSPEICHER AUSLESEN
MAGNUM=9998
FOR ZAEHL=1 TO 6
IF NOT (ZAEHL==2) XOR (ZAEHL==3) XOR (ZAEHL==4);Plaetze 2, 3 und 4 nicht benoetigt
IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0
WZNAME=$TC_TP2[$TC_MPP6[MAGNUM,ZAEHL]]
DUNR=$TC_TP1[$TC_MPP6[MAGNUM,ZAEHL]]
WRITE(ERROR,DATEI,WZNAME <<" : "<<DUNR)
IF NOT ERROR==0 GOTOF FEHLER
ENDIF
ENDIF
ENDFOR
;MAGAZIN ABGRASEN
FOR ZAEHL=1 TO 80
IF NOT $TC_MPP6[1,ZAEHL]==0
WZNAME=$TC_TP2[$TC_MPP6[1,ZAEHL]]
DUNR=$TC_TP1[$TC_MPP6[1,ZAEHL]]
WRITE(ERROR,DATEI,WZNAME <<" : "<<DUNR)
IF NOT ERROR==0 GOTOF FEHLER
ENDIF
ENDFOR
M17
FEHLER:
MSG("BEIM AUSLESEN DER Wz-DATEN IST EIN FEHLER AUFGETRETEN! (NR:"<<ERROR<<")")
STOPRE
DELETE(ERROR,DATEI)
M0
M17
Dabei kommt dann folgende Liste als WKZLISTE.MPF im MPF.DIR zustande.
CODE
M30
22.05.08
15:17:00
;----------------
41232038 : 1
40932022 : 1
49906010 : 2
99999999 : 1
42520010 : 1
46408020 : 1
22.05.08
15:17:00
;----------------
41232038 : 1
40932022 : 1
49906010 : 2
99999999 : 1
42520010 : 1
46408020 : 1
Das M30 ist fuer den Fall, dass das File aus Versehen doch einmal ausgefuehrt wird. Es folgen Datum und Uhrzeit der Erstellung auf der Maschine. 8stellige Zahl ist bei uns der WKZ-Bezeichner, die Ziffer hinter dem Doppelpunkt ist die DuploNummer.
Cu TheBlackBird ®
Der Beitrag wurde von TheBlackBird® bearbeitet: 22.05.2008, 14:45 Uhr
22.05.2008, 15:33 Uhr
Vielen Dank Blackbird,
obwohl ich im Moment keine Zeit zum Ausprobieren habe (Programmtest ), so erscheint mir der Ansatz doch sehr vielversprechend.
Mir geht es beim Auslesen nur um ein Magazin (1) mit 164 Plätzen. Neben den Werkzeugnamen möchte ich auch die Platz-Nr, den Typ sowie die Länge 1 und den Radius für Schneide 1 und 2 auslesen lassen.
Perfekt wäre das Ganze natürlich in Tabellenform, hier vermute ich aber, dass Siemens keine entsprechenden Anweisungen/Befehle anbietet.
Ich merke gerade, dass das Quatsch ist, die Tabellen auf dem Display der Steuerung schreiben sich ja auch nicht allein.
Leider muss ich nun erstmal in die Werkstatt und mich mit den bei weitem nicht so spannenden Alltagsproblemen plagen.
Vielen Dank erst einmal für deine Hilfe!!!
PS: Hoffentlich komme ich bald zum testen. Auf jeden Fall werde ich ich berichten, ob und wie es funktioniert hat.
Über weitere Hinweise würde ich mich freuen.
obwohl ich im Moment keine Zeit zum Ausprobieren habe (Programmtest ), so erscheint mir der Ansatz doch sehr vielversprechend.
Mir geht es beim Auslesen nur um ein Magazin (1) mit 164 Plätzen. Neben den Werkzeugnamen möchte ich auch die Platz-Nr, den Typ sowie die Länge 1 und den Radius für Schneide 1 und 2 auslesen lassen.
Perfekt wäre das Ganze natürlich in Tabellenform, hier vermute ich aber, dass Siemens keine entsprechenden Anweisungen/Befehle anbietet.
Ich merke gerade, dass das Quatsch ist, die Tabellen auf dem Display der Steuerung schreiben sich ja auch nicht allein.
Leider muss ich nun erstmal in die Werkstatt und mich mit den bei weitem nicht so spannenden Alltagsproblemen plagen.
Vielen Dank erst einmal für deine Hilfe!!!
PS: Hoffentlich komme ich bald zum testen. Auf jeden Fall werde ich ich berichten, ob und wie es funktioniert hat.
Über weitere Hinweise würde ich mich freuen.
22.05.2008, 15:52 Uhr
Habt ihr schon mal einen USB - Stick ausbrobiert.
--------------------
Das dringendste Problem der Technologie von heute ist nicht mehr die Befriedigung von Grundbedürfnissen und uralten Wünschen der Menschen, sondern die Beseitigung von Übeln und Schäden, welche uns die Technologie von gestern hinterlassen hat.
Dennis Gabor (1900-79), ungar.-brit. Physiker, Entwickler der Holographie, 1971 Nobelpr.
22.05.2008, 20:55 Uhr
QUOTE (Boern @ Donnerstag, 22.Mai 2008, 15:52 Uhr)
Habt ihr schon mal einen USB - Stick ausbrobiert.
Hehe, USB-Stick, eine qualifizierte Antwort.
Schreib mal bitte ein wenig mehr dazu, in welcher Form sollen die Daten auf den USB-Stick kommen und auf welche Art?
Du meinst doch nicht als TOA - Daten, oder doch? Das ist zwar leicht, aber dann braucht man immer noch ein Programm, welches die Daten aufbereitet und alles überflüssige entfernt.
23.05.2008, 21:16 Uhr
Hallo
Nun die Idee mit dem Auslesen der TOA auf einen USB-Stick oder über Netzwerk ist gar nicht so abwegig, zumal die Aufbereitung mit einem Editor wie UltraEdit viel einfacher wäre als auf der Steuerung. Die Makro- und Skriptmöglichkeiten in UE sind funktional weitaus vielfältiger und einacher zu erstellen, als sich auf der Steuerung mit Wizard zu plagen.
Ein UP wie das von Blackbird ist schon auch Ok, das habe ich auch mal gemacht. Das unschöne daran ist halt, dass man die Auswertung nicht hauptzeitparallel ausführen kann. Bei Maschinen mit grösseren Magazinen kann das dann gut in die Minuten gehen + Arbeitsunterbruch etc.
Die von Siemens zweckmässige Lösung hierfür heisst SinTDI. Habe mich damit allerdings auch noch nie wirklich auseinandergesetzt. Mir wurde das lediglich vor einiger Zeit beim Maschinenhersteller kurz vorgeführt.
Sollte zur Datenaufbereitung ein UE-Makro erforderlich sein, bitte melden.
Nun die Idee mit dem Auslesen der TOA auf einen USB-Stick oder über Netzwerk ist gar nicht so abwegig, zumal die Aufbereitung mit einem Editor wie UltraEdit viel einfacher wäre als auf der Steuerung. Die Makro- und Skriptmöglichkeiten in UE sind funktional weitaus vielfältiger und einacher zu erstellen, als sich auf der Steuerung mit Wizard zu plagen.
Ein UP wie das von Blackbird ist schon auch Ok, das habe ich auch mal gemacht. Das unschöne daran ist halt, dass man die Auswertung nicht hauptzeitparallel ausführen kann. Bei Maschinen mit grösseren Magazinen kann das dann gut in die Minuten gehen + Arbeitsunterbruch etc.
Die von Siemens zweckmässige Lösung hierfür heisst SinTDI. Habe mich damit allerdings auch noch nie wirklich auseinandergesetzt. Mir wurde das lediglich vor einiger Zeit beim Maschinenhersteller kurz vorgeführt.
Sollte zur Datenaufbereitung ein UE-Makro erforderlich sein, bitte melden.
--------------------
"Wenn die Torte spricht, hat der Krümel zu schweigen!"
24.05.2008, 16:31 Uhr
QUOTE (Schothorn @ Donnerstag, 22.Mai 2008, 20:55 Uhr)
Du meinst doch nicht als TOA - Daten, oder doch? Das ist zwar leicht, aber dann braucht man immer noch ein Programm, welches die Daten aufbereitet und alles überflüssige entfernt.
Wie ausgelesenen Daten sich nennen weiß ich auch nicht.
Genau einfach mit einem zusätzlichem Programm weiter bearbeiten. Ist halt mit nicht wenig Zeit verbunden ! Oder von Siemens was stricken lassen, wäre mal eine Anfrage wert !
--------------------
Das dringendste Problem der Technologie von heute ist nicht mehr die Befriedigung von Grundbedürfnissen und uralten Wünschen der Menschen, sondern die Beseitigung von Übeln und Schäden, welche uns die Technologie von gestern hinterlassen hat.
Dennis Gabor (1900-79), ungar.-brit. Physiker, Entwickler der Holographie, 1971 Nobelpr.
26.05.2008, 06:32 Uhr
So, zwischenzeitlich hatte ich nun Gelegenheit, das Programm mal zu testen. Vorher habe ich es für unsere Bedürfnisse angepasst.
Dabei ist allerdings ein Problem aufgetreten - hier der Betreffende Code-Abschnitt:
In N70 bis N73 versuche ich, das Vorhandensein einer 2.Schneide zu prüfen und diese - so vorhanden - auch auslesen zu lassen.
Dabei bemängelt die Steuerung: ... Array, falsche Index - Nummer.
Kann jemand dieses Problem lösen? Wie muss ich prüfen, ob ein Array ein bestimmtes Feld aufweist, bzw. wie müsste der Code lauten, alle vorhandenen Elemente eines Arrays abzuarbeiten?
Vielen Dank an alle!
Dabei ist allerdings ein Problem aufgetreten - hier der Betreffende Code-Abschnitt:
CODE
N47 MAGNUM=1
N62 WRITE(ERROR,DATEI,";-----------------------------")
N63 WRITE(ERROR,DATEI,";Werkzeuge in Magazin 1")
N64 FOR ZAEHL=1 TO 164
N65 IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0
N66 WZNAME=$TC_TP2[$TC_MPP6[MAGNUM,ZAEHL]]
;DUNR=$TC_TP1[$TC_MPP6[MAGNUM,ZAEHL]]
N67 WKZTYP=$TC_DP1[$TC_MPP6[MAGNUM,ZAEHL],1]
N68 LAENG1=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],1]
N69 RAD1=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],1]
N70 IF ($TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2])
N71 RAD2=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]
N72 LAENG2=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],2]
N73 ENDIF
N74 WRITE(ERROR,DATEI,WZNAME <<" Typ: "<<WKZTYP<<" L1= "<<LAENG1<<" R1= "<<RAD1<<" L2= "<<LAENG2<<" R2= "<<RAD2)
N75 IF NOT ERROR==0 GOTOF FEHLER
N76 ENDIF
N77 ENDFOR
N62 WRITE(ERROR,DATEI,";-----------------------------")
N63 WRITE(ERROR,DATEI,";Werkzeuge in Magazin 1")
N64 FOR ZAEHL=1 TO 164
N65 IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0
N66 WZNAME=$TC_TP2[$TC_MPP6[MAGNUM,ZAEHL]]
;DUNR=$TC_TP1[$TC_MPP6[MAGNUM,ZAEHL]]
N67 WKZTYP=$TC_DP1[$TC_MPP6[MAGNUM,ZAEHL],1]
N68 LAENG1=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],1]
N69 RAD1=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],1]
N70 IF ($TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2])
N71 RAD2=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]
N72 LAENG2=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],2]
N73 ENDIF
N74 WRITE(ERROR,DATEI,WZNAME <<" Typ: "<<WKZTYP<<" L1= "<<LAENG1<<" R1= "<<RAD1<<" L2= "<<LAENG2<<" R2= "<<RAD2)
N75 IF NOT ERROR==0 GOTOF FEHLER
N76 ENDIF
N77 ENDFOR
In N70 bis N73 versuche ich, das Vorhandensein einer 2.Schneide zu prüfen und diese - so vorhanden - auch auslesen zu lassen.
Dabei bemängelt die Steuerung: ... Array, falsche Index - Nummer.
Kann jemand dieses Problem lösen? Wie muss ich prüfen, ob ein Array ein bestimmtes Feld aufweist, bzw. wie müsste der Code lauten, alle vorhandenen Elemente eines Arrays abzuarbeiten?
Vielen Dank an alle!
27.05.2008, 10:44 Uhr
Hier der aktuelle Programmtext für das Auslesen der Werkzeuge:
Beim Ablauf treten allerdings folgende Fehler auf:
1. Abbruch des Programmes mit Fehler 10: (Datei ist voll)
Wenn ich die Sprungbefehle zum Fehler auskommentiere arbeitet das Programm, allerdings nur bis zum 17. Werkzeug. Es sind aber über 60 Werkzeuge in Magazin 1.
2. Das Programm springt bei N740 nicht in die Routine für die 2.Schneide, obwohl im Magazin Werkzeuge mit 2. Schneide vorhanden sind.
An dieser Stelle weiß ich nun keinen Rat mehr und bitte nochmals um eure Mithilfe!
Vielen Dank im vorraus!
CODE
N1 PROC WKZLISTE SBLOF DISPLOF
;************************************************************************
;* *
;* PROGRAMM GIBT LISTE MIT AKTUELLER BELEGUNG VON MAGAZIN 1 AUS, *
;* + WERKZEUGE IM ZWISCHENSPEICHER (GREIFER / SPINDEL) *
;* ANGEPASST FUER UNION KCR150 / STAND: 23.05.08 *
;* *
;************************************************************************
N0010 DEF INT ERROR, MAGNUM, ZAEHL, DUNR, WKZTYP
N0020 DEF BOOL IS_VAR=FALSE
N0030 DEF REAL LAENG1, LAENG2, RAD1, RAD2
N0040 DEF STRING[50] WZNAME
N0050 DEF STRING[10] NAME="WKZ_LISTE" ;NAME DER ZIELDATEI
N0060 DEF STRING[20] PFAD="_N_MPF_DIR" ;PFAD FUER DIE ZIELDATEI
N0070 DEF STRING[40] DATEI ;ZUSAMMENFASSUNG PFAD UND NAME
N0080 DEF STRING[12] SIGNATURE
N0090 DEF STRING[3] SCRATCH
N0100 DATEI="/"<<PFAD<<"/_N_"<<NAME<<"_MPF"
N0110 DELETE(ERROR,DATEI) ;ALTES ZIEL LOESCHEN
N0120 WRITE(ERROR,DATEI,"M30") ;FALLS WKZ_LISTE VERSEHENTLICH GESTARTET WIRD
;DATUM UND ZEIT SCHREIBEN
N0130 IF $A_DAY<10
N0140 SCRATCH="0"<<$A_DAY<<"."
N0150 ELSE
N0160 SCRATCH=""<<$A_DAY<<"."
N0170 ENDIF
N0180 SIGNATURE=SCRATCH
N0190 IF $A_MONTH<10
N0200 SCRATCH="0"<<$A_MONTH<<"."
N0210 ELSE
N0220 SCRATCH=""<<$A_MONTH<<"."
N0230 ENDIF
N0240 SIGNATURE=SIGNATURE<<SCRATCH
N0250 IF $A_YEAR<10
N0260 SCRATCH="0"<<$A_YEAR<<""
N0270 ELSE
N0280 SCRATCH=""<<$A_YEAR<<""
N0290 ENDIF
N0300 SIGNATURE=SIGNATURE<<SCRATCH
N0310 WRITE(ERROR,DATEI,SIGNATURE)
N0320 IF $A_HOUR<10
N0330 SCRATCH="0"<<$A_HOUR<<":"
N0340 ELSE
N0350 SCRATCH=""<<$A_HOUR<<":"
N0360 ENDIF
N0370 SIGNATURE=SCRATCH
N0380 IF $A_MINUTE<10
N0390 SCRATCH="0"<<$A_MINUTE<<":"
N0400 ELSE
N0410 SCRATCH=""<<$A_MINUTE<<":"
N0420 ENDIF
N0430 SIGNATURE=SIGNATURE<<SCRATCH<<"00"
N0440 WRITE(ERROR,DATEI,SIGNATURE)
N0450 WRITE(ERROR,DATEI,";----------------")
;ZWISCHENSPEICHER AUSLESEN
N0460 WRITE(ERROR,DATEI,";WERKZEUGE IM ZWISCHENSPEICHER")
N0470 MAGNUM=9998
N0480 FOR ZAEHL=1 TO 3
N0490 IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0
N0500 WZNAME=$TC_TP2[$TC_MPP6[MAGNUM,ZAEHL]]
N0510 ;DUNR=$TC_TP1[$TC_MPP6[MAGNUM,ZAEHL]]
N0520 WKZTYP=$TC_DP1[$TC_MPP6[MAGNUM,ZAEHL],1]
N0530 LAENG1=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],1]
N0540 RAD1=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],1]
N0550 IS_VAR=ISVAR("$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]")
N0560 IF IS_VAR==TRUE
N0570 RAD2=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]
N0580 LAENG2=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],2]
N0590 ENDIF
N0600 WRITE(ERROR,DATEI,WZNAME <<" TYP: "<<WKZTYP<<" L1= "<<LAENG1<<" R1= "<<RAD1<<" L2= "<<LAENG2<<" R2= "<<RAD2)
N0610 IF NOT ERROR==0 GOTOF FEHLER
N0620 ENDIF
N0630 ENDFOR
;MAGAZIN ABGRASEN
N0640 MAGNUM=1
N0650 WRITE(ERROR,DATEI,";-----------------------------")
N0660 WRITE(ERROR,DATEI,";WERKZEUGE IN MAGAZIN 1")
N0670 FOR ZAEHL=1 TO 164
N0680 IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0
N0690 WZNAME=$TC_TP2[$TC_MPP6[MAGNUM,ZAEHL]]
N0700 ;DUNR=$TC_TP1[$TC_MPP6[MAGNUM,ZAEHL]]
N0710 WKZTYP=$TC_DP1[$TC_MPP6[MAGNUM,ZAEHL],1]
N0720 LAENG1=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],1]
N0730 RAD1=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],1]
N0740 IS_VAR=ISVAR("$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]")
N0750 IF IS_VAR==TRUE
N0760 RAD2=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]
N0770 LAENG2=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],2]
N0780 ENDIF
N0790 WRITE(ERROR,DATEI,WZNAME <<" TYP: "<<WKZTYP<<" L1= "<<LAENG1<<" R1= "<<RAD1<<" L2= "<<LAENG2<<" R2= "<<RAD2)
N0800 IF NOT ERROR==0 GOTOF FEHLER
N0810 ENDIF
N0820 ENDFOR
N0830 M17
N0840 FEHLER:
N0850 MSG("BEIM AUSLESEN DER WZ-DATEN IST EIN FEHLER AUFGETRETEN! (NR:"<<ERROR<<")")
N0860 STOPRE
N0870 DELETE(ERROR,DATEI)
N0880 M0
N0890 MSG()
N0900 M17
;ERROR FEHLERVARIABLE FüR RüCKGABE BEI WRITE UND DELETE
;0 KEIN FEHLER
;1 PFAD NICHT ERLAUBT
;2 PFAD NICHT GEFUNDEN
;3 DATEI NICHT GEFUNDEN
;4 FALSCHER DATEITYP
;10 DATEI IST VOLL /NUR BEI WRITE
;11 DATEI WIRD BENUTZT
;12 KEINE RESSOURCEN FREI
;13 KEINE ZUGRIFFSRECHTE /NUR BEI WRITE
;20 SONSTIGER FEHLER
;************************************************************************
;* *
;* PROGRAMM GIBT LISTE MIT AKTUELLER BELEGUNG VON MAGAZIN 1 AUS, *
;* + WERKZEUGE IM ZWISCHENSPEICHER (GREIFER / SPINDEL) *
;* ANGEPASST FUER UNION KCR150 / STAND: 23.05.08 *
;* *
;************************************************************************
N0010 DEF INT ERROR, MAGNUM, ZAEHL, DUNR, WKZTYP
N0020 DEF BOOL IS_VAR=FALSE
N0030 DEF REAL LAENG1, LAENG2, RAD1, RAD2
N0040 DEF STRING[50] WZNAME
N0050 DEF STRING[10] NAME="WKZ_LISTE" ;NAME DER ZIELDATEI
N0060 DEF STRING[20] PFAD="_N_MPF_DIR" ;PFAD FUER DIE ZIELDATEI
N0070 DEF STRING[40] DATEI ;ZUSAMMENFASSUNG PFAD UND NAME
N0080 DEF STRING[12] SIGNATURE
N0090 DEF STRING[3] SCRATCH
N0100 DATEI="/"<<PFAD<<"/_N_"<<NAME<<"_MPF"
N0110 DELETE(ERROR,DATEI) ;ALTES ZIEL LOESCHEN
N0120 WRITE(ERROR,DATEI,"M30") ;FALLS WKZ_LISTE VERSEHENTLICH GESTARTET WIRD
;DATUM UND ZEIT SCHREIBEN
N0130 IF $A_DAY<10
N0140 SCRATCH="0"<<$A_DAY<<"."
N0150 ELSE
N0160 SCRATCH=""<<$A_DAY<<"."
N0170 ENDIF
N0180 SIGNATURE=SCRATCH
N0190 IF $A_MONTH<10
N0200 SCRATCH="0"<<$A_MONTH<<"."
N0210 ELSE
N0220 SCRATCH=""<<$A_MONTH<<"."
N0230 ENDIF
N0240 SIGNATURE=SIGNATURE<<SCRATCH
N0250 IF $A_YEAR<10
N0260 SCRATCH="0"<<$A_YEAR<<""
N0270 ELSE
N0280 SCRATCH=""<<$A_YEAR<<""
N0290 ENDIF
N0300 SIGNATURE=SIGNATURE<<SCRATCH
N0310 WRITE(ERROR,DATEI,SIGNATURE)
N0320 IF $A_HOUR<10
N0330 SCRATCH="0"<<$A_HOUR<<":"
N0340 ELSE
N0350 SCRATCH=""<<$A_HOUR<<":"
N0360 ENDIF
N0370 SIGNATURE=SCRATCH
N0380 IF $A_MINUTE<10
N0390 SCRATCH="0"<<$A_MINUTE<<":"
N0400 ELSE
N0410 SCRATCH=""<<$A_MINUTE<<":"
N0420 ENDIF
N0430 SIGNATURE=SIGNATURE<<SCRATCH<<"00"
N0440 WRITE(ERROR,DATEI,SIGNATURE)
N0450 WRITE(ERROR,DATEI,";----------------")
;ZWISCHENSPEICHER AUSLESEN
N0460 WRITE(ERROR,DATEI,";WERKZEUGE IM ZWISCHENSPEICHER")
N0470 MAGNUM=9998
N0480 FOR ZAEHL=1 TO 3
N0490 IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0
N0500 WZNAME=$TC_TP2[$TC_MPP6[MAGNUM,ZAEHL]]
N0510 ;DUNR=$TC_TP1[$TC_MPP6[MAGNUM,ZAEHL]]
N0520 WKZTYP=$TC_DP1[$TC_MPP6[MAGNUM,ZAEHL],1]
N0530 LAENG1=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],1]
N0540 RAD1=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],1]
N0550 IS_VAR=ISVAR("$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]")
N0560 IF IS_VAR==TRUE
N0570 RAD2=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]
N0580 LAENG2=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],2]
N0590 ENDIF
N0600 WRITE(ERROR,DATEI,WZNAME <<" TYP: "<<WKZTYP<<" L1= "<<LAENG1<<" R1= "<<RAD1<<" L2= "<<LAENG2<<" R2= "<<RAD2)
N0610 IF NOT ERROR==0 GOTOF FEHLER
N0620 ENDIF
N0630 ENDFOR
;MAGAZIN ABGRASEN
N0640 MAGNUM=1
N0650 WRITE(ERROR,DATEI,";-----------------------------")
N0660 WRITE(ERROR,DATEI,";WERKZEUGE IN MAGAZIN 1")
N0670 FOR ZAEHL=1 TO 164
N0680 IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0
N0690 WZNAME=$TC_TP2[$TC_MPP6[MAGNUM,ZAEHL]]
N0700 ;DUNR=$TC_TP1[$TC_MPP6[MAGNUM,ZAEHL]]
N0710 WKZTYP=$TC_DP1[$TC_MPP6[MAGNUM,ZAEHL],1]
N0720 LAENG1=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],1]
N0730 RAD1=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],1]
N0740 IS_VAR=ISVAR("$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]")
N0750 IF IS_VAR==TRUE
N0760 RAD2=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]
N0770 LAENG2=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],2]
N0780 ENDIF
N0790 WRITE(ERROR,DATEI,WZNAME <<" TYP: "<<WKZTYP<<" L1= "<<LAENG1<<" R1= "<<RAD1<<" L2= "<<LAENG2<<" R2= "<<RAD2)
N0800 IF NOT ERROR==0 GOTOF FEHLER
N0810 ENDIF
N0820 ENDFOR
N0830 M17
N0840 FEHLER:
N0850 MSG("BEIM AUSLESEN DER WZ-DATEN IST EIN FEHLER AUFGETRETEN! (NR:"<<ERROR<<")")
N0860 STOPRE
N0870 DELETE(ERROR,DATEI)
N0880 M0
N0890 MSG()
N0900 M17
;ERROR FEHLERVARIABLE FüR RüCKGABE BEI WRITE UND DELETE
;0 KEIN FEHLER
;1 PFAD NICHT ERLAUBT
;2 PFAD NICHT GEFUNDEN
;3 DATEI NICHT GEFUNDEN
;4 FALSCHER DATEITYP
;10 DATEI IST VOLL /NUR BEI WRITE
;11 DATEI WIRD BENUTZT
;12 KEINE RESSOURCEN FREI
;13 KEINE ZUGRIFFSRECHTE /NUR BEI WRITE
;20 SONSTIGER FEHLER
Beim Ablauf treten allerdings folgende Fehler auf:
1. Abbruch des Programmes mit Fehler 10: (Datei ist voll)
Wenn ich die Sprungbefehle zum Fehler auskommentiere arbeitet das Programm, allerdings nur bis zum 17. Werkzeug. Es sind aber über 60 Werkzeuge in Magazin 1.
2. Das Programm springt bei N740 nicht in die Routine für die 2.Schneide, obwohl im Magazin Werkzeuge mit 2. Schneide vorhanden sind.
An dieser Stelle weiß ich nun keinen Rat mehr und bitte nochmals um eure Mithilfe!
Vielen Dank im vorraus!
01.06.2008, 14:36 Uhr
TheBlackBird®
Level 2 = Community-Facharbeiter
Gruppe: Mitglied
Mitglied seit: 21.01.2006
Beiträge: 78
Mitglied seit: 21.01.2006
Beiträge: 78
Moin,
@Mariteam
Problem 1: Fehler10-> Datei ist voll
Die max. Groesse einer Datei, welche mit WRITE erzeugt werden kann, wird durch ein MaschinenDatum bestimmt/begrenzt. Grundeinstellung ist dabei iirc 1kB. Dem MD entsprechend wird die Datei auch nicht groesser bzw. kann nicht weiter beschrieben werden. (siehe auch "Write" bei DocOnWeb)
Aendere daher mal das allg. MaschinenDatum MD 11420: LEN_PROTOCOL_FILE auf z.B. 30. Das duerfte zumindest fuer diesen Zweck locker ausreichen. Da dieses MD ein PowerOn benoetigt um wirksam zu werden, ist nach der Aenderung mindestens ein NCK-Reset noetig. (bzw. einmal Maschine Aus und wieder einschalten.)
Problem 2: 2. bzw. Nte Schneide
Wenn das Programm nicht in den Zweig springt, dann kann das nur einen einzigen Grund haben: die Bedingung ist/wird nie erfuellt.
Und selbst wenn Du einmal da hinein gelangen wuerdest, funktioniert das Ganze wohl so dennoch nicht, da Du die Variablen nicht wieder zuruecknimmst aber immer wieder schreiben laesst. Es wuerden also bei allen folgenden Wkz mit nur einer Schneide die Werte fuer die zweite Schneide des letzten gefundenen zweischneidigen Wkzs mitgeschrieben werden. So wie jetzt bei jedem Wkz L2= 0 R2=0 steht. (selbst bei Wkz mit nur einer Schneide)
Mein Ansatz waere daher, die SchneidenZahl fuer das Wkz jeweils auszulesen (N0590 im angehaengten WKZLISTE.SPF) und dann fuer jede angelegte Schneide die Werte auszulesen und nat. auch zu schreiben. (N0620-N0660)
Zusaetzlich hab ich das Ganze dann noch ein klein wenig eingekuerzt. (Ablauf im Label) Dadurch sollte das Programm leichter zu pflegen sein, da z.B. zusaetzliche Parameter so nur an einer Stelle eingetragen werden muessen.
Schau also mal, ob Du das so verwenden bzw. auf dieser Basis weiter Dein Ziel verfolgen kannst.
@Traori
Die Laufzeit eines solchen Programmes habe ich noch nie auf einer echten NC ermittelt. (Steht aber auf der ToDo-List.) Evtl. kann Mariteam ja etwas zur Laufzeit sagen. (Hier unter SinuTrain dauert das keine 5Sek.)
Wobei mir das Auslesen der TO_INI mit nachfolgender externer Datenaufbereitung auch recht gut gefaellt. Muss ich mich gelegentlich mal mit befassen.
So die Laufzeit fuer Mariteam ertraeglich ist und diese Liste moeglichst aktuell auf der Maschine bereit stehen soll, kann er den Zyklus ja jeweils zum ProgrammEnde aufrufen, oder auch via ProgEvent bzw. CycPE_US automatisch zum gewuenschten Zeitpunkt zum Ablauf bringen. Dies wuerde in meinen Augen den Nachteil abmildern, dass der Zyklus nur in Nebenzeiten aufzurufen ist.
SinTDI ist zwar u.A. genau fuer derartige Geschichten gedacht, aber es kostet auch eine Kleinigkeit.
Cu TheBlackBird ®
@Mariteam
Problem 1: Fehler10-> Datei ist voll
Die max. Groesse einer Datei, welche mit WRITE erzeugt werden kann, wird durch ein MaschinenDatum bestimmt/begrenzt. Grundeinstellung ist dabei iirc 1kB. Dem MD entsprechend wird die Datei auch nicht groesser bzw. kann nicht weiter beschrieben werden. (siehe auch "Write" bei DocOnWeb)
Aendere daher mal das allg. MaschinenDatum MD 11420: LEN_PROTOCOL_FILE auf z.B. 30. Das duerfte zumindest fuer diesen Zweck locker ausreichen. Da dieses MD ein PowerOn benoetigt um wirksam zu werden, ist nach der Aenderung mindestens ein NCK-Reset noetig. (bzw. einmal Maschine Aus und wieder einschalten.)
Problem 2: 2. bzw. Nte Schneide
Wenn das Programm nicht in den Zweig springt, dann kann das nur einen einzigen Grund haben: die Bedingung ist/wird nie erfuellt.
Und selbst wenn Du einmal da hinein gelangen wuerdest, funktioniert das Ganze wohl so dennoch nicht, da Du die Variablen nicht wieder zuruecknimmst aber immer wieder schreiben laesst. Es wuerden also bei allen folgenden Wkz mit nur einer Schneide die Werte fuer die zweite Schneide des letzten gefundenen zweischneidigen Wkzs mitgeschrieben werden. So wie jetzt bei jedem Wkz L2= 0 R2=0 steht. (selbst bei Wkz mit nur einer Schneide)
Mein Ansatz waere daher, die SchneidenZahl fuer das Wkz jeweils auszulesen (N0590 im angehaengten WKZLISTE.SPF) und dann fuer jede angelegte Schneide die Werte auszulesen und nat. auch zu schreiben. (N0620-N0660)
Zusaetzlich hab ich das Ganze dann noch ein klein wenig eingekuerzt. (Ablauf im Label) Dadurch sollte das Programm leichter zu pflegen sein, da z.B. zusaetzliche Parameter so nur an einer Stelle eingetragen werden muessen.
Schau also mal, ob Du das so verwenden bzw. auf dieser Basis weiter Dein Ziel verfolgen kannst.
@Traori
Die Laufzeit eines solchen Programmes habe ich noch nie auf einer echten NC ermittelt. (Steht aber auf der ToDo-List.) Evtl. kann Mariteam ja etwas zur Laufzeit sagen. (Hier unter SinuTrain dauert das keine 5Sek.)
Wobei mir das Auslesen der TO_INI mit nachfolgender externer Datenaufbereitung auch recht gut gefaellt. Muss ich mich gelegentlich mal mit befassen.
So die Laufzeit fuer Mariteam ertraeglich ist und diese Liste moeglichst aktuell auf der Maschine bereit stehen soll, kann er den Zyklus ja jeweils zum ProgrammEnde aufrufen, oder auch via ProgEvent bzw. CycPE_US automatisch zum gewuenschten Zeitpunkt zum Ablauf bringen. Dies wuerde in meinen Augen den Nachteil abmildern, dass der Zyklus nur in Nebenzeiten aufzurufen ist.
SinTDI ist zwar u.A. genau fuer derartige Geschichten gedacht, aber es kostet auch eine Kleinigkeit.
Cu TheBlackBird ®
Angehängte Datei(en)
01.06.2008, 17:55 Uhr
Hallo mariteam,
mein Vorschlag wäre
N0740 IS_VAR="$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]"
N0750 IF (ISVAR(IS_VAR)==TRUE)
N0760 RAD2=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]
N0770 LAENG2=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],2]
N0780 ENDIF
MfG
KBPro
mein Vorschlag wäre
N0740 IS_VAR="$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]"
N0750 IF (ISVAR(IS_VAR)==TRUE)
N0760 RAD2=$TC_DP6[$TC_MPP6[MAGNUM,ZAEHL],2]
N0770 LAENG2=$TC_DP3[$TC_MPP6[MAGNUM,ZAEHL],2]
N0780 ENDIF
MfG
KBPro
02.06.2008, 16:30 Uhr
TheBlackBird®,
das von dir erstellte Programm hat ohne weitere Änderungen funktioniert. Die Laufzeit des Programmes ist nicht der Rede wert, gerade mal ein Wimpernschlag...
Ich hätte das Programm auch gern vorher mit SinuTrain getestet, aber mit den NC-Daten von der betreffenden Maschine habe ich es bisher nicht geschafft, SinuTrain zum laufen zu bringen.
Union hat wohl einige Siemenszyklen (insbesondere den Cycle800) umgestrickt, was beim Start zu diversen Fehlermeldungen führt (Schnittstelle konnte nicht gebildet werden, Cyclus bereits geladen u.v.m).
Aber nach den guten Erfahrungen mit der Community hier bin ich zuversichtlich, auch dieses Problem irgendwann lösen zu können.
Danke an alle Helfer!
das von dir erstellte Programm hat ohne weitere Änderungen funktioniert. Die Laufzeit des Programmes ist nicht der Rede wert, gerade mal ein Wimpernschlag...
Ich hätte das Programm auch gern vorher mit SinuTrain getestet, aber mit den NC-Daten von der betreffenden Maschine habe ich es bisher nicht geschafft, SinuTrain zum laufen zu bringen.
Union hat wohl einige Siemenszyklen (insbesondere den Cycle800) umgestrickt, was beim Start zu diversen Fehlermeldungen führt (Schnittstelle konnte nicht gebildet werden, Cyclus bereits geladen u.v.m).
Aber nach den guten Erfahrungen mit der Community hier bin ich zuversichtlich, auch dieses Problem irgendwann lösen zu können.
Danke an alle Helfer!
02.06.2008, 18:00 Uhr
HALLO KBPro
habe dein Programm getestet und habe meine WZ auch in der datei WZLISTE gefunden.
Doch bei Satz"
N0570 IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0" kamm eine Arayfehlermeldung.
Meine frage ist, Ist es möglich alle WZ aus der Steuerung auszulesen und nicht nur die aus dem Magazin?
mfg brain2
habe dein Programm getestet und habe meine WZ auch in der datei WZLISTE gefunden.
Doch bei Satz"
N0570 IF NOT $TC_MPP6[MAGNUM,ZAEHL]==0" kamm eine Arayfehlermeldung.
Meine frage ist, Ist es möglich alle WZ aus der Steuerung auszulesen und nicht nur die aus dem Magazin?
mfg brain2
--------------------
Nach "AB" kommt "WECH"
02.06.2008, 20:44 Uhr
TheBlackBird®
Level 2 = Community-Facharbeiter
Gruppe: Mitglied
Mitglied seit: 21.01.2006
Beiträge: 78
Mitglied seit: 21.01.2006
Beiträge: 78
Moin,
@Mariteam
Das freut mich doch, dass so lesen. Und DANKE! fuer die Rueckmeldung hier im Forum. (Das ist ja leider noch nicht sooooo selbstverstaendlich.)
@brain2
So Du das Programm WKZLISTE.SPF ohne Aenderungen uebernommen hast, und nach der erscheinenden FehlerMeldung (Array...) alle Werkzeuge des Magazins aufgelistet findest, kann ich mir nur einen Fehler vorstellen:
Dein Magazin Nr.1 hat weniger als 164 Plaetze. Wenn dem so ist, dann trage die Anzahl der Plaetze in N0500 ein. Soll heissen: Wenn Dein Magazin 1 genau 60 Plaetze hat, dann muss N0500 wie folgt lauten
Somit sollte das Programm dann ohne Fehler durchlaufen.
Alle Wkz? Wie soll man das verstehen? Welche Wkz. sollen dabei beruecksichtigt werden? Alles was in der Wkz-Liste steht/definiert ist, ob beladen oder nicht?? Und/oder Wkz-Schrank? Eine Idee fuer einen Ansatz dies mittels NC-Programm zu realisieren haette ich da schon im Kopf. Allerdings wird das dann uU. von der Laufzeit dann doch wirklich etwas "zaeh".
Aber erzaehl erstmal, was Du Dir da so vorstellst, und was Dir von der Konfiguration der Wkz-Verwaltung des betroffenen Maschinen weisst.
Cu TheBlackBird ®
@Mariteam
Das freut mich doch, dass so lesen. Und DANKE! fuer die Rueckmeldung hier im Forum. (Das ist ja leider noch nicht sooooo selbstverstaendlich.)
@brain2
So Du das Programm WKZLISTE.SPF ohne Aenderungen uebernommen hast, und nach der erscheinenden FehlerMeldung (Array...) alle Werkzeuge des Magazins aufgelistet findest, kann ich mir nur einen Fehler vorstellen:
Dein Magazin Nr.1 hat weniger als 164 Plaetze. Wenn dem so ist, dann trage die Anzahl der Plaetze in N0500 ein. Soll heissen: Wenn Dein Magazin 1 genau 60 Plaetze hat, dann muss N0500 wie folgt lauten
CODE
N0500 MAGPL=60
Somit sollte das Programm dann ohne Fehler durchlaufen.
Alle Wkz? Wie soll man das verstehen? Welche Wkz. sollen dabei beruecksichtigt werden? Alles was in der Wkz-Liste steht/definiert ist, ob beladen oder nicht?? Und/oder Wkz-Schrank? Eine Idee fuer einen Ansatz dies mittels NC-Programm zu realisieren haette ich da schon im Kopf. Allerdings wird das dann uU. von der Laufzeit dann doch wirklich etwas "zaeh".
Aber erzaehl erstmal, was Du Dir da so vorstellst, und was Dir von der Konfiguration der Wkz-Verwaltung des betroffenen Maschinen weisst.
Cu TheBlackBird ®
02.06.2008, 21:04 Uhr
Hallo TheBlackBird
Unser Kettenmagazin hat nur 16 Plätze.
Sorry hatte mich vorhin falsch ausgedrückt, ich meinte den Werkzeugschrank. In der ausgelesenen Datei waren alle beladenen Wz des Magazins trotz der Fehlermeldung. Würde aber gerne noch den Werkzeugschrank auslesen, um auch die Wz mit T nummern zu haben die an der Steuerung von den bedienern angelegt wurden. Unsere Haupt T nummern gehen nicht weiter als 315,ausser 2 Stück mit T999 und T990. Das wegen der Länge der auszulesenden Zeit ist nebensächlich, es wird ja nicht oft verwendet, und nur zur Aktualisierung vom Cam Programm.
Danke nochmal Mariteam für dein programm und TheBlackBird für deine Antwort
mfg brain2
Unser Kettenmagazin hat nur 16 Plätze.
Sorry hatte mich vorhin falsch ausgedrückt, ich meinte den Werkzeugschrank. In der ausgelesenen Datei waren alle beladenen Wz des Magazins trotz der Fehlermeldung. Würde aber gerne noch den Werkzeugschrank auslesen, um auch die Wz mit T nummern zu haben die an der Steuerung von den bedienern angelegt wurden. Unsere Haupt T nummern gehen nicht weiter als 315,ausser 2 Stück mit T999 und T990. Das wegen der Länge der auszulesenden Zeit ist nebensächlich, es wird ja nicht oft verwendet, und nur zur Aktualisierung vom Cam Programm.
Danke nochmal Mariteam für dein programm und TheBlackBird für deine Antwort
mfg brain2
--------------------
Nach "AB" kommt "WECH"
02.06.2008, 22:40 Uhr
TheBlackBird®
Level 2 = Community-Facharbeiter
Gruppe: Mitglied
Mitglied seit: 21.01.2006
Beiträge: 78
Mitglied seit: 21.01.2006
Beiträge: 78
Moin,
Tja, wo wir grad beim "falsch ausdruecken" sind. Ich haette einen Ansatz fuer das Auslesen der Wkz-Liste im Hinterkopf gehabt (Wkz beladen oder auch nicht beladen). Fuer das Auslesen vom "Wkz-Schrank" (SK "Beladen aus Schrank") fehlt mir dieser Ansatz. Meines Wissens nach liegen die Daten fuer den Wkz-Schrank in einer MDB-Datei (Datenbank) auf der MMC/PCU, und sind der NC so nicht bekannt. Und mir will aus dem Stand nichts einfallen, wie man aus einem NC-Programm auf diese MDB Zugriff erlangen kann. Sry.
Cu TheBlackBird ®
Tja, wo wir grad beim "falsch ausdruecken" sind. Ich haette einen Ansatz fuer das Auslesen der Wkz-Liste im Hinterkopf gehabt (Wkz beladen oder auch nicht beladen). Fuer das Auslesen vom "Wkz-Schrank" (SK "Beladen aus Schrank") fehlt mir dieser Ansatz. Meines Wissens nach liegen die Daten fuer den Wkz-Schrank in einer MDB-Datei (Datenbank) auf der MMC/PCU, und sind der NC so nicht bekannt. Und mir will aus dem Stand nichts einfallen, wie man aus einem NC-Programm auf diese MDB Zugriff erlangen kann. Sry.
Cu TheBlackBird ®
03.06.2008, 12:57 Uhr
HALLO TheBlackBird
Trotzdem danke für deine Mühe
mfg brain2
Trotzdem danke für deine Mühe
mfg brain2
--------------------
Nach "AB" kommt "WECH"
06.06.2008, 09:54 Uhr
Hallo,
die .MDB kann man im Dienste Menü einfach auf Diskette kopieren (nicht mit Daten aus!) und mit MS-Access öffnen.
Da bekommt eine wunderschöne Tabelle mit allen Schneiden Längen etc.
MfG
die .MDB kann man im Dienste Menü einfach auf Diskette kopieren (nicht mit Daten aus!) und mit MS-Access öffnen.
Da bekommt eine wunderschöne Tabelle mit allen Schneiden Längen etc.
MfG
09.06.2008, 07:41 Uhr
QUOTE (trollrne @ Freitag, 06.Juni 2008, 09:54 Uhr)
Hallo,
die .MDB kann man im Dienste Menü einfach auf Diskette kopieren (nicht mit Daten aus!) und mit MS-Access öffnen.
Da bekommt eine wunderschöne Tabelle mit allen Schneiden Längen etc.
MfG
die .MDB kann man im Dienste Menü einfach auf Diskette kopieren (nicht mit Daten aus!) und mit MS-Access öffnen.
Da bekommt eine wunderschöne Tabelle mit allen Schneiden Längen etc.
MfG
Bitte beschreibe doch mal genau, welche Datei du kopiert hast.
Ich habe aus dem Verzeichnis Werkzeugverwaltung/WZV-Daten die Datei wzaccess.mdb kopiert, anschließend in Accsess eine leere Datenbank angelegt und diese Datei importiert. In den nun importierten Tabellen habe ich keine Daten aus der Werkzeugliste gefunden.
mfg, Mariteam
09.06.2008, 12:22 Uhr
Jo! Da haste wohl recht!
Die doofe MDB Datei geht nur mit Access97 oder tiefer auf!!!!
Habe die Schneidentabelle aus meiner .MDB mal als Excel-Tabelle exportiert (siehe Anhang)
Vielleicht kommst Du noch an ne Alte Access Version ran...
MfG
Die doofe MDB Datei geht nur mit Access97 oder tiefer auf!!!!
Habe die Schneidentabelle aus meiner .MDB mal als Excel-Tabelle exportiert (siehe Anhang)
Vielleicht kommst Du noch an ne Alte Access Version ran...
MfG
Angehängte Datei(en)
09.06.2008, 14:58 Uhr
QUOTE (trollrne @ Montag, 09.Juni 2008, 12:22 Uhr)
Jo! Da haste wohl recht!
Die doofe MDB Datei geht nur mit Access97 oder tiefer auf!!!!
Habe die Schneidentabelle aus meiner .MDB mal als Excel-Tabelle exportiert (siehe Anhang)
Vielleicht kommst Du noch an ne Alte Access Version ran...
MfG
Die doofe MDB Datei geht nur mit Access97 oder tiefer auf!!!!
Habe die Schneidentabelle aus meiner .MDB mal als Excel-Tabelle exportiert (siehe Anhang)
Vielleicht kommst Du noch an ne Alte Access Version ran...
MfG
Ich konnte die in meinem letzten Beitrag genannte Datei zwar mit Access2000 zwar nicht direkt öffnen, wohl aber in eine neue, leere Datenbank importieren.
Die Tabelle WK_wzschneid ist allerdings leer, woran auch der Export nach Excel nichts ändern kann.
mfg, Mariteam
10.06.2008, 12:29 Uhr
Du hast aber definitiv Werkzeuge im Werkzeugschrank oder?
Es sind ja nur die Schrank- bzw. Katalogdaten in dieser Datei.
Stehen in den anderen Tabellen irgendwelche Werte?
Sonst ist es vielleicht wirklich so, dass das 2000er Access auch schon Probleme hat.
Kannst Deine .mdb ja mal Posten, ich mach sie denn mal mit Access97 auf.
MfG
Es sind ja nur die Schrank- bzw. Katalogdaten in dieser Datei.
Stehen in den anderen Tabellen irgendwelche Werte?
Sonst ist es vielleicht wirklich so, dass das 2000er Access auch schon Probleme hat.
Kannst Deine .mdb ja mal Posten, ich mach sie denn mal mit Access97 auf.
MfG
10.06.2008, 13:11 Uhr
Ok, dann ist ja alles klar. Ich habe bisher keine Werkzeuge im Schrank, nur in der Liste und um die ging es mir.
Wenn ein Werkzeug aus der Liste nicht im Magazin 1 oder im Belademagazin 6 ist, so führt die Maschine einen "Handwechsel" aus, sobald ein solches Werkzeug aufgerufen wird.
Mit dem "Schrank" bin ich noch nicht so vertraut und die Bediener offensichtlich auch nicht, da sie ihn ja bisher nicht benutzt haben. Das muss ich mir mal anlesen.
Immerhin ist jetz klar, warum bei mir die Tabelle leer war.
mfg, mariteam
Wenn ein Werkzeug aus der Liste nicht im Magazin 1 oder im Belademagazin 6 ist, so führt die Maschine einen "Handwechsel" aus, sobald ein solches Werkzeug aufgerufen wird.
Mit dem "Schrank" bin ich noch nicht so vertraut und die Bediener offensichtlich auch nicht, da sie ihn ja bisher nicht benutzt haben. Das muss ich mir mal anlesen.
Immerhin ist jetz klar, warum bei mir die Tabelle leer war.
mfg, mariteam
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: