584.830 aktive Mitglieder*
5.783 Besucher online*
Kostenfrei registrieren
Anmelden Registrieren
SprutCAM Forum

...unsere Software ... Ihr Erfolg

Formatierte Werkzeugliste, Anpassung unseres PP

Beitrag 04.02.2013, 15:54 Uhr
cncuschi
cncuschi
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 16.10.2005
Beiträge: 58

Hallo,

vielleicht kann mir jemand hier im Forum helfen.
Wir beschreiben unsere Werkzeuge an jeder Fräse nach einem bestimmten System:

z.B.: VHSFR-010.00-4S-30lg

steht für: Vollhartmetall-Schaftfräser, 10mm Durchmesser, 4 Schneiden als "S" Schlichtfräser und ist 30mm ausgespannt.

Jetzt möchte ich dieses System auch mit dem PP umsetzten und habe die Sub-Routine "PrintAllTools" im PP dementsprechend geändert:
CODE
          ...
          wkzd1 = pos(".",Toolinfo_Durchmesser)
          wkzd2 = LEN(Toolinfo_Durchmesser)
          if wkzd1 > 0 then wkzd1 = wkzd2 - wkzd1 + 1 else wkzd1 = 0
          wkzd3 = "000.00"
          if wkzd1 = 0 then wkzd3 = COPY(wkzd3,1,3-wkzd2) + Toolinfo_Durchmesser + ".00"
          if wkzd1 = 2 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser + "0"
          if wkzd1 = 3 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser
          !FormBlock ! Ausgabe
          output OutStr$ + "( T" + Toolinfo_Nummer + ": " + WKZinfo + wkzd3 + "-0S-" + Toolinfo_Laenge + "lg - " + UPCASE(k) + " )"
          ...


Die Berechnungen in den ersten drei Zeilen dienen der Formatierung mit führender und folgender Null. Dann wird die Zahl je nach Position der Kommastelle zusammengebaut und ausgegeben.

CODE
N2  ( ... WERKZEUGLISTE ........................ )
N3  ( T21: HSSFR-019.70-0S-35lg - SCHAFTFRÄSER L35, D19.7 HS )
N4  ( T53: VHSFR-003.90-0S-20lg - SCHAFTFRÄSER L20, D3.9 )
N5  ( T54: VHSFR-003.96-0S-20lg - SCHAFTFRÄSER L20, D3.96 )
N6  ( T55: VHSFR-004.00-0S-20lg - SCHAFTFRÄSER L20, D4 )
N7  ( ... ENDE WERKZEUGLISTE .................. )


Jetzt aber zu meinen eigentlichen Fragen:

1. Gibt es eine einfachere Art der Formatierung (Format Befehl) oder einen anderen Aufbau des Programms. Vielleicht hat ja jemand eine Idee?

2. Wie kann ich die Zähnezahl des Fräsers ermitteln? Im LOADTL Befehl wird dieser Wert scheinbar nicht mit übermittelt. Bisher habe ich also nur einen Platzhalter eingebaut. "-0S-".

MFG Uschi
TOP    
Beitrag 04.02.2013, 16:01 Uhr
SprutCAM
SprutCAM
Level 4 = Community-Meister
Gruppensymbol
Gruppe: Berater
Mitglied seit: 13.08.2003
Beiträge: 346

der einfachere Befehl ist ein Register. Bei Registern kann eine Formatierung vorgenommen werden.
Die Zähnezahl wird im PP nicht ausgegeben. Gebe ich mal an die Entwicklung weiter.


--------------------
Datentechnik Reitz GmbH & Co. KG
Händler und Support von
Sprutcam, Eureka, Blechcenter, Vector
T:06461 / 7593437
F:06461 / 7593438
www.cnc-Technik.de
[email protected]
TOP    
Beitrag 05.02.2013, 10:53 Uhr
cncuschi
cncuschi
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 16.10.2005
Beiträge: 58

Hallo,

vielen Dank für die schnelle Antwort.
Register zu benutzen scheint eine gute Idee zu sein, ich hätte mir dazu aber eine etwas detailliertere Antwort gewünscht.
Jetzt habe ich mich selber mal daran versucht und scheiterte scheinbar an Unwissenheit. Im nachhinein frage ich mich auch ob dieser Weg wirklich der einfachere ist?

Also:

Neues Register angelegt:
WLT - Werkzeugliste (ganz am Ende der Liste)

Im PP unter PARTNO:
Werkzeugliste = 0
Werkzeugliste@ = 0


Im Sub des PP unter Filter:
replace(S,"WLT","") !Werkzeuglistenzähler Bezeichner löschen


Dann habe ich meinen Code etwas geändert und bekomme nun zumindest das Register angezeigt.

CODE
          Toolinfo_Nummer = CldFile[i].Cmd[j].Data[1]
          Toolinfo_Durchmesser = CldFile[i].Cmd[j].Data[5]
          Toolinfo_Laenge = CldFile[i].Cmd[j].Data[8]
          Werkzeugliste@ = 0
          Werkzeugliste = NUM(Toolinfo_Durchmesser)
          formblock
          wkzd1 = pos(".",Toolinfo_Durchmesser)
          wkzd2 = LEN(Toolinfo_Durchmesser)
          if wkzd1 > 0 then wkzd1 = wkzd2 - wkzd1 + 1 else wkzd1 = 0
          wkzd3 = "000.00"
          if wkzd1 = 0 then wkzd3 = COPY(wkzd3,1,3-wkzd2) + Toolinfo_Durchmesser + ".00"
          if wkzd1 = 2 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser + "0"
          if wkzd1 = 3 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser
          output OutStr$


Folgendes wird jetzt ausgegeben:

CODE
N10 ( ... WERKZEUGLISTE ........................ )
N11 020.00
N12 004.65
N13 005.00
N14 004.00
N15 008.00
N16 014.00
N17 010.00
N18 004.00
N19 004.00
N20 009.97
N21 012.00
N14 ( ... ENDE WERKZEUGLISTE .................. )


Soweit so gut. Jetzt scheitere ich aber daran den "Output OutStr$" Befehl zusammen zusetzten, damit die Ausgabe wieder folgendes Format hat:

N11 ( T21: HSSFR-019.70-0S-35lg - SCHAFTFRÄSER L35, D19.7 HS )

Mir scheint als wenn ich kurz vor der Lösung stehe...Sollte ich einen Lösungsweg finden, werde ich es hier posten.

Zu dem anderen Problem mit der Zähnezahl. Vielen Dank das Sie es weiterleiten, ich wäre natürlich über einen Hinweis diesbezüglich sehr dankbar.

MFG Uschi
TOP    
Beitrag 05.02.2013, 13:54 Uhr
cncuschi
cncuschi
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 16.10.2005
Beiträge: 58

Für diejenigen die es interessieren könnte. Ich habe das Problem nun selber lösen können.

In der Registertabelle steht weiterhin mein neu angelegtes Register: ID= WLT und Name= Werkzeugliste
Die Einträge unter "PARTNO" habe ich entfernt, die waren überflüssig. Auch in den Sub´s unter Filter den Eintrag habe ich wieder entfernt.

Der Aufbau unter "PrintAllTools" sieht nun folgendermaßen aus:

CODE
          Toolinfo_Nummer = CldFile[i].Cmd[j].Data[1]
          Toolinfo_Durchmesser = CldFile[i].Cmd[j].Data[5]
          Toolinfo_Laenge = CldFile[i].Cmd[j].Data[8]
          Werkzeugliste@ = 0
          Werkzeugliste = NUM(Toolinfo_Durchmesser)
          formblock !Formatierung anwenden
          speicher = COPY(OutStr$,len(OutStr$)-5,6) !letzten Teil auslesen
          OutStr$ = "" !OutStr$ leeren
          numkadr = numkadr@ !Nummer wieder auf Ursprung setzen
          formblock ! Satznummer ausgeben
          output OutStr$ + "( T" + Toolinfo_Nummer + ": " + WKZinfo + speicher + "-0S-" + Toolinfo_Laenge + "lg - " + UPCASE(k) + " )" !Werkzeugliste

Als Ausgabe aus dem PP erhalte ich nun:
CODE
N10 ( ... WERKZEUGLISTE ........................ )
N11 ( T21: VHSFR-020.00-0S-35lg - SCHAFTFRÄSER L35, D20 )
N12 ( T70: VHKBO-004.65-0S-30lg - BOHRER L30, D4.65, A130 )
N13 ( T83: VHGWD-005.00-0S-50lg - GEWINDEBOHRER L50, D5, A130 )
....
N18 ( ... ENDE WERKZEUGLISTE .................. )


