Siemens Digital Industries Software
Siemens Digital Industries Software

Where today meets tomorrow.

Zeitausgabe und Toollist

Beitrag 28.12.2005, 16:32 Uhr
Incubus
Incubus
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 24.01.2005
Beiträge: 83
Hab folgendes am Ende meines PP (end_of_programm) um in ein .doc file die Toollist und die Bearbeitungszeiten + einzelzeiten auszugeben, doooferweise fehlt immer das kletzte Werkzeug der mom_tool_count zeigt zwar richtig an aber die Daten fürs letzte WZ fehlen, wenn ich nur ein WZ habe kommt garnix raus.
Ich Vermute das es "zu schnell durchläuft" und die Daten da noch nicht verfügbar sind, gibts da eine möglichkeit die Daten vor dem durchlauf dieser proc "hochzuladen" oder so ?

weiß wer wo hier der "Hecht" drinn ist ?


Die Var fr_tool_names ist eine Array und wird immer nach dem Toolchange (initial_move) geschrieben:
set fr_tool_names($mom_tool_count) $mom_tool_name


# ---------------------------------------------
# ---------------------------------------------
global mom_machine_time
global mom_tool_use mom_tool_name
global mom_tool_count fr_tool_names
global ptp_file_name
global mom_output_file_directory mom_output_file_basename
# ---------------------------------------------
# ---------------------------------------------

# schliessen des NC-files
MOM_close_output_file $ptp_file_name
MOM_set_seq_off
# ---------------------------------------------

# Var setzen fuer pfad
set zeit zeit\\
set pfad_doc $mom_output_file_directory$zeit$mom_output_file_basename.doc
# ---------------------------------------------

# abfrage ob file und pfad besteht wenn ja dann loeschen von file
if {[info exists pfad_doc]} {
MOM_remove_file $pfad_doc
}
# ---------------------------------------------

# erzeugen des verzeichnisses zum ablegen der .doc datei
file mkdir $mom_output_file_directory\\zeit
# ---------------------------------------------

# oeffnen der .doc datei
MOM_open_output_file $pfad_doc
# ---------------------------------------------

# schreiben in die .doc datei
if {[hiset mom_machine_time] == 0} {set mom_machine_time 0}
MOM_output_literal "; ********************************************"
MOM_output_literal "; "
MOM_output_literal "; Gesamtbearbeitungszeit :[ format "%.2f" $mom_machine_time] min"
if {[isset mom_tool_count] == "n"} {return}
MOM_output_literal "; "
MOM_output_literal "; "
MOM_output_literal "; Werkzeugliste mit Bearbeitungszeit"
MOM_output_literal "; ********************************************"

MOM_output_literal "tool count $mom_tool_count"

set tool_nr_limit [expr $mom_tool_count + 1]


if {[hiset mom_tool_count]} {
for { set nn 0 } { $nn < $tool_nr_limit } {incr nn 1} {
if {[info exists mom_tool_use($nn,0)] && [info exists mom_tool_use($nn,1)] && [info exists fr_tool_names($nn)]} {
set a [scan $mom_tool_use($nn,0) %d tn]
set output [format "%-20s %-3s %-5.2f" $fr_tool_names($nn) $tn $mom_tool_use($nn,1)]
MOM_output_literal $output
}
}
}
set a [scan $mom_tool_use($mom_tool_count,0) %d tn]
set output [format "%-20s %-3s %-5.2f" $fr_tool_names($mom_tool_count) $tn $mom_tool_use($mom_tool_count,1)]
MOM_output_literal $output

MOM_output_literal "; ********************************************"
# ---------------------------------------------

# schliessen der .doc datei oeffnen der NC-datei
MOM_close_output_file $pfad_doc
MOM_open_output_file $ptp_file_name
# ---------------------------------------------

MOM_set_seq_on
# ---------------------------------------------

Steht natürlich allen zur weiterverwendung zur verfügung !
   
Beitrag 11.01.2006, 16:04 Uhr
Incubus
Incubus
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 24.01.2005
Beiträge: 83
Um mal was zu Posten was hoffentlich hilfreich ist und auch gut funktioniert tounge.gif

Hier die buggefixte "luxusversion" meiner Zeitausgabe und eine Toollist die im Tabellenformat für Heidenhain ausgegeben wird und direkt mit dem NC-Code auf die Maschine geschoben werden kann.

Als erstes müssen wir paar Daten sammeln diese Prozedur im Postbuilder unter "initial move" anlegen (proc PB_CMD_set_initial_move_flags):
CODE
global mom_tool_count mom_tool_name fr_tool_names
global fr_tool_change fr_np_change fr_wzw_count
global fr_tool_data mom_tool_diameter mom_tool_corner1_radius
global mom_spindle_speed mom_feed_cut_value

set fr_tool_names($mom_tool_count) $mom_tool_name

