Serwer portu szeregowego dla robota IRB1400
Transkrypt
Serwer portu szeregowego dla robota IRB1400
Serwer portu szeregowego dla robota IRB1400 Wojciech Pietkiewicz [email protected] 20 lutego 2007 1 Informacje o serwerze Serwer portu szeregowego jest programem uruchamianym w tle (jako osobne zadanie w systemie robota – TASK). Jego zadaniem – w zależności od sytuacji – jest wysłanie pozycji robota badź ˛ pobranie pliku z programem wykorzystujac ˛ do tego port szeregowy. 2 Dodawanie zadań (ang. task) do systemu Ponieważ poszczególne zadania systemu uruchamiane sa˛ cyklicznie (w zależności od ich priorytetów1 ) ważne jest żeby program główny zadania nie powodował blokowania si˛e systemu. Aby temu zapobiec wprowadza si˛e najcz˛e ściej do programu głównego p˛etle nieskończone, które – jeśli wykonuja˛ si˛e bardzo szybko – maja˛ wymuszane dodatkowo opóźnienia. Przykładowo, jeżeli program główny b˛edzie si˛e składał tylko z instrukcji TPWrite "Modul serwer_sio.mod wczytany..."; to po uruchomieniu systemu na ekranie panelu uczacego ˛ (ang. Teach Pendant) b˛edziemy wyświetlany ciagle ˛ w/w komunikat, co gorsza zostanie przez to zablokowany panel. Jeżeli natomiast do tej instrukcji dodamy jeszcze p˛etl˛e niesko ńczona˛ komunikat zostanie wyświetlony tylko raz. Istnieje pewien sposób aby zmniejszyć ryzyko blokady systemu. Dane zadanie zostaje przerywane, jeżeli wystapi ˛ w nim bład ˛ – wystarczy zatem w fazie testów uruchamiać to zadanie z dyskietki, dzi˛eki czemu w przypadku blokady sytemu wystarczy wyjać ˛ dyskietk˛e ze stacji dysków i uruchomić system ponownie. 1 Szczegóły można znaleźć w dokumentacji do robota IRB1400. RAPID Reference Manual, rozdział 11 – Multitasking. 1 2.1 Dodanie zadania do systemu Załóżmy, że chcemy dodać do systemu zadanie o nazwie zadanie1, znajdujace ˛ si˛e w module zadanie1, w pliku zadanie1.mod, z główna˛ procedura˛ glowna. Przegrywamy plik z programem głównym (zadanie1.mod) do interesujacej ˛ nas lokacji (np. ramdisk1:ETC/TAKS1/, lub zostawiamy go na dyskietce w fazie testowej). • Wybieramy okno Service • Nast˛epnie System Parameters→Controller • Wybieramy menu Types→Tasks Aby dodać nowe zadanie naciskamy klawisz funkcyjny Add. Po jego naciśni˛eciu pojawia˛ si˛e paramety dodawanego zadania: Task nazwa zadania, w naszym przykładzie: zadanie1 Prog nr zadania (od 0 do 10, przy czym zadanie nr 0 jest szczególne – patrz dokumentacja do IRB1400) Task in foreground zadanie, które ma być uruchamiane w tle bierzacego ˛ zadania Type SEMISTATIC Main entry nazwa głównej procedury w zadaniu, w naszym przykładzie glowna Po określeniu parametrów zadania należy zapewnić ładowanie si˛e wymaganych modułów, w naszym przykładzie b˛edzie to tylko jeden moduł – zadanie1.mod, w którym znajduje si˛e procedura główna. • Wybieramy okno Service • Nast˛epnie System Parameters→Controller • Wybieramy menu Types→Tasks modules Podobnie jak w przypadku dodawania zadań, moduły dodajemy wykorzystujac ˛ klawisz funkcyjny Add. Po jego naciśni˛eciu należy ustalić parametry modułu: Task wybieramy zadanie, do którego ma być wczytywany dany moduł, w naszym przypadku jest to wcześniej zdefiniowane zadanie1 File nazwa pliku z modułem, np. ramdisk1:/etc/task1/zadanie1.mod lub w fazie testów flp1:/zadanie1.mod Po tych operacjach należy zrestartować system i nowe zadanie powinno si˛e uruchomić (o ile zostało napisane prawidłowo). 2