Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Werkzeugkorrekturen, Werkzeugkorrekt. in ein Progr.auslesen

Beitrag 09.03.2007, 11:30 Uhr
hu_cnc
hu_cnc
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 28.12.2002
Beiträge: 89
Hallo Siemensspezialisten,

hat man auf einer 810D Steuerung die Möglichkeit bestehende
Werkzeugkorrekturen in eine Datei zu schreiben.
Es handelt sich um eine Spinner PD-Drehmaschine und ich möchte
die verwendeten Werkzeuge mit X + Z Basismaß , Schneidenradius , und
Verschleißdaten X + Z in ein vorhandenes Programm schreiben.

Vielleicht kann mir da jemand weiterhelfen.
Schönes Wochenende Hu
   
Beitrag 09.03.2007, 16:37 Uhr
stoneman_us
stoneman_us
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 08.02.2007
Beiträge: 53
Hallo hu_cnc,

du kannst die aktuellen Werkzeugdaten in eine Datei sichern (***.toa).
Das geht je nach Softwarestand verschieden, ist aber irgendwas mit Werkstückdaten sichern.

Den Inhalt dieser Datei kannst du dann auch in dein Programm schreiben.
Normalerweise wird das aber dazu benutzt um die aktuellen Werkzeugdaten mit dem Programm zusammen zu sichern um diese später wieder zurück lesen zu können.

gruß tom
   
Beitrag 09.03.2007, 18:43 Uhr
hu_cnc
hu_cnc
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 28.12.2002
Beiträge: 89
Hallo stoneman,

die Werkzeugdaten kann ich mir schon über Dienste-Daten aus auf einen
Laptop sichern.Ich möchte nur nicht jedesmal die Kiste anschmeißen
um mir nach dem Einrichten der Maschine die Wkzgdaten zu sichern.

Ich stelle mir das so vor,daß ich mir ein Programm mit allen vorhandenen
Werkzeugstationen Revolver T1-T16 und T17-T32 als Linearwerkzeuge
schreibe und nach dem Einrichten das Programm aufrufe , starte und die
Korrekturen werden in dieses Programm geschrieben.
Für mich ist das nur zur Sicherheit,falls mir ein Bediener aus Versehen die
Verschleißdaten löscht oder falsch korrigiert.

Ich habe in einem kürzlich geöffnetem Post einen Beitrag verfolgt bei dem
eine 2.Korrektur von einem laufenden Progr.beschrieben werden sollte.
Aber kann man die Wkzgdaten auch in ein Programm schreiben?

Trotzdem vielen Dank Hu
   
Beitrag 09.03.2007, 23:51 Uhr
cnc-wolle
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 01.08.2006
Beiträge: 205
hallo hu_cnc,

ich habe ein kleines unterprogramm für werkzeugdaten sichern und rückschreibbar gemacht.

1.version

in diesen beispiel
progname: "4711"
es werden die magazinplätze ausgewertet. (hier 32)
nicht belegte plätze werden ignoriert.
als erstes wird die eventuell alte bestehende speicherdatei WZ"4711" gelöscht.(wenn nocht vorhanden auch gut)
welche Tnummer ist auf dem magazinplatz (tnum)
magazinplatz und Tnummer werden als kommentar in die datei WZ"4711" geschrieben
danach alle werkzeugdaten die gespeichert werden sollen rückschreibbar geschrieben. (1. und 2. länge und radius)

am ende wird noch das m17 geschrieben.

AUSFüHRUNG:

Programmnummer ins WZ_SAVE eintragen progname="4711"

WZ_SAVE anwählen.

Programmstart

in der DIR/SPF ist eine datei WZ4711 erzeugt

diese datei kann bei bedarf jeder zeit wieder gestartet werden.

siehe anhang

gruß
cnc-wolle
Angehängte Datei(en)
Angehängte Datei  wz_save.zip ( 1.12KB ) Anzahl der Downloads: 80
 
   
Beitrag 10.03.2007, 09:18 Uhr
hu_cnc
hu_cnc
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 28.12.2002
Beiträge: 89
Hallo cnc-wolle,

zuerst mal VIELEN Dank für Deine Mühe.Habe das UP gerade in die Masch.
geladen und ausgeführt und es funktioniert für die Stationen 1-16(Revolver).
Danach wird jedoch das Programm mit der Fehlermeldung
17030 "Kanal%1 Satz%2 unerlaubter Array-Index2" abgebrochen.

Ich vermute das liegt daran,daß die Stationen 1-16(Revolver) im Magazin1
und die Stationen 17-32(Linear) im Magazin2 abgelegt sind.
Könntest Du mir bitte noch erklären wo man in Deinem Programm den
***Platz 17 bis ***Platz 32 so definiert,daß die Daten vom Magazin 2
beschrieben werden.Ich denke die Fehlermeldung kommt davon.

Wenn ich jetzt noch den Verschleiß protokolliert haben möchte,wäre es
dann richtig wenn ich in deinem Programm noch die Bezeichner
$TC_DP12==>Verschleiß Länge1
$TC_DP13==>Verschleiß Länge2
einfügen würde?

Es ist ja schon super,daß es soweit funktioniert,denn der Masch.hersteller
konnte (wollte??) mir bei dem Problem nicht helfen.Geht nicht.Basta.

Schönes Wochenende Gruß Hu
   
Beitrag 10.03.2007, 10:17 Uhr
uli12us
uli12us
Level 8 = Community-Ehrenmitglied
********
Gruppe: Mitglied
Mitglied seit: 20.04.2002
Beiträge: 5.008
Dass da bei 16 Schluss ist ist logisch. Die Siemens zählt den Werkzeugindex ab 0. D.h. T1 hat in der Liste die Bezeichnung T(0)

Und für die 2 Stufe wirst du wahrscheinlich die Liste etwas anders aufrufen müssen.

Wie das genau funktioniert weiss ich nicht, nur möglich ist das mit Sicherheit. Ich hab immer nur die Standardliste die ich bei Bedarf ändere.
Irgendwelche Auftragsspezifische Werkzeuge werden dann halt bei Bedarf eingebaut. Aber gesichert wird bei mir nichts.
   
Beitrag 10.03.2007, 20:08 Uhr
cnc-wolle
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 01.08.2006
Beiträge: 205
Zitat hu_cnc
Es ist ja schon super,dass es soweit funktioniert,denn der Masch.hersteller
konnte (wollte??) mir bei dem Problem nicht helfen.Geht nicht.Basta.

Zu meiner aktiven Zeit hatten wir 5 verschiedene Maschinenhersteller im Hause mit 840D Steuerungen.
Die meisten hatten keine Zeit für vernünftige, praktische Problemlösungen
Mit Einigen konnte ich aber sehr gut Kooperieren.

Zitat uli12us
Dass da bei 16 Schluss ist ist logisch. Die Siemens zählt den Werkzeugindex ab 0. D.h. T1 hat in der Liste die Bezeichnung T(0)
Und für die 2 Stufe wirst du wahrscheinlich die Liste etwas anders aufrufen müssen.

Diese Aussage ist nicht richtig.
Denn das mit dem Magazin ist Sache des Maschinenherstellers.
Das heißt für mich in den meisten Fällen von einem Praktiker und nicht von Siemens.


Zitat hu_cnc
ich vermute das liegt daran,daß die Stationen 1-16(Revolver) im Magazin1und die Stationen 17-32(Linear) im Magazin2 abgelegt sind.

Genau das ist auch meine Vermutung.
Die Frage ist nur fängt das Magazin2 mit Station 1 oder 17 an ???
Wenn es ein Praktiker gemacht hat ist Station 1 richtig

Hallo hu_cnc

Mein Änderungsvorschlag:

1) neuer Parameter ,mgzn_num=1
2)in der Schleife neue Abfrage
If zaehl > 16 ; ------------------------> 2. Magazin Platz 1
mgzn_num=2
zaehler=zaehler-16
Endif

3) Magazinnummer flexibel tnum = $TC_MPP6[1,zaehl]
tnum = $TC_MPP6[mgzn_num,zaehl]

sieheAnhang

diese Version ist nicht getestet (bei mir gibt es kein 2.Magazin)

gruß
cnc-wolle

Der Beitrag wurde von cnc-wolle bearbeitet: 10.03.2007, 20:12 Uhr
Angehängte Datei(en)
Angehängte Datei  WZ_SAVE1.spf ( 987Byte ) Anzahl der Downloads: 20
 
   
Beitrag 10.03.2007, 20:57 Uhr
uli12us
uli12us
Level 8 = Community-Ehrenmitglied
********
Gruppe: Mitglied
Mitglied seit: 20.04.2002
Beiträge: 5.008
QUOTE
Diese Aussage ist nicht richtig.
Denn das mit dem Magazin ist Sache des Maschinenherstellers.
Das heißt für mich in den meisten Fällen von einem Praktiker und nicht von Siemens.

Im nächsten Abschnitt bestätigst du doch genau das was ich beschrieben habe. Da ich so wie du auch bloss ein Magazin zur Verfügung hab kann ich bestenfalls vermuten wie das ganze aufgebaut ist.
   
Beitrag 11.03.2007, 09:25 Uhr
cnc-wolle
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 01.08.2006
Beiträge: 205
Hallo hu_cnc

2)in der Schleife neue Abfrage
If zaehl > 16; ------------------------> 2. Magazin Platz 1
mgzn_num=2
zaehler=zaehler-16
Endif
[/I]

Bei der Abfrage ist mir ein Fehler unterlaufen

so geht es nicht.

wenn alle stricke reißen einfach eine 2. FOR TO schleife schre1ben


gruß
cnc-wolle

Der Beitrag wurde von cnc-wolle bearbeitet: 11.03.2007, 09:56 Uhr
   
Beitrag 11.03.2007, 13:53 Uhr
TheBlackBird®
TheBlackBird®
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 21.01.2006
Beiträge: 78
Hi,

Ich hab mir die Grundidee von cnc-wolle mal angeschaut, und ein wenig damit rumgespielt. Gleichzeitig das Ganze als Anwenderzyklus abgelegt und geladen, damit ich beim Programmaufruf den Parameter "progname" direkt uebergeben kann, ohne zuvor das SPF-File editieren zu muessen. Aufruf der Sicherung erfolgt dann via MDI oder Automatic-> Ueberspeichern mittels

CODE
WZ_SAVE("4711")



Vorr. fuer diese Programmversion ist, dass alle Magazine der Maschine die gleiche Anzahl von Wkz.-Plaetzen haben. Die Variablen in der folgenden Version sind so eingestellt, dass 2Magazine a 16Plaetze abgefragt werden. Getestet hab ich es hier unter Sinutrain auf einer Maschine mit 16Magazinen a 15 Plaetze. Es werden Laenge1, Laenge2, Radius, sowie die zugehoerigen Verschleisswerte ausgelesen. Soll dies geaendert werden, so sollte dies in der CASE-Anweisung geschehen. (Nicht benoetigte Parameter samt Sprunganweisung entfernen, bzw. zusaetzliche Parameter einfuegen und auf los: springen lassen. Eine Liste der Parameter gibt es hier)
Das ganze sieht bei mir dann folgendermassen aus:

CODE
%_N_WZ_SAVE_SPF
;$PATH=/_N_CUS_DIR
PROC WZ_SAVE(string[60] progname)
; Vorr.: Alle Magazine muessen die gleiche Anzahl an Wkz-Plaetzen haben
DEF int magazinplatz=16;-->Werkzeugplaetze pro Magazin
DEF int magazinzahl=2  ;-->Anzahl der Magazine  
DEF int zaehl,error,tnum, ,mag_num,zaehl2
DEF real wert
DEF string[20] korr
DEF string[30] blocksatz

progname="/_N_SPF_DIR/_N_WZ"<<progname<<"_SPF"

DELETE(error,progname)

FOR zaehl=1 to magazinplatz*magazinzahl
 mag_num=TRUNC(zaehl/(magazinplatz+0.001)+1)
 zaehl2=zaehl-magazinplatz*mag_num+magazinplatz
 tnum = $TC_MPP6[mag_num,zaehl2]
 IF tnum >0
   WRITE (error,progname,"; ***Platz "<<zaehl<<" ("<<zaehl2<<" Mag." <<mag_num<< ") T = "<<tnum<<"***")
   FOR =1 to 25
    CASEParanuitof 3 gotof los 4 gotof los 6 gotof los 12 gotof los 13 gotof los 15 gotof los default gotof weiter
    los:
     korr="$TC_DP"<< <<""
     korr=""<<korr<<"["<<tnum<<",1]"
     blocksatz="wert="
     blocksatz= blocksatz<<korr
     EXECSTRING (blocksatz)
     WRITE(error,progname,""<<korr<<" = "<<wert)
    weiter:
   ENDFOR
     IF error<>0
       GOTOF ErrW
     ENDIF
 ENDIF
ENDFOR

WRITE(error,progname,"M17")
M17

ErrW:
MSG ("Der Write-Befehl hat den Fehler -->" <<error<< " zuruekgegeben")
M0
M17
;1: Pfad nicht erlaubt
;2: Pfad nicht gefunden
;3: Datei nicht gefunden
;4: falscher Dateityp
;10: Datei ist voll
;11: Datei wird benutzt
;12: keine Ressourcen frei
;13: keine Zugriffsrechte
;20: sonstiger Fehler


Cu TheBlackBird ®
   
Beitrag 12.03.2007, 06:53 Uhr
hu_cnc
hu_cnc
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 28.12.2002
Beiträge: 89
Hallo,

zuerst mal Danke für die Antworten.
Wenn in der Fertigung wieder alles rund läuft werde ich versuchen
Eure Vorschläge an der Maschine zu testen.
Zuerst muß ich mich mit dem Syntax Eurer Programme mal auseinander
setzen denn ich möchte für die Zukunft auch verstehen was programmiert
wurde.Da werden dann wohl die eine oder andere Frage noch auftauchen.

