Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Aggiornare Data/Ora da comando Modbus
- Questo topic ha 1 risposta, 2 partecipanti ed è stato aggiornato l'ultima volta 4 anni, 7 mesi fa da Sergio Bertana.
Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
-
AutorePost
-
Settembre 9, 2019 alle 1:06 pm #49556AnonimoInattivo
Dovrei aggiornare con un comando Modbus il valore di Data/Ora su di un sistema NetlogIII, vorrei non utilizzare i comandi che accedono all’area RTC (Indirizzi Modbus 100~105 o 150) ma bensì allocare una variabile UDINT con il valore in Epoch Time nella DB 100.
Potrei avere un esempio di programma che mi permetta impostando il valore Epoch nella variabile via Modbus di aggiornare automaticamente l’RTC ?
Settembre 9, 2019 alle 1:10 pm #49558Sergio BertanaAmministratore del forumTi allego questo semplice programma ST da eseguire in task Back.
VAR MDBDateTime AT %MX100.16 : UDINT; (* Date/Time in Epoch *) AuxDateTime : UDINT; (* Aiuxiliary Date/Time in Epoch *) END_VAR // ***************************************************************************** // PROGRAM "ST" // ***************************************************************************** // Per poter aggiornare l'RTC da Modbus ho allocato la variabile "MDBDateTime" // di tipo UDINT nella DB 100.16 (Cambiare in base alle proprie esigenze) in // modo che sia accessibile da modbus all'indirizzo 40008. Scrivendo da Modbus // un nuovo valore in Epoch time nella variabile viene aggiornato l'RTC. // ----------------------------------------------------------------------------- // ------------------------------------------------------------------------- // CONTROLLO VARIABILE // ------------------------------------------------------------------------- // Inizializzo valore al primo loop. IF (SysFirstLoop) THEN MDBDateTime:=SysDateTime; //Date/Time in Epoch AuxDateTime:=SysDateTime; //Aiuxiliary Date/Time in Epoch END_IF; // Controllo se valore cvariabile è stato modificato da Modbus. // Scrivendo il nuovo valore in "SysDateTime" si aggiorna l'RTC. IF (MDBDateTime <> AuxDateTime) THEN SysDateTime:=MDBDateTime; //Date/Time in Epoch AuxDateTime:=MDBDateTime; //Aiuxiliary Date/Time in Epoch END_IF; // Ricopio valore in variabile Modbus per aggiornarla. MDBDateTime:=SysDateTime; //Date/Time in Epoch AuxDateTime:=SysDateTime; //Aiuxiliary Date/Time in Epoch // [End of file]
-
AutorePost
Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
- Devi essere connesso per rispondere a questo topic.