Damit habe ich jetzt zwar eine andere Art der Formatierung eingebaut, aber das mir diese Variante nun besser gefällt kann ich nicht sagen.
Mir wäre ein "Format" Befehl, wie man ihn aus anderen Programmiersprachen kennt, lieber gewesen. Vielleicht ja in einer späteren SC-Version.

Über einen Hinweis zur Ausgabe der Zähnezahl des Werkzeugs würde ich mich trotzdem freuen.

Mit freundlichen Grüßen
Uschi
TOP    
Beitrag 05.02.2013, 14:16 Uhr
Heinz1955
Heinz1955
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 21.11.2012
Beiträge: 84

Hallo,

ich finde die Idee sehr interessant aber ich bin mir nicht ganz im klaren wo der Vorteil im Vergleich zu einem Einrichteplan liegt.

Mit freundlichen Grüßen

Heinz
TOP    
Beitrag 05.02.2013, 14:45 Uhr
cncuschi
cncuschi
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 16.10.2005
Beiträge: 58

QUOTE (Heinz1955 @ 05.02.2013, 14:16 Uhr) *
Hallo,

ich finde die Idee sehr interessant aber ich bin mir nicht ganz im klaren wo der Vorteil im Vergleich zu einem Einrichteplan liegt.

Mit freundlichen Grüßen

Heinz


Hallo Heinz,

die Werkzeugliste im NC-Programm hat für uns den Vorteil, dass wir nicht für jedes einmal erstellte Programm einen Einrichteplan pflegen oder irgendwo ablegen müssen. Wenn das Programm auf der Maschine gespeichert ist, können wir die Werkzeugdaten direkt im Programm anschauen und brauchen oftmals gar keinen Einrichteplan. In den Kopfdaten des Programms speichern wir auch Informationen zum Nullpunkt und zum Rohmaterial.

Da wir nur eine SC Lizenz besitzen, kommen wir auch nicht immer zum Einrichten an die Daten heran und eine extra Mappe mit Einrichteplänen führen wir nur bei wirklich aufwendigen Teilen.
Mit diesem System fahren wir sehr gut. Jeder Arbeiter kennt die Abkürzungen der Werkzeuge und findet sich sofort an jeder Maschine zurecht.

Die oben beschriebene Werkzeugliste soll ja kein Ersatz für einen Einrichteplan sein. Ich würde es eher als Ergänzung sehen.

MFG Uschi
TOP    
Beitrag 07.04.2014, 13:50 Uhr
cncuschi
cncuschi
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 16.10.2005
Beiträge: 58

Hallo,

Ich habe nach einer Möglichkeit gesucht meine Werkzeuge, im NC-Code, als formatierte Werkzeugliste auszugeben.
In dieser Werkzeugliste sollten einige technische Details des Werkzeugs ausgegeben werden.

Ich habe mir mal die Mühe gemacht, die Standard-Sub-Ausgabe "PrintAllTools", wie im Sprutcam Handbuch beschrieben,
um zuarbeiten. Meine Anforderungen:

- Die Werkzeugnummer sollte in der Liste nur noch einmal auftauchen
- Die Werkzeugnummern sortiert von klein nach groß ausgeben
- Technische Details wie Durchmesser, Zähnezahl und Länge beinhalten.

Zum Schluss sollte das ganze ja noch formatiert ausgegeben werden, aber der Übersichtlichkeit halber habe ich hier mal
darauf verzichtet. Wie ich die Werkzeuge formatiere habe ich ja schon weiter oben beschrieben.

CODE
sub PATS
  ! Coded from cncuschi - (www.cnc-arena.com)
  ToolArrayA: array of string ! Array definition
  ToolArrayB: array of string
  fc: Integer                 ! CLD-Filezähler
  cc: Integer                 ! CMD-Filezähler
  tc: integer                 ! Toolcounter
  bs1: integer                ! Bubblesort Zähler
  bs2: integer
  bstmp1: string              ! Bubblesort Speicher 1
  bstmp2: string              ! Bubblesort Speicher 2
  wkznr: string               ! Werkzeugnummer
  wkzdm: string               ! Werkzeugdurchmesser
  wkzart: string              ! Werkzeugkommentar
  wkzzahn: string             ! Zähnezahl Werkzeug
  wkzlng: string              ! Werkzeuglänge
  tc = 1                      ! Schleifenzähler
  bs = 1

  formblock
  output OutStr$ + "( . WERKZEUGLISTE ...................... )"

  for fc = 0 to CldFile.FileCount do begin
    if (CldFile[fc].Enabled > 0) and (CldFile[fc].IsNCSub = 0) then begin
      for cc = 1 to CldFile[fc].CmdCount do begin

        if CldFile[fc].Cmd[cc].Code = CodeOfCmd("LOADTL") then begin
          if CldFile[fc].Cmd[cc-3].Code = CodeOfCmd("PPFUN") then
            wkznr = CldFile[fc].Cmd[cc-3].Int["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Number"]
            wkzdm = CldFile[fc].Cmd[cc-3].Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.Diameter"]
            wkzart = CldFile[fc].Cmd[cc-3].Str["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Comment"]
            wkzart = copy(wkzart,1,32)         ! Ausgabelänge Kommentar begrenzen
            wkzzahn = CldFile[fc].Cmd[cc-3].Int["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.TeethCount"]
            wkzlng = CldFile[fc].Cmd[cc-3].Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.Length"]

            ToolArrayA[tc] = "T"+wkznr+": "+wkzart
            ToolArrayB[tc] = " ->: D="+wkzdm+" Z="+wkzzahn+" L="+wkzlng
            tc = tc + 1

         end
      end
    end
  end
  for bs = 1 to tc-2 do                 ! Bubblesort der Werkzeugliste
    begin
      for fc = 1 to tc-2 do
        begin
          bs1 = num(copy(ToolArrayA[fc],2,pos(":",ToolArrayA[fc])-2))
          bs2 = num(copy(ToolArrayA[fc+1],2,pos(":",ToolArrayA[fc+1])-2))
          if bs1 > bs2 then
            begin
              bstmp1 = ToolArrayA[fc+1]
              bstmp2 = ToolArrayB[fc+1]
              ToolArrayA[fc+1] = ToolArrayA[fc]
              ToolArrayB[fc+1] = ToolArrayB[fc]
              ToolArrayA[fc] = bstmp1
              ToolArrayB[fc] = bstmp2
            end
        end
    end
  for fc = 1 to tc-1 do                   ! Ausgabe der Arrays
    begin
      formblock                    
      output outstr$ + "( " + ToolArrayA[fc] + " )"
      formblock
      output outstr$ + "( " + ToolArrayB[fc] + " )"
    end
  formblock
  output OutStr$ + "( ..................................... )"
subend

Wie gesagt ist es als SUB angelegt und kann "PrintAllTools" ersetzen.

Den Programmcode könnt ihr benutzen, aber der Hinweis auf "cncuschi" und "cnc-arena.com" sollte erhalten bleiben !

Damit ist auch dieses Thema für mich abgeschlossen. biggrin.gif

cncuschi
TOP    
Beitrag 07.04.2014, 13:55 Uhr
cncuschi
cncuschi
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 16.10.2005
Beiträge: 58

Die Ausgabe sieht übrigens folgendermaßen aus:
Wie gesagt allerdings unformatiert!

CODE
N3 ( . WERKZEUGLISTE ...................... )
N4 ( T20: Torus Fraeser L38, D16, Rc1 )
N5 (  ->: D=16 Z=2 L=38 )
N6 ( T51: Gravierfraeser L20, D6, A45, dm0, )
N7 (  ->: D=6 Z=4 L=20 )
N8 ( T69: Torus Fraeser L38, D12, Rc0.3 )
N9 (  ->: D=12 Z=4 L=38 )
N10 ( T71: Bohrer L40, D3.65, A140 )
N11 (  ->: D=3.65 Z=2 L=40 )
N12 ( T83: Gewindebohrer L40, D4, A180 )
N13 (  ->: D=4 Z=2 L=40 )
N14 ( ..................................... )

Diese Liste mit den originalen technischen Daten ist nicht mehr so fehleranfällig gegenüber der PrintAllTools Version.
Die PrintAllTools Version liest nur den Kommentar aus und der muss nicht zwangsläufig stimmen.

Gruß cncuschi

Der Beitrag wurde von cncuschi bearbeitet: 07.04.2014, 13:57 Uhr
TOP    
Beitrag 07.04.2014, 18:15 Uhr
Heinz1955
Heinz1955
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 21.11.2012
Beiträge: 84

Sehr geil,

ich folge deiner Aufforderung und werde CNCUschi noch groß schreiben.

smile.gif

Gruß

Heinz.
TOP    
Beitrag 08.04.2014, 06:18 Uhr
cncuschi
cncuschi
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 16.10.2005
Beiträge: 58

thumbs-up.gif biggrin.gif smile.gif smile.gif

Gruß CNCuschi
TOP    



1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: