PDA

Просмотр полной версии : Derivative помогите!



Андрей Макаров
29.03.2009, 16:29
Пож-та помогите с функциональным блоком DERIVATIVE разобраться или подскажите чем и как его заменить.
Проблема в следующем: в аналоговый вход ПЛК 150 вставляю термопару, она работает отлично, температуру кажет. Но моя задача состоит в вычислении скорости изменения температуры и тут казалось бы поможет этот функциональный блок..., но нет. НЕ ПОМОГАЕТ. Делаю все как в написано, но на выходе OUT выдат 0 . Что может быть не так? Или как можно еще подсчитать производную с аналогового сигнала???:confused:

Kirill
30.03.2009, 11:37
Пож-та помогите с функциональным блоком DERIVATIVE разобраться или подскажите чем и как его заменить.
Проблема в следующем: в аналоговый вход ПЛК 150 вставляю термопару, она работает отлично, температуру кажет. Но моя задача состоит в вычислении скорости изменения температуры и тут казалось бы поможет этот функциональный блок..., но нет. НЕ ПОМОГАЕТ. Делаю все как в написано, но на выходе OUT выдат 0 . Что может быть не так? Или как можно еще подсчитать производную с аналогового сигнала???:confused:

на входе ПЛК есть 2 значения, измерение и циклическое время (в десятках милисекунд).
В программе отслеживаете, когда произойдет изменение значения, вычисляете разность между старым и новым значением температуры, делите это на аналогичную разность времени (не забывая, что она в десятках милисекунд), получаете подобие производной.

Андрей Макаров
30.03.2009, 12:38
А как запомнить эти значения в программе? Может быть есть какой-нить примерчик подобный! Я что-то ужо вообще ничего не понимаю...

Назаров Александр
30.03.2009, 20:51
Пробовал таким образом находить скорость изменения температуры. Тренд очень не стабильный. При постоянно растущей температуре скорость изменяется скочками, т.е. присутствуют выбросы и провалы. Фильтр особо не помогает. При увеличении постоянной интегрирования сильно возрастает запаздывание.

Филоненко Владислав
31.03.2009, 07:15
Естественно скачками. Время то квантовано, а Вы, вероятнее всего внутри программы используете квант времени меньше, чем квант времени АЦП. Вот и получается, то пусто, то густо.
Выход: Или усреднять, или привести темп расчёта скорости к темпу изменения выходных значений.

Назаров Александр
31.03.2009, 08:11
Время квантования скорости, то же что и получаю с температурой.

Филоненко Владислав
31.03.2009, 10:00
Скорость в каких единицах?
И Вы учитываете шум. По графику Т - шум в пределах доли градуса.

Андрей Макаров
31.03.2009, 10:26
Спасибо за диалог! Я со временем что только не делал и больше, и меньше! Все одно!

Андрей Макаров
31.03.2009, 10:29
Сейчас шум меня мало волнует! Я не могу понять почему производная не считается?

Андрей Макаров
31.03.2009, 10:32
Я уже готов бросить над этим блоком биться! Но как производную посчитать все равно не понимаю (слишком небольшой у меня опыт в программировании). Может быть поможете мне кто-нибудь с программкой! Буду очень признателен!:)

Филоненко Владислав
31.03.2009, 11:43
Ответьте, пожалуйста, на поставленные вопросы:
1. В каких единицах скорость на графике?
2. Как Вы считаете производную?
3. Используете ли Вы усреднение для расчёта производной?

Андрей Макаров
31.03.2009, 12:12
1.Мне нужно эту скорость определить (это у меня и не получается). Единицы грудусы в секунду естественно.
2. Производную я пытаюсь посчитать по ФБ DERIVATIVE, но на выходе всегда выдает ноль что бы я не делал.
3. Усреднение не использую. Скорость охлаждения на практике очень равномерная без особых скачков и неровностей.

Назаров Александр
31.03.2009, 16:44
В приложении ФБ на ST.

Андрей Макаров
31.03.2009, 22:01
Вот программка с Вашим ФБ. Все ли я правильно сделал? Если да, то почему скорость постоянная? Здесь хоть нулю не равна ...:confused:
Спасибо за понимание и помощь, Александр!:)

Назаров Александр
01.04.2009, 09:54
Какой у Вас контроллер? Не могу открыть конфигурацию.

Андрей Макаров
01.04.2009, 11:12
ПЛК-150 ИL.
Помоему у меня получилось, но в Вашей программе я изменил переменную START с FALSE на TRUE.
Это ошибка???

Назаров Александр
01.04.2009, 11:33
Входная переменная Start введена для того, чтобы Блок работал при Start := true; На вход Temp1 надо подать значение температуры (в вашем случае системная переменная Vx), а на вход tTemp1 - Circular time этой же переменной Vx. В Вашей программе он не поименована. Ее надо обозвать и подставить на вход ФБ.

Андрей Макаров
01.04.2009, 12:05
Уже сообразил! Теперь нужно вторую производную вычислить ...
Огромное СПАСИБО за помощь, Александр. Если смогу быть чем-то полезен, то ICQ 170417549 Андрей