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

Podobne dokumenty