PDA

Просмотр полной версии : Производная



techniker357
18.10.2014, 23:12
Здравствуйте. У меня задача - управлять клапаном (аналоговый сигнал 4-20мА) в зависимости от производной расхода топлива. Расходомер с импульсным выходом - 200 имп/л. Расход порядка 35л/ч. Производную, как я понимаю, можно посчитать используя блок Derivative (в Codesys V2.3 так было). Есть ли такой блок в Codesys 3? На входе той функции перемнная, для которой считалась производная, была типа REAL. Отсюда второй вопрос - как можно эту частоту импульсов перевести в REAL? Или нужно искать расходомер с выходом аналоговым? Спасибо.

lara197a
18.10.2014, 23:27
переводи импульсы в частоту, а потом к примеру через LIN_TRAFO.
в реал, через обычную функцию преобразования типов.

techniker357
19.10.2014, 00:04
А не подскажите, где взять эту функцию - LIN_TRAFO? И что-то Derivative не нашел в Codesys 3. В стандартной и OSCAT нет. В OSCAT нашел AIN.

capzap
19.10.2014, 00:34
в оскат LIN_TRAFO -> SCALE_R, Derivative -> FT_DERIV

techniker357
19.10.2014, 10:54
Спасибо. А в технологическом плане - как вы считаете, расходомер с частотой 200 имп/л при макс. расходе 35л/ч (это где-то 2 имп/с) подойдет для задачи управления клапаном подачи кислорода в зависимости от этого расхода? Установка - Газотурбинный агрегат. При увеличении нарузки, увеличивается подача топлива и в зависимости от мгновенного расхода должен сильнее открываться или закрываться клапан подачи кислорода. Теперь у меня уже сомнения, подойдет ли данный расходомер с частотным выходом, или надо искать с аналоговым выходом.
P.S. Опять же если использовать расходомер с частотным выходом, это получается в ПЛК надо как-то интегрировать по времени эти импульсы, не будешь же счетчик импульсов использовать и сбрасывать его каждую секунду/минуту по таймеру...

ASo
19.10.2014, 10:58
А зачем вам тогда производная?

techniker357
19.10.2014, 11:08
Есть 2 алгоритма управления. В одном случае - аргументом для функции управления клапаном является изменение расхода, в другом случае - скорость его изменения, т.е. производная.

lara197a
19.10.2014, 11:12
есть преобразователи частоты в 4-20ма. "взлет", омега, феникс контакт...

techniker357
19.10.2014, 11:20
А програмно это как можно сделать? Нужна какая-то функция - интегатор по времени, но тут опять же проблема с расходомером - точность. 2 импульса в секунду. Как по такой дискретности управлять - вопрос.

IVM
19.10.2014, 11:24
Спасибо. А в технологическом плане - как вы считаете, расходомер с частотой 200 имп/л при макс. расходе 35л/ч (это где-то 2 имп/с) подойдет для задачи управления клапаном подачи кислорода в зависимости от этого расхода? Установка - Газотурбинный агрегат. При увеличении нарузки, увеличивается подача топлива и в зависимости от мгновенного расхода должен сильнее открываться или закрываться клапан подачи кислорода. Теперь у меня уже сомнения, подойдет ли данный расходомер с частотным выходом, или надо искать с аналоговым выходом.
P.S. Опять же если использовать расходомер с частотным выходом, это получается в ПЛК надо как-то интегрировать по времени эти импульсы, не будешь же счетчик импульсов использовать и сбрасывать его каждую секунду/минуту по таймеру...
Если ты знаешь, что такое производная функции по времени, то ее легко посчитать самому, у тебя для этого все есть. 2 имп/с, вероятно, маловато, т.к. период дискретизации будет большим и качество регулирования может получиться плохим. Лучше взять расходомер с аналоговым нормированным сигналом на выходе и подобрать надежный ПИД-регулятор или ПЛК (тоже надежный). Газотурбинный агрегат - это серьезная установка и шутки с ней плохи.

BETEP
19.10.2014, 11:29
Запустите прерывание по таймеру и в нём считайте количество циклов между фронтами импульсов расходомера.
Зная время таймера и кол-во циклов, сможете точно рассчитать время между импульсами и соответственно частоту.

techniker357
19.10.2014, 11:48
У нас контроллер - СПК110. А прерывания, по-моему, только в ПЛК 110, или я ошибаюсь?
По поводу надежного контроллера - заказчик хочет поддержки российского производителя и выбрал ОВЕН СПК. Видимо придется менять данный расходомер -> (http://technoton.spb.ru/catalog/rashodomery-topliva/datchiki-rashoda-topliva/9) на какой-то из линейки ЭМИС -> (http://emis-kip.ru/ru/#catalog). Там есть токовый выход и RS-485.

capzap
19.10.2014, 11:57
А как по Вашему на счетчике мименс, когда не хотят платить за хххбас получают и тотал и мгновенный расход, тоже используют только импульсы, всё можно вычислить программно, вспомгите из школы как узнать растояние если известна скорость и время и из той же школы, как произвести обратный пересчет и узнать скорость,тут ни интеграл ни диференциал ни производные не нужны

techniker357
19.10.2014, 12:02
Это ясно, но точность - 2 импульса в секунду при максимальном расходе (а он далеко не всегда максималный, турбинка маленькая - ГТА-18П, - 18кВт, Челябинск). С такой точчностью на газотурбинной установке можно такого нарегулировать..

IVM
19.10.2014, 12:02
У нас контроллер - СПК110. А прерывания, по-моему, только в ПЛК 110, или я ошибаюсь?
По поводу надежного контроллера - заказчик хочет поддержки российского производителя и выбрал ОВЕН СПК. Видимо придется менять данный расходомер -> (http://technoton.spb.ru/catalog/rashodomery-topliva/datchiki-rashoda-topliva/9) на какой-то из линейки ЭМИС -> (http://emis-kip.ru/ru/#catalog). Там есть токовый выход и RS-485.
СПК110 тут явно не подойдет, у него нет собственной периферии.

ASo
19.10.2014, 12:03
Я вообще не понимаю, зачем тут производная.
Вроде должно быть соотношение газ-воздух.

IVM
19.10.2014, 12:06
Я вообще не понимаю, зачем тут производная.
Вроде должно быть соотношение газ-воздух.
Газовая турбина это тебе не газовый котел.

Andrei Z
19.10.2014, 12:56
а мне нравится как в екселе по графику Формулу выдаёт - получившейся функции ))) тоесть ставишь зависимости в таблицу х и у, ексель рисует график и на нём указывает получившеюся формулу зависимости y от x

IVM
19.10.2014, 13:09
тут ни интеграл ни диференциал ни производные не нужны
Что-то подобное я где-то читал. А вот, у А.С.Грибоедова в «Горе от ума»: "Там будут лишь учить по-нашему: раз, два; А книги сохранят так: для больших оказий."

techniker357
19.10.2014, 16:22
К СПК мы купили модули ввода ОВЕН МК110.
По поводу соотношения газ-воздух. Здесь запуск турбины будет происходить на естественной газовой смеси - атмосферный воздух. Затем будет постепенно закрываться клапан притока воздуха из атмосферы и открываться клапан подачи воздушной смеси из ресивера, в котором в определенной концентрации будут находиться кислород и углекислота. Таким образом, на турбину воздушная смесь будет идти практически без содержания азота . А алгоритм этого клапана может быть либо по изменению расхода топлива, либо по скорости его изменения в зависимости от подаваемой воздушной смеси. Поэтому и пытаюсь найти производную.

techniker357
19.10.2014, 16:34
Что касается прерываний по таймеру для подсчета времени между фронтами импульсов со счетчика - поскольку аппартно СПК по-моему не умеет этого делать (прерывания), то остается вариант просто использовать таймер. Без привязки к времени цикла программы. Хотя конечно точность опять таки будет грубая. Я имею ввиду такой алгоритм - по переднему фронту импульса взвели таймер - по переднему фронту следующего импульса его остановили. Узнали время, прошедшее между фронтами импульсов, например, получилось 0,5 сек. - по спецификации расходомера определили, что цена одного импульса равна 0,0097 л. По формуле (3600(секунд в часе)*0,0097(литров между фронтами импульсов))/(0,5сек) получаем расход в л/ч. Эти данные подставляем в функцию определения производной и на выходе имеем скорость изменения расхода. Верны ли мои рассуждения? Осталось выяснить, с какой периодичностью мне перезапускать эти таймеры для определения времени между фронтами импульсов?

IVM
19.10.2014, 16:57
Осталось выяснить, с какой периодичностью мне перезапускать эти таймеры для определения времени между фронтами импульсов?
Почитай про теорему Котельникова.

ASo
19.10.2014, 17:00
Вам уже сказали - даже, если бы в СПК110 был бы таймер - это ничего не значит, ибо в нем нет DI на борту. И в модулях DI ОВЕНа нет временной метки. Поэтому величина будет плавающей из-за шины RS-485.
Если хочется аналоговый сигнал расхода в существующим расходомером и СПК - возьмите http://www.owen.ru/catalog/tahometr_oven_th01/opisanie

Дальше вопрос в динамике вашего процесса. Это что - испытательный стенд?

techniker357
19.10.2014, 17:42
Да, стенд испытательный. От клапана ждут очень большой точности в регулировании. В связи с эти и 2 алгоритма управления. Мне думается, что расходомер (вихревой, например) с выходом 4-20мА будет точнее, нежели расходомер с 200 имп/л, подключенный к тахометру ОВЕН, затем переданный в формате 4-20 мА на вход ОВЕН МК110. Или я не прав?
Теорема Котельникова - спасибо, не знал о такой. Получается, если при максимальном расходе импульс будет приходить каждые 500 мс, то частота дискретизации должна быть <250 мс. Только теперь не пойму, как это реализовать с таймерами, сбрасывть их каждые 250мс нельзя, иначе импульс не успеет прийти. Несколько таймеров заводить?

IVM
20.10.2014, 10:10
СПК110 + МК110 плохо для данной задачи. Лучше взять новый ПЛК110. Что касается вычисления производной, то тебе надо точно мерить период следования импульсов расходомера, а далее все просто. Только боюсь, что 500 мс многовато для такого шустрого объекта регулирования. Может возникнуть большое запаздывание в формировании управляющего воздействия со всеми вытекающими последствиями.

techniker357
21.10.2014, 03:24
Коллеги, а что если с помощью системной функции привязаться к времени контроллера. По переднему фронту импульса с расходомера записали в переменную значение системного времени. По каждому следующему переднему фронту импульса находим разницу, и переписываем эту переменную новым системным временем. Соответственно, мы знаем время между фронтами. Зная, что 1 импульс это 5 мл, методом пропорции находим мгновенный расход и пишем в массив. Возьмем к примеру, массив на 20 элементов. Так получаем систему FIFO - каждое новое значение расхода записывается в первый эл-т, удаляя последний эл-т массива. Находим среднее арифметическое массива. Находим производную. Вопрос только в том, надо ли искать среднее значение, или можно сразу мгновенный расход подставлять в ПИД регулятор, и коэффициентами играть?
P.S. Может не в тему, но никто не знает случаем нормальный и недорогой расходомер на дизтопливо Ду10 с аналоговым выходом или RS-485 Modbus? И, опять-таки, интересно, преобразователи ЦАП, которые на них стоят, не будет ли это то же самое (перевод простого импульсного выхода в токовый сигнал), что я пытаюсь сделать Codesys'ом?

IVM
21.10.2014, 10:18
Непонятно для чего формировать массив. Для вычисления производной надо иметь два значения времени: текущее и предыдущее. Для измерения временного интервала можно использовать таймер TON.

Вольд
07.11.2014, 16:53
Ну понаписал, а еще с бородой. Классное получится регулирование, если формировать управляющее воздействие 1 раз в 30 секунд. За 30 сек. газовая турбина в космос может улететь.

ASo
07.11.2014, 18:27
Вы прежде чем давать советы - читайте и думайте.
А то ваши советы вызывают по крайней мере смех. Особенно при ваших вопросах, показывающих ваши знания.

Вольд
07.11.2014, 19:08
Преждечем что-то писать, уважаемый, подумайте о физическом смысле полученных данных. Считывая дискретный сигнал каждый машинный цикл, Вы будете получать примерно следующее за несколько циклов (0,0,1,1,0,0,1,1,0,0,1,1 и т.д. при 2Гц и времени цикла 100 мс), что соответствует производной 0,0,10,10,0,0,10,10,0,0,10,10 и т.д. При замере за 3 секунды вы будете получать около 6 импульсов за 3 сек, что соответствует производной около 1.9...2.1, ну а если возьмете больший промежуток времени, то производную и ее изменение Вы определите более точно.
Задача автоматического управления сводится не к частому получению данных, а к получению реальных данных и адекватной реакции на них.
Успехов Вам в осмыслении полученной информации.
Извиняюсь, но это какой-то бред.

ASo
10.11.2014, 20:11
Вам неуд, профессор!
Про метку времени, синхронность и асинхронность, говорил открытым текстом. Не понимаете - еще раз поступите в ВУЗ и как следует его закончите!

AVF
11.11.2014, 08:57
Коллега не читатель ... просто :cool:

poduhakupob
02.04.2015, 11:18
добрый день! есть ли в codesys блок SCALING на LD? если есть,где его взять?

Валенок
02.04.2015, 20:45
А зачем - на LD ? Вам его юзать или внутрях копаться ?

lara197a
02.04.2015, 22:25
блок SCALING это в степ 7
в КДС есть функция LIN_TRAFO

poduhakupob
03.04.2015, 10:24
Спасибо,нашел.

Bellons
12.09.2017, 16:35
У нас контроллер - СПК110. А прерывания, по-моему, только в ПЛК 110, или я ошибаюсь?
По поводу надежного контроллера - заказчик хочет поддержки российского производителя и выбрал ОВЕН СПК. Видимо придется менять данный расходомер -> (http://technoton.spb.ru/catalog/rashodomery-topliva/datchiki-rashoda-topliva/9) на какой-то из линейки ротаметров ЭМИС -> (http://energoteplolider.ru/raskhodomery/raskhodomery-emis.html). Там есть токовый выход и RS-485.

мы юзали как-то СПК110 для этой конфигурации не лучший вариант