Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Часы ПЛК160 в цифрах

  1. #1
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию Часы ПЛК160 в цифрах

    Решил сравнить часы ПЛК160 с часами ПК. В течение одного часа я двумя¹² нехитрыми программами записывал в файл показания ФБ CurTimeEx, функции TIME() и класса DateTime (.NET). Показания ПЛК снимались через модбас с периодом 50-100 мс (все регистры разом). Отдельно сравнивались часы двух ПК — накапливающегося расхождения не было. Затем файл прогонялся через программы-анализаторы³.

    clockdrift2.png


    Существенные наблюдения:
    TIME() идёт равномерно, но убегает на 12 секунд за час (100,(3)% нормальной скорости *).
    CurTimeEx идёт неравномерно, но через час сохраняет верный ход.

    Лучше всего эти эффекты видно графически.

    Снимок 1: синяя линия ( TIME() ) равномерно уходит от зелёной (CurTimeEx).

    plot_overall.png

    Снимок 2: неравномерный ход CurTime:

    plot_curtime.png

    Снимок 3: сильная трёхсекундная заминка CurTime. Чёрные точки — референсное время ПК. Каждая точка — успешное считывание показаний ПЛК. Все графики имеют одинаковый набор точек по X.

    plot_gap.png

    Снимок 4: красным — референсное время округлено до целых (так должен выглядеть CurTime).

    plot_ref_round.png

    Код:
    PLCInfo
    PLC model MODEL PLC 160 
    Binary  VERSION 2.14.0 
    Need Target version 2.10 
    Compiled: 10:35:22 Apr 29 2011 
    MAC 6B:77:00:01:D0:D1 
    IP 10.1.6.10
    GATE 10.0.6.1
    MASK 255.255.255.0
    PIC upper version is 15
    Licence unlimited
    ¹ http://pastebin.com/XJSKnDPU
    ² http://pastebin.com/8pCiR5aa
    ³ http://pastebin.com/YRKmbGSe

    Файл clock1.zip — записанные данные (int32 — CurTimeEx, приведённый к DT, int32 — TIME(), long — DateTime.Now.ToBinary()).
    Файл dump.zip — расшифрованные, смещённые к нулю и переведённые в текст результаты.

    Влияние загруженности ПЛК в данном эксперименте не оценивалось.
    Вложения Вложения
    • Тип файла: zip clock1.zip (393.7 Кб, Просмотров: 8)
    • Тип файла: zip dump.zip (301.9 Кб, Просмотров: 4)
    Последний раз редактировалось Yegor; 05.02.2016 в 14:09.

  2. #2
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    использовали ethernet?
    ping учитывался?

  3. #3
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Ethernet, да. Время отклика и некоторые другие мелочи в рамках этого эксперимента не имеют значения — это видно по равномерной/ровной синей линии TIME().

    Кстати ПЛК работал весь день, и сейчас появилась возможность оценить расхождение за семь часов.
    CurTime (DT): 982078482 TIME(): 86824,54 PC: 05.02.2016 9:12:16
    CurTime (DT): 982104300 TIME(): 112730,81 PC: 05.02.2016 16:22:35

    982104300 - 982078482 = 25818
    112730 - 86824 = 25906
    05.02.2016 16:22:35 - 05.02.2016 9:12:16 = 25819

    Таким образом, чуть более чем за 7 часов TIME() убежала на полторы минуты. 90 / 7 = 12,8 (темп спешки сохраняется). Отмечу, что опрос модбасом вёлся только утром и сейчас, и т.к. результат прежний, то значит, опрос (по крайней мере около 10 Гц) побочных эффектов не даёт.
    Последний раз редактировалось Yegor; 05.02.2016 в 14:47.

  4. #4
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Ethernet, да. Время отклика и некоторые другие мелочи в рамках этого эксперимента не имеют значения — это видно по равномерной/ровной синей линии TIME().

    Кстати ПЛК работал весь день, и сейчас появилась возможность оценить расхождение за семь часов.
    CurTime (DT): 982078482 TIME(): 86824,54 PC: 05.02.2016 9:12:16
    CurTime (DT): 982104300 TIME(): 112730,81 PC: 05.02.2016 16:22:35

    982104300 - 982078482 = 25818
    112730 - 86824 = 25906
    05.02.2016 16:22:35 - 05.02.2016 9:12:16 = 25819

    Таким образом, чуть более чем за 7 часов TIME() убежала на полторы минуты. 90 / 7 = 12,8 (темп спешки сохраняется). Отмечу, что опрос модбасом вёлся только утром и сейчас, и т.к. результат прежний, то значит, опрос (по крайней мере около 10 Гц) побочных эффектов не даёт.
    забавно, TIME() врёт, а я собирался сейчас в проекте на нее ориентироваться, для меня 3 секунды критично за 8 часов, спасибо однако.

  5. #5
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    забавно, TIME() врёт, а я собирался сейчас в проекте на нее ориентироваться, для меня 3 секунды критично за 8 часов, спасибо однако.
    Используя несколько ПЛК могу точно сказать, что за год убегает
    до 2х мин.
    и не более.
    по часам. если не скучно. то считайте сами.


    3 сек - 8ч,
    9-24ч, для ПЛК это нормально.
    Это же не хронометр.
    И на ноутах убегает, примерно так же.
    для этого и придумали синхронизацию и создали специальные серверы.

  6. #6
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Используя несколько ПЛК могу точно сказать, что за год убегает
    до 2х мин.
    и не более.
    по часам. если не скучно. то считайте сами.


    3 сек - 8ч,
    9-24ч, для ПЛК это нормально.
    Это же не хронометр.
    И на ноутах убегает, примерно так же.
    для этого и придумали синхронизацию и создали специальные серверы.
    вы говорите о rtc, time() к rtc насколько понимаю отношения не имеет, или я ошибаюсь?
    со спец. серверами (ntp) плк не работает, или я опять ошибаюсь?

  7. #7

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Используя несколько ПЛК могу точно сказать, что за год убегает
    до 2х мин.
    и не более.
    по часам. если не скучно. то считайте сами.


    3 сек - 8ч,
    9-24ч, для ПЛК это нормально.
    Это же не хронометр.
    И на ноутах убегает, примерно так же.
    для этого и придумали синхронизацию и создали специальные серверы.
    Если за сутки часы уходят на 9 сек., то за год они уйдут на 9 * 365 = 3285 сек = 55 мин.

    Откуда вы взяли 2 мин. ?

  8. #8
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    забавно, TIME() врёт, а я собирался сейчас в проекте на нее ориентироваться, для меня 3 секунды критично за 8 часов, спасибо однако.
    Если выяснится, что забегание не зависит от вычислительной нагрузки и/или времени цикла, то можно сделать поправку. Правда, придётся сделать свои TON, TP и т.д. (есть Standard-intern.lib, откуда можно взять исходники на ST). С другой стороны, не совсем понятно что делать с задержками шагов в SFC (давать заведомо больше?).
    Если за сутки часы уходят на 9 сек., то за год они уйдут на 9 * 365 = 3285 сек = 55 мин.
    Откуда вы взяли 2 мин. ?
    На другом более старом ПЛК я наблюдал иной эффект: CurTime не только шаталось, но и забегало/отставало. Правда, это было в 2011, и я толком не помню условия того эксперимента. Так что всё может быть. Тут уже требуется приличная выборка по числу контроллеров, чтобы выводы делать.
    Последний раз редактировалось Yegor; 05.02.2016 в 16:52.

  9. #9
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Невнимательно прочел.
    rtc програмный ФБ.(програмные часы реального времени)
    ничего общего к встроенным в ПЛК часам реального времени не имеет.
    Из-за особенностей работы и низкой точности исключен из МЭК(какого не помню).

    Используйте встроенные часы ПЛК, а не програмные.

  10. #10

    По умолчанию

    Итак, в ПЛК 2-е часов (не синхронных). RTC, увод соответствует кварцевым часам.
    И системный таймер (то самое TIME) - тут увод больше, т.к. кварц не часовой.
    TIME и его производные (TP, TON, BLINK и т.п.) можно использовать на промежутках в часы
    Для длительных отрезков времени используйте RTC.

    Теперь о погрешности от нагрузки. Оба времени не подвержены влиянию нагрузки, однако влиянию нагрузки подвержен наблюдатель (сам ПЛК), т.о. некий джиттер времени объясняется не джитером времени, а джитером реакции программы ПЛК.
    Тролль-наседка, добрый, нежный и ласковый

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. ПЛК100, часы
    от Boris_K в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 03.02.2017, 15:53
  2. Часы реального временни ПЛК160-СП270
    от egik в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 31.03.2016, 00:37
  3. ПЛК73 часы
    от Sektoris в разделе ПЛК63/73
    Ответов: 1
    Последнее сообщение: 16.07.2015, 16:15
  4. ПЛК160: часы как с бодуна
    от Yegor в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 17.02.2012, 13:52
  5. часы в контроллере
    от AKHolod в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 08.12.2010, 23:55

Ваши права

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