Get the numer of day

fefefede
2023-09-14
2023-09-15
  • fefefede - 2023-09-14

    Hello i tro to create a program to turn on or off the air condition in relationship temperature and numer of day. I can't get the number of day.

    I try this after installing SysTime library but this not work and have this error on debug
    ------ Build started: Application: Device.Sim.Device.Application -------
    Typify code...
    Generate code...
    [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0032: Cannot convert type 'Unknown type: 'SysTimeCore(TRUE)'' to type 'TIME'
    [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0035: Program name, function or function block instance expected instead of 'SysTimeCore'
    [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0032: Cannot convert type 'Unknown type: 'DayOfWeek(CurrentTime)'' to type 'INT'
    [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0035: Program name, function or function block instance expected instead of 'DayOfWeek'
    [INFORMATION] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0181: Related position
    Build complete -- 4 errors, 0 warnings : No download possible

    PROGRAM PLC_PRG
    VAR
      Temperatura: UDINT;
      AriaCondizionata: BOOL := FALSE;
      CurrentDayOfWeek: INT; //Variabile Giorno 
      CurrentTime: TIME;  
      GiornoDellaSettimana: INT;
      DayOfWeek: INT;
    END_VAR
    
    CurrentTime := SysTimeCore(TRUE);  // Ottieni l'ora corrente
    CurrentDayOfWeek := DayOfWeek(CurrentTime);
    
    CASE GiornoDellaSettimana OF
      1:
        // Azioni per Lunedì
      2:
        // Martedì se più 10° accend altrimenti spegni
    IF Temperatura >= 10 THEN
        AriaCondizionata := TRUE;
    ELSE
        AriaCondizionata := FALSE;  
    END_IF
      3:
        // Mercoledì se più di 50° accendi altrimenti spegni
    IF Temperatura >=50 THEN
        AriaCondizionata := TRUE;
    ELSE
        AriaCondizionata := FALSE;
    END_IF
      4:
        // Giovedì se più di 40° accendi altrimenti spegni
    IF Temperatura >=40 THEN
        AriaCondizionata := TRUE;
    ELSE
        AriaCondizionata := FALSE;
    END_IF
      5:
        // Venerdì se più di 50° accendi altrimenti spegni
    IF Temperatura >=50 THEN
        AriaCondizionata := TRUE;
    ELSE
        AriaCondizionata := FALSE;
    END_IF
      6:
        // Sabato se più di 25° accendi altrimenti spegni
    IF Temperatura >=25 THEN
        AriaCondizionata := TRUE;
    ELSE
        AriaCondizionata := FALSE;
    END_IF
      7:
        // Domenica sempre spenta
        AriaCondizionata := FALSE;
    END_CASE
    
     
  • snhatton - 2023-09-14

    The SysTimeRtcConvertUtcToDate function does this for you and applies the output to RTS_SYSTIMEDATE struct. This is part of the SysTimeRtc library.

     
  • fefefede - 2023-09-15

    Hello and thank you so much for your replay. I'm a beginner and i have install the library but i cant use..how can i use a library and function on codesys?

    I try to insert on my POU VAR

    rtcInstance: SysTimeRtc.ReadTime; // Dichiara una variabile per la funzione di lettura

    And then on my program

    // Leggi il tempo reale
    rtcInstance();

    But have this error

    "C0035: Program name, function or function block instance expected insted of "rtcInstance"

    Where i'm wrong?

     
  • fefefede - 2023-09-15

    Hello and thank you so much for your replay. I'm a beginner and i have install the library but i cant use..how can i use a library and function on codesys?

    I try to insert on my POU VAR

    rtcInstance: SysTimeRtc.ReadTime; // Dichiara una variabile per la funzione di lettura

    And then on my program

    // Leggi il tempo reale
    rtcInstance();

    But have this error

    "C0035: Program name, function or function block instance expected insted of "rtcInstance"

    Where i'm wrong?

     

Log in to post a comment.