Показано с 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
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,508

    По умолчанию

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

  6. #6

    По умолчанию

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

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

Похожие темы

  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

Ваши права

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