Oprogramowanie grupy roboczej składa się z programów rezydujących na serwerze produkcyjnym. Wszystkie z nich działają na systemach z rodziny Linux.
Sterownik obsługujący układy systemu SC. Sposób w jaki sterownik komunikuje się z układami SC jest opisany w dokumentacjach poszczególnych układów (patrz roz. 4.2.Dokumentacje układów )
Rozruch programu.
Półki nie zażądano wyłączenia programu lub nie wystąpił błąd krytyczny wykonuj:
Odczekaj czas ustalony w cycle delay.
Dla wszystkich ustalonych układów typu SCslave powtarzaj.
Sprawdź dane na module SCslave.
Jeżeli komunikacja z modułem SCslave przebiegła poprawnie oraz moduł przesłał nowe dane to zaloguj te dane.
Jeżeli przekroczona została maksymalna ilość nieudanych prób komunikacji z modułem SCslave to wyłącz dany moduł i zanotuj błąd.
Sprawdzenie sygnałów od użytkownika lub innych procesów
Jeżeli zażądano transferu to uruchom równolegle do pracy sterownika program SCwl2dir.
Jeżeli zażądano zakończenia pracy systemu to wyjdź z obecnej pętli.
Jeżeli wystąpił błąd krytyczny wysyłaj sygnał awaryjny, aż nie otrzymasz żądania wyłączenia programu.
Uruchom procedurę zakończenia pracy programu.
Komunikować się ze sterownikiem można za przy pomocy sygnałów systemowych. Istnieją dwa komunikaty, które można wysłać do sterownika:
Transfer – rozpoczyna transfer danych pobranych z modułów SCslave do katalogu transferowego; komunikat wywołuje się przy pomocy sygnału systemowego SIGUSR1,
System_off – powoduje zakończenie pracy programu; komunikat wywołuje się przy pomocy sygnałów systemowych SIGTERM lub SIGQUIT.
Pierwszym etapem konfiguracji programu SCrunner jest określenie wartości zmiennych zawartych w pliku konfiguracyjnym ./scrunner.ini.
Następujące wartości muszą być określone:
[main]
scs_offtest – 1 jeżeli układy SCslave mają być wyłączane po nieudanych przejściu testów początkowych lub po kilku nieudanych próbach odebrania z nich danych, 0 w. p. w.,
proclog – 1 jeżeli mają być tworzone pliki typu Proclog, 0 w. p. w.,
trans_dir – ścieżka katalogu transferowego,
[workstations] – w tej sekcji należy zdefiniować zmienne o nazwach w postaci identyfikatorów maszyn i wartościach ścieżek portów COM, pod które podpięte są układy SCslave. Na przykład jeżeli moduł SCslave maszyny o identyfikatorze 4 jest podłączony do portu /dev/ttyS3 to definiujemy zmienną 4=/dev/ttyS3.
Opcjonalne wartości to:
[delays]
tact_microsec – opóźnienie taktów w mikrosekundach,
cycle_sec – opóźnienie cyklu pracy w sekundach,
cycle_microsec - opóźnienie cyklu pracy w mikrosekundach (obydwie wartości cycle_* są sumowane),
Drugim etapem jest wyedytowanie skryptu Bash exit.sh jeżeli tuż przed zakończeniem pracy programu powinny zostać uruchomione jakieś dodatkowe polecenia. Skrypt ten musi zwracać wartość 0 jeżeli jego wykonanie przebiegło bezproblemowo, w przeciwnym wypadku system zanotuje lekki błąd. Jeżeli przed i/lub po transferze należy wykonać dodatkowe operacja to wtedy należy przygotować skrypty programu SCwl2dir, które są opisane w dokumentacji tego programu (patrz. roz. 4.3.2.SCwl2dir.).
./scrunner – plik wykonalny sterownika SCrunner,
./scwl2dir – plik wykonalny podprogramu SCwl2dir (patrz. roz. 4.3.2.SCwl2dir.),
./pre-trans.sh - skrypt Bash uruchamiany przez podprogram SCwl2dir przed rozpoczęciem transferu,
./post-trans.sh - skrypt Bash uruchamiany przez podprogram SCwl2dir po zakończeniu transferu.
./scrunner.ini – plik konfiguracyjny,
./error.log – błędy zanotowane od ostatniego transferu (patrz roz. 4.7.4.Errorlog (error.log).),
./exit.sh – skrypt Bash uruchamiany tuż przed zakończeniem pracy programu SCrunner,
./worklogs/ - katalog przechowujący pliki typu worklog (patrz roz. 4.7.2.Worklog (*.wl).),
./proclogs/ - katalog przechowujący pliki typu proclog (patrz roz. 4.7.3.Processlog (*.pl).).
Błędy powstałe podczas pracy sterownika są logowane w plikach typu proclog i pliku ./error.log zgodnie z ich formatami (patrz roz. 4.7.Formaty plików). Kod błędu składa się z dwóch liczb: kod typu błędu oraz kod szczegółowy. Opisy błędów znajdują się w tabeli 4.5.
Typ | |||
---|---|---|---|
Kod | Nazwa - opis | Kod | Opis |
0 | Startup
Błędu podczas rozruchu programu. | 2 | Nie można otworzyć pliku ./settings.txt. |
4 | Nie można otworzyć pliku ./wl.set. | ||
6 | Zły format pliku ./settings.ini. | ||
8 | Zły format lub błędne dane w wartości w sekcji workstations w pliku ./settings.ini. | ||
10 | Nie można utworzyć lub otworzyć pliku typu worklog. | ||
12 | Nie można przejąć portu COM. | ||
14 | Nie można przechwycić sygnałów systemowych. | ||
1 | SCs_nocheck | X | Układ SCslave o numerze X nie działa poprawnie lub nie jest podłączony. |
4 | Transfer
Błędy podczas transferu. | 1 | Podprogram SCwl2dir wywołany z niepoprawną liczbą argumentów. |
3 | Nie można utworzyć pliku wl.set w katalogu transferowym. | ||
5 | Nie można utworzyć kopii pliku ./wl.set o nazwie ./oldwl.set. | ||
7 | Nie można otworzyć pliku ./wl.set | ||
11 | Nie można utworzyć pliku o nazwie terror w katalogu transferowym. | ||
13 | Błąd skryptu pre-transferowego. | ||
15 | Błąd skryptu post-transferowego. | ||
17 | W katalogu transferowym znajdują się pliki z poprzedniego transferu. | ||
21 | Nie można utworzyć nowego procesu dla programu SCwl2dir. | ||
5 | Unloged | X | Nie udało sie X razy zalogować danych pobranych z układów SCsalave. |
Tab. 4.5. Kody błędów programu SCrunner.
Są dwie rodzaje błędów:
krytyczne – powodują zakończenie pracy programu; są to błędy typu Startup i Unloged,
lekkie – nie powodują zakończenia pracy programu.
Podprogramu sterownika SCrunner odpowiedzialny za transfer danych do katalogu transferowego. Opis zawartość katalogu transferowego znajduje się w rozdziale 4.7.5.Katalog transferowy.
Program przyjmuje jeden argument w postaci ścieżki do katalogu transferowego. Program zwraca wartości 0 jeżeli transfer zakończył się sukcesem lub kod szczegółowy błędu typu Transfer jeżeli wystąpił błąd podczas transferu (patrz. roz. 4.3.1.SCrunner.).
Uruchom skrypt pre-transferowy ./pre-trans.sh.
Sprawdź czy katalog transferowy nie zawiera plików po poprzednim transferze. Jeśli są przerwij transfer.
Utwórz pusty plik o nazwie terror w katalogu transferowym.
Stwórz katalog worklogs w katalogu transferowym.
Zmień nazwę pliku wl.set w katalogu programu na oldwl.set.
Dla wszystkich dat zawartych w pliku oldwl.set powtarzaj:
Skopiuj plik worklog odpowiadający danej dacie z katalog_programu/worklogs/ do katalog_transferowy/worklogs/. Jeżeli kopiowanie nie powiedzie się to zapisz daną datę oraz pozostałe daty z pliku oldwl.set do pliku wl.set w katalogu programu i wyjdź z obecnej pętli.
Utwórz plik utwórz plik sumy kontrolnej MD5 dla pliku worklog odpowiadający danej dacie z katalog_programu/worklogs/ w katalog_transferowy/worklogs/.
Zapisz daną datę do pliku wl.set w katalogu transferowym.
Przenieś plik error.log z katalogu programu do katalogu transferowego.
Jeżeli nie wystąpił błąd podczas transferu to usuń plik terror z katalogu transferowego.
Uruchom skrypt post-transferowy ./post-trans.sh.
Program SCwl2dir wymaga konfiguracji tylko jeżeli przed i/lub po transferze należy dokonać jakieś dodatkowe operacji. Takimi dodatkowymi operacjami mogą być na przykład zamontowanie pendrive'a, na którym znajduje się katalog transferowy i jego odmontowanie po zakończeniu transferu. Dostępne są to tego celu dwa skrypty Bash:
./pre-trans.sh - uruchamiany przed rozpoczęciem transferu,
./post-trans.sh - uruchamiany po zakończeniu transferu.
Skrypty muszą zwracać wartość 0 jeżeli ich wykonanie przebiegło bezproblemowo, w przeciwnym wypadku system zanotuje lekki błąd.
./pre-trans.sh - skrypt Bash uruchamiany przez program SCwl2dir przed rozpoczęciem transferu,
./post-trans.sh - skrypt Bash uruchamiany przez podprogram SCwl2dir po zakończeniu transferu.
Program SCrunner_tui jest opartym o ncurses tekstowym front-end'em dla sterownika SCrunner. Dzięki SCrunner_tui można w wygodny sposób śledzić prace sterownika oraz wysłać do niego komunikat żądający transferu danych lub wyłączenia systemu. Jeżeli zostanie w niego wkompilowana biblioteka libscanalis z bibliotek systemu SC to program SCrunner_tui będzie wstanie także przedstawiać w locie wyniki analizy danych pobranych z modułów SCslave. Jest to szczególnie przydatna opcja jeżeli prototypujemy nowy mechanizm analizy danych, który będzie zastosowany w grupie zarządzającej systemu SC.
Program SCrunner_tui przyjmuje jeden argument w postaci ścieżki do pliku lub pipeline'a z wyjściem programu SCrunner. Przykładowe uruchomienie może wyglądać następująco:
> mkfifo scr_pipe
> ./scrunner > scr_pipe
> ./scrunner_tui scr_pipe
Poniższy rysunek 4.6 przedstawia z zrzut ekrany programu SCrunner_tui.
Rys. 4.6. SCrunner_tui podczas pracy.
W tabelce „Scores” przedstawiane są wyniki analizy danych z poszczególnych modułów SCslave. W kolumnie SCs znajduje się identyfikator modułu. Pozostałe kolumny określają ile razy dane z danego modułu SCslave uzyskały wynik z z nagłówka kolumny. W rubryce „Proclog” pokazywane jest standardowe wyjście programu SCrunner. Program SCrunner_tui obsługuje się przy pomocy klawiatury w następujący sposób:
SHIFT + 's' – przewija rubrykę „Proclog” do dołu,
SHIFT + 'w' – przewija rubrykę „Proclog” do góry,
's' – przewija tablę „Scores” do dołu,
'w' – przewija tabelę „Scores” do góry,
'z' – wysyła żądanie transferu do programu SCrunner,
'x' - wysyła żądanie wyłączenia systemu do programu SCrunner,
SHIFT + 'x' – uśmierca proces programu SCrunner,
'e' – robi zrzut ekranu programu SCrunner_tui,
'q' – zapisuje tabelę z wynikami.
Copyright © 2008-2010 EPrace oraz autorzy prac.