PDA

Просмотр полной версии : ПР200. Проверить МАКРОС.



Shiryaevo
09.04.2023, 00:24
Здравствуйте.
Прошу проверить макрос (выполнить Code Review).
Я тестирование провел, в том числе на ПР200, прошу опытных (Middle/Senor) разработчиков указать на возможные ошибки (недочеты).

МАКРОС: счетчик импульсов с ПАМЯТЬЮ (от дискретного входа) .

Целевое использование макроса:

информационно-аналитическая информация для отображения в OwenCloud .
визуализация (в графике и на плашке) информации на основание подсчета импульсов, интенсивность расхода из скважины, мониторинг и сопоставление с (остальными) показаниями комплекса оборудования (счетчик герконом щелкает каждый полный оборот, каждые 10 литров)
команд управления (на основании получившихся подсчетов) не выполняется
формальная производственная отчетность (на основании получившихся подсчетов) не составляется


МАКРОС на вход получает:

импульс (1/0)
коэффициент масштабирования (произведение числа импульса на коэфициент, 1 импульс = 10 литров)


МАКРОС на выходе предоставляет данные:

количество импульсов (перемноженных на коэффициент) за предыдущую минуту
количество импульсов (перемноженных на коэффициент) за предыдущий час
количество импульсов (перемноженных на коэффициент) за предыдущий день
количество импульсов (перемноженных на коэффициент) за текущий день

Все подсчеты синхронизированы по внутренним часам реального времени (по локадьному часовому поясу)


Пограничные условия (известные мне):

может использоваться только с приборами у которых есть внутренние часы реального времени
при поступление импульса в интервале с 0мс до 0.9мс в начале каждой минуты (часа, суток) "теряет" импульсы (то есть "слепнет" на 9 циклов выполнения программы, допустимое ограничение для целевого использования)



Прошу при review дать обратную связь по следующим вопросам:

- в МАКРОСЕ используется несколько линий задержки. какие последствия могут быть при практическом применении этого макроса?
- в МАКРОСЕ не выполняется учет реальной продолжительности цикла выполнения программы (про доступность макроса для вычисления продолжительности знаю). Сейчас установлен hardcode в 0,1мс (для эмуляции задержки/паузы). Какие могут быть последствия в реальной работе?



Файл с кодом макроса прикладываю.
Файл с кодом проекта для отладки прикладываю.

Dimensy
09.04.2023, 10:50
"Слепнет" он у вас не на 9 циклов программы, а на 900 мс именно из-за задержки TON.
Вот так будет правильнее

67124

Dimensy
09.04.2023, 11:17
А еще можно так сделать

Сергей0308
09.04.2023, 14:22
Странно это, расход собираетесь контролировать, а расход не рассчитывается, в смысле, может лучше рассчитать(вычислить) то, что хотите контролировать?

Shiryaevo
09.04.2023, 17:50
вы правы!
опечатка с моей стороны.

Shiryaevo
09.04.2023, 17:54
Все верно.
расход не контролируется, не вычисляется, показания не являются формальными цифрами.
Ежеквартальный отчет согласно лицензионных требований пользователя ресурсов (по добываемой воде) сдается на основании показаний (бумажного) журнала.

Данные МАКРОСА используются для ВИЗУАЛИЗАЦИИ.
Другими словами - это мониторинг: "Вчера было так, месяц назад было так, а тут вроде что-то не так"

Shiryaevo
09.04.2023, 18:54
А еще можно так сделать

Да,
элегантный прием для "искусственной" задержки, понравился :)

Для "триггера" события (перехода через 0) в одном из первых подходов к задаче я использовал "NOT(Sec) / NOT(Min)".
Для триггера по часам ваш вариант элегантнее :)

Буду использовать, часы оставлю "внутри", по канонам полиморфизма от пользователя (API) скрываем внутреннюю кухню.
Спасибо!

PS
Когда я открыл ваш код в IDE, то у меня (ваши) "линии задержки" (графически) отрисовываются сплошной линией, с символом "стрелочка" в конце.
Когда я через IDE добавляю на холст новую "линию задержки", то она отрисовывается пунктирной линией, с символом "стрелочка" в конце.
Это не ожидаемое поведение или вы используете специальную кнопку IDE, так как существует другой тип "линии задержки"?

IDE - это Интегрированная среда разработки

Dimensy
09.04.2023, 18:59
Да,
PS
Когда я открыл ваш код в IDE, то у меня (ваши) "линии задержки" (графически) отрисовываются сплошной линией, с символом "стрелочка" в конце.
Когда я через IDE добавляю на холст новую "линию задержки", то она отрисовывается пунктирной линией, с символом "стрелочка" в конце.
Это не ожидаемое поведение или вы используете специальную кнопку IDE, так как существует другой тип "линии задержки"?

IDE - это Интегрированная среда разработки

Это у Лоджика небольшие глюки с отрисовкой.

Ну и, так к сведению, макрос save из менеджера морально устарел, сейчас тоже самое можно сделать намного проще

67128

Shiryaevo
09.04.2023, 20:55
"Слепнет" он у вас не на 9 циклов программы, а на 900 мс именно из-за задержки TON.
Вот так будет правильнее
67124




Ну и, так к сведению, макрос save из менеджера морально устарел, сейчас тоже самое можно сделать намного проще
67128

Вот такая Красота получилась.
И "слепнуть" перестал.
67129

Спасибо за Опыт, Ценно!

Сергей0308
09.04.2023, 21:40
А Вам хватит диапазона счётчика(0-65535) на сутки, может лучше применить нормальный, в смысле, 32-разрядный?

Shiryaevo
09.04.2023, 22:25
А Вам хватит диапазона счётчика(0-65535) на сутки, может лучше применить нормальный, в смысле, 32-разрядный?
Проектная мощность системы: 2500 импульсов в сутки.
Замечание верное.