Просмотр полной версии : Таймер
У меня стоит ПЛК107, мне нужно снимать показания с влагомера каждую секунду и каждые 10сек высчитывать среднее значение. До етого работал только с визуализацией на СПК, помогите справиться с етим вопросом.
Создайте массив из 10 элементов. Каждую секунду присваиваем очередному элементу массива текущее значение влажности. Когда заполнили весь массив вычисляем среденее значение. И так по кругу.
А можете пример хоть какой нибуть показать, а то я даже безпонятия с чего начать и чем закончить
Сделал пример без использования массива согласно Вашей задаче.
FUNCTION_BLOCK medium_value
VAR_INPUT
sens: REAL; (*показание датчика влажности*)
END_VAR
VAR_OUTPUT
rh: REAL; (*усредненное показание датчика влажности*)
END_VAR
VAR
TON_1sec: TON;(*таймер для генератора импульсов*)
sum: REAL; (*сумма десяти значений показаний датчика*)
count: BYTE; (*счетчик импульсов, нам надо получить 10 импульсов*)
END_VAR
__________________________________________________ _____________________
TON_1sec(IN:= NOT TON_1sec.Q , PT:=t#1s); (*генератор импульсов раз в секунду*)
(*Каждую секунду считаем импульсы и суммируем текущее значение влажности.*)
IF TON_1sec.Q THEN (*если пришел импульс от генератора*)
sum:=sum+sens; (*добавляем текущее значение датчика к общей сумме*)
count:=count+1; (*считаем от 0 до 9*)
IF count>9 THEN (*если получили 10 импульсов и сумму показаний датчика*)
rh:=sum/10; (*вычисляем среднее значение*)
sum:=0; (*обнуляем сумму*)
count:=0; (*обнуляем счетчик*)
END_IF
END_IF
Вставил ваш образец, добавил визуализацию на ввод sens и вывод rh, когда ввожу sens и жму один цикл программа останавливаеться. Как можно вручную проверить всё ето, влагомера пока что нету. Спасибо за ваш труд.
С таймерами пошагово не прокатит, они же работают в реальном времени. Запускаете программу на выполнение и в визуализации меняете sens с учетом того, что раз в секунду результат суммируется. За 10 секунд успеете поменять несколько раз. Можно еще в визуализацию вывести sum, тогда будет видна сумма. А так во время работы программы в разделе объявления переменных видны все значения переменных, можно и там посмотреть.
ок, спасибо, пошёл запускать панель)
Загрузил всё в ПЛК, меняю sens но ничего не происходит.
Когда навожу на свой POU(функциональный блок написано offline).
Невидит переменных в функциональном блоке, я их повторно в глобальные переменные вписывал, но наверно нужно привязать ФБ к программе что бы были переменные видны?
Всё разобрался, Большое спасибо
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot