Tecomat FOXTROT - Sychronizace casu
Slavomir Skopalik
skopalik na elektlabs.cz
Pondělí Září 17 15:51:22 CEST 2012
Dobry den,
mozna by se mohl nasledujici kousek kodu hodit cice lidem.
V originalni dokumentaci je par drobnych zasadnich chyb.
Hlavni vyhoda nize uvedenho kodu je, ze neni treba jej spustet
kazdy cyklus, ale staci treba jednou za 10 sec.
To je vhledem k mizernemu vykonu PLC (nebo spatnemu prekladaci
ST jazyka) dost podstatne.
Jeste by to sneslo nastavovani alarmu, kdyz se nepodari sychronizace :).
PROGRAM TimeSync_Prg
(*
Synchronize CPU time with global UTC time
Synchronizace bude provadena kazdou hodinu,
nebo po startu systemu
*)
VAR_INPUT
END_VAR
VAR_IN_OUT
END_VAR
VAR
SNTP : fbSntp; // Time sychronization
NS_SNTP: fbNsLookUp; // SNTP time server
domain name lookup
NtpIP : TIPadr;
NormalScan:bool; // For first scan is
FALSE
END_VAR
VAR_TEMP
NtpName : STRING := 'cz.pool.ntp.org';
DNSIP : TIPAdr;
DNSIPEx : TIPAdr;
END_VAR
// Start DNS query
DNSIPEx:=GetDNS_IP(ETH1);
// Because bug in Mosaic, IP address is in worng order
DNSIP[0]:=DNSIPEx[3];
DNSIP[1]:=DNSIPEx[2];
DNSIP[2]:=DNSIPEx[1];
DNSIP[3]:=DNSIPEx[0];
//DNSIP:= STRING_TO_IPADR('192.168.120.254');
NS_SNTP(getIP := (System_S.PERIOD_PULSE_1HOUR or not NormalScan), chanCode
:=ETH1_UNI0 , DnsIP :=DNSIP , Name :=NtpName, IP := NtpIP);
// Ask time server when DNS is done
SNTP(Get:=NS_SNTP.Done, Accept:=SNTP.Done, ChanCode:=ETH1_uni1, IPAdr:=NtpIP
,UtcOff := 60);
NormalScan:=true;
//Testing code
//NtpIP:=STRING_TO_IPADR('213.151.89.43');
//SNTP(Get:=System_S.PERIOD_PULSE_10SEC, Accept:=SNTP.Done,
ChanCode:=ETH1_uni1, IPAdr:=NtpIP ,UtcOff := 60);
END_PROGRAM
Ing. Slavomir Skopalik
Jednatel spolecnosti
Elekt Labs s.r.o.
Sber a vyhodnoceni dat ze stroju a laboratori
systemem MASA (http://www.elektlabs.cz/m2demo)
----------------------------------------------
Adresa:
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
----------------------------------------------
Mobil: +420 724 207 851
icq:199 118 333
skype:skopaliks
e-mail:skopalik na elektlabs.cz
http://www.elektlabs.cz
Další informace o konferenci Hw-list