Здравствуйте.
Прошу проверить макрос (выполнить Code Review).
Я тестирование провел, в том числе на ПР200, прошу опытных (Middle/Senor) разработчиков указать на возможные ошибки (недочеты).
МАКРОС: счетчик импульсов с ПАМЯТЬЮ (от дискретного входа) .
Целевое использование макроса:
- информационно-аналитическая информация для отображения в OwenCloud .
- визуализация (в графике и на плашке) информации на основание подсчета импульсов, интенсивность расхода из скважины, мониторинг и сопоставление с (остальными) показаниями комплекса оборудования (счетчик герконом щелкает каждый полный оборот, каждые 10 литров)
- команд управления (на основании получившихся подсчетов) не выполняется
- формальная производственная отчетность (на основании получившихся подсчетов) не составляется
МАКРОС на вход получает:
- импульс (1/0)
- коэффициент масштабирования (произведение числа импульса на коэфициент, 1 импульс = 10 литров)
МАКРОС на выходе предоставляет данные:
- количество импульсов (перемноженных на коэффициент) за предыдущую минуту
- количество импульсов (перемноженных на коэффициент) за предыдущий час
- количество импульсов (перемноженных на коэффициент) за предыдущий день
- количество импульсов (перемноженных на коэффициент) за текущий день
Все подсчеты синхронизированы по внутренним часам реального времени (по локадьному часовому поясу)
Пограничные условия (известные мне):
- может использоваться только с приборами у которых есть внутренние часы реального времени
- при поступление импульса в интервале с 0мс до 0.9мс в начале каждой минуты (часа, суток) "теряет" импульсы (то есть "слепнет" на 9 циклов выполнения программы, допустимое ограничение для целевого использования)
Прошу при review дать обратную связь по следующим вопросам:
- - в МАКРОСЕ используется несколько линий задержки. какие последствия могут быть при практическом применении этого макроса?
- - в МАКРОСЕ не выполняется учет реальной продолжительности цикла выполнения программы (про доступность макроса для вычисления продолжительности знаю). Сейчас установлен hardcode в 0,1мс (для эмуляции задержки/паузы). Какие могут быть последствия в реальной работе?
Файл с кодом макроса прикладываю.
Файл с кодом проекта для отладки прикладываю.