PROGRAMOWANIE ELASTYCZNEGO SYSTEMU OBRÓBKOWEGO "EMCO" W JĘZYKU CAM1 =================================================================== Niniejsza dokumentacja zawiera opis podstawowych instrukcji, z których składają się programy w języku CAM1, służącym do programowania elastycznego systemu obróbkowego EMCO. Zakłada się, że czytelnik zna już podstawy programowania robota MOVEMASTER-EX wchodzącego w skład EMCO. Dlatego przed rozpoczęciem studiowania niniejszej dokumentacji należy koniecznie zapoznać się z zasadami programowania robota zawartymi w pliku ROBOT.TXT STRUKTURA STEROWANIA ELASTYCZNEGO SYSTEMU OBRÓBKOWEGO EMCO ---------------------------------------------------------- Elastyczny system obróbkowy EMCO składa się (z punktu widzenia sterowania) z trzech urządzeń sterowanych numerycznie (robot, tokarka, frezarka) oraz trzech urządzen prostych (sanie robota, konik tokarki i imadło maszynowe znajdujące się na frezarce). Zadaniem robota jest pobieranie przedmiotów z palet, umieszczanie ich w odpowiedniej kolejności w uchwytach obrabiarek oraz odkładanie na palety przedmiotów obrobionych. Celem programów napisanych w języku CAM1, uruchamianych na centralnym komputerze sterującym systemu EMCO, jest synchronizacja działan tych urządzeń w taki sposob aby zrealizowane zostało zadanie, polegające na wykonaniu procesów technologicznych przedmiotów umieszczanych przez użytkownika na paletach. Zaprogramowanie elastycznego systemu obróbkowego polega więc na: 1) utworzeniu programów sterujących dla poszczególnych urządzeń sterowanych numerycznie (obrabiarek, robota). UWAGA! Programy sterujące (a ściślej: pliki, w których są one zapisywane) muszą mieć nazwy będące liczbami całkowitymi o wartościach od 1 do 500 oraz rozszerzenia .PRG np.: 10.PRG, 53.PRG itp. 2) utworzeniu (w języku CAM1) nadrzędnego programu zarzadzającego całością, którego zadaniem jest m.in. wysyłanie i uruchamianie w odpowiedniej kolejności wspomnianych w punkcie 1 programów sterujących oraz wysyłanie sygnałów do urządzeń prostych w celu realizowania przez nie określonych funkcji (np. zamknięcia lub otwarcia uchwytu, przesunięcia sań robota w lewo lub w prawo). KOMUNIKACJA POMIĘDZY NADRZĘDNYM PROGRAMEM ZARZĄDZAJĄCYM A URZĄDZENIAMI ---------------------------------------------------------------------- ELASTYCZNEGO SYSTEMU OBRÓBKOWEGO -------------------------------- Komunikacja ta odbywa się za pośrednictwem trzech tzw. "portów wejściowych" i trzech "portów wyjściowych". Porty wejściowe służą do przekazywania sygnałów do urządzeń, zaś porty wyjściowe - do odczytywania aktualnego statusu tych urzadzeń. Port 1 - służy do komunikacji z obrabiarką nr 1 (tokarką C5CNC) oraz umieszczonym na niej konikiem Port 2 - służy do komunikacji z obrabiarką nr 2 (frezarką F1CNC) oraz umieszczonym na niej imadłem maszynowym Port 3 - służy do komunikacji z robotem oraz saniami, na których robot ten może się przemieszczać Kazdy z portów można interpretować jako ciąg bitów, pod które mogą być przez program w języku CAM1 podstawiane wartości 0 lub 1 (w przypadku portów wejściowych) albo które mogą być odczytywane przez program w języku CAM1 (w przypadku portów wyjściowych). Cały port może być więc interpretowany jako liczba całkowita zapisana w formacie dwójkowym. Podstawienie wartości 0 lub 1 pod odpowiedni bit portu wejściowego powoduje określoną akcję danego urządzenia. Natomiast pod bity portów wyjściowych na bieżąco są podstawiane odpowiednie wartości w zależności od aktualnego stanu danego urządzenia. Ich odczytanie może być więc źródlem informacji o tym, co się w danym momencie dzieje w elastycznym systemie obróbkowym. Bity wejściowe: --------------- Znaczenie wybranych bitów portu wejściowego 1: Bit 1: - wstawienie wartości 1 powoduje uruchomienie programu, znajdującego się w układzie sterowania tokarki Bit 2: - wstawienie wartości 1 powoduje zamknięcie konika - wstawienie wartości 0 powoduje otwarcie konika Znaczenie wybranych bitów portu wejściowego 2: Bit 1: - wstawienie wartości 1 powoduje uruchomienie programu, znajdującego się w układzie sterowania frezarki Bit 2: - wstawienie wartości 1 powoduje zamknięcie imadła - wstawienie wartości 0 powoduje otwarcie imadła Znaczenie wybranych bitów portu wejściowego 3: Bit 2: - wstawienie wartości 1 powoduje przesunięcie sań robota w prawo (w stronę tokarki) - wstawienie wartości 0 powoduje przesunięcie sań robota w lewo (w stronę frezarki) Bity wyjściowe: --------------- Znaczenie wybranych bitów portu wyjściowego 1: Bit 1: - wartość 1 oznacza, że tokarka pracuje (aktualnie jest realizowany program znajdujący się w jej układzie sterowania) - wartość 0 oznacza, że tokarka nie pracuje (np. skończyła pracę) Znaczenie wybranych bitów portu wyjściowego 2: Bit 1: - wartość 1 oznacza, że frezarka pracuje (aktualnie jest realizowany program znajdujący się w jej układzie sterowania) - wartość 0 oznacza, że frezarka nie pracuje (np. skończyła pracę) Znaczenie wybranych bitów portu wyjściowego 3: Bit 1: - wartość 1 oznacza, że robot pracuje (aktualnie jest realizowany program znajdujący się w jego układzie sterowania) - wartość 0 oznacza, że robot nie pracuje (np. skończył pracę) STRUKTURA PROGRAMÓW W JĘZYKU CAM1 --------------------------------- Programy w języku CAM1 są plikami tekstowymi o dowolnej nazwie (do ośmiu znaków ASCII, bez spacji) i standardowym rozszerzeniu *.CAM. W pojedynczej linii może się znajdować dokładnie jedna instrukcja języka CAM1. Instrukcje wykonywane są w takiej kolejnosci, w jakiej znajdują się w programie, przy czym instrukcjom tym NIE PRZYPISUJE się żadnych etykiet. Instrukcje można pisać zarówno małymi jak dużymi literami. Znak $ w danej linii oznacza, że wszystkie znaki po nim nastepujące (aż do końca linii) są komentarzem (jeśli więc znak $ wystąpi w pierwszej kolumnie, to cała linia będzie interpretowana jako komentarz). Program w języku CAM1 (tzw. makro) zaczynać się musi instrukcją DEFINE, zaś na jego końcu musi się znaleźć instrukcja ENDDEF. W programie w języku CAM1 wystąpić mogą następujące instrukcje podstawowe: -------------------------------------------------------------------------- DEFINE nazwa - instrukcja rozpoczynająca program (makro) i nadająca mu określoną nazwę, która może być ciągiem maksimum 9 znaków (nie zawierającym spacji) zaczynającym się od litery. Ze względów organizacyjncyh zaleca się aby nazwa makra była taka sama jak nazwa pliku, w którym to makro się znajduje oraz aby nazwa ta identyfikowała autora programu np. plik KOWALSKI.CAM powinien zawierać makro zaczynające się od instrukcji "DEFINE KOWALSKI" ENDDEF - instrukcja kończąca program (makro) RESET - instrukcja realizująca ustawienia początkowe elastycznego systemu obróbkowego i jego układu sterowania (m.in. powoduje ona zaparkowanie robota, przesunięcie sań na lewo, otwarcie konika i imadła). Instrukcja ta MUSI się znaleźć zaraz po instrukcji DEFINE DCONFIG - instrukcja powodująca przeczytanie danych o konfiguracji elastycznego systemu obróbkowego z dysku komputera centralnego. MUSI się ona znaleźć zaraz po instrukcji RESET SEND a,b - instrukcja powodująca wysłanie do urządzenia o numerze "a" programu sterującego o numerze "b". Numer "b" odpowiada nazwie pliku (z rozszerzeniem *.PRG), w którym znajduje się program sterujacy, natomiast liczba "a" musi mieć wartość: 1 - w przypadku programu sterującego dla tokarki 2 - w przypadku programu sterującego dla frezarki 3 - w przypadku programu sterującego dla robota UWAGA! W przypadku obrabiarek (a=1 lub a=2) instrukcja SEND powoduje tylko załadowanie programu do układu sterowania obrabiarki (bez jego uruchomienia), zaś w przypadku robota (a=3) powoduje rownież jego uruchomienie Przykład: SEND 3,65 - wysłanie do robota programu sterującego zawartego w pliku 65.PRG SETCOMMAND a,b,c - instrukcja powodująca odpowiednie ustawienie bitów rejestru wejściowego o numerze "a", określone przez liczbę "b" zawierającą tzw. bity danych oraz liczbę "c" zawierającą tzw. bity maskujące. Liczby "b" i "c" należy rozpatrywać jako liczby zapisane w formacie dwójkowym (a więc złożone z bitów mogących przyjmować wartości 0 lub 1). Zastosowanie aż dwóch liczb do opisu operacji na bitach rejestru wejściowego jest związane z tym, że najczęściej chcemy zmieniać wartości tylko niektórych bitów rejestru. Bity maskujące liczby "c" określają, które bity rejestru chcemy zmieniać: te bity rejestru, których odpowiedniki w liczbie "c" mają wartość 1, będą miały w wyniku działania instrukcji SETCOMMAND zmienione wartości, natomiast te bity rejestru, ktorych odpowiedniki w liczbie "c" mają wartość 0, pozostana nie zmienione. Bity danych liczby "b" określają, jakie wartości mają być podstawione pod poszczególne bity rejestru wejściowego: wartości poszczególnych bitów liczby "b" zostaną przenie- sione do odpowiadających im bitów rejestru wejściowego (oczywiście tylko tych bitów, których odpowiedniki w liczbie "c" mają wartość 1 - pozostałe bity danych należy ustawić na 0). PRZYKŁAD: SETCOMMAND 2,2,2 - podstawienie wartości 1 pod drugi bit w rejestrze wejściowym 2 przy zacho- waniu wartości pozostałych bitów (jak łatwo sprawdzić, spowoduje to zamknięcie imadła) LOOP - początek pętli programu, powodującej oczekiwanie na zajście określonego "zdarzenia" (ma sens tylko wespół z następującą po niej instrukcją UNTIL, określającą warunek wyjścia z pętli). Zastosowanie pętli ma swoje uzasadnienie np. w sytuacji oczekiwania na ukończenie określonego działania przez obrabiarke lub robota. UNTIL warunek - koniec pętli: instrukcja określająca warunek wyjścia z pętli. Warunek ten musi być zapisany w postaci wyraże- nia logicznego np. porównania wartości dwóch wyrażeń arytmetycznych A i B: A=B, A>B, A