Edycja Postprocesora

Awatar użytkownika

Autor tematu
djronin
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 262
Rejestracja: 22 kwie 2011, 01:19
Lokalizacja: Jarocin

Edycja Postprocesora

#1

Post napisał: djronin » 10 lis 2012, 22:11

Witam mam problem z edycją postprocesora. Chciałem dodać aby po wymianie narzędzia postprocesor wpisał do programu nazwę następnego narzędzia dzięki temu kolejne narzędzie które będzie używane uszykuje się do wymiany.
Sterowanie Sinumerik 810D.

Co prawda udało mi się to ale czy potrzebne jest tyle linijek kodu ?? i tyle zmiennych?

----------------------------------
Plik:
Sinumerik_810D_3x.gpp

----------------------------------

Kod: Zaznacz cały

@init_post
    global string  tool_diameter_f r_file_name tool_1 tool_2 tool_3 tool_4 tool_5 tool_6 tool_7 tool_8 tool_9 tool_10 tool_11 tool_12 tool_13 tool_14 tool_15 tool_16 tool_17 tool_18 tool_19 tool_20
    global integer save_proc  
    global logical m_feed_flag first_rapid_move main rot_flag loop_flag cooling_flag
    global numeric save_feed save_spin moov_x moov_y moov_z winkel tool_1r tool_2r tool_3r tool_4r tool_5r tool_6r tool_7r tool_8r tool_9r tool_10r tool_11r tool_12r tool_13r tool_14r tool_15r tool_16r tool_17r tool_18r tool_19r tool_20r
----------------------------------

Kod: Zaznacz cały

@end_program
    {nb,'T="'tool_1,'_',tool_1r,'"'}    ;wrzucenie 1 narzędzia na koniec programu
    {nb,'M6  ;wymiana narzędzia'}  ;wymiana narzędzia
    if tylko_kod eq true
    {nb, 'M17 ;Koniec Podprogramu'} 
    {nb, ''} 
    else
    {nb, 'M30 ;Koniec Programu'} 
    {nb, ''} 
    endif
----------------------------------

Kod: Zaznacz cały

@def_tool
   if tylko_kod ne true
   if tool_number eq 1
tool_1 = upper(tool_user_type) 
tool_1r = (tool_offset*2) 
   endif
   if tool_number eq 2
tool_2 = upper(tool_user_type) 
tool_2r = (tool_offset*2) 
   endif
   if tool_number eq 3
tool_3 = upper(tool_user_type) 
tool_3r = (tool_offset*2) 
   endif
   if tool_number eq 4
tool_4 = upper(tool_user_type) 
tool_4r = (tool_offset*2) 
   endif
   if tool_number eq 5
tool_5 = upper(tool_user_type) 
tool_5r = (tool_offset*2) 
   endif
   if tool_number eq 6
tool_6 = upper(tool_user_type) 
tool_6r = (tool_offset*2) 
    endif
   if tool_number eq 7
tool_7 = upper(tool_user_type) 
tool_7r = (tool_offset*2) 
   endif
   if tool_number eq 8
tool_8 = upper(tool_user_type) 
tool_8r = (tool_offset*2) 
   endif
   if tool_number eq 9
tool_9 = upper(tool_user_type) 
tool_9r = (tool_offset*2) 
   endif
   if tool_number eq 10
tool_10 = upper(tool_user_type) 
tool_10r = (tool_offset*2) 
   endif
   if tool_number eq 11
tool_11 = upper(tool_user_type) 
tool_11r = (tool_offset*2) 
   endif
   if tool_number eq 12
tool_12 = upper(tool_user_type) 
tool_12r = (tool_offset*2) 
   endif
   if tool_number eq 13
tool_13 = upper(tool_user_type) 
tool_13r = (tool_offset*2) 
   endif
   if tool_number eq 14
tool_14 = upper(tool_user_type) 
tool_14r = (tool_offset*2) 
    endif
   if tool_number eq 15
tool_15 = upper(tool_user_type) 
tool_15r = (tool_offset*2) 
   endif
   if tool_number eq 16
tool_16 = upper(tool_user_type) 
tool_16r = (tool_offset*2) 
    endif
   if tool_number eq 17
tool_17 = upper(tool_user_type) 
tool_17r = (tool_offset*2) 
   endif
   if tool_number eq 18
tool_18 = upper(tool_user_type) 
tool_18r = (tool_offset*2) 
   endif
   if tool_number eq 19
tool_19 = upper(tool_user_type) 
tool_19r = (tool_offset*2) 
     endif
   if tool_number eq 20
tool_20 = upper(tool_user_type) 
tool_20r = (tool_offset*2) 
     endif

   {nb, '; - T',tool_number'  '} 
    if tool_message eq ''
       {upper(tool_user_type), '_' (tool_offset*2)} 
       if corner_radius ne 0
          {'_R'corner_radius} 
       endif 
    else
       {upper(tool_message)} 
    endif
   endif
endp
do zmiennych typu string oraz numeric zapisuję nazwy użytych narzędzi oraz ich średnicę
----------------------------------

Kod: Zaznacz cały

@change_tool
if tylko_kod ne true
   if !first_tool
       {nb,'M9'} 
       cooling_flag = false
       {nb,'G0 Z',tool_z_level} 
   endif
   if tool_message ne ''
      {nb,'T="'upper(tool_message)'"'} 
   else
      {nb,'T="',upper(tool_user_type), '_'tool_diameter:integer_def_f,'"'} 
   endif
   {nb,'M6'} 

if next_tool_number eq 2 ;jeśli następne narzędzie jest drugim z kolei
 {nb,'T="'tool_2,'_',tool_2r,'"'}  ;to wprowadź jego nazwę i średnicę
endif
if next_tool_number eq 3
 {nb,'T="'tool_3,'_',tool_3r,'"'} 
endif
if next_tool_number eq 4
 {nb,'T="'tool_4,'_',tool_4r,'"'} 
endif
if next_tool_number eq 5
 {nb,'T="'tool_5,'_',tool_5r,'"'} 
endif
if next_tool_number eq 6
 {nb,'T="'tool_6,'_',tool_6r,'"'} 
endif
if next_tool_number eq 7
 {nb,'T="'tool_7,'_',tool_7r,'"'} 
endif
if next_tool_number eq 8
 {nb,'T="'tool_8,'_',tool_8r,'"'} 
endif
if next_tool_number eq 9
 {nb,'T="'tool_9,'_',tool_9r,'"'} 
endif
if next_tool_number eq 10
 {nb,'T="'tool_10,'_',tool_10r,'"'} 
endif
if next_tool_number eq 11
 {nb,'T="'tool_11,'_',tool_11r,'"'} 
endif
if next_tool_number eq 12
 {nb,'T="'tool_12,'_',tool_12r,'"'} 
endif
if next_tool_number eq 13
 {nb,'T="'tool_13,'_',tool_13r,'"'} 
endif
if next_tool_number eq 14
 {nb,'T="'tool_14,'_',tool_14r,'"'} 
endif
if next_tool_number eq 15
 {nb,'T="'tool_15,'_',tool_15r,'"'} 
endif
if next_tool_number eq 16
 {nb,'T="'tool_16,'_',tool_16r,'"'} 
endif
if next_tool_number eq 17
 {nb,'T="'tool_17,'_',tool_17r,'"'} 
endif
if next_tool_number eq 18
 {nb,'T="'tool_18,'_',tool_18r,'"'} 
endif
if next_tool_number eq 19
 {nb,'T="'tool_19,'_',tool_19r,'"'} 
endif
if next_tool_number eq 20
 {nb,'T="'tool_20,'_',tool_20r,'"'} 
endif
if last_tool eq true
 {nb,'T="'tool_1,'_',tool_1r,'"'} 
endif

    save_spin = 0

    if first_tool then
       {nb,'G0 Z',znext} 
    endif
endif
endp
----------------------------------

Efekt jest taki jak niżej:


PRZED EDYCJĄ:

Kod: Zaznacz cały

T="GLOWICA_50" 
M6
...
...
...
T="WIERTŁO_6.8" 
M6
...
...
...
T="GWINTOWNIK_8" 
M6
...
...
...
M30

PO ZMIANIE:

Kod: Zaznacz cały

T="GLOWICA_50" 
M6
T="WIERTŁO_6.8" 
...
...
...
T="WIERTŁO_6.8" 
M6
T="GWINTOWNIK_8" 
...
...
...
T="GWINTOWNIK_8" 
M6
T="GLOWICA_50" 
...
...
...
T="GLOWICA_50" 
M6
M30

Moje pytanie brzmi czy istnieje jakaś zmienna która określała by nazwę "Następnego narzędzia" coś jak tool_user_type która wprowadza nazwę aktualnego ??



Tagi:

Awatar użytkownika

Autor tematu
djronin
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 262
Rejestracja: 22 kwie 2011, 01:19
Lokalizacja: Jarocin

#2

Post napisał: djronin » 16 gru 2012, 10:07

Witam!!

Poprawiłem nieco kod szykowania następnego narzędzia. Wersja przedstawiona wyżej sprawdzała się tylko podczas testów.

Kod: Zaznacz cały

@init_post
    global string  tool_def<<100>> 
    global integer def_tool_number
    global logical prepare_next_tool
    global numeric tool_prog_end
    call @user_settings
    def_tool_number = 1
endp


@user_settings
   prepare_next_tool  = 1     ; przygotuj następne narzędzie
   tool_prog_end      = 2     ; 0= brak akcji, 1= wyładowanie narzędzia, 2= załadowanie pierwszego narzędzia
endp

@def_tool
   {nl,'; ' ,def_tool_number:'2/2.0(p)', '.  '}   ;drukuj w programie liste narzędzi (format liczbowy 01 ~ 99) 
   if tool_message eq ''
   text = tool_user_type
   call @usr_rep_pl
   {upper(text), '_' (tool_offset*2)} 
     else
   text = tool_message
   call @usr_rep_pl
      {upper(text)} 
   endif
   
   def_tool_number = def_tool_number + 1 ;licznik (numeracja) 
   tool_def<<tool_number>> = upper(text) + '_' + tostr((tool_offset*2):numeric_def_f) ; przyporządkowanie nazwy narzędzia do numeru narzędzia
endp


@change_tool

   if !first_tool
       {nb,'M9'} 
       cooling_flag = false
   endif

   if first_tool eq true
      first_spin = spin
   endif

   if tool_message ne ''
      text = tool_message
        call @usr_rep_pl	;usuń polskie znaki
         {nb,'T="'upper(text)'"'} 
   else
      text = tool_user_type
        call @usr_rep_pl	;usuń polskie znaki
         {nb,'T="',upper(text), '_'tool_diameter:numeric_def_f} 
         {'"'} 
   endif

   {' M6'} 

   if prepare_next_tool eq 1	;jeśli chcemy ładować kolejne narzędzie
     if (def_tool_number-1) gt 2 ;jeśli użyto więcej niż 2 narzędzia
        {nb,'T="',tool_def<<next_tool_number>>,'"'}  ;następne narzędzie
          if hd_next_tool eq 1	;jeśli chcemy ukryć wyświetlanie w edytorze sinumerik
            {hide_str}	;ukrywanie (;*HD*) 
          endif
     endif
   endif
    save_spin = 0
endp

;======================

@end_program

    call @usr_tool_prog_end
    gcode = 30
    {nb, 'M'gcode} 
    {' '} 
  if use_sub_prog <> 1 
    {nl,'!!delete file = c:\\tempfile.tmp !!'} 
    {nl,'!!close file='main_prog_path1'MPF!!'} 
    {nl,'!!copy file='main_prog_path1'MPF!!'} 
  endif
        spin = first_spin
        main = false

endp


@usr_tool_prog_end ;zachowanie się na końcu programu 0=bez_akcji;1=rozładuj_narzędzie;2=załaduj_1_narzędzie
   if tool_prog_end eq 2
     {nb,'T="',tool_def<<next_tool_number>>,'"'} 
     {' M6'} 
   endif
   if tool_prog_end eq 1
     {nb,'T0'} 
     {' M6'} 
   endif
endp

Pozdrawiam..

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „SolidCAM”