# Tool Data fuer WZ-Tabellen ausgabe am schluss
if {![info exists mom_tool_diameter]} {set mom_tool_diameter 0.00001}
if {![info exists mom_tool_corner1_radius]} {set mom_tool_corner1_radius 0}
set fr_tool_data($mom_tool_count,0) $mom_tool_diameter
set fr_tool_data($mom_tool_count,1) $mom_tool_corner1_radius
set fr_tool_data($mom_tool_count,2) [expr ($mom_tool_diameter*$mom_spindle_speed*3.1416)/1000]
set fr_tool_data($mom_tool_count,3) [expr ($mom_feed_cut_value/$mom_spindle_speed)]

set fr_tool_change 1
set fr_np_change 1
if {![info exists fr_wzw_count]} {set fr_wzw_count 0}
set fr_wzw_count [expr $fr_wzw_count +1]



der Code für die Zeitausgabe muss im Postbuilder unter "End of Programm" rein (proc PB_CMD_Zeitausgabe):
CODE
# ---------------------------------------------
global mom_machine_time
global mom_tool_use mom_tool_name
global mom_tool_count fr_tool_names
global ptp_file_name
global mom_output_file_directory mom_output_file_basename
global fr_wzw_zeit fr_wzw_count fr_rs_fraes_zeit fr_datum
global mom_kin_rapid_feed_rate mom_cutting_time
global mom_logname
# ---------------------------------------------
# ---------------------------------------------

# schliessen des NC-files
MOM_close_output_file $ptp_file_name
MOM_set_seq_off
# ---------------------------------------------

# Var setzen fuer pfad
set zeit "Zeit\\"
set pfad_doc $mom_output_file_directory$zeit$mom_output_file_basename.doc
# ---------------------------------------------

# abfrage ob file und pfad besteht wenn ja dann loeschen von file
if {[info exists pfad_doc]} {
    MOM_remove_file $pfad_doc
}
# ---------------------------------------------

# erzeugen des verzeichnisses zum ablegen der .doc datei
file mkdir $mom_output_file_directory\\zeit
# ---------------------------------------------

# oeffnen der .doc datei
MOM_open_output_file $pfad_doc
# ---------------------------------------------

# schreiben in die .doc datei
if {[hiset mom_machine_time] == 0} {set mom_machine_time 0}

# mom_machine_time wegen Ruecksenkfraesen korrigieren
if {[info exists fr_rs_fraes_zeit] && $fr_rs_fraes_zeit > 0} {
set mom_machine_time [expr $fr_rs_fraes_zeit + $mom_machine_time]
  }
# Bearbeitungszeit + WZW Zeit
if {[info exists fr_wzw_count] && $fr_wzw_count > 0} {
set mom_machine_time [expr ($fr_wzw_count * $fr_wzw_zeit) + $mom_machine_time]
  }

# Cutting Time wegen Ruecksenkfraesen korrigieren
if {[info exists fr_rs_fraes_zeit] && $fr_rs_fraes_zeit > 0} {
set mom_cutting_time [expr $fr_rs_fraes_zeit + $mom_cutting_time]
  }
set cut_prozent [expr (100 / $mom_machine_time) * $mom_cutting_time]


# Nebenzeit
set nebenzeit [expr $mom_machine_time - $mom_cutting_time]
set neben_prozent [expr 100 - $cut_prozent]



MOM_output_literal "$fr_datum  $mom_logname"
      MOM_output_literal  "********************************************"
      MOM_output_literal  " "
      MOM_output_literal  "Gesamtbearbeitungszeit: [ format  "%-2.2f" $mom_machine_time] min"
      MOM_output_literal  "Eingriffszeit: [ format  "%-2.2f" $mom_cutting_time] min ([ format  "%-2.0f" $cut_prozent]%)"
      MOM_output_literal  "Nebenzeit: [ format  "%-2.2f" $nebenzeit] min ([ format  "%-2.0f" $neben_prozent]%)"  
# if {[isset mom_tool_count] == "n"} {return}
      MOM_output_literal  " "          
      MOM_output_literal  "********************************************"
      MOM_output_literal  "Einzelzeiten:"
      MOM_output_literal  "--------------------------------------------"

set wz_na "Werkzeug"
set wz_nr "WZ-Nr."
set wz_ez "WZ-Einzelzeit"
set output [format "%-20s %-6s %-5s" $wz_na $wz_nr $wz_ez]    
      MOM_output_literal $output
      MOM_output_literal  "--------------------------------------------"

if {[hiset mom_tool_count]} {
    for { set nn 0 } { $nn <= $mom_tool_count } {incr nn 1} {
    set fn [expr $nn+1]
      if {[info exists mom_tool_use($nn,0)] && [info exists mom_tool_use($nn,1)] && [info exists fr_tool_names($fn)]} {
       set a [scan $mom_tool_use($nn,0) %d tn]
       set output [format "%-20s %-6s %-5.2f" $fr_tool_names($fn) $tn $mom_tool_use($nn,1)]        
    MOM_output_literal $output

    }
  }
}

if {![info exists fr_wzw_count]} {set fr_wzw_count 0}

 MOM_output_literal  "********************************************

Anzahl der WZW: $fr_wzw_count
WZ-Wechselzeit: $fr_wzw_zeit Min.
Durschn. Eilgang: $mom_kin_rapid_feed_rate mm/min"

# ---------------------------------------------

# schliessen der .doc datei oeffnen der NC-datei
MOM_close_output_file $pfad_doc
MOM_open_output_file $ptp_file_name
# ---------------------------------------------

MOM_set_seq_on
# ---------------------------------------------



Dieser Code für die Heidenhain Tabelle mit den Werkzeugen muss im Postbuilder auch unter "End of Programm" rein (proc PB_CMD_wz_tab_output):
CODE
# ---------------------------------------------
global mom_tool_count
global ptp_file_name
global mom_output_file_directory mom_output_file_basename
global fr_tool_data fr_tool_names
# ---------------------------------------------
# ---------------------------------------------

# schliessen des NC-files
MOM_close_output_file $ptp_file_name
MOM_set_seq_off
# ---------------------------------------------

# Var setzen fuer WZ-Liste
set tool_tab "WZ-LISTE"
set pfad_tab $mom_output_file_directory$tool_tab.TAB
# ---------------------------------------------
# abfrage ob file und pfad besteht wenn ja dann loeschen von file
if {[info exists pfad_tab]} {MOM_remove_file $pfad_tab}
# ---------------------------------------------
# oeffnen der .TAB datei
MOM_open_output_file $pfad_tab
# ---------------------------------------------

MOM_output_literal "BEGIN $tool_tab .TAB
#STRUCTBEGIN
  NAME = Werkzeug
    TYPE = C
    WIDTH = 16
    DEC = 0
    DIA-ENGLISH = Werkzeugname
    DIA-GERMAN = Werkzeugname
    DIA-CZECH =
    DIA-FRENCH =
    DIA-ITALIAN =
    DIA-SPANISH =
    DIA-PORTUGUE =
    DIA-SWEDISH =
    DIA-DANISH =
    DIA-FINNISH =
    DIA-DUTCH =
    DIA-POLISH =
    DIA-HUNGARIA =
  NAME = Nenn-DM
    TYPE = N
    WIDTH = 12
    DEC = 4
    DIA-ENGLISH = Durchmesser
    DIA-GERMAN = Durchmesser
    DIA-CZECH =
    DIA-FRENCH =
    DIA-ITALIAN =
    DIA-SPANISH =
    DIA-PORTUGUE =
    DIA-SWEDISH =
    DIA-DANISH =
    DIA-FINNISH =
    DIA-DUTCH =
    DIA-POLISH =
    DIA-HUNGARIA =
  NAME = Er.
    TYPE = N
    WIDTH = 6
    DEC = 2
    DIA-ENGLISH = Eckenradius
    DIA-GERMAN = Eckenradius
    DIA-CZECH =
    DIA-FRENCH =
    DIA-ITALIAN =
    DIA-SPANISH =
    DIA-PORTUGUE =
    DIA-SWEDISH =
    DIA-DANISH =
    DIA-FINNISH =
    DIA-DUTCH =
    DIA-POLISH =
    DIA-HUNGARIA =
  NAME = V
    TYPE = N
    WIDTH = 6
    DEC = 0
    DIA-ENGLISH = Schnittgeschw.
    DIA-GERMAN = Schnittgeschw.
    DIA-CZECH =
    DIA-FRENCH =
    DIA-ITALIAN =
    DIA-SPANISH =
    DIA-PORTUGUE =
    DIA-SWEDISH =
    DIA-DANISH =
    DIA-FINNISH =
    DIA-DUTCH =
    DIA-POLISH =
    DIA-HUNGARIA =
  NAME = F/U
    TYPE = N
    WIDTH = 6
    DEC = 2
    DIA-ENGLISH = Vorschub
    DIA-GERMAN = Vorschub
    DIA-CZECH =
    DIA-FRENCH =
    DIA-ITALIAN =
    DIA-SPANISH =
    DIA-PORTUGUE =
    DIA-SWEDISH =
    DIA-DANISH =
    DIA-FINNISH =
    DIA-DUTCH =
    DIA-POLISH =
    DIA-HUNGARIA =
#STRUCTEND
NR      Werkzeug         Nenn-DM      Er.    V      F/U"

# ausgabe der Werkzeuge:

for { set nn 0 } { $nn <= $mom_tool_count } {incr nn 1} {
    set fn [expr $nn+1]
      if {[info exists fr_tool_names($fn)]} {
       set output [format "%-7s %-16s %-12.2f %-6.2f %-6.0f %-6.2f" $nn $fr_tool_names($fn) $fr_tool_data($fn,0) $fr_tool_data($fn,1) $fr_tool_data($fn,2) $fr_tool_data($fn,3)]
    MOM_output_literal $output
}
}
MOM_output_literal "\[END\]"
# ---------------------------------------------

# schliessen der .TAB Datei oeffnen der NC-datei
MOM_close_output_file $pfad_tab
MOM_open_output_file $ptp_file_name
# ---------------------------------------------

MOM_set_seq_on
# ---------------------------------------------



Ich hoffe das hilft dem einen oder anderen thumbs-up.gif

Bin für alle Tipps offen, bitte sagt es mir wenn da irgendwas umständlich oder falsch ist, lerne immer gerne dazu !

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