Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > ПЛК и микроконтроллеры
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Соцопрос: языки МЭК 61131-3.

 Ответить Ответить Страница  <1 56789>
Автор
Сообщение
Nekit Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 04 Апрель 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 80
Свойства публикации Свойства публикации   Ответить, цитируя автора - Nekit Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Соцопрос: языки МЭК 61131-3.
    Опубликовано: 19 Сентябрь 2007 22:31

Гм, может я конечно не савем компетентен, но есть такой контроллер Think-I/O компании Kontron. У них в комплекте идет библиотечка позволяющая вызывать приложения из ОС (у меня например Линух), что полностью развязывает мне руки, ибо чего не хватает я пишуна С используя BSP и дальше аплеты вызываю из основной проги на Codesys. И никаких проблем. Хотя конечно удобнее вызывать С-шные функции прям из Кодесис.

Наверх
globus Смотреть выпадающим
Участник
Участник


Присоединился: 29 Июнь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 62
Свойства публикации Свойства публикации   Ответить, цитируя автора - globus Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Сентябрь 2007 08:16
Первоначально опубликовано _IP_

Первоначально опубликовано globus

Наделять надо не языки МЭК а среду разработки.

Как это? Можно по подробнее. Может быть не хорошо одну единственную среду наделять, надо неким образом вогнать это в стандарт, дабы была совместимость?
Дабы долезть до железа, писать драйверы и т.п. нужна возможность обращаться к произвольным областям памяти (указатели), динамически выделять память, вызывать функции API операционки и др. Это же дополнительные функции (команды) в языках. Разве нет?

Речь идет не о стандартизации среды, а о наделением ее, как правильно заметил San, служебными средствами учитывающих особенности конкретной аппаратной системы . Т.е. чем больше будет знать среда о специфичном железе тем меньше тебе понадобиться прибегать к Си.

С уважением!
Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Сентябрь 2007 11:40

Первоначально опубликовано globus

Речь идет не о стандартизации среды, а о наделением ее, как правильно заметил San, служебными средствами учитывающих особенности конкретной аппаратной системы . Т.е. чем больше будет знать среда о специфичном железе тем меньше тебе понадобиться прибегать к Си.

Вы не могли бы пример привести такого средства?
Что это? Некие конфигураторы, связанные с особенностями железа или специальные библиотеки?

Первоначально опубликовано Nekit

...Хотя конечно удобнее вызывать С-шные функции прям из Кодесис.

Зачем? Не удобнее ли вообще не использовать Си, а писать все на МЭК языках? Почему приходится использовать Си? Что в нем такого, чего нет, например в ST?

Я абсолютно не против интеграции МЭК систем с другими инструментами. Это понятно, когда речь идет о неких специализированных супер инструментах, чего в принципе нельзя или крайне сложно сделать на универсальных языках (ST, C++ и др.). Например, хочу использовать для ПЛК программы из MATLAB Simulink  (кстати, для CoDeSys это возможно, см. тут ). Но когда в каждую десятую обычную нормальную МЭК программу засовывают вызов функций Си – это не нормально. Это означает, что в ST не хватает 1-2 специальных инструкций. Если бы они были, то не пришлось бы возиться с Си. Вопрос, каких именно инструкций?
Почему в Си программы никто не засовывает фрагменты Бейсике? Потому что язык самодостаточный. Давайте сделаем аналогично в МЭК и упростим себе жизнь.

Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Сентябрь 2007 18:32

Скажите, каждый раз когда понадобится та или иная функция, обращаться на вашу фирму, чтоб её разработали ?  Или-же один раз и навсегда снабдить среду продуманным средством, чтобы я сам мог вызвать функцию из  WIN API !?  Как говориться - почуствуйте разницу !

Насчет частоты применения Си - Вы слишком утрировали, надобность в системных функциях гораздо реже, но очень необходима !

Ну и наконец, если бы все программное обеспечение было сделано по вашей модели, то компьютеров сейчас бы не было.  Представьте, что каждая программа была-бы вынуждена сама обращаться к каждому устройству, вместо того чтобы работать через драйвер этого устройства !(?).

