Подкиньте идею как проще, правильнее, рациональнее сделать алгоритм усреднения показания температуры (давления).
Имеется ПЛК DVP-20SX2, панель weintek mt8071, пид-регулятор elhart ecd2-m c термодатчиком Pt100, датчик давления 4-20 мА.
Показания температуры передаются в плк по 485 интерфейсу, из плк отображается на панели. Показания давления воздуха через аналоговый вход AD0 (D1110) отображается на панели.
Значения корректные, но иногда "проскакивает" резкое изменение температуры и постоянно скачет число после запятой (десятая часть) показания давления. Логично отображать не мгновенные значения, а какое-то среднее за какое-то измеренное время. По аналоговому входу в мануале написано, что D1110 это и есть "Среднее число аналоговых сигналов на входе канала 0 (AD0) для EX2/SX2. Когда среднее в D1062 установлено как 1, D1110 показывает текущее значение." Как я понял в D1110 отображается то значение, которое отображается на панели, а в D1062 устанавливается количество опросов аналогового входа за определённое время. По умолчанию значение К10. Я его не менял. Какое значение поставить в D1062, чтоб не плавала цифра после запятой?
А по значению температуры по 485 интерфейсу какое решение будет оптимальным? Прописать в программе посылку из D1073 каждые, например, 10 секунд, а не напрямую?
Фильтрация значения
Re: Фильтрация значения
Для температуры.
Простейшее скользящее среднее (MA) вида MA = (МАО + P)/2
MAO - предыдущее значение MA
P - текущее значение температуры
Простейшее скользящее среднее (MA) вида MA = (МАО + P)/2
MAO - предыдущее значение MA
P - текущее значение температуры
Re: Фильтрация значения
Есть API 45 MEAN, я для удобства сделал ФБ, время в 0,1 сек, усредняется 10 значений
Как показала практика, для температуры оптимально время усреднения 2-3 сек.
Как показала практика, для температуры оптимально время усреднения 2-3 сек.
- Вложения
-
- FB_Mean.zip
- (1016 байт) 147 скачиваний
Re: Фильтрация значения
Друзья, а разве модуль аналогового входа не умеет сам заниматься усреднением? или температурный не умеет?
Re: Фильтрация значения
Так автор писал, что есть
По умолчанию стоит 10, чем больше, тем меньше плавания, но и медленней реакция, надо подбирать по месту. Например, для модулей ПТ время опроса 200мс на канал, соответственно, х10 = 2сек, можно прибавлять десятками и наблюдать. Для медленных процессов, можно усреднять окном в десятки секунд.в D1062 устанавливается количество опросов аналогового входа за определённое время. По умолчанию значение К10. Я его не менял. Какое значение поставить в D1062, чтоб не плавала цифра после запятой?
Re: Фильтрация значения
Именно вот это я и хотел узнать. Спасибо.and909 писал(а): ↑26 июл 2021, 08:48По умолчанию стоит 10, чем больше, тем меньше плавания, но и медленней реакция, надо подбирать по месту. Например, для модулей ПТ время опроса 200мс на канал, соответственно, х10 = 2сек, можно прибавлять десятками и наблюдать. Для медленных процессов, можно усреднять окном в десятки секунд.
А вот
В каких случаях будет не достаточно одной команды MEAN? Обязательно такой ФБ применять?
Re: Фильтрация значения
ФБ это обвязка API я ее сделал для удобства и как мне надо, можно использовать отдельно, надо только организовать окно усреднения (создать массив из данных, соответствующий количеству усредняемых значений и сдвигать эти данные).