У меня стоит ПЛК107, мне нужно снимать показания с влагомера каждую секунду и каждые 10сек высчитывать среднее значение. До етого работал только с визуализацией на СПК, помогите справиться с етим вопросом.
У меня стоит ПЛК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).
Невидит переменных в функциональном блоке, я их повторно в глобальные переменные вписывал, но наверно нужно привязать ФБ к программе что бы были переменные видны?
Последний раз редактировалось Deoxes; 16.07.2014 в 12:03.
Всё разобрался, Большое спасибо