Problema con funzione SNTPRequest
Home › Forum › Programmazione IEC 61131 (LogicLab) › Problema con funzione SNTPRequest
- Questo topic ha 2 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 1 settimana fa da
Anonimo.
-
AutorePost
-
Giugno 16, 2025 alle 5:16 pm #82855
Anonimo
InattivoHo acquistato un modulo CPU MPS054C100 che non gestisce il Real Time Clock ed ogni volta che l’accendo per fare prove il datario è sbagliato (Non avendo acquistato la versione extended MPS054C110). Quindi volevo inserire l’aggiornamento via SNTP per l’aggiornamento del datario da Internet.
Ho preso spunto dal programma ST_SNTPClient presente in questo articolo, ma quando lo compilo mi dice funzione sconosciuta in fatti nella libreria manca la funzione SNTPClient.
Nella libreria trovo solo la funzione SNTPRequest, esiste un esempio che utilizzi questa funzione per l’aggiornamento datario?
Giugno 16, 2025 alle 5:24 pm #82859Sergio Bertana
Amministratore del forumIl blocco funzione SNTPRequest è stato sostituito dal blocco funzione SNTPClient, che verrà distribuito con il prossimo package di librerie di cui è possibile eseguire il download dal sito della versione beta PCK055A06_.
Nel nuovo blocco funzione è stata inserita la possibilità di definire 2 diverse definizioni di server NTP. Per il resto il comportamento del FB è del tutto simile al precedente. Ti inserisco il programma ST_SNTPRequest che puoi utilizzare con il FB SNTPRequest.
PROGRAM ST_SNTPRequest VAR ClockSync : BOOL; (* Clock syncronized *) TimeBf : UDINT; (* Time buffer (mS) *) SNTPReq : SNTPRequest; (* SNTP Request *) END_VAR // ***************************************************************************** // PROGRAM "ST_SNTPRequest" // ***************************************************************************** // Questo programma esegue la sincronizzazione con il time server. // ----------------------------------------------------------------------------- // ------------------------------------------------------------------------- // INIZIALIZZAZIONI // ------------------------------------------------------------------------- // Eseguo inizializzazioni. IF (SysFirstLoop) THEN SNTPReq.SpyOn:=FALSE; //Spy On SNTPReq.NTPServer:=ADR('0.pool.ntp.org'); //NTP server TimeBf:=SysTimeGetMs(); //Time buffer (mS) END_IF; // ------------------------------------------------------------------------- // ESEGUO SINCRONIZZAZIONE CON SERVER NTP // ------------------------------------------------------------------------- // If system clock not synchronized executes the request faster. // If synchronized executes it slowly. IF NOT(ClockSync) THEN IF ((SysTimeGetMs()-TimeBf) > TO_UDINT(T#30s)) THEN TimeBf:=SysTimeGetMs(); SNTPReq.Query:=TRUE; END_IF; ELSE IF ((SysTimeGetMs()-TimeBf) > TO_UDINT(T#15m)) THEN TimeBf:=SysTimeGetMs(); SNTPReq.Query:=TRUE; END_IF; END_IF; // Manage the NTP request to the server. // Execution done, if Ok set the real time clock. SNTPReq(); //NTP request IF NOT(SNTPReq.Done) THEN RETURN; END_IF; SNTPReq.Query:=FALSE; //Query On IF NOT (SNTPReq.Ok) THEN RETURN; END_IF; // Update RTC. eTO_JUNK(SysDateSetS(SNTPReq.UTCTime)); ClockSync:=TRUE; //Clock syncronized // [End of file]Come vedi quando il RTC è sincronizzato le rischieste al server sono inviate con tempi lunghi 15 minuti, anche senza chip di Real Time Clock fin che è acceso il sistema gestisce comunque il datario con una sufficente precisione.
Giugno 9, 2026 alle 2:26 pm #85804Anonimo
InattivoHo inserito la nuova “ST_SNTPClient” con la libreria Pck055a050 come richiesto. Nella compilazione del programma inserito nel Task Back, mi esce il seguente errore:
“ST_SNTPCLIENT(42) – errore S1305: TO_DATE_AND_TIME => Funzione sconosciuta”
Ho provato a vedere di trovare nella Project Libraries la funzione TO_DATE_AND_TIME, ma non sono riuscito a trovarla. Mi potreste indicare la via per arrivare ad una soluzione.
Giugno 9, 2026 alle 3:16 pm #85808Sergio Bertana
Amministratore del forumIl FB SNTPClient si trova nella raccolta di librerie PCK055A060.
Nelle nuove versioni di raccolta librerie si utilizzano i tipi TIME e DATA che sono disponibili solo nella architettura XUnified. Non mi dici su che sistema stai eseguendo il programma e che versione di sistema operativo stai utilizzando. Per risolvere il problema hai due soluzioni:
-
- Aggiorni il sistema operativo all’ultima versione, per i sistemi basati su architettura ARM vedi articolo per i sistemi basati su architettura Cortex vedi articolo.
- Utilizzi il precedente FB SNTPRequest di cui è riportato il programma di esempio in questo topic.
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.