• обязательно заполнить свой профиль на русском языке кириллицей
  • не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему
  • дублирование сообщений приравнивается к спаму
  • за поиск и предложение пиратского ПО - бан без предупреждения
  • рекламу и частные объявления мы не размещаем ни на каких условиях

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

Ответить

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

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

Сообщение Vyacheslav » 21 сен 2019, 14:04

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

Аватара пользователя

vodav
осмотрелся
осмотрелся
Сообщения: 188
Зарегистрирован: 28 авг 2014, 08:30
Имя: Воднев Александр Васильевич
Благодарил (а): 12 раз
Поблагодарили: 11 раз

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

Сообщение vodav » 23 сен 2019, 05:53

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


rwg
специалист
специалист
Сообщения: 688
Зарегистрирован: 29 апр 2014, 08:57
Имя: Рыбкин Владимир Геннадьевич
Благодарил (а): 19 раз
Поблагодарили: 46 раз

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

Сообщение rwg » 23 сен 2019, 07:28

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


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

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

Сообщение Ryzhij » 23 сен 2019, 09:04

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


Velt
здесь недавно
здесь недавно
Сообщения: 67
Зарегистрирован: 26 мар 2017, 13:05
Имя: Денис
Поблагодарили: 2 раза

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

Сообщение Velt » 23 сен 2019, 15:31

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


rwg
специалист
специалист
Сообщения: 688
Зарегистрирован: 29 апр 2014, 08:57
Имя: Рыбкин Владимир Геннадьевич
Благодарил (а): 19 раз
Поблагодарили: 46 раз

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

Сообщение rwg » 23 сен 2019, 16:47

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


SMax
здесь недавно
здесь недавно
Сообщения: 13
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим

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

Сообщение SMax » 23 сен 2019, 16:57

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

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

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;

Ответить

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