Показать сообщение отдельно
Старый 10.03.2017, 11:56   #9
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: C/C++

Цитата:
Сообщение от madeye49 Посмотреть сообщение
1) Что за механизмы, моточасы которых нужно подсчитывать?
О: конвейеры, вентиляторы,механизмы разгрузки и загрузки

2) Каковы периоды работы и простоя у каждого из этих механизмов?
О: какие-то работают 80/20, какие-то 50/50

3) Каков режим работы контроллера? (выключается ли он на ночь)
О: работает круглосуточно

4) Каково качество питания контроллера? (есть ли ИБП, АВР элетропитания)
О: ИБП нет, АВР нет, качество питание страдает иногда довольно сильно

5) Каковы требования к точности учёта моточасов?
О: +/- 2...3 часа не критично

Тогда поступаете вот так:

Сами счётчики держите в ОЗУ, т.е. считаете время и никуда не записываете.

Перед блоком питания контроллера устанавливаете вот такой недорогой девайс: https://market.yandex.ru/product--po...w-500-u/985836 (если сможете найти 300-ваттный, покупайте 300-ваттный)

Перед этим девайсом на его питание устанавливаете реле. Питание подано - реле замыкается. Питание пропало - реле размыкается.

После того, как питание на входе бесперебойника пропадает, у вас есть десяток минут, чтобы сохранить моточасы в EEPROM. Этого более, чем достаточно. Т.к питания нет, ваши механизмы не работают. Ошибок в подсчёте не будет вообще.

Всё, задача решена.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием