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

Средство для программирования контроллера: Си или МЭК 61131?

 Ответить Ответить Страница  <1 1516171819 53>
Автор
Сообщение
bessonov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 07 Август 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 108
Свойства публикации Свойства публикации   Ответить, цитируя автора - bessonov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Средство для программирования контроллера: Си или МЭК 61131?
    Опубликовано: 01 Октябрь 2003 16:59
Первоначально опубликовано Доктор Q

<SPAN class=bold>Владимир Е. Зюбин </SPAN><FONT color=#0000ff>http://www.iae.nsk.su/~zyubin/iec1131.htm</A>


Где гарантия, что новая выбранная Вами платформа имеет транслятор Си аналогичный предыдущему? Да, адаптацию ISaGRAF будет производить CJ International,[...]


Адаптацию ISaGRAF на новое железо (т.е. установку run-time) в большинстве случаев будет производить не CJ International (ныне ICS Triplex), а сам производитель железа, который купит ОЕМ лицензию у ICS Triplex. Возможно, ICS Triplex предоставляет и такой сервис как постановку  run-time на железо заказчика, но это за отдельные деньги.



Всё гораздо проще.

по портируемости ISaGRAF с одной платформу на другую:

1. перенос ISaGRAF с одной платформы на другую делают как минимум ФИОРД и Науцилус, не знаю точно, но возможно так же РТСофт и др.

по транслятору на С:
2. пока нет ни какого транслятора языка С в ISaGRAF...
если тело функции языка С компилируется и запускается на Вашей платформе, то её вполне можно объединить с ядром исполняемой системы ISaGRAF.

В проекте ISaGRAF обозначается шаблон функции на языке С.
Сделать это может любой пользователь ISaGRAF. Но для этого надо иметь Tool Kit, продаётся отдельно...
С уважением,
Бессонов Ян.
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 01 Октябрь 2003 17:18
=== Доктор Q на "необходимо отметить, что
интерпретационная модель имеет недостаток - она
всегда снижает показатели эффективности исполнения
программы.":
Это заблуждение. Извинительным обстоятельством
является его распространенность.


Увы. Судя по ссылке, что Вы привели, Вы не поняли,
о чем идет речь: а речь идет о сравнении компиляционной
и интерпретационной модели при всех прочих _равных_
условиях...

Кстати, Вы не могли бы более критически к
своим ссылкам относится?
а то из ссылки, которую Вы привели, выходит,
что SPF (как Вы утверждаете, интерпретатор)
дает лучшие результаты, чем ассемблер... :-)))
Сильно напоминает разобранный на этой ветке случай о
"сверхчудесных" свойствах FBD-UL по сравнению с Си...
:-))) когда при разборе заявленного пятикратного
превышения по быстродействию, FBD-UL оказался в 200
(двести) раз более медленным, чем Си (и это без учета
потери качества вычислений)... 8-)


=== Доктор Q на "На практике использование языка низкого
уровня может быть оправданным только в двух случаях...":
Перечислены не все случаи, когда использование
языка более низкого уровня оправданы. Помимо указанных,
можно назвать:
в) для обеспечения совместимости с ранее разработанными
и выпущенными продуктами
г) для того, чтобы не исключить из круга охваченных
стандартом продукты небольших фирм, которые могут для
своих изделий "осилить" язык IL (с силу простоты его
реализации), но не имеют возможности потратиться на
создание графических ST и/или FBD


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

Увы, есть такая проблема, - проблема "тяжелого
наследства" - она касается не только
сименовского ассемблера, но и всех других МЭК-языков.
Что касается IL. Можно, конечно, и программы машинном
коде PDP-11 пытаться переносить... но зачем,
спрашивается, это в стандарт тащить?! 8-) т.е.
предлагать на этом программировать встречному и
поперечному, как в ISaGRAF-е делается???

Понимаете, статья писалась в первую очередь для
свободных людей, - людей, не обремененных "тяжелым
наследством" использования МЭК... в статье
грустная ситуация с МЭК описывалась в мягких тонах, и
многие второстепенные аспекты просто не включались.
Например, Ваш пункт г) несомненно справедлив, хотя и не
имеет отношения к технической стороне дела... тут я с Вами
абсолютно согласен: включение IL в стандарт произошло,
по-видимому, с подачи Сименс, не по техническим, а по
политическим соображениям. Внутренний сименовский
ассемблер приобрел статус международного стандарта
при программировании ПЛК... Круто? Еще бы! Но в статью
обсуждение этой проблемы не вошло, и за меньшее
Сергей Сорокин меня в конспирологии обвинил...

А что, кстати?! Должен же быть в статье хоть один
недостаток!? :-)
                     
=== Доктор Q на "Но интерпретатор означает невозможность
создания ни быстродействующего, ни малого по объему
кода!":

Это ошибка.

Увы, с удовольствием бы согласился с Вами,
но не могу погрешить против Истины: это не ошибка...
:-( При всех прочих равных условиях
для любого языка Ти >= Тмк,
и Vи >= Vмк... где Ти, Тмк - время исполнения
программы под интерпретатором и в машинных кодах
соответственно, а Vи/мк - объем ОЗУ, необходимый для
исполнения программы под интерпретатором и в машинных
кодах... Доказательство, по-моему, банально. Ну, может,
есть малюсенькая сложность: в доказательстве Vи >= Vк не
забыть, что Vи - это сумма текста программы и кода
самого интерпретатора...

Не понимаю, почему Вы против очевидных вещей
возражаете... странно.
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 01 Октябрь 2003 17:32
Я не понял, чему Вы возражаете?
1. Я нигде не утверждал, что IL придумал Siemens.
2. Вы и сами подтверждаете, что IL - это ассемблер
одного из сименсовских контроллеров.
3. Вы о чем говорите, когда утверждаете, что
"Традиционно FBD и LD транслируются именно в IL, вернее,
в байт-код IL."? Кем транслируется? Где? В ISaGRAF?
В UltraLogik? Смысла в этом (кроме оговоренных
в статье случаев) - НУЛЬ. Поверьте человеку,
разбирающемуся в программировании.

Первоначально опубликовано Доктор Q

<SPAN class=bold>Владимир Е. Зюбин </SPAN><FONT color=#0000ff>http://www.iae.nsk.su/~zyubin/iec1131.htm</A>


По поводу IL, собрано из разных мест в статье:


его происхождением: для некоторых моделей ПЛК фирмы Siemens является языком Ассемблера


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


У языка IL нет видимых обоснований для существования? - Почему нет? Есть. IL - это традиционный язык программного средства STEP 5 (компания Siemens) и имеет определенную группу поклонников


Знакомы ли Вы или Ваши сотрудники с ассемблером для одного из ПЛК фирмы Siemens? Если не знакомы, то IEC 1131-3 продукты - это отличная возможность для удовлетворения Вашего любопытства.


Относительно IL. Да, это умирающий язык, ориентированный на бывших пользователей STEP5


Насколько мне известно, язык, соответствующий IL, появился еще в самых первых PLC, созданных в конце 60-х годов компаниями Gould Modicon и Allen Bradley. Язык STEP5 появился существенно позже, в конце 70-х или начале 80-х.


То, что некоторые старшие модели Simatic-S5 интерпретировали (текстовый вариант) STEP5 аппаратно, это правда. Утверждение, что в STEP5 этот вариант языка вошел потому, что он уже был реализован как система комад этих PLC - это ошибка, дело обстояло с точностью до наоборот. То есть, _сначала_ был разработан STEP5, а уж _потом_ Siemens в _некоторых_ моделях реализовал его на секционных процессорах Am2900. К сожалению, ссылок дать не могу, эту информацию, если память не изменяет, я почерпнул из разговоров с сотрудниками совместного предприятия Минприбор-Сименс.


IL является ассемблером некоего виртуального процессора, это верно. Однако архитектура (и даже мнемоники ассемблера) этого процессора более всего напоминает MC6800, только в 16-битном варианте, и с несколькими интересными нововведениями (типа скобочных операторов).


Еще одна причина, почему IL остался в стандарте, я забыл о ней упомянуть ранее. Причина прозаическая и чисто "технологическая". Традиционно FBD и LD транслируются именно в IL, вернее, в байт-код IL. То есть, многие (но не все) PLC интерпретируют именно IL. Поэтому выкидывать IL из стандарта не имело ровно никакого смысла, это нормальная "рабочая лошадка", зачастую необходимая при отладке.

Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
Доктор Q Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Сентябрь 2003
Категория: Isle Of Man
Online Status: Offline
Публикации: 119
Свойства публикации Свойства публикации   Ответить, цитируя автора - Доктор Q Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 01 Октябрь 2003 17:36

Владимир Е. Зюбин При всех прочих равных условиях
для любого языка Ти >= Тмк, и Vи >= Vмк... где Ти, Тмк - время исполнения программы под интерпретатором и в машинных кодах соответственно, а Vи/мк - объем ОЗУ, необходимый для исполнения программы под интерпретатором и в машинных кодах... Доказательство, по-моему, банально. Ну, может, есть малюсенькая сложность: в доказательстве Vи >= Vк не забыть, что Vи - это сумма текста программы и кода самого интерпретатора...

Граница между интерпретацией и исполнением нативного кода весьма зыбка и расплывчата, особенно если имеешь дело с Фортом. И уж, конечно, никакой трансляции "на лету"!

SPF, о котором идет речь, использует так называемый подпрограммный шитый код. Программа, интерпретируемая им, выглядит примерно так:
  call DUP
  call MUL
... и т.д.
Так что из "телодвижений интеpпpетатоpа" на каждое слово приходятся только call и ret. Кроме того, насколько мне известно, SPF при трансляции
инлайнит некоторую часть кода (по крайней мере, литералы и переходы). Если сравнивать это с результатом работы какого-нибудь С компилятора, то особо большой разницы не заметишь. Разве что больше call-ов, и нет манипуляций с фреймами, поскольку стековому процессору фреймы не нужны.

Для подпрограммного шитого кода "интерпретатор" - это сам процессор, с его call и ret, а вся Форт-система может быть представлена как определенным образом организованный набор подпрограмм. Тем не менее, Форт традиционно считается интерпретируемым языком.

Выигрыш в скорости по сравнению с ассемблерным кодом достигнута за счет оптимизации при трансляции. На ассемблере человеку так написать можно, но очень трудно, при сложном алгоритме на каком-то этапе он "сломается".

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


Присоединился: 29 Сентябрь 2003
Категория: Isle Of Man
Online Status: Offline
Публикации: 119
Свойства публикации Свойства публикации   Ответить, цитируя автора - Доктор Q Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 01 Октябрь 2003 17:51

1. Я нигде не утверждал, что IL придумал Siemens.

Разве? Не стоит отнекиваться. Как тогда изволите понимать следующее Ваше утверждение:

IL (Instruction List) - текстовый язык низкого уровня. Выглядит как типичный язык Ассемблера, что объясняется его происхождением: для некоторых моделей ПЛК фирмы Siemens является языком Ассемблера

2. Вы и сами подтверждаете, что IL - это ассемблер
одного из сименсовских контроллеров.

Даже не одного. Только не IL, а STEP5. Сименс - не более чем общеизвестный пример, однако можете быть уверены, что другие производители PLC тоже зашивали свои варианты IL в железо.

. Вы о чем говорите, когда утверждаете, что
"Традиционно FBD и LD транслируются именно в IL, вернее,
в байт-код IL."? Кем транслируется? Где? В ISaGRAF?

Например, в STEP5 и в STEP7 транслируется.

Форматом исполняемого кода ISaGRAF я пока не интересовался. Это более новая система, потому не удивлюсь, если они использовали FVM в качестве виртуального процессора.

В UltraLogik?

Ультралоджик транслирует в нативный код. Этим он отличается от большинства систем для PLC.

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


Присоединился: 29 Сентябрь 2003
Категория: Isle Of Man
Online Status: Offline
Публикации: 119
Свойства публикации Свойства публикации   Ответить, цитируя автора - Доктор Q Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 01 Октябрь 2003 18:02

Владимир Е. Зюбин Поверьте человеку, разбирающемуся в программировании

Не забывайте, это называется "растопыриванием пальцев". Замечу, что загибать именно растопыренные пальцы большим грехом не считаю :-)

Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Октябрь 2003 09:26
Первоначально опубликовано Доктор Q

<SPAN class=bold>Владимир Е. Зюбин </SPAN>Ну или сюда загляните:
<FONT color=#800080>http://www.InstantWeb.com/D/dictionary/foldoc.cgi?query=interpreter

Заглядываю, вижу:


A program which executes other programs. This is in contrast to a compiler which does not execute its input program (the "source code") but translates it into executable "machine code" (also called "object code") which is output to a file for later execution.


Вам перевести?


Дальнейшие объяснения цитировать нет смысла <...>



Ну и как, интересно, Вы это перевели?! 8-)

Сейчас мы тут еще и английским заниматься будем...
:-) не было печали...
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Октябрь 2003 11:26
На самом деле без разницы, кто будет переносить ISaGRAF
на новое железо... владельцы ли ISaGRAF, или, как говорит,
Бессонов, НАУЦИЛУС или еще какой-нибудь... Важно то, что это дело
рядовому конечному пользователю НЕ ПО СИЛАМ.

Опять же не забывайте, что ISaGRAF - это один из нескольких
десятков других продуктов на базе МЭК... продуктов совершенно
несовместимых... Ну, предположим, производитель железа
произведет адаптацию ISaGRAF, а остальные продукты он будет
адаптировать или нет? а сопровождать бесконечные обновления
в ISaGRAF и других продуктов? Драйверы к разным платам
УСО? Увы, но Ваше предложение нереально.

Первоначально опубликовано Доктор Q

Владимир Е. Зюбин http://www.iae.nsk.su/~zyubin/iec1131.htm
<...> Да, адаптацию ISaGRAF будет производить CJ International,[...]
Адаптацию ISaGRAF на новое железо (т.е. установку run-time) в большинстве случаев будет производить не CJ International (ныне ICS Triplex), а сам производитель железа, который купит ОЕМ лицензию у ICS Triplex. Возможно, ICS Triplex предоставляет и такой сервис как постановку  run-time на железо заказчика, но это за отдельные деньги.
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Октябрь 2003 11:48
В тексте констатируется простая вещь:
решить проблему переносимости ПО на базе МЭК
можно либо de jure, т.е., выпуском независимого
стандарта, после чего все производители корректируют
свое ПО, либо de facto, т.е. путем большой "драчки",
после которой выживет сильнейший, а все остальные
сойдут со сцены...

Остальной текст про Си и трансляторы я,
с Вашего позволения, проигнорирую. Думаю, когда мы
с Вами усвоим, что такое "транслятор", "интерпретатор"
и "компилятор", мы можем вернуться к вопросам
переносимости и трансляции т.н. "графических языков"...
вернее, Вы сможете просто перечитать статью, там все это
раскрыто в достаточной степени...

Первоначально опубликовано Доктор Q

Владимир Е. Зюбин http://www.iae.nsk.su/~zyubin/iec1131.htm</A>


Графические языки. Да, графические языки - это проблема несовместимости IEC 1131-3 продуктов. Однако, ее решение означает: а) войну между производителями за выбор "правильной" базы для внутреннего формата; б) признание неприемлемости стандарта IEC 1131-3 для целей PLCOpen


К сожалению, не улавливаю ровно никакого смысла в этом высказывании.


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


Эта проблема хорошо известна как Проблема Распознавания Образов, уходящая корнями в проблему Искусственного Интеллекта. Вы спросите, как же мы тогда работаем с графикой на компьютере? - Очень просто: в любой из систем, позволяющих манипулировать графическими объектами (CorelDraw, AutoCad, PCAD и т.д.), каждый графический элемент, отображаемый на экране компьютера, обязательно имеет некоторое внутреннее числовое представление - единственное представление "понятное" вычислительной машине. Что означает отсутствие единого соглашения о внутреннем представлении для простейшего случая, - случая текстовой информации - очень хорошо известно русскоязычным пользователям: КОИ-7, КОИ-8, "базовая" кодировка,


я вынужден заключить, что Ваши представления о том как устроены PLC, какова для них взаимосвязь между различными языками, трансляторами,  внутренними форматами, и пр, - не имеет отношения к действительности.


Даже призывы стандартизовать какой-то определенный шрифт для того, чтобы писать программы на С (скажем, "только Cоurier New 10pt"), буде такие раздались бы, имели бы больший смысл и основание.

Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Октябрь 2003 11:57
Извините, за резкость, но Вам нужно разобраться с
основами программирования... к сожалению, по этой части
у Вас наблюдается большой пробел, а заниматься с Вами
лик.безом у меня нет ни времени, ни особого желания...

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

Первоначально опубликовано Доктор Q

<SPAN class=bold>Владимир Е. Зюбин </SPAN>При всех прочих равных условиях
для любого языка Ти >= Тмк, и Vи >= Vмк... где Ти, Тмк - время исполнения программы под интерпретатором и в машинных кодах соответственно, а Vи/мк - объем ОЗУ, необходимый для исполнения программы под интерпретатором и в машинных кодах... Доказательство, по-моему, банально. Ну, может, есть малюсенькая сложность: в доказательстве Vи >= Vк не забыть, что Vи - это сумма текста программы и кода самого интерпретатора...

Граница между интерпретацией и исполнением нативного кода весьма зыбка и расплывчата, особенно если имеешь дело с Фортом. И уж, конечно, никакой трансляции "на лету"!


SPF, о котором идет речь, использует так называемый подпрограммный шитый код. Программа, интерпретируемая им, выглядит примерно так:  call DUP
  call MUL
... и т.д.
Так что из "телодвижений интеpпpетатоpа" на каждое слово приходятся только call и ret. Кроме того, насколько мне известно, SPF при трансляции
инлайнит некоторую часть кода (по крайней мере, литералы и переходы). Если сравнивать это с результатом работы какого-нибудь С компилятора, то особо большой разницы не заметишь. Разве что больше call-ов, и нет манипуляций с фреймами, поскольку стековому процессору фреймы не нужны.

Для подпрограммного шитого кода "интерпретатор" - это сам процессор, с его call и ret, а вся Форт-система может быть представлена как определенным образом организованный набор подпрограмм. Тем не менее, Форт традиционно считается интерпретируемым языком.


Выигрыш в скорости по сравнению с ассемблерным кодом достигнута за счет оптимизации при трансляции. На ассемблере человеку так написать можно, но очень трудно, при сложном алгоритме на каком-то этапе он "сломается".

Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
 Ответить Ответить Страница  <1 1516171819 53>

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

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