@ cnc-wolle
Das Werkzeug 17 (1.Wkzg im Magazin2) ist 1/2.

Schönen Wochenbeginn Gruß Hu
   
Beitrag 12.03.2007, 09:06 Uhr
cnc-wolle
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 01.08.2006
Beiträge: 205
@ TheBlackBird®

man merkt dem code an das du dich ausführlich mit der flxiblen programmierung auseinander gesetzt hast. thumbs-up.gif

den befehl execstring sehe ich das erstemal , denn es gibt ihn erst ab version 6.4 .

meine version ist leider 6.02 und somit lief dieser code bei mir leider nicht.

vielleicht bekomme ich demnächst eine neuere version ????.



hallo hu_cnc

ich habe das UP umgestellt auf 2 Magazine mit 32 plätzen gesamt (2 x 16 plätze)
neuer parameter mgzn_num
neuer parameter pltz_num
das 1. magazin ist im Def angewählt
----------------
Def int zaehl,error,magazinplatz=32,tnum,mgzn_num=1,pltz_num
----------------


neue abfrage gleich nach FOR TO schleife
----------------
pltz_num=zaehl
If zaehl > 16 ; ------------------------> 2. Magazin
mgzn_num=2 ; 2.Magazin
pltz_num=zaehl-16 ; 1. Platz
Endif
----------------

magazin flexibel gesetzt
----------------
tnum = $TC_MPP6[mgzn_num,zaehl]
----------------

textausgabe mit magazin und pltznummer
----------------
Write(error,progname,"; ***Platz "<<pltz_num<<" Magazin= "<<mgzn_num<<" T = "<<tnum<<"***")
----------------

viel erfolg
cnc-wolle

PS.
wenn es für dich interesant ist kann man noch beim zurückschreiben
prüfen ob auch das richtige werkzeug in der station ist.????????

Der Beitrag wurde von cnc-wolle bearbeitet: 12.03.2007, 09:10 Uhr
Angehängte Datei(en)
Angehängte Datei  WZ_SAVE2.spf ( 1012Byte ) Anzahl der Downloads: 12
 
   
Beitrag 12.03.2007, 11:42 Uhr
hu_cnc
hu_cnc
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 28.12.2002
Beiträge: 89
Hallo cnc-wolle , TheBlackBird®,

@cnc-wolle
Habe Dein neues Programm gerade getestet,jedoch wie zuvor den Fehler
17030 "Kanal%1 Satz%2 unerlaubter Array-Index2" bekommen.
Erläuterung laut Diagnoseanleitung:
Es wurde ein Lese oder Schreibzugriff auf eine Feldvariable mit ungültigem
2.Feldindex programmiert.Die gültigen Feldindizes müssen innerhalb der
def.Feldgröße und der absoluten Grenzen(0-32766)liegen.

Soweit mir bekannt ist wird bei jedem neuen anlegen eines Werkzeuges
die Werkzeugzahl um 1 erhöht.Bis mx.32000 lt Tabelle der Systemvariablen
Dies sieht man ja wenn man die Werkzeuge auf den Laptop ausliest.
Momentan bin ich da bei 338 ,da ich die meisten Werkzeuge nach Gebrauch
entlade und bei Bedarf wieder belade.
Also kann das mit den absoluten Grenzen(0-32766) nichts zu tun haben.


@TheBlackBird®,
die PLC auf der Maschine hat leider den Softwarestand 6.03.08/01
Somit bricht das Programm mit Fehlermeldung12550 ab.

Danke trotzdem für Euere Bemühungen Gruß Hu
   
Beitrag 12.03.2007, 13:28 Uhr
cnc-wolle
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 01.08.2006
Beiträge: 205
Hallo hu_cnc,

QUOTE
Momentan bin ich da bei 338 ,da ich die meisten Werkzeuge nach Gebrauch
entlade und bei Bedarf wieder belade.


mit den geladenen werkzeugen hat das nichts zu tun.
sondern mit den magazinen.
$TC_MPP6[1,(Array 1-->16)]
$TC_MPP6[2,(Array 1-->16)]

beim nachlesen ist mir noch ein Fehler aufgefallen.
und zwar kommt es jetzt im 2. Magazin Platz 17 - 32 , also ARRAYFehler

tnum = $TC_MPP6[mgzn_num,zaehl]
denn zaehl geht von 1 --> 32

pltz_num geht von 1--> 16 1.MAGAZIN

wenn > 16 --> pltz_num = zaehler-16
dann
pltz_num geht von 1--> 16 2.MAGAZIN


muß heißen
tnum = $TC_MPP6[mgzn_num,pltz_num]

oder ?????

gruß
cnc-wolle

Der Beitrag wurde von cnc-wolle bearbeitet: 12.03.2007, 13:44 Uhr
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: