NA190PL 04 2006 Raportowanie

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

1





Notatka aplikacyjna NA190PL
Raportowanie w PLC XSystem


Autor:

Jacek Zarzycki

©Moeller Electric Sp. z o.o.
04/2006


www.moeller.pl

www.moeller.pl

NA190PL

Raportowanie

w sterownikach serii XSystem

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

2

Spis treści

1. Wstęp......................................................................................................................3

2. Przygotowanie rekordów. .....................................................................................3

2.1. Funkcje operowania na ciągach znaków (STRING) .........................................3

2.2. Tworzenie stempli czasowych ..........................................................................4

2.2.1. Formaty czasu............................................................................................4

2.2.2. Funkcje operujące na czasie......................................................................5

2.2.3. Konwersja na format tekstowy zgodny MS Excel .......................................6

2.3. Tworzenie struktury rekordu .............................................................................7

2.4. Znaki specjalne.................................................................................................8

2.6. Przygotowanie całego rekordu..........................................................................9

3. Zapis danych na nośniku (MMC, USB, FLASH) ..................................................9

3.1. Rodzaje nośników i ścieżki dostępu. ................................................................9

3.2. Funkcje sterujące zapisem danych. ..................................................................9

3.4. Użycie TASK’ów. ............................................................................................12














background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

3

1. Wstęp

Sterowniki serii XSystem, a zwłaszcza sterownik XC200 posiadający ogromne

możliwości z branży IT, pozwalają na tworzenie rejestrów danych. Raporty te mogą
być zapisywane na karcie MMC, na wewnętrznym dysku FLASH lub na napędzie
PENDRIVE. Zapisane dane można odczytywać przekładając nośnik do komputera,
bądź pobierać pliki przez ETHERNET za pomocą protokołu FTP. Sterowniki potrafią
też samodzielnie wysyłać dane na serwer FTP.

Rejestrowane

przez

sterownik

mogą

być

zdarzenia

takie

jak

załączenie/wyłączenie maszyn, obwodów, zalogowanie się użytkownika, wszelkiego
rodzaju sytuacje alarmowe, ostrzeżenia. Można rejestrować również dane
pomiarowe, stany liczników rejestrujących liczbę wyprodukowanych elementów itp.
Zbieranie zmiennych może odbywać się zatem cyklicznie, co ustalony przez
użytkownika odstęp czasu bądź zdarzeniowo.

Format w jakim pliki zostają zapisane zależy od programisty. Dane można

zapisywać przykładowo w formacie tekstowym. Nadając rozszerzenie .xls i
oddzielając poszczególne pozycje znakami tabulacji, a całe rekordy znakami końca
linii uzyskujemy plik który można otworzyć bezpośrednio w aplikacji MS Excel.
Wykorzystując ponadto funkcje danych zewnętrznych Excela możemy „zasysać”
dane do wstępnie sformatowanego arkusza.

Niniejsza notatka aplikacyjna ma na celu przedstawienie metodyki tworzenia

aplikacji do akwizycji danych. Pokazano również zasady działania z danymi
zewnętrznymi w MS Excel.

Najnowsze wersje dokumentacji, a także aktualizacje oprogramowania

dostępne są w: "

http://www.moeller.net/en/support/index.jsp

"

2. Przygotowanie rekordów.


2.1. Funkcje operowania na ciągach znaków (STRING)
Aby przygotować sensownie zapisany plik raportu należy poznać zasady operacji na
ciągach znaków, czyli STRING’ach. Tworząc aplikację należy pamiętać, aby
wszystkie operacje na ciągach znaków wykonywane były w jednym Task’u. Użycie
tej samej funkcji w dwóch różnych Task’ach spowodować może nadpisywanie się
ciągów znaków. Wszystkie wskazane poniżej funkcje dostępne są z biblioteki
standard.lib

CONCAT – funkcja łączenia dwóch ciągów znaków – STR1 i STR2;

format: CONCAT(STR1, STR2), np.
VarSTRING1 := CONCAT ('poczatek','koniec');

Po wykonaniu takiej funkcji zmienna VarSTRING1 zawierać będzie ‘poczatekkoniec’

DELETE – funkcja usuwająca LEN znaków z ciągu STR rozpoczynając od pozycji

wskazanej w POS;
format: DELETE(STR,LEN,POS), np.
VarSTRING1 := DELETE ('abcdefg',2 ,3);

Po wykonaniu takiej funkcji zmienna VarSTRING1 zawierać będzie ‘abefg’

FIND –

funkcja odszukująca w STR1 występującego jako pierwszy w kolejności
ciągu STR2. Zwraca pozycję od której rozpoczyna się poszukiwany
ciąg znaków;

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

4

format: FIND(STR1, STR2), np.

VarINT1 := FIND (‘abcdeabcde’,’cd’)

Po wykonaniu takiej funkcji zmienna VarINT1 zawierać będzie wartość 3.

INSERT – funkcja włączająca STR2 do ciągu znaków STR1 rozpoczynając po

pozycji POS;

format: INSERT(STR1, STR2, POS), np.
VarSTRING1 := INSERT ('test','k',2);

Po wykonaniu takiej funkcji zmienna VarSTRING1 zawierać będzie ‘tekst’.

LEFT –

funkcja obcinająca ciąg znaków STR do SIZE znaków z lewej strony;

format: LEFT(STR, SIZE), np.
VarSTRING1 := LEFT ('testowanie', 4);

Po wykonaniu takiej funkcji zmienna VarSTRING1 zawierać będzie ‘test’.

LEN –

funkcja zwracająca długość (liczbę znaków) ciągu STR;

format: LEN(STR), np.

VarINT1 := LEN ('testowanie')

Po wykonaniu takiej funkcji zmienna VarINT1 zawierać będzie wartość 10.

MID –

funkcja wyodrębniająca fragment ciągu znaków z ciągu STR. Zwraca
LEN znaków rozpoczynając od pozycji POS.

format: MID(STR, LEN, POS), np.
VarSTRING1 := MID ('testowanie', 3,5);

Po wykonaniu takiej funkcji zmienna VarSTRING1 zawierać będzie ‘owa’.

REPLACE – funkcja zamieniająca L znaków z ciągu znaków STR1 ciągiem STR2

począwszy od znaku P.

format: REPLACE(STR1, STR2, L, P), np.
VarSTRING1 := REPLACE ('testowanie', 'rak' 2,2);

Po wykonaniu takiej funkcji zmienna VarSTRING1 zawierać będzie ‘traktowanie’.

RIGHT –

funkcja obcinająca ciąg znaków STR do SIZE znaków z prawej strony;

format: RIGHT(STR, SIZE), np.
VarSTRING1 := RIGHT ('testowanie', 4);

Po wykonaniu takiej funkcji zmienna VarSTRING1 zawierać będzie ‘anie’.

2.2. Tworzenie stempli czasowych
Podstawowym elementem rekordu jest zwykle pole opisujące datę/godzinę
wystąpienia zdarzenia, czy pobrania próbki danych. Aktualny czas pobierany jest
zwykle z zegara czasu rzeczywistego RTC (RealTimeClock).

2.2.1. Formaty czasu.
Czas może być zapisywany w różnych formatach danych. Każdy z nich opera się na
wielkości DWORD.
TIME – ogólny format czasu. Zmienne w tym formacie rozpoczynają się od znaku „t”
lub „T” (albo „time” lub „TIME”) oraz znaku #. W dalszej części podawane są wartości
wraz ze znacznikami określającymi wymiar, np. „d” – dni, „h” – godziny, „m” – minuty,
„s” – sekundy, „ms” – milisekundy. Należy pamiętać aby znaczniki podane były we
właściwej kolejności (d przed h itd.), ale nie trzeba podawać wszystkich składników.

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

5

Przykładowe, poprawnie zapisane zmienne formatu TIME:
TIME1 := T#14ms;
TIME1 := T#100s12ms; (*najwyższy składnik może przekroczyć limit*)
TIME1 := t#12h34m15s;

Błędnie zapisane zmienne formatu TIME:
TIME1 := t#5m68s;

(*niższy składnik ma przekroczony limit*)

TIME1 := 15ms;

(*brak przedrostka T#*)

TIME1 := t#4ms15d;

(*zła kolejność składników*)


DATE – format zapisu daty. Fizycznie jest to liczba wyrażająca liczbę sekund
począwszy od godziny 00:00 1 stycznia 1970r. W zapisie rozpoczyna się od „d”, „D”,
„date” lub „DATE” oraz od znaku „#”. W dalszej części zapisana jest data w formacie
rok-miesiąc-dzien, np.
DATE#1996-05-06
d#2001-03-29

TIME_OF_DAY – format zapisu godziny. Fizycznie jest to liczba ms od godziny
00:00. W zapisie rozpoczyna się od „tod#”, „TOD#”, „TIME_OF_DAY#” lub
„time_of_day”. W dalszej części jest godzina:minuta:sekunda. Sekundy można
wyrazić jako liczbę całkowitą bądź ułamkową, np.:
TIME_OF_DAY#15:36:30.123
tod#00:00:00

DATE_AND_TIME – format zapisu daty i godziny. Fizycznie jest to liczba wyrażająca
liczbę sekund począwszy od godziny 00:00 1 stycznia 1970r. W zapisie rozpoczyna
się od „dt”, „DT”, „date_and_time” lub „DATE_AND_TIME” oraz od znaku „#”. W
dalszej części zapisana jest data w formacie rok-miesiąc-dzien, znak „-”, godzina
zapisana w formacie godzina:minuta:sekunda, np.:
DATE_AND_TIME#1996-05-06-15:36:30
dt#1972-03-29-00:00:00

Zmienne zapisane w formacie czasu (podobnie jak inne zmienne) można przerobić
na ciąg znaków za pomocą komendy xxx_TO_STRING, gdzie xxx to format
zmiennej. Przykładowo DT_TO_STRING.

2.2.2. Funkcje operujące na czasie
Podstawowym elementem rekordu jest zwykle pole opisujące datę/godzinę
wystąpienia zdarzenia, czy pobrania próbki danych. Biblioteką obsługującą zegar
czasu rzeczywistego w sterownikach XSystem jest SysLibRtc.lib. Zawiera ona 4
funkcje związane z zegarem:

SysRtcCheckBattery – funkcja sprawdzająca stan baterii podtrzymującej zegar
czasu rzeczywistego. Stan baterii jest istotny ze względu na konieczność
podtrzymywania zegara na wypadek zaniku zasilania. Na wejście funkcji trzeba
podać dowolną wartość boolowską (funkcja wymaga wejścia).
Przykład użycia: xStanBaterii:=SysRtcCheckBattery(FALSE);

SysRtcGetHourMode – funkcja sprawdzająca w jakim trybie działa zegar (12, czy
24 godzinnym). Sterowniki XSystem działają w trybie 24h.

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

6


SysRtcGetTime – funkcja pobierająca aktualny czas z zegara czasu rzeczywistego.
Funkcja zwraca czas w formacie DT (DATE_AND_TIME) Na wejście funkcji trzeba
podać dowolną wartość boolowską (funkcja wymaga wejścia).
Przykład użycia dtAktualnyCzas:=SysRtcGetTime(FALSE);

SysRtcSetTime – funkcja ustawiająca zegar w sterowniku. Na wejście należy podać
czas w formacie DT (DATE_AND_TIME). Funkcja zwraca TRUE, gdy operacja
ustawiania czasu zakończy się pomyślnie.
Przykład użycia xUstawiono:=SysRtcSetTime(dtCzasDoUstawienia);

2.2.3. Konwersja na format tekstowy zgodny MS Excel
Aby program MS Excel mógł przyjąć dane bez konieczności ich konwertowania
należy je zapisać w formacie: „YYYY-MM-DD HH:MM:SS”. Oznacza to, że datę
zapisaną w sterowniku w formacie DT należy „przerobić” na format czterocyfrowego
roku oraz dwucyfrowego oznaczenia miesiąca, dnia, godziny, minuty, sekundy.
Między poszczególnymi składnikami muszą być wstawione odpowiednio znaki „-”,
spacja, „:”. Konwersji dokonuje się za pomocą znanych już funkcji operacji na
ciągach znaków. Można w tym celu utworzyć funkcję konwersji. Na wejście będzie
podawany czas w formacie DT, na wyjściu uzyskamy 19 znakowy STRING:

FUNCTION DT_TO_xlsDT : STRING(19)
VAR_INPUT

datagodzina:DT;

END_VAR
VAR

sTEMP:STRING;

END_VAR


(*program*)
sTEMP:=DT_TO_STRING(datagodzina);
sTEMP:=DELETE(sTEMP,3,1);
sTEMP:=REPLACE(sTEMP,' ',1,11);
DT_TO_xlsDT:=sTEMP; (*YYYY-MM-DD HH:MM:SS*)

Po konwersji czasu na format STRING kolejne linie programu będą modyfikowały
zmienną sTEMP nadając jej format zgodny ze zrozumiałym przez MS Excel. Jeżeli w
oczekiwanym formacie czas ma być określony jedynie przez godzinę i minutę należy
dopisać przed ostatnią linią:

sTEMP:=LEFT(sTEMP,16);

Dzięki możliwości zagnieżdżania funkcji w języku ST program można również
zapisać w formie:
DT_TO_xlsDT:=LEFT(REPLACE((DELETE(DT_TO_STRING(datagodzina),3,
1)),' ',1,11),16); (*YYYY-MM-DD HH:MM*)

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

7


2.3. Tworzenie struktury rekordu
Dla ujednolicenia próbki danych można stworzyć odpowiednią strukturę. Należy w
tym celu wybrać zakładkę „Data types” i w lewym oknie wybrać prawym klawiszem
myszki „Add object...”. W dalszym etapie należy stworzyć nową strukturę i wypisać w
niej poszczególne składniki, np.:

TYPE record :
STRUCT

data: STRING(19);

nr_fabr: STRING(7);

czas: STRING(8);

imie: STRING(10);

nazwisko: STRING(20);

wart1: STRING(5);

wart2: STRING(5);

wart3: STRING(5);

wart4: STRING(5);

wart5: STRING(5);

END_STRUCT
END_TYPE

Po stworzeniu nowego typu można deklarować odpowiednie zmienne globalne, np.

VAR_GLOBAL

DoZapisu: record;

record_arr: ARRAY [1..10] OF record;

END_VAR

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

8

2.4. Znaki specjalne
Aby oddzielać poszczególne wiersze i kolumny w rejestrze (zwłaszcza, gdy plik ma
być kompatybilny z XLS) należy użyć znaków specjalnych. Najpopularniejsze znaki
to znak tabulacji i końca linii. Warto zadeklarować najczęściej używane znaki, czy
ciągi znaków jako stałe. Zależnie od potrzeb mogą być one lokalne bądź globalne.

VAR CONSTANT

tab:STRING(1):='$T';

end:STRING(1):='$L';

END_VAR

Zestawienie dostępnych znaków specjalnych:
$$

- znak dolara

$’

- apostrof

$L

- znak przesuwu o jedną linię (line feed)

$N

- znak nowej linii (new line)

$P

- znak nowej strony (page feed)

$R

- znak przełamania linii (line break)

$T

- tabulator


Do opisu powyższych znaków można użyć też małych liter, np. $t.



background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

9

2.6. Przygotowanie całego rekordu.

Przed zapisem znaków do pliku najlepiej jest zebrać cały pakiet danych które
chcemy zapisać do jednego pliku, np.

PackedRecord:=CONCAT('',DoZapisu.data);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.nr_fabr);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.czas);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.imie);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.nazwisko);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.wart1);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.wart2);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.wart3);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.wart4);
PackedRecord:=CONCAT(PackedRecord,tab);
PackedRecord:=CONCAT(PackedRecord,DoZapisu.wart5);
PackedRecord:=CONCAT(PackedRecord,end);


Zmienna PackedRecord jest w tym przykładzie zmienną globalną.

VAR_GLOBAL

PackedRecord: STRING(100);

END_VAR



3. Zapis danych na nośniku (MMC, USB, FLASH)


3.1. Rodzaje nośników i ścieżki dostępu.
W sterownikach serii XC200 dostępne są trzy rodzaje nośników danych:
disk_sys – systemowy dysk FLASH (w XC200 8MB)
disk_mmc – karta MMC lub SD włożona w sterownik
disk_usb – napęd pendrive podłączony do złącza USB

Ścieżka dostępu zawsze zaczyna się od powyższej nazwy rodzaju dysku. Aby
upewnić się czy wprowadzony format ścieżki jest poprawny można połączyć się ze
sterownikiem za pomocą protokołu ftp – powinien być tam taki sam układ folderów.

3.2. Funkcje sterujące zapisem danych.
Do zapisu (odczytu) danych na nośnikach służą funkcje z biblioteki SysLibFile.lib.

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

10

SysFileOpen – funkcja służy do otwierania istniejącego pliku, bądź pliku który ma
zostać utworzony. Zwracany jest numer pliku za pomocą którego odwołują się inne
funkcje z grupy SysFile... . Jeśli funkcja zwraca wartość 0 oznacza to błąd (np. źle
podana ścieżka dostępu). Funkcja ma dwa wejścia typu STRING. Należy podać
ścieżkę dostępu oraz zależnie od zadania odpowiedni tryb w jakim plik zostaje
otwarty:
w

– zapis (write) – zostanie zaktualizowany stary plik bądź utworzony nowy

r

– odczyt (read) – plik zostanie otworzony tylko do oczytu

rw

– zapis/odczyt (read and write)

a

– dopisywanie (append) – następuje otwarcie w trybie zapisu ze znacznikiem
zapisu ustawionym na koniec pliku.

Przykład użycia:
dwHandle:=SysFileOpen('disk_sys\project\raport.xls', 'a');

SysFileClose – funkcja służy do zamknięcia otwartego uprzednio pliku. Od momentu
zamknięcia dane są dostępne i bezpieczne na wypadek zaniku zasilania. Należy
zamykać plik każdorazowo po wykonanej operacji zapisu/odczytu. Funkcja
potrzebuje na wejściu numer zwrócony przez uruchomiony uprzednio SysFileOpen.
Zwracane jest natomiast potwierdzenie zamknięcia pliku (TRUE) lub sygnalizacja
błędu (FALSE).
Przykład użycia:
xFileClosed:=SysFileClose(dwHandle);

SysFileWrite – zadaniem funkcji jest zapis danych do pliku. Zwracana jest liczba
zapisanych bajtów (DWORD). Na wejścia funkcji trzeba podać trzy zmienne typu
DWORD:
File – numer pliku zwrócony przez SysFileOpen
Buffer – adres bufora zapisu. Pozyskiwany jest on za pomocą funkcji ADR.
Size – liczba bajtów do zapisu. Można pozyskać go za pomocą funkcji SIZEOF
(funkcja ta zwróci liczbę bajtów z ilu składa się zmienna) lub LEN (funkcja LEN
zwraca liczbę znaków w zmiennej typu STRING). Jeżeli zmienna varSTRING1 jest
zadeklarowana w sposób następujący:

VAR

varSTRING1: STRING(20):=’abcdefg’;

END_VAR

funkcja SIZEOF zwróci 21 – wynika to z obszaru pamięci jaki musi być dla zmiennej
zarezerwowany, funkcja LEN zwróci natomiast 7. Funkcja SIZEOF jest bardziej
pomocna gdy zapisujemy dane bez konwersji na postać tekstową.
Przykład użycia:

dwWrittenBytes:=SysFileWrite(dwHandle,ADR(PackedRecord),LEN(PackedRecord));

gdzie PackedRecord jest zmienną typu STRING.

SysFileRead – funkcja realizująca odczyt danych z pliku. Zwracana jest liczba
odczytanych bajtów. Na wejścia funkcji należy podać podobne zmienne jak w
przypadku funkcji zapisu:
File – numer pliku zwrócony przez SysFileOpen,
Buffer – adres bufora odczytu pozyskany za pośrednictwem funkcji ADR
Size – liczba bajtów które mają zostać odczytane.
Przykład użycia:

dwRededBytes:=SysFileRead(dwHandle,ADR(ReadBuffer),SIZEOF(ReadBuffer));

gdzie ReadBuffer jest zmienną typu STRING.

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

11

SysFileDelete – za pomocą tej funkcji można usunąć plik. Funkcja zwraca TRUE,
gdy operacja usuwania zostanie zakończona pomyślnie. Na wejście należy podać
ścieżkę dostępu do pliku w formacie STRING.
Przykład użycia:
xFileDeleted:=SysFileDelete('disk_sys\project\raport.xls');

SysFileGetPos – za pomocą tej funkcji można odczytać na którym bajcie znajduje
się znacznik zapisu. Gdy plik zostanie otwarty z parametrem „a” (append) znacznik
ten zostanie automatycznie ustawiony na koniec pliku. Funkcja zwraca pozycję w
formacie DWORD.
Przykład użycia:
dwCurPOS:=SysFileGetPos(dwHandle);


SysFileSetPos – za pomocą tej funkcji można ustawić znacznik zapisu na wskazaną
pozycję. Funkcja zwraca TRUE, gdy ustawienie znacznika będzie dokonane.
Przykład użycia:
xSetPosOk:=SysFileSetPos(dwHandle,10);


SysFileEOF – funkcja sprawdzająca czy osiągnięto koniec pliku (End Of File).
Zwracana jest wartość TRUE, gdy znacznik zapisu ustawiony jest na końcu pliku.
Przykład użycia:
xEOF:=SysFileEOF(dwHandle);


SysFileGetSize – funkcja sprawdzająca rozmiar pliku. Zwracana jest wartość typu
DWORD określająca liczbę bajtów.
Przykład użycia:
dwFileSize:=SysFileGetSize('disk_sys\project\raport.xls');


SysFileCopy – za pomocą tej funkcji można skopiować plik z jednej lokalizacji
(nazwy) do drugiej. Zwracana jest wartość typu DWORD określająca liczbę
skopiowanych bajtów.
Przykład użycia:

dwCopiedBytes:=SysFileCopy('disk_sys\project\raport.xls',
'disk_sys\project\zrodlo.txt');


SysFileRename – funkcja służy do zmiany nazwy pliku. Zwracana jest wartość
TRUE jeżeli operacja zakończy się pomyślnie.
Przykład użycia:

xFileNameChanged:=SysFileRename('disk_sys\project\oldname.txt',
'disk_sys\project\newname.txt');

background image

Raportowanie w PLC XSystem

Moeller Electric Sp. z o.o.

NA190PL 04/2006

12

3.3. Użycie TASK’ów.
Proces zapisywania na karcie w porównaniu z czasem cyklu programu jest zwykle
długotrwały. Aby nie zakłócał on wykonywania programu głównego zaleca się użycie
TASK’ów. Należy w tym celu otworzyć zakładkę „Resources”, wybrać „Task
Configuration” i skonfigurować oddzielnie zadanie dla programu wykonywanego
cyklicznie (z wyższym priorytetem – niższa cyfra) i dla programu zapisu na karcie
(niski priorytet). Zapis na karcie jest zwykle wyzwalany zdarzeniowo – od
odpowiedniej zmiennej globalnej (jej zbocze narastające). Należy ustawić ponadto
odpowiednie czasy watchdog’a.



4.0 Współpraca z MS EXCEL.


Wyszukiwarka

Podobne podstrony:
urazy kl piersiowej 04 2006
rozporzadzenie z dnia 28.04.2006, Materiały szkoleniowe na uprawnienia budowlane - archiwalne
04 2006 109 111
Polityka regionalna Wyk-ad 01.04.2006, IV SEMESTR, polityka regionalna
transport i handel morski w7 (05 04 2006) SDIP3G56JS32XJGLVUTOOGPD64VXC4BAZXS5WKA
kolo 04.2006 rozw A
PILSKO.27.04.2006 pdf
scenariusz 04 2006 karnawal, Scenariusze zajęć
chirurgia klucz egz 01 04 2006, Naika, stomatologia, Chirurgia
ćw.24.04.2006, administracja, Reszta, STARE, Ochrona środowiska
27 04 wspomaganie Raport3
Inżynieria ekstremalna s. 04 (2006)
7[1].04.2006 r. - cwiczenia metodologia, metodologia, materiały na zajęcia
KIVc20.04.2006-NARZĘDZIA I PRZYBORY DO OBRÓBKI DREWNA-etykieta, Konspekty dydaktyka
DIN18232-2 2003-06 rew 03.04.2006, NORMY(hasło NORMY)
EGZAMIN UZUPEŁNIAJĄCY 04 2006
Rośliny przyprawowe i lecznicze ćw 01.04.2006 i 22.04.2006, ROŚLINY PRZYPRAWOWE I LECZNICZE
systemy podatkowe w4 4 04 2006 Y34OFF636N43SNAFYBXLSOPQZBMYP4IZL4455UI

więcej podobnych podstron