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