Панель пользователя

Автор Тема: Макрос наработки моточасов  (Прочитано 2114 раз)

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Макрос наработки моточасов
« : 03 Март 2017, 13:43:27 »
Макрос наработки моточасов с возможностью чтения по modbus, запись в ПЗУ. При записи в переменную-обнуление счетчика. Запись в ПЗУ порядка 5 млн. циклов.

Построен на базе шаблонов ПЗУ.

----
Подправил мелкую ошибку
« Последнее редактирование: 03 Март 2017, 20:44:00 от mike »

Оффлайн serge197a

  • Постоялец
  • ***
  • Сообщений: 245
  • Карма: +0/-0
Re: Макрос наработки моточасов
« Ответ #1 : 03 Март 2017, 14:02:32 »
Генератор, суммируем, сетевая переменная - это понятно
А что за блоки?
Поясните пожалуйста.

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Re: Макрос наработки моточасов
« Ответ #2 : 03 Март 2017, 18:24:16 »
Это многофункциональные массивы ПЗУ.

Давайте тогда сделаю пояснение для всех коллег, как этот проект работает.
На самом деле название "Макрос наработки" не совсем правильное. Это проект.

Итак, на таймере сделан генератор секундных импульсов, который начинает генерацию при высоком уровне на входе en (поз.1)
Соответственно, этот вход является входом запуска всего СчетчикаМотоЧасов.

Секундные импульсы с выхода генератора поступают на инкрементный вход счетчика-делителя (поз. 2).
Каждые 3600 сек (1час) на выходе up счетчика формируется импульс, который подается на вход переменной R_часы.
В следующем цикле происходит сброс счетчика.

Состояние счетчика не записывается в ПЗУ, поэтому максимальная погрешность одного периода работы (от начала подачи питания на контроллер, до момента отключения питания) составляет 3599сек.
« Последнее редактирование: 03 Март 2017, 20:21:56 от mike »

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Re: Макрос наработки моточасов
« Ответ #3 : 03 Март 2017, 18:52:34 »
С выхода переменной R_часы импульс поступает на формирователь фронта (поз. 1).
Формирователь фронта разрешает произвести операцию n+1 (где n - кол-во часов наработки час назад), а так же разрешает запись в массив ПЗУ, состоящий из 50 (настраивается) ячеек (поз. 3).

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Re: Макрос наработки моточасов
« Ответ #4 : 03 Март 2017, 19:02:54 »
Что такое массив ячеек ПЗУ?
Это специализированный блок, который организует логику работы с большим объемом памяти ПЗУ.

Блок создается в секции пользовательских шаблонов (поз. 1).
Подробнее о блоке - в справке по ЗВБ, а я остановлюсь на самом решении.

Я выбрал режим работы блока - Журнал (поз. 1). Это обычный FIFO стек, но назвали мы его "журнал", что бы пользователям было понятнее: из этого блока можно сделать журнал событий.

Массивы ПЗУ имеют режимы чтения, записи и, для некоторых режимов работы, - стирание массива (точнее кол-ва записей в массиве).
« Последнее редактирование: 03 Март 2017, 20:18:23 от mike »

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Re: Макрос наработки моточасов
« Ответ #5 : 03 Март 2017, 19:12:19 »
Зачем такие сложности, если можно сделать вот так:

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Re: Макрос наработки моточасов
« Ответ #6 : 03 Март 2017, 20:09:18 »
Так же раз в час записывается ячейка ПЗУ, но с одним огромным НО.
Количество циклов записи в одну ячейку EEPROM ПЗУ около 100 000.
А общее гарантированное количество циклов записи всего ПЗУ составляет 1млн циклов (согласно даташиту нормальное кол-во общего цикла записи 10млн).

Получается, что при записи раз в час в одну ячейку ПЗУ, ресурс ячейки выработается через 100 000 часов или через 11 лет. Причем надо заметить, что это предельное значение.
А если вы хотите сохранять значение раз в 10 минут, то ресурс одной ячейки закончится меньше чем через пару лет.

Учитывая, что помимо счетчика моточасов в ПЗУ будут производиться записи из других источников, то разумно выбрать минимальное время цикла записи в ПЗУ для счетчика моточасов ~20минут.

Для того, что бы обеспечить равномерность износа ячеек ПЗУ я применил FIFO стек (благо появился в ЗВБ).
Таким образом количество циклов записи в разные ячейки превысит общее количество циклов записи и всего этого добра хватит лет на 20 в не экстремальном режиме работы.

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Re: Макрос наработки моточасов
« Ответ #7 : 03 Март 2017, 20:35:20 »
    Итак, при записи в массив ПЗУ на выходе to (поз. 1) появляется значение с приращение в одну единицу (в данном примере одна единица равна одному часу).
    И сразу же поступает на вход event массива ПЗУ, настроенного на режим чтения (поз. 3), через сумматор, настроенный на операцию вычитания (поз. 2).

    На выходе "Наработка часов" (поз. 4) появляется действующее значение, которое заносится в ячейку ОЗУ "Наработанные часы" (поз. 5). Эта ячейка ОЗУ выполняет три функции:
    • Осуществляет рекурсию для реализации инкрементного счетчика (см. рис. 002, поз. 2)
    • Осуществляет сетевой доступ к текущему значению счетчика моточасов
    • Осуществляет сброс счетчика моточасов по сети

    Сброс по сети осуществляется записью нуля в переменную "Наработанные часы".
« Последнее редактирование: 03 Март 2017, 20:38:36 от mike »

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Re: Макрос наработки моточасов
« Ответ #8 : 03 Март 2017, 20:42:24 »
Алгоритм был написан по просьбе А. Сасова из НПТ Климатика.

P.S. Написан был за 15 минут на выставке МК2017, стоя на одной ноге, да еще и в прайм тайм. А описание его заняло более 2х часов в уютном кресле дома >:(

Оффлайн serge197a

  • Постоялец
  • ***
  • Сообщений: 245
  • Карма: +0/-0
Re: Макрос наработки моточасов
« Ответ #9 : 03 Март 2017, 21:55:30 »
спасибо mike.
А нет ли возможности реализовать запись в ПЗУ по отключению питания?
Это сняло бы все трудности и к примеру в счетчике м/ч можно было бы не делать лишних записей.
« Последнее редактирование: 03 Март 2017, 22:06:34 от serge197a »

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1189
  • Карма: +32/-1
Re: Макрос наработки моточасов
« Ответ #10 : 03 Март 2017, 22:01:53 »
В машинах Z400, M100, M120 такой функции не предусмотрено.
В Z036 предусмотрено 8к энергонезависимая ОЗУ.

Оффлайн serge197a

  • Постоялец
  • ***
  • Сообщений: 245
  • Карма: +0/-0
Re: Макрос наработки моточасов
« Ответ #11 : 03 Март 2017, 22:07:24 »
Понятно.
Спасибо.

Оффлайн VoronovMaksim88

  • Ветеран
  • *****
  • Сообщений: 693
  • Карма: +10/-1
  • www.sibplc.ru
Re: Макрос наработки моточасов
« Ответ #12 : 04 Март 2017, 07:56:41 »
Отличный макрос! Спасибо.
А я как раз делал в тупую: в 1 ячейку  :)