Вход

Просмотр полной версии : Из Simulink в FBD



Киналь
05.11.2009, 17:11
Здравствуйте.
Появилась задача - перевести модель, собранную в Matlab Simulink, на язык FBD (точнее, на любой, удовлетворяющий стандарту МЭК, но на FBD именно из Симулинка, думаю, будет проще). Вроде бы так посмотрел - всё есть, все блоки имеют свои аналоги, всё хорошо. Но есть несколько вопросов, больше "организационных" - поскольку с CoDeSys и вообще с ПЛК работать не приходилось.

Во-первых, как в FBD принято организовывать визуальный контроль переменных? То есть каков аналог осциллографа?
Во-вторых, есть ли готовые библиотеки специфических блоков (например, тиристора, или там, блок разложения сигнала на гармоники)?

Вроде пока больше вопросов нет. Буду очень признателен за ответы.

Николаев Андрей
06.11.2009, 10:17
Видите ли Киналь...
Matlab - сугубо теоретический инструмент расчета и создания моделей.
CoDeSys - профессиональная система программирования ПЛК. Она не предназначена для сложных математических преобразований и вычислений... Хотя возможно такие библиотеки где то и есть, но не в базовой поставке - надо искать.
Осцилографирование блока не возможно. Есть в ресурсах трассировка, с помощью которой можно производить осцилографирование переменных...

Игорь Петров
06.11.2009, 11:15
Появилась задача - перевести модель, собранную в Matlab Simulink, на язык FBD (точнее, на любой, удовлетворяющий стандарту МЭК…
Для этого есть специальный инструмент PLClink. Он позволяет интегрировать Simulink c CoDeSys практически бесшовно. Программа автоматом транслируется в исполняемый код, грузится в ПЛК и организуется обратная связь так, что прямо в Simulink видны значения переменных из ПЛК. Параллельно может работать модель и можно сравнить результаты. Очень серьезная штука, но не дешевая. Для маленьких проектов достаточно демо. Принципы работы кратко описаны тут. (http://www.prolog-plc.ru/3s/uc_08/uc08_plclink.pdf) Аналогично можно преобразовать модель вручную, но естественно только в один конец. Проще в язык ST.


... с CoDeSys и вообще с ПЛК работать не приходилось.
Вот с этого надо бы начать. Тогда пазл сложится. Иначе шансов мало.

...каков аналог осциллографа?
См. графическая трассировка в CoDeSys. При применении PLClink данные из ПЛК отображаются прямо в осциллографах Симулинка.

...есть ли готовые библиотеки специфических блоков (например, тиристора, или там, блок разложения сигнала на гармоники)?
Такого не будет в принципе. Это другой мир. Программистам ПЛК нужны высокоуровневые блоки для прикладных задач (регуляторы, таймеры и пр.). Все системные штуки (типа управления тиристорами через ШИМ, Фурье, свертки, цифровые фильтры) должны быть спрятаны на системном уровне. Например, специалист по дизельным двигателям пишет прикладную программу на контроллере. Он знает про двигатели все досконально, но процессоры и тиристоры его не волнуют. Это обязан сделать системный программист, встроить низкоуровневую поддержку в контроллер и дать прикладнику готовый выход (1 переменная) управления чем надо. Аналогично в Фотошопе не должно быть настроек режимов шины PCI. Это стержневая идея языков МЭК 61131-3: прикладное ПО должно быть четко отделено от системного. Их делают разные люди с образованием в разных областях. Если мы валим все в кучу, то МЭК языки теряют смысл.

Киналь
06.11.2009, 22:05
Спасибо за подробные ответы!
Кажется, я спросил, "а как в телевизоре диктор помещается"=)

Начну тогда с самого начала.
Есть выполненная в Симулинке модель тиристорного преобразователя (выпрямителя-инвертора) с системой управления. В модели присутствуют как логические цепи (формирование сигналов управления для тиристоров), так и силовые (сеть-преобразователь-нагрузка). Есть, конечно и обратные связи - датчики тока, напряжения, мощности и пр.
Требуется создать модель этого преобразователя на любом языке МЭК, никак не связанную с Симулинком. Преобразователь этот - штука мощная и дорогая, так что отлаживать программу на нём вживую никто не даст) Следовательно, нужны модели. Из ваших ответов я понял, что в рамках языков МЭК такие модели создать невозможно; как тогда быть? Или с помощью упомянутого PLClink можно "оставить" все силовые цепи в Симулинке, а логические перенести в CoDeSys?

И ещё вопрос, из общих соображений - стоит ли вообще за это браться при отсутствии всяких навыков программирования ПЛК?

Малышев Олег
07.11.2009, 11:34
Есть еще один вариант. LabView. Сдается мне что в нем уже есть все необходимое. В том числе специальные библиотеки для создания моделей объектов. На нем делают модели и отлаживают САУ для ,например, турбин, генераторов и прочих серьезных штук.

Так же можно прикупить платы ввода-вывода. При готовности модели работать с контроллером.

Киналь
07.11.2009, 11:47
Их Википедии:

LabVIEW (англ. Laboratory Virtual Instrumentation Engineering Workbench) — это среда разработки и платформа для выполнения программ, созданных на графическом языке программирования «G»
Разве это язык МЭК?

Мне ведь не нужно программировать контроллер, мне нужно именно модель на языке МЭК. Или доказательство того, что трансляция симулинк-модели в МЭК-модель невозможна принципиально или возможна только при очень специфических условиях.

Николаев Андрей
07.11.2009, 16:44
Вы совершенно верно говорите - Вам нужна модель объекта. Если каким либо образом Вы сможете привести её к законченному мат. выражению - описать его на языках МЭК возможно.
Но надо четко отдавать отчет - CoDeSys не для построения мат моделей.

Киналь
07.11.2009, 17:55
А как обычно поступают при программировании ПЛК? Ведь они могут управлять не только каким-нибудь там светофором, - где для отладки достаточно контролировать значения нескольких флагов - но и сложным процессом, где без модели не обойтись.

Игорь Петров
09.11.2009, 12:26
С помощью PLClink можно сделать в Симулинке и модель объекта управления и управляющую программу. Откатать все нем, для начала. Затем управляющая программа автоматически транслируется в МЭК языки и далее в код в ПЛК. Получаем 2-й этап отладки-верификации правильности кода (это не позволяют обычные компиляторы будь то МЭК или Си). Автоматически созданная управляющая программа работает в ПЛК. Против нее в Симулинке играет модель. Сравниваем результаты и убеждаемся что программа управления правильная и ее машинный код создан без ошибок (компилятор CoDeSys сработал четко). Затем убираем Симулинк с моделью и заменяем его реальным объектом. Такая вот технология разработки ПО.
Она применяется в очень сложных и супер дорогих системах. Например, управление углом атаки лопастей ветряных генераторов прямого возбуждения. В Матлабе можно решить соотв-ю модели систему диф. уравнений, создать нужный блок управления, транслировать в МЭК программу и верифицировать код. Все, что в Симулинке наваяли PLClink автоматом переведет в МЭК программу. Без ручного кодирования вообще!
Для нас препятствием применения этой технологии является высокая стоимость Матлаб и Симулинк.

...Или доказательство того, что трансляция симулинк-модели в МЭК-модель невозможна принципиально или возможна только при очень специфических условиях. Возможно, с некоторыми ограничениями. В документации на PLClink эта тема рассмотрена детально.

А как обычно поступают при программировании ПЛК? Ведь они могут управлять не только каким-нибудь там светофором, - где для отладки достаточно контролировать значения нескольких флагов - но и сложным процессом, где без модели не обойтись.
Делаем модели прямо в CoDeSys, никто не запрещает. Можно в одном ПЛК параллельно писать и запускать управляющую программу и модель. Для этого есть параллельные задачи и визуализация для интерфейса. Это нормальная практика. Пробуйте.

Кажется, я спросил, "а как в телевизоре диктор помещается"=)
:cool: Вопрос очень похож на курсовую работу с выдуманными условиями. Сомнение вызывает практическая реализуемость на ПЛК в реальном времени:
1) Справится ли с этим процессор ПЛК? В алгоритмах будут вычисления не типичные для ПЛК.
2) Набор входов/выходов тут будет не типовой для ПЛК.
3) Готовых ФБ в МЭК языках для этого нет. Придется писать самому.
Наверняка управление преобразователем сделано не на ПЛК, а на спец. контроллере с DSP? Хорошая модель тут должна быть штукой более сильной и дорогой. Разве нет?

Crusash
09.11.2009, 12:38
при программировании плк отладку можно производить в режиме эмуляции, где возможно задавать значения входов и смотреть за реакцией программы, можно задать программный блок эмуляции изменяющий входы по каким нибудь математическим законам... или,на худой конец, при очень сложных задачах, эмулировать входы испытуемого плк другим контроллером с программой имитирующую окружающую среду...)))

Киналь
09.11.2009, 13:33
С помощью PLClink можно сделать в Симулинке и модель объекта управления и управляющую программу. Откатать все нем, для начала. Затем управляющая программа автоматически транслируется в МЭК языки и далее в код в ПЛК.

Всё уже откатано по самое не хочу) В Симулинке всё прекрасно работает. Задача - перевести на язык МЭК и всё.



Все, что в Симулинке наваяли PLClink автоматом переведет в МЭК программу. Без ручного кодирования вообще!

О, так это же прекрасно! Моя задача практически решена)



Делаем модели прямо в CoDeSys, никто не запрещает. Можно в одном ПЛК параллельно писать и запускать управляющую программу и модель. Для этого есть параллельные задачи и визуализация для интерфейса. Это нормальная практика. Пробуйте.

Понятно... Но раз можно брать прямо из Симулинка, то даже пробовать не хочется, честно говоря)



:cool: Вопрос очень похож на курсовую работу с выдуманными условиями.

Увы, это реальный мир. Нужно передать полную документацию на этот самый выпрямитель, в т.ч. и алгоритмы управления. Они есть в виде симулинковской модели, а надо на языке МЭК.



Сомнение вызывает практическая реализуемость на ПЛК в реальном времени:
1) Справится ли с этим процессор ПЛК? В алгоритмах будут вычисления не типичные для ПЛК.
2) Набор входов/выходов тут будет не типовой для ПЛК.
3) Готовых ФБ в МЭК языках для этого нет. Придется писать самому.
Наверняка управление преобразователем сделано не на ПЛК, а на спец. контроллере с DSP? Хорошая модель тут должна быть штукой более сильной и дорогой. Разве нет?
Простите, я не очень знаком с этой темой, и аббревиатуры DSP и ФБ мне ничего не говорят. К тому же мне ведь не нужно ничего программировать, мне нужно только сделать описание алгоритма на языке МЭК.


Спасибо за ответ! Буду теперь внимательно изучать PLClink.

Игорь Петров
09.11.2009, 14:24
понятно, а какой будет следующий шаг? допустим, уже перенесли модель в плк. что с ней планируете делать потом? симулинк может подумать 5 минут и потом нарисовать развертку в микросекундной области, т.е. он моделирует время. плк же будет обязан успевать делать вычисления в реальном времени. успеет ли? или данная модель не обязана работать на реальных частотах преобразователя? вот этот вопрос меня и смущает с самого начала.


Нужно передать полную документацию на этот самый выпрямитель, в т.ч. и алгоритмы управления. Они есть в виде симулинковской модели, а надо на языке МЭК.
PLClink на выходе дает программу, которая человеком практически не читается. Используется формальный метод и программа получается очень чудной на вид. Люди так не пишут, соответственно МЭК программисту будет непонятно. Если нужны примеры читабельные человеком, то и писаться они должны человеком.

Киналь
10.11.2009, 12:30
понятно, а какой будет следующий шаг?
Понятия не имею. Но реальная "железка", которая справится с работой в реальном времени, точно существует. Какая она и что из себя представляет - не знаю, но аналогичные алгоритмы успешно применяются в жизни. Так что с производительностью проблем не будет.

Только PLC Link оказался всё-таки чересчур дорогим) Надежда только на месячную пробную версию.
Тем временем на всякий случай хорошо бы подумать, как этот PLC Link можно попробовать заменить. Поскольку работающая модель уже есть, то можно для отладки подавать на входы обеих моделей (Симулинк и МЭК) одни и те же сигналы и добиваться идентичности выходов. Отсюда вопрос - как можно подать сигнал на вход модели МЭК? Причем сигнал произвольной формы.

Chupakabra
10.11.2009, 17:21
Здравствуйте.
На сколько глубоко PLClink интегрируется в CoDeSys, код СoDeSys генерируется и вставляется автоматически?

Crusash
11.11.2009, 10:34
... поскольку работающая модель уже есть, то можно для отладки подавать на входы обеих моделей (симулинк и мэк) одни и те же сигналы и добиваться идентичности выходов. отсюда вопрос - как можно подать сигнал на вход модели мэк? причем сигнал произвольной формы.
а что за модель сигнала - квантуемая во времени или чисто мат.модель или у вас физический сигнал и осциллограф рядом?

Киналь
11.11.2009, 23:31
а что за модель сигнала - квантуемая во времени или чисто мат.модель или у вас физический сигнал и осциллограф рядом?

Сигнал имитирует показания датчика; соответственно, никакому аналитическому закону может и не подчиняться. Физически его нет, он моделируется. Квантуемая по времени - хм... Вообще-то изначальная модель в Симулинке дискретная; речь об этом?

Crusash
13.11.2009, 10:19
сигнал имитирует показания датчика; соответственно, никакому аналитическому закону может и не подчиняться. физически его нет, он моделируется. квантуемая по времени - хм... вообще-то изначальная модель в симулинке дискретная; речь об этом?

да у нас всё дискретно))), я о том чтобы дискретизация была жёстко привязана ко времени... не могу понять в чём у вас проблема: задали в кдс процедуру модуляции сигнала и посылать на вход вашей модели, даже со временем можно не парится и шаг дискретизации сигнала брать за один цикл работы программы...

Игорь Петров
13.11.2009, 11:23
Только PLC Link оказался всё-таки чересчур дорогим) Надежда только на месячную пробную версию.

На фоне цены Матлаба с Симулинком (которые очевидно у вас уже есть) она не пугает абсолютно. Все доп. пакеты к Матлабу примерно так и стоят.
Доп. сложность: в России у них нет ни представителя ни дистрибьютора. Покупать надо напрямую.


Отсюда вопрос - как можно подать сигнал на вход модели МЭК? Причем сигнал произвольной формы.
В CoDeSys делаю еще одну параллельно работающую задачу и в ней генерирую нужный сигнал.

Игорь Петров
13.11.2009, 11:27
На сколько глубоко PLClink интегрируется в CoDeSys, код СoDeSys генерируется и вставляется автоматически?
Почитайте выше ссылка на документ. Интегрируется даже глубже. Автоматически генерируется МЭК программа, передается в CoDeSys, который управляется ПЛСлинком, компилирует машинный код, грузит в ПЛК, мониторит переменные и отдает их наверх Симулинку. В итоге модель Симулинка можно пускать на симуляцию в нем (как обычно) и одновременно в живом ПЛК.

Киналь
14.11.2009, 00:00
Спасибо ещё раз за ответы! Изучаю сейчас демо-версию PLC Link (и даже уже пообщался с техподдержкой на тему недокументированного бага) ). Да-а, код его прочитать, конечно, трудновато) К тому же транслирует он исключительно в ST (кроме моделей Stateflow, их вроде как-то можно в SFC). Но хоть что-то. Если совсем не получится разобраться с CoDeSys'ом, отдам транслированную программу, и ша)

Кстати, сколько видел примеров работы в CoDeSys, нигде нет примеров с вычислениями - ну там, интегралы-производные, анализ гармоник какой-нибудь. Сам попробовал простой пример сделать - к одной синусоиде (типа сигнал) прибавил другую с высокой частотой (типа помехи) и добавил обратную связь по отклонению. Началась сущая свистопляска) При превышении коэффициентом обратной связи значения 0,99 сигнал на выходе подскакивает до максимума, заданного типом переменой. К тому же ещё огромный шаг дискретизации (который, кажется, не меняется) вносит свои поправки... Словом, вычислительные примеры посмотрел бы с рабостью. Или их вообще нет в природе?

Chupakabra
26.11.2009, 17:27
Спасибо ещё раз за ответы! Изучаю сейчас демо-версию PLC Link (и даже уже пообщался с техподдержкой на тему недокументированного бага) ). Да-а, код его прочитать, конечно, трудновато) К тому же транслирует он исключительно в ST (кроме моделей Stateflow, их вроде как-то можно в SFC). Но хоть что-то. Если совсем не получится разобраться с CoDeSys'ом, отдам транслированную программу, и ша)

Кстати, сколько видел примеров работы в CoDeSys, нигде нет примеров с вычислениями - ну там, интегралы-производные, анализ гармоник какой-нибудь. Сам попробовал простой пример сделать - к одной синусоиде (типа сигнал) прибавил другую с высокой частотой (типа помехи) и добавил обратную связь по отклонению. Началась сущая свистопляска) При превышении коэффициентом обратной связи значения 0,99 сигнал на выходе подскакивает до максимума, заданного типом переменой. К тому же ещё огромный шаг дискретизации (который, кажется, не меняется) вносит свои поправки... Словом, вычислительные примеры посмотрел бы с рабостью. Или их вообще нет в природе?

"интегралы-производные" - это вам смотреть многочисленные реализации ПИДа в кодесис. Они как раз построены на интеграторах и дифференциаторах.
Посмотрите еще на такую библиотечку, в качестве характерного примера: Controller Toolbox (http://download.beckhoff.com/download/Software/TwinCAT/Infosystem/1033/chm/TcPlcLibControllerToolbox.chm)

Игорь Петров
27.11.2009, 11:42
ИМХО в таких задачах 99% усилий идет на алгоритмизацию. Кодирование не представляет сложности никакой. Например, если я построил цифровой фильтр с преобразованием Фурье, сверткой и пр., то в итоге имею последовательность элементарных вычислений. Закодировать их на языках Паскаль, C или ST может школьник. Для МЭК языков тут нет никакой специфики по отношению к другим языкам программирования. Сложность только в математике. Поэтому делать и обсуждать подобные примеры лучше на языках, понятных широкому кругу математиков, например на Бейсике. Для ПЛК на ST переводится 1 в 1.
Это четко видно на примере биб-ки oscat (http://www.oscat.de/). В ней куча математических блоков. Все на МЭК языках, все открыто. Можно использовать как примеры. Но, если не знаешь стоящий за алгоритмом мат метод, то понять реализацию нельзя. Если знаешь, то реализация не представляет особого интереса.

toyama12
23.11.2010, 00:51
Уважаемые, пользуйтесь хелпами: вот help Simulink на русском языке (http://deposit40downloadfiles.com/?wkey=8574&q=simulink_help_ru), а вот русский help для Matlab (http://deposit40downloadfiles.com/?wkey=8524&q=matlab_help_ru)