Vai al contenuto

Aggiornare Data/Ora da comando Modbus

Home Forum Controllori SlimLine e Netsyst (LogicLab) Aggiornare Data/Ora da comando Modbus

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #49556
    Anonimo
    Inattivo

    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 ?

    #49558
    Sergio Bertana
    Amministratore del forum

    Ti 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]
Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.