МЭК-языки предназначены выполнять свою работу, и очень нехороший тон программирования - подмешивать чужеродные элементы в иную область.

С уважением, SAN

Наверх
Nekit Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 04 Апрель 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 80
Свойства публикации Свойства публикации   Ответить, цитируя автора - Nekit Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Сентябрь 2007 19:52

Я уже писал напишу еще раз. Нет возможности использовать WDT из под Codesys, есть только из под С. Тероризировать производителя мне в лом (они инертны, но железо уже куплено и надо чтото делать). Пишу на С-ях прогу вызываю ее из Codesys и у меня все ок. Изврат конечно, а что делать? А в остальном МЭК самодостаточен, вот бы ОЕМ производители научились угождать всем. Тогда ваще с не нужен бы был.

Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Сентябрь 2007 15:06

Первоначально опубликовано sanwork

Скажите, каждый раз когда понадобится та или иная функция, обращаться на вашу фирму, чтоб её разработали ?

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

Или-же один раз и навсегда снабдить среду продуманным средством, чтобы я сам мог вызвать функцию из  WIN API !?

Почему вдруг именно из Win а не из VxWorks или QNX? Очень многие ПЛК вообще не имеют внутри ОС. Каждый изготовитель контроллера волен использовать ту ОС, которую считает нужным. Он абсолютно элементарно может сам сделать для CoDeSys библиотеку для вызовов функций API ОС. Это вообще не проблема разработчика универсальной системы МЭК программирования.
Заметьте что в Си ситуация совершенно аналогичная. В самом языке и близко нет никаких команд ОС, это делается библиотеками.
Один большой вопрос в том, что данное средство вообще можно давать только очень продвинутым пользователям. Для его применения нужно иметь глубокие знания о внутреннем устройстве системы.  Иначе результаты могут быть не предсказуемы.
Первоначально опубликовано sanwork

Насчет частоты применения Си - Вы слишком утрировали, надобность в системных функциях гораздо реже, но очень необходима !

Абсолютно согласен, но больно уж часто стали спрашивать.  Отсюда и мой вывод об их частом применении. Оказывается, есть примитивные МЭК системы программирования, в которых вообще новые функциональные блоки можно писать только на Си. Когда их пользователи переходят в нормальную МЭК систему, они первым делом спрашивают: А как Си подключить? Потом постепенно понимают, что все гораздо проще.
Можете привести пример, когда Си системная функция действительно необходима?
Первоначально опубликовано sanwork

Ну и наконец, если бы все программное обеспечение было сделано по вашей модели, то компьютеров сейчас бы не было.  Представьте, что каждая программа была-бы вынуждена сама обращаться к каждому устройству, вместо того чтобы работать через драйвер этого устройства !(?).

Что за модель такая? Я такое предлагал? Где это было, что мы пили?
Доработать языки МЭК, так чтобы на них можно было писать драйверы – предлагал. Но это из другой оперы.

Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Сентябрь 2007 21:06
_IP_ :
Итого: добавить нужно библиотеку функций позволяющих вызывать API операционки.  И все?

Хорошо, так !  Эта библиотека покроет сразу две темы :  о доступе к WIN API, и насчет разных операционок, для каждой ОС своя библитека.  Вполне складно.

_IP_ :
... Где это было, что мы пили? ...

Ну .. по этому поводу можно и выпить

С уважением, SAN

Наверх
globus Смотреть выпадающим
Участник
Участник


Присоединился: 29 Июнь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 62
Свойства публикации Свойства публикации   Ответить, цитируя автора - globus Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 24 Сентябрь 2007 08:26
Первоначально опубликовано _IP_

Вы не могли бы пример привести такого средства?
Что это? Некие конфигураторы, связанные с особенностями железа или специальные библиотеки?

CoDeSys, Isagraf Enhanced, Labview embedded (последний не МЭК язык)…
Вы же не пьете Пенталгин когда выбираете ту платформу под которую будете реализовывать проект. За Вас большинство операций делает среда. Возможность среды инкапсулировать в свой проект «чужой» код расширяет ее функциональность (гибкость) и позволяет использовать ее для решения широкого спектра задач. Вы же прекрасно понимаете и знаете что все охватить невозможно и у каждой железки или ОС есть свои тонкости. И если среда не будет предоставлять возможности инкапсуляции в себя того же Си то и цена ей будет соответствующая.

Первоначально опубликовано _IP_


Почему в Си программы никто не засовывает фрагменты Бейсике? Потому что язык самодостаточный. Давайте сделаем аналогично в МЭК и упростим себе жизнь.

А как же ассемблерные вставки?

С уважением!
Наверх
s_smirnov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 322
Свойства публикации Свойства публикации   Ответить, цитируя автора - s_smirnov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 24 Сентябрь 2007 09:49
Первоначально опубликовано globus

А как же ассемблерные вставки?

Вот и договорились, самый самодостаточный язык это Ассемблер

Сергей
Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 24 Сентябрь 2007 12:20

Первоначально опубликовано s_smirnov

Вот и договорились, самый самодостаточный язык это Ассемблер

Супер!

Все совершенно верно и бесспорно. Я абсолютно не спорю против интеграции других средств в МЭК языки. Как одна из 1000 всяких других замечательных штук она необходима.

Однако, стратегически мы всячески стремимся к совместимости контроллеров. Одного из наших партнеров сейчас вынуждают платить огромные деньги за ремонтный модуль для ПЛК фирмы С., который снят с производства. Немудрящий контроллер, поменять бы его целиком. Сейчас полно контроллеров, которые не хуже и целиком в 8 раз (!!!) дешевле чем один этот чудо-модуль. Но! Это повлечет полную переделку всего прикладного ПО, что практически не реально (просто некому). Монополизм изготовителей ПЛК достал. Поэтому умные люди в новые работы закладывают контроллеры, которые программно совместимы с контроллерами других изготовителей. Таких примеров уже много. Есть системы (например автосборка),  в которых стоят контроллеры компаний ABB либо Beckhoff + SoftPLC на верхнем уровне +  панельные ПЛК Berghof (локальные пульты). Все соединено только стандартными сетями (Ethernet, CANopen). Все запрограммировано в CoDeSys. Все прикладное ПО переносимо. Никакой большой беды нет в том, если очередной заказчик попросит поставить контроллеры Wago. Стоит один раз попробовать насколько здорово иметь совместимые контроллеры, потом времена когда ставили все оборудование одной фирмы (с фирменным инструментальным ПО) вспоминается с ужасом. Совместимость ПЛК – это здорово.

Однако 1 ассемблерная или Си вставка убивает совместимость наповал. МЭК программы переносятся (с косметическими правками) даже на ПЛК с другим типом процессора. Поэтому есть цель сделать МЭК языки достаточно мощными, настолько чтобы все типовые задачи (кроме экзотических) решались без применения внешних средств.

Поэтому, повторяю вопрос: что есть в Си, чего недостает в МЭК? Дайте пример, типа алгоритм: if … else … for – в Си пишется легко, а МЭК ну никак. Нет рекурсии, нет динамического выделения памяти, указателей на функции. Все это можно обойти. Чего еще нет?

Один из пользователей CoDeSys (из США) предложил следующее: В МЭК есть функциональные блоки. Если нужно неким образом изменить поведение блока (например сбросить или задать параметры), то обязательно нужно приделывать дополнительные входы. Блок получается как ежик, что не красиво. Все входы надо постоянно анализировать, что не эффективно. В CoDeSys V2 есть действия в блоках (расширение стандарта МЭК) их очень здорово использовать для таких целей. Но хорошо бы добавить параметры в действия (как методы класса в ООП). Получится очень удобно. Отлично! Добавлено в V3. Очень многие //строковые комментарии просили – добавили.

Один умный человек (с ником SAN ) предложил одну полезную функцию в SoftMotion добавить – будет сделано.

Давайте креативно обсуждать недостатки МЭК языков. Сейчас удачный момент, вполне можем добавить то, чего в нем не достает. Есть идеи?

Наверх
 Ответить Ответить Страница  <1 56789>

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz