Показано с 1 по 10 из 13

Тема: Как отсветить UpTime контроллера?

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    04.11.2009
    Адрес
    Подольск
    Сообщений
    258

    Question Как отсветить UpTime контроллера?

    Использую следующий код:
    PROGRAM SHOW_UPTIME
    VAR_INPUT
    z: DINT;
    END_VAR
    VAR
    FormatUint: STRING(10):='%02u';
    FormatUintS: STRING(10):='%01u';
    t: DINT;
    dd: UDINT;
    hh: UDINT;
    mm: UDINT;
    ss: UDINT;
    uptime_sec: UDINT;
    END_VAR

    uptime_sec:=uptime_Sys_time.ulHigh*4294+uptime_Sys _time.ulLow/1000000;
    dd:=uptime_sec/86400;
    hh:=(uptime_sec-dd*86400)/3600;
    mm:=(uptime_sec-dd*86400-hh*3600)/60;
    ss:=uptime_sec-hh*3600-mm*60;
    IF dd<9 THEN
    t:=ShowDint(z, 9, 0, FormatUintS,dd);
    t:=ShowString(z, 10, 0, 'д');
    t:=ShowDint(z, 11, 0, FormatUint,hh);
    t:=ShowString(z, 13, 0, ':');
    t:=ShowDint(z, 14, 0, FormatUint,mm);
    ELSE
    t:=ShowString(z, 9, 0, '>9 дней-ОК');
    END_IF

    Структуры со временем - глобальные переменные:
    VAR_GLOBAL
    uptime_Sys_Time: SysTime64;
    TimeAndDate: SystemTimeDate;
    END_VAR

    Переменные заполняются следующим образом:
    PROGRAM GET_TIME
    VAR_INPUT
    END_VAR
    VAR
    GetTime: CurTimeEx;
    END_VAR


    TimeAndDate.Day :=0;
    TimeAndDate.DayOfWeek :=0;
    TimeAndDate.dwHighMsec :=0;
    TimeAndDate.dwLowMSecs :=0;
    TimeAndDate.Milliseconds :=0;
    TimeAndDate.Minute :=0;
    TimeAndDate.Second :=0;
    TimeAndDate.Hour :=0;
    TimeAndDate.Year :=0;
    TimeAndDate.Month :=0;

    uptime_Sys_Time.ulHigh :=0;
    uptime_Sys_Time.ulLow :=0;

    GetTime (SystemTime:=uptime_Sys_Time, TimeDate:= TimeAndDate);

    Что в итоге имеем: сначала время отсчитывается хорошо, потом, в какой-то момент времени, начинает идти в обратную сторону, затем опять хорошо и т.д.
    Очевидно, где-то вместо беззнакового INTа используется знаковый. Не могу понять где, и всё тут...

    Или может есть готовый кусочек кода?

    Под UpTime'ом подразумеваю время с момента загрузки контроллера и автостарта программы.
    Последний раз редактировалось Elka; 22.10.2010 в 09:11.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •