Показано с 1 по 6 из 6

Тема: Программы - сброс счетчика в МВ110 по времени

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Question Программы - сброс счетчика в МВ110 по времени

    Задача - сбрасывать счетчик в МВ110 два раза в сутки. Написал пробную программу со сбросом в фиксированное время. Компилируется, но не работает. Буду рад совету.



    // Внимание!!! Не изменяйте сигнатуру функции!!!
    var
    hh_sys, min_sys, ss_sys, ms_sys : word;
    work: boolean;

    procedure Init; cdecl; export;
    begin
    // Функция инициализации глобальных переменных пользователем
    end;

    // Внимание!!! Не изменяйте сигнатуру функции!!!
    procedure UserFunction; cdecl; export;
    begin
    DecodeTime(Time, hh_sys, min_sys, ss_sys, ms_sys);
    work := ((hh_sys = 13) and (min_sys=01) and (ss_sys =0) and (ms_sys =0));
    if (work) then
    begin
    dp400cd:=0;
    dp400cp:=0;
    end;

    end;

    № Имя Формат Тип Прибор Параметр Описание
    1 dp400cd UINT Выход DoyPack-450KL 400g MB110 DoyPack 400g счетчик доз | r.Cou.6
    2 dp400cp UINT Выход DoyPack-450KL 400g MB110 DoyPack 400g счетчик пакетов | r.Cou.8

  2. #2
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,508

    По умолчанию

    ну не знаю... сравнивать секунды и миллисекунды на равно? (зы, не знаю, почему один знак равенства при сравнении?, не силен в ST)
    Ну и если получаем данные времени из ПЛК, то в эмуляции наверное и работать не будет.

  3. #3

    По умолчанию

    Мне кажется, что при неустойчивой связи через интернет и периодом опроса от 10 секунд и выше - решение сбрасывать счётчик из облака - ошибочно.

    Нужно сбрасывать контроллером по месту, а из облака лишь следить за уставкой времени сброса и за соответствием системного времени контроллера и местным временем с учётом пояса, может быть выполнять подстройку (с осознанием характера соединения с облаком и соответствующей точностью установки до 1 минуты).

    Не доводилось пользоваться, только знаю о существовании малогабаритных модулей серверов точного времени NTP на динрейку или на стенку шкафа, которые как-то позволяют настроить системное время достаточно точно. Ценники у них довольно разные - от 10 тыс.руб. до бесконечности.
    ПЛК должен поддерживать клиента NTP.

    Хотя, можно и из облака. Но сравнивать время немного не так.
    Введём переменные
    dwTime:dword - текущее время одним числом
    bResetToday:boolean - сегодня сброс уже был
    Код:
    dwTime := hh_sys * 3600 + min_sys * 60 + ss_sys;
    if not bResetToday and (dwTime >= 13 * 3600 + 01 * 60 + 00) then
    begin
      //сформировать сигнал сброса
      ...
      //проверить, что сброс выполнился
      bResetToday := тест выполнения сброса
    end
    else
      bResetToday := (dwTime < 13 * 3600 + 01 * 60 + 00); // сбросить состояние произошедшего сброса после смены даты
    end;
    Может быть я немного ошибся в коде, но смысл должен быть понятен.
    И ещё мне лень искать справку, может быть вычислять dwTime и не нужно - сразу работать с Time. Не помню, что в Time за время - в мс или с, учитывает часовой пояс или нет - это уже детали.

  4. #4

    По умолчанию

    Для информации. Даже в изначальном представленном мной виде, программа сработала, но с задержкой в 3,5 часа. Вот такие особенности OwenCloud. Буду пробовать вариант предложенный FPavel

    № Дата и время Имя переменной Параметр Прибор Записываемое значение Статус команды
    1 2026-08-26 16:30:02 dp400cp DoyPack 400g счетчик пакетов | r.Cou.8 DoyPack-450KL 400g MB110 0 Успешно
    2 2026-08-26 16:30:00 dp400cd DoyPack 400g счетчик доз | r.Cou.6 DoyPack-450KL 400g MB110 0 Успешно

  5. #5

    По умолчанию

    Цитата Сообщение от Glebas Посмотреть сообщение
    Для информации. Даже в изначальном представленном мной виде, программа сработала, но с задержкой в 3,5 часа. Вот такие особенности OwenCloud
    Возможно, 3.5 часа как-то связаны со сдвигом времени в часовых поясах.
    Почитайте, что там за время получается из программы - может "по Гринвичу". Тогда нужно будет вычесть или добавлять поправку на часовой пояс.

    Помню, что время обновления переменной точно отсчитывается от GMT+0:00, а не по Московскому или другому часовому поясу. Поэтому вводил коррекцию на свой часовой пояс. Все сведения брал из руководства на OwenCloud, поэтому всё что касалось времени заработало сразу.

  6. #6
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,508

    По умолчанию

    хм, вот спустя 3 часа было бы понятнее, чисто возможно из-за разницы времени между UTC и Москвой. А вот 3,5 часа как-то странно - возможно связи с объектом не было это время?

Похожие темы

  1. Сброс счетчика в МВ210-214
    от AndyIva в разделе Мх210
    Ответов: 4
    Последнее сообщение: 23.01.2025, 16:20
  2. сброс счетчика
    от Сергей новичок в разделе Наши проекты
    Ответов: 7
    Последнее сообщение: 09.05.2021, 14:45
  3. ПЛК 100 и МВ110-16ДН Сброс счетчика
    от Malyshevsergey в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 20.12.2011, 10:45
  4. сброс счетчика си 30
    от 13tiger13 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 01.11.2010, 11:59
  5. Сброс счетчика
    от Advokatio в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 16.01.2009, 13:30

Ваши права

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