Соцопрос: языки МЭК 61131-3. |
Ответить | Страница <1 23456 9> |
Автор | ||
Действительный член Присоединился: 08 Март 2006 Категория: Russian Federation Online Status: Offline Публикации: 440 |
Опубликовано: 28 Август 2007 16:56 |
|
Я полагаю, что расклад надо делать не в одной плоскости. Значение того или иного языка сильно зависит от области применения. В классической автоматике царствует LD. Это очень древний язык, существовал даже не до транзисторов и ламп, а в эпоху реле. Терминология дошла и до наших дней. ST появился вместе с нелинейным программированием, да и вообще когда надвигалась эпоха повсеместного процедурного программирования. На ряду с LD, ST является одним из базовых языков. CFC, FBD, SFC, PT и другие визуальные средства - это новое поколение технолгий автоматизации, и не только - они пришли из общей концепции UML. Примерно такой расклад, каждый на своем месте. С уважением, SAN |
||
Действительный член Присоединился: 27 Сентябрь 2006 Online Status: Offline Публикации: 125 |
||
Я часто применяю языки в зависимости от задания. 1). Если надо реализовать релейную логику - то LD и FBD 2). Если задана циклограмма - то граф. 3). Если задана блок-схема - то граф или ST. Мнемокод (ассемблер) стараюсь не использовать. |
||
Действительный член Присоединился: 14 Январь 2005 Категория: Russian Federation Online Status: Offline Публикации: 322 |
||
Авторегулирование - FBD Другими не пользуюсь |
||
Сергей
|
||
Действительный член Присоединился: 29 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 293 |
||
Кстати PLCopen второй год разрабатывается новый стандарт по тестам быстродействия ПЛК. Сейчас используют 1000 команд на IL или время выполнения 1 команды (в интерпретирующих системах). По этим параметрам вообще ничего практически полезного оценить нельзя. Новые тесты дают гораздо более внятные критерии. Один тонкий момент: реализуются эти тесты только на языках ST и SFC. Т.е. целевая группа экспертов сочла их обязательными для реализации.
|
||
Igor Petrov
|
||
Действительный член Присоединился: 24 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 135 |
||
М-да, хороши эксперты. Во многих системах программа написанная на LD или FB исполняется быстрее, чем написаная на ST. Так что внятность критериев оценки опять под вопросом.
|
||
Действительный член Присоединился: 29 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 293 |
||
Хороши системы! В нормальных системах никакой разницы нет, код после компилятора совпадает до бита |
||
Igor Petrov
|
||
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
||
Действительно так? По-моему, например, для FBD, где на все входы должно быть что-то подано обязательно, код из-за этого будет побольше, чем например ST. Нет? Впрочем, все зависит от программиста. Ну и от оптимизатора/компилятора. Теоретически, да, так оно и должно бы быть в идеале - совпадать до бита. А проверялось? |
||
Действительный член Присоединился: 18 Декабрь 2006 Категория: Russian Federation Online Status: Offline Публикации: 275 |
||
Не берусь выводить общее правило, но на тех контроллерах, которые я программировал, программа на LD исполняется стабильно медленнее ST, поскольку ST позволяет не обсчитывать заведомо "неработающие" на данном цикле Rung'и |
||
Действительный член Присоединился: 24 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 135 |
||
Смотря что понимать под нормальными системами: классические "закрытые" ПЛК или софт ПЛК. Я говорю про классические. Разница в большенстве случаев не принципиальная, но...
|
||
Действительный член Присоединился: 29 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 293 |
||
Я много с этим экспериментировал. Проверял в CoDeSys V2 на классических ПЛК. Использовал встроенные в CoDeSys конверторы с одного языка на другой. При преобразовании в лоб 1 к 1 разницы нет. Ее и не должно быть исходя из внутреннего устройства генератора машинного кода для целевого микропроцессора. Но… Petrov правильно указал суть. (Хотя требования обязательно подавать нечто на входы экземпляров функциональных блоков нет. Вход вполне может болтаться свободным (просто удалите значки ???), если его значение задано ранее, например при инициализации.) Если программу ST преобразовать в лоб в FBD, то получается некрасивая программа с кучей цепей и переходов на метки. На FBD наши люди так не пишут. На ST вполне можно писать программы точно также как на FBD. Тогда код совпадает абсолютно. Этот язык легко перекрывает возможности IL, LD и FBD. В нем есть мощные команды организации циклов, ветвлений (IF-IFELSE, CASE), можно большие выражения записывать в одну строчку (например, вычисление полинома)… В итоге программа со сложными вычислениями и преобразованиями данных на ST будет компактнее, если она грамотно написана. Однако программы для классических применений (комбинационные и последовательностные алгоритмы) ПЛК на FBD выглядят явно проще и нагляднее. В итоге: разумно считать ST самым быстрым из МЭК языков. Достичь более компактного или быстрого кода путем прямого переписывания программы на другой язык МЭК нельзя. Выбор языка определяется программистом из его личных предпочтений и опыта. Ему должно быть удобно. Программа пишется человеком и человеком читается. Предпочтения у людей разные, поэтому нужно поддерживать все языки, дабы не терять заказчиков из-за такой ерунды. Контроллеру же до фонаря, на каком он языке запрограммирован. |
||
Ответить | Страница <1 23456 9> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |