Форум Zentec

Программное обеспечение => Вопросы по zWorkbench => Макросы и библиотеки => Тема начата: mike от 03 марта 2017, 13:43:27

Название: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 13:43:27
Макрос наработки моточасов с возможностью чтения по modbus, запись в ПЗУ. При записи в переменную-обнуление счетчика. Запись в ПЗУ порядка 5 млн. циклов.

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

----
Подправил мелкую ошибку
Название: Re: Макрос наработки моточасов
Отправлено: serge197a от 03 марта 2017, 14:02:32
Генератор, суммируем, сетевая переменная - это понятно
А что за блоки?
Поясните пожалуйста.
Название: Re: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 18:24:16
Это многофункциональные массивы ПЗУ.

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

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

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

Состояние счетчика не записывается в ПЗУ, поэтому максимальная погрешность одного периода работы (от начала подачи питания на контроллер, до момента отключения питания) составляет 3599сек.
Название: Re: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 18:52:34
С выхода переменной R_часы импульс поступает на формирователь фронта (поз. 1).
Формирователь фронта разрешает произвести операцию n+1 (где n - кол-во часов наработки час назад), а так же разрешает запись в массив ПЗУ, состоящий из 50 (настраивается) ячеек (поз. 3).
Название: Re: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 19:02:54
Что такое массив ячеек ПЗУ?
Это специализированный блок, который организует логику работы с большим объемом памяти ПЗУ.

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

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

Массивы ПЗУ имеют режимы чтения, записи и, для некоторых режимов работы, - стирание массива (точнее кол-ва записей в массиве).
Название: Re: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 19:12:19
Зачем такие сложности, если можно сделать вот так:
Название: Re: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 20:09:18
Так же раз в час записывается ячейка ПЗУ, но с одним огромным НО.
Количество циклов записи в одну ячейку EEPROM ПЗУ около 100 000.
А общее гарантированное количество циклов записи всего ПЗУ составляет 1млн циклов (согласно даташиту нормальное кол-во общего цикла записи 10млн).

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

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

Для того, что бы обеспечить равномерность износа ячеек ПЗУ я применил FIFO стек (благо появился в ЗВБ).
Таким образом количество циклов записи в разные ячейки превысит общее количество циклов записи и всего этого добра хватит лет на 20 в не экстремальном режиме работы.
Название: Re: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 20:35:20
Название: Re: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 20:42:24
Алгоритм был написан по просьбе А. Сасова из НПТ Климатика.

P.S. Написан был за 15 минут на выставке МК2017, стоя на одной ноге, да еще и в прайм тайм. А описание его заняло более 2х часов в уютном кресле дома >:(
Название: Re: Макрос наработки моточасов
Отправлено: serge197a от 03 марта 2017, 21:55:30
спасибо mike.
А нет ли возможности реализовать запись в ПЗУ по отключению питания?
Это сняло бы все трудности и к примеру в счетчике м/ч можно было бы не делать лишних записей.
Название: Re: Макрос наработки моточасов
Отправлено: mike от 03 марта 2017, 22:01:53
В машинах Z400, M100, M120 такой функции не предусмотрено.
В Z036 предусмотрено 8к энергонезависимая ОЗУ.
Название: Re: Макрос наработки моточасов
Отправлено: serge197a от 03 марта 2017, 22:07:24
Понятно.
Спасибо.
Название: Re: Макрос наработки моточасов
Отправлено: VoronovMaksim88 от 04 марта 2017, 07:56:41
Отличный макрос! Спасибо.
А я как раз делал в тупую: в 1 ячейку  :)