1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Нахождение разности показаний температур датчика за час в Codesys 2.x

Ответить

Автор темы
Vyacheslav
новенький
новенький
Сообщения: 1
Зарегистрирован: 21 сен 2019, 13:48
Имя: Вячеслав

Нахождение разности показаний температур датчика за час в Codesys 2.x

Сообщение Vyacheslav »

Необходимо реализовать задачу термометрирования и его завершения при выполнении условия: конечную температуру считают установившейся, когда скорость возрастания температуры не превышает 2 К/ч. Понимаю, что необходимо создавать массив температур и времени и вычислять разность температур за час, но как это реализовать на Codesys на языкеST в виде функционального блока?
Аватара пользователя

vodav
освоился
освоился
Сообщения: 275
Зарегистрирован: 28 авг 2014, 09:30
Имя: Воднев Александр Васильевич
Страна: РФ
город/регион: Томск
Благодарил (а): 16 раз
Поблагодарили: 26 раз

Нахождение разности показаний температур датчика за час в Codesys 2.x

Сообщение vodav »

А какое отношение этот вопрос имеет к контроллеру ОВЕН?

rwg
почётный участник форума
почётный участник форума
Сообщения: 1040
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 54 раза
Поблагодарили: 131 раз

Нахождение разности показаний температур датчика за час в Codesys 2.x

Сообщение rwg »

Vyacheslav писал(а): 21 сен 2019, 14:04 Необходимо реализовать задачу термометрирования и его завершения при выполнении условия: конечную температуру считают установившейся, когда скорость возрастания температуры не превышает 2 К/ч. Понимаю, что необходимо создавать массив температур и времени и вычислять разность температур за час, но как это реализовать на Codesys на языкеST в виде функционального блока?
Чтобы найти скорость роста температуры - её дифференцируют, чтобы найти среднее значение - фильтруют. Учебник по численным методам обработки достаточно толстый и каждой из этих операций посвящено немалое число страниц. Выбор и настройки метода зависят от требований к точности, скорости и наукообразности используемого метода.

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5620
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 544 раза
Поблагодарили: 706 раз

Нахождение разности показаний температур датчика за час в Codesys 2.x

Сообщение Ryzhij »

Vyacheslav писал(а): 21 сен 2019, 14:04 Понимаю, что необходимо создавать массив температур и времени и вычислять разность температур за час,
Вы удивитесь - есть рекурсивные формулы, которым массивы не нужны.
И Вам уже рекомендовали обратиться к учебникам и также намекнули, что ни тип PLC, ни тип IDE к заявленной задаче отношения не имеют. Это общий вопрос цифровой обработки сигнала (ЦОС). Буквари Вам в помощь.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Velt
освоился
освоился
Сообщения: 220
Зарегистрирован: 26 мар 2017, 13:05
Имя: Денис
Страна: Россия
город/регион: Самара
Благодарил (а): 11 раз
Поблагодарили: 35 раз

Нахождение разности показаний температур датчика за час в Codesys 2.x

Сообщение Velt »

Ryzhij писал(а): 23 сен 2019, 09:04 что ни тип PLC, ни тип IDE к заявленной задаче отношения не имеют
Позвольте позанудствовать, но синтаксис языка ST всё же неодинаков в разных IDE, поэтому уточнение ТС про версию Кодесис и ПЛК не лишне.
Скорее всего, автор не отказался бы от готового sample, чтобы не тратить время на изобретение велосипеда. Может быть, кто-то поделится готовым куском кода.

rwg
почётный участник форума
почётный участник форума
Сообщения: 1040
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 54 раза
Поблагодарили: 131 раз

Нахождение разности показаний температур датчика за час в Codesys 2.x

Сообщение rwg »

Velt писал(а): 23 сен 2019, 15:31 Может быть, кто-то поделится готовым куском кода.
Если сумеете правильно рассчитать коэффициенты, то может хватить 3 строчек: dT = k1*(Tizm - Talt); Talt = Tizm; dTfilt = k2*dT + (1-k2)*dTfilt; А может и не хватить. :)

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 6 раз
Поблагодарили: 113 раз

Нахождение разности показаний температур датчика за час в Codesys 2.x

Сообщение SMax »

При вызове блока раз в минуту:

Код: Выделить всё

FUNCTION_BLOCK RM
VAR_INPUT
	T_IN : REAL;		(*Входная температура*)
	RAMP : REAL := 2;	(*Скорость изменения температуры - 2К в час*)
	CYCLE : REAL := 60;	(*Цикл вызова блока (раз в мин. = 60 раз в час)*)
END_VAR
VAR_OUTPUT
	OUT : BOOL;		(*Выход*)
END_VAR
VAR
	T_PREV : REAL;		(*Предыдущая температура*)
END_VAR


IF (T_IN - T_PREV) > (RAMP / CYCLE) THEN
	OUT := FALSE;
ELSE
	OUT := TRUE;
END_IF;

T_PREV := T_IN;
Ответить

Вернуться в «ОВЕН»