www.moeller.pl
www.moeller.pl
NA190PL
Raportowanie w PLC XSystem
Raportowanie
w sterownikach serii XSystem
Notatka aplikacyjna NA190PL
Raportowanie w PLC XSystem
Autor: Jacek Zarzycki
㎝oeller Electric Sp. z o.o.
04/2006
Moeller Electric Sp. z o.o. NA190PL 04/2006 1
Raportowanie w PLC XSystem
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
Moeller Electric Sp. z o.o. NA190PL 04/2006 2
Raportowanie w PLC XSystem
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膮dz 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膮dz 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;
Moeller Electric Sp. z o.o. NA190PL 04/2006 3
Raportowanie w PLC XSystem
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.
Moeller Electric Sp. z o.o. NA190PL 04/2006 4
Raportowanie w PLC XSystem
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膮dz 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.
Moeller Electric Sp. z o.o. NA190PL 04/2006 5
Raportowanie w PLC XSystem
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*)
Moeller Electric Sp. z o.o. NA190PL 04/2006 6
Raportowanie w PLC XSystem
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
Moeller Electric Sp. z o.o. NA190PL 04/2006 7
Raportowanie w PLC XSystem
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膮dz 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.
Moeller Electric Sp. z o.o. NA190PL 04/2006 8
Raportowanie w PLC XSystem
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.
Moeller Electric Sp. z o.o. NA190PL 04/2006 9
Raportowanie w PLC XSystem
SysFileOpen funkcja s艂u偶y do otwierania istniej膮cego pliku, b膮dz 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. zle
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膮dz 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.
Moeller Electric Sp. z o.o. NA190PL 04/2006 10
Raportowanie w PLC XSystem
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');
Moeller Electric Sp. z o.o. NA190PL 04/2006 11
Raportowanie w PLC XSystem
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.
Moeller Electric Sp. z o.o. NA190PL 04/2006 12
Wyszukiwarka
Podobne podstrony:
Raport?danie? Krakow 06 [ www potrzebujegotowki pl ]Bartosz B臋dzieszak Raport z wyjazdu (18 06 2012)200609271501040 TGE Raport publiczny sierpien 06Tech tech chem11[31] Z5 06 usrodki ochrony 06[1]06 (184)06DiW 4 raport lifting06 (35)Plakat WEGLINIEC Odjazdy wazny od 14 04 27 do 14 06 14wi臋cej podobnych podstron