PDA

Просмотр полной версии : Таймер



Deoxes
14.07.2014, 15:01
У меня стоит ПЛК107, мне нужно снимать показания с влагомера каждую секунду и каждые 10сек высчитывать среднее значение. До етого работал только с визуализацией на СПК, помогите справиться с етим вопросом.

amn
14.07.2014, 20:00
Создайте массив из 10 элементов. Каждую секунду присваиваем очередному элементу массива текущее значение влажности. Когда заполнили весь массив вычисляем среденее значение. И так по кругу.

Deoxes
15.07.2014, 14:47
А можете пример хоть какой нибуть показать, а то я даже безпонятия с чего начать и чем закончить

amn
15.07.2014, 18:31
Сделал пример без использования массива согласно Вашей задаче.


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

Deoxes
16.07.2014, 10:45
Вставил ваш образец, добавил визуализацию на ввод sens и вывод rh, когда ввожу sens и жму один цикл программа останавливаеться. Как можно вручную проверить всё ето, влагомера пока что нету. Спасибо за ваш труд.

amn
16.07.2014, 11:18
С таймерами пошагово не прокатит, они же работают в реальном времени. Запускаете программу на выполнение и в визуализации меняете sens с учетом того, что раз в секунду результат суммируется. За 10 секунд успеете поменять несколько раз. Можно еще в визуализацию вывести sum, тогда будет видна сумма. А так во время работы программы в разделе объявления переменных видны все значения переменных, можно и там посмотреть.

Deoxes
16.07.2014, 11:28
ок, спасибо, пошёл запускать панель)

Deoxes
16.07.2014, 11:40
Загрузил всё в ПЛК, меняю sens но ничего не происходит.
Когда навожу на свой POU(функциональный блок написано offline).
Невидит переменных в функциональном блоке, я их повторно в глобальные переменные вписывал, но наверно нужно привязать ФБ к программе что бы были переменные видны?

Deoxes
16.07.2014, 12:19
Всё разобрался, Большое спасибо