Strona 1 z 1

Sinumerik 840C lub 840D. Wyzwanie programistyczne

: 03 mar 2009, 00:17
autor: kefiros
Mamy taki problem.
Maszyna Heckert, posiada 2 palety (automatycznie wymienne stoły). Oś B obrotu stołu.
Na każdej palecie kolumna na której mamy 48 detali (po 12 na jednej ścianie)
1 strona detalu kąt B0
2 strona detalu kąt B90
1 strona detalu kąt B180
2 strona detalu kąt B270

z 1 strony detal jest wiercony wiertłem fi 11 oraz fazowany
z 2 strony wiercony fi 11, fazowany (ta sama głębokość co z 1 strony) wiercony fi 9 (na przelot grubość detalu 30) oraz gwintowany M10x1

Na drugiej palecie mamy to samo czyli 96 detali w sumie do obrobienia w jednym programie.
Dodatkowy warunek jest taki że każdy detal musi się dać skorygować w programie osobno (uwzględniająca nieprawidłowe rozstawienie detali lub różna głębokość detalu spowodowany błędnym wyszlifowaniem gniazda itp.)

Jestem bardzo ciekaw jak drodzy programiści byście sobie z tym poradzili.
Nie chodzi mi oczywiście o kod tylko zamysł programistyczny.

: 03 mar 2009, 06:49
autor: gelo
Skoror kazdy z 96 detali musi byc osobno korygowany - wiec trzeba dla kazdego elementu wywolywac cykl, do ktorego bedziemy przekazywac parametry. Z tym, ze zmiennych jest duzo. Do dyspozycji istnieja R parametry, ale tych jest tylko 100 :( . Jest tez mozliwosc definiowania zmiennych a przede wszystkim tabel :). W zwiazku z tym mozesz stworzyc dla kazdej operacji tabele zmiennych opisujaca pojedynczy parametr. Na poczatek mozna zalozyc ze wszystkie zmienne z tego samego paramateru dostaja wartosci domyslne ( np otwor fi 11 bedzie mial glebokosc 30mm . W tym celu tworzymy tabele DEF REAL gleb[i,j]
gdzie i - indeks palety 1..4 a j - indeks elementu na palecie. Oczywiscie wygodnie jest uzyc petli do wypelnienia takiej tabeli
for j=1 to 48;
gleb[1,j]=30;
gleb[2,j]=30
....
itd
To samo robimy z innymi potrzebnymi nam parametrami.
Potem uzywamy tych parametrow w wywolaniu cykli, a jesli trzeba cos skorygowac podajemy np gleb[3,35]=30.2, (paleta 3, detal 35 = glebokosc wiercenia 30.2).

Najlepsze jest to, ze tworzac te zmienne jako globalne mozemy wczytywac cale zestawy parametrow z gotowego pliku przygotowanego wczesniej podczas zaladunku detali na palete..
Oczywiscie zeby to wszystko sie udalo nalezaloby ustalic kilka danych maszynowycm, ktore pozwola na zdefiniowanie takiej ilosci zmiennych.

Wszystko to opisane jest w instrukcjach Siemensa
840D_PG
840D_PGA
840D_PGZ
do zdobycia na stronach Siemensa
http://www.automation.siemens.com/docon ... &scope=all

: 03 mar 2009, 20:50
autor: rafalxfiles
Ja tak na szybko zrobił bym to w ten sposób, że.. napisał bym podprogram na wiercenie i podprogram na gwintowanie.. i napisał bym go przyrostowo a nie w współrzędnych absolutnych.. i później podjazd na zadaną pozycję i wywołanie podprogramu.. i tak dalej.

Korygowanie poprzez zmianę pozycji w programie.. myślę że dosyć szybko by to działało no i nie za dużo myślenia i pisania.

: 03 mar 2009, 21:48
autor: Primoza2007
Rozwiązanie gelo, jest super. Lecz gdy miałbym szybką sondę zrobiłbym podprogramy na każdą operację i tylko wywoływał w programie zmieniając bazy. Po pierwszym ustawieniu zapisałbym sobie tabelę punktów zerowych do pliku. Fakt że pomiar tych 48 detali z automatu trwałby chwilę (przy szukaniu środka i pomiarze Z około 15s czyli 12 min all :grin:) Nie ulega kwestii również zużycie baterii. Wszystko zależy co sprawniej wyjdzie. Sztuka w rękę, pomiar i korekta zmiennych czy sonda która jak widać tutaj bardzo ułatwiłaby pracę. Poza tym wykluczamy czynnik ludzki :wink:

: 03 mar 2009, 22:18
autor: CNCRob
Primoza2007 pisze:Poza tym wykluczamy czynnik ludzki
ale zajmujemy maszyne... teraz policzmy czy taniej wyjdzie zaplacic czlowiekowi ktory stoi przy maszynie za pomiary czy taniej bedzie zajmowac maszyne ktora w tym czasie nie zrobi kolejnych detali...? skoro na stol kladziona jest taka ilosc detali to zaloze sie, ze ilosc wszystkich jest wieksza niz 10tys...

: 04 mar 2009, 13:35
autor: Jackow
Program piszemy na zmiennych do przesuwania baz , wykonanie detalu jest w podprogramie , w programie umieszczamy tylko zmienne , będzie łatwiej operatorowi