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

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

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


Присоединился: 29 Сентябрь 2003
Категория: Isle Of Man
Online Status: Offline
Публикации: 119
Свойства публикации Свойства публикации   Ответить, цитируя автора - Доктор Q Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Средство для программирования контроллера: Си или МЭК 61131?
    Опубликовано: 03 Ноябрь 2003 15:49

Напоследок, пару слов по поводу текстовых и графических языков программирования. Меня лично очень удивляет тупость "ученых" вроде Грина, которые не видят (или сознательно игнорируют?) очевидную вещь: текстовые языки - "одномерные", тогда как графические могут быть "двумерными".

Текст сформирован как отражение человеческой речи. "Источник" и "приемник" информации в первом приближении представляют собой одномерные потоки данных. Во всяком случае, при "проектировании на бумагу" в виде текста они уж точно становятся одномерными.

Изображение/зрение изначально (как минимум) двумерны. Попробуйте изложить карту местности в виде текста, это маразм (хотя, вообще говоря, и это возможно).  

Довольно много алгоритмов/описаний вполне удовлетворительно излагаются и воспринимаются в "одномерной форме", в виде текста. Это относится прежде всего к простым алгоритмам, с малым количеством связей между различными участками.

Для более сложных алгоритмов/описаний линейная организация информации плохо годится. "Классический" подход к решению этой проблемы для текстовых языков (в сущности) сводится к разрушению "дальних связей" между частями текста (программы) и приданию (искусственной) иерархической организации тексту. В частности, "нежелательность goto" как раз и есть способ разрушения таких связей (это не единственная причина "нежелательности", но одна из весомых), а структурированность текста и ООП - способы иерархической организации.

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

Применительно к языкам программирования, достойный пример: http://www.softcraft.ru/auto/switch/onemin/onemin.shtml Апологетам текстовых языков советую ознакомиться, прежде чем "кидаться какашками" или изобретать велосипед в виде самопального "автоматно-ориентированнного диалекта С".

Потенциал LD и FBD, по моему мнению, до конца еще не раскрыт. ST и IL, будучи текстовыми языками, таким потенциалом не обладают.

Что же касается С/С++, то использовать этот допотопный отстой в АСУ ТП приходится только и исключительно для "затыкания дыр", пока нормальные МЭКовские языки еще не покрыли все применения. 

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


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

дается ссылка на соответствующую статью в журнале "Программирование"


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


[...]


Вообще-то журнал "Программирование" основан еще
академиком А.П. Ершовым и до сих пор является ведущим
российским журналом с мировым именем по
программированию... Согласитесь, то, что у Вас на
острове нет библиотек и МБА, это проблема Ваша, а не
научного сообщества...

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

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


Читайте что по этому поводу говорят лингвисты,


[...]
... коротко изложу основной смысл приводимых цитат в контексте обсуждения: любой язык программирования является метафорическим. Поэтому называть метафорическим какой-то один из них может только человек недалекий. 




Опять Вы не разобравшись в ситуации незнакомых людей
дураками называете... нехорошо. Бросать надо такие
привычки...

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


Кстати, по поводу английского:
Человек пришел в ПЛК-мир со строгим Си-бэкграундом... и охреневает от того, что видит... :-) 
Вы недопоняли, нет там никакого "охреневания". Есть удивление новичка, что все костыли и примочки, жизненно необходимые для написания программ на С/С++, не используются "в мире ПЛК".



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

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


Со временем к нему придет понимание, что не используются они по причине своей ненужности: МЭК языки позволяют быстро разрабатывать надежные приложения без всей этой сишной псевдокультуры. Которая сама по себе в значительной степени является следствием фундаментальных изъянов С/C++.




Мантры читаете, дорогой... :-)

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


В "опровержении" конструируется некий конструируется некий специальный вымышленный язык,


Грин изначально использовал "специальный вымышленный" текстовый язык Nest-INE для сравнения с реальным (и не лучшим) графическим языком. В этом (и не только в этом) проявилась его научная недобросовестность. 




Совершенно с Вами согласен, Грину было б лучше выбрать
Си...

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


Потом г.Зюбин в своей статье приводит тот же кусок схемы LabView, и говорит, что плохая читаемость этого куска является основанием для критики LD, FBD и графических языков вообще.




Ну, опять Вы передергиваете...
Хотя лично я уверен, что для выявленного Грином случая
и LD и FBD будут проигрывать Си... FBD, может, чуть
меньше проиграет, чем ЛабВью, а LD, пожалуй, даже и
больше...

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


Теперь, в ответ на обоснованую критику методов Грина, г.Зюбин выдвигает нелепые претензии, что, мол, "ах, с вымышленным текстовым языком критики стили сравнивать - какой кошмар! - вымышленный же графический язык".  



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

Уверяю Вас, нигде в моей статье Вы не найдете
утверждения, что сделать это невозможно... Перечитайте
ее еще раз. :-)

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


Очевидно, здравым смыслом и научной порядочностью г.Зюбин не отягощен.




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

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


Я на этом заканчиваю. В мои задачи не входит лечить бред и паранойю, этим пусть займутся врачи.



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


Присоединился: 27 Март 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 240
Свойства публикации Свойства публикации   Ответить, цитируя автора - Sergey Sorokin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Ноябрь 2003 22:30

To: Доктор Q.

Уважаемый Доктор, аргументы приводимые в обидной для оппонента форме не воспринимаются конструктивно. Это достаточно известный психологический факт. Если Вы хотите обсуждения по существу, старайтесь быть более позитивными в своих высказываниях. Владимир Зюбин стал существенно более сдержанным. Пример достойный подражания.

 

Что касается терминологических споров, то даже члены одного коллектива разработчиков зачастую понимают один и тот же термин по разному. Что же тогда говорить о представителях разных коллективов («школ») работающих к тому же в разных предметных областях. Нужно так же учитывать, что иностранные термины на российской почве часто мутируют в своем смысловом значении.

 

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

 

Может ли все это (и С и МЭК, да и другие языки) работать над некой единой платформой а-ля JVM или .NET? Кто нибудь смотрел эти технологии с точки зрения их скорости и детерминированности?

 

Тот же OPC - это ведь некоторая АСУ ТПшная нашлепка на Микрософтовский DCOM. Может аналогичную нашлепку можно сделать на .NET?

 

С Уважением,

 

Сергей Сорокин

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


Присоединился: 29 Июль 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 140
Свойства публикации Свойства публикации   Ответить, цитируя автора - Mike_K Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 04 Ноябрь 2003 08:30

Доктор Q
Что же касается С/С++, то использовать этот допотопный отстой в АСУ ТП приходится только и исключительно для "затыкания дыр", пока нормальные МЭКовские языки еще не покрыли все применения. 

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

 

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


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

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


Такие библиотеки уже существуют...
и их, по-видимому, очень много.
Вот некоторые из известных мне:
- библиотеки FSM для С++ Concurrent Hierarchical State
Machine =   
http://homepage.mac.com/pauljlucas/software/chsm/
- в рамках т.н. SWITCH-технологии (подход А.А. Шалыто)
студенты постоянно пишут свои библиотеки
- в рамках т.н. КА-технологии (подход В.С. Любченко) -
dll-ка под Windows для Си++

Хотя мое личное мнение - требуется диалект Си, а не
библиотеки...

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


Может ли все это (и С и МЭК, да и другие языки) работать над некой единой платформой а-ля JVM или .NET? Кто нибудь смотрел эти технологии с точки зрения их скорости и детерминированности?

Тот же OPC - это ведь некоторая АСУ ТПшная нашлепка на Микрософтовский DCOM. Может аналогичную нашлепку можно сделать на .NET?


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


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

http://forum.cta.ru/forum_posts.asp?TID=109&PN=1&TPN=19

Дмитрий Теркель Так все-таки есть higher order functions, которые просто вводятся нетрадиционным образом. То есть одни функции манипулируют над другими, представленными в форме "quotations". Без этих особенностей не решились бы назвать язык "функциональным". То есть тот факт, что некоторый язык позволяет просто задавать функции с помощью комбинирования других функций в композиции, еще недостаточен для того, чтобы назвать язык "функциональным". Необходима по крайней мере возможность манипуляции одних функций над другими. Иначе пришлось бы зачислить в "функциональные" почти все языки

Интересный комментарий на эту тему есть в http://www.holobloc.com/stds/iec/sc65bwg7tf3/html/faq.htm

Can function block instances be passed as inputs to other blocks?
Yes if function block FB1 is passed as an input to a second function block FB2, it is possible to invoke the function block FB1 within the body of FB2. Any input parameters of FB1 not defined in the invocation call within FB2 will take values defined by earlier invocations of FB1 made outside of FB2. Function block instances should be passed as VAR_IN_OUT parameters otherwise the values produced within the internal invocation will not be preserved.

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


Присоединился: 26 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - Дмитрий Теркель Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Ноябрь 2003 14:47
Первоначально опубликовано Доктор Q

http://forum.cta.ru/forum_posts.asp?TID=109&PN=1&TPN=19


<SPAN class=bold>Дмитрий Теркель </span>Так все-таки есть higher order functions, которые просто вводятся нетрадиционным образом. То есть одни функции манипулируют над другими, представленными в форме "quotations". Без этих особенностей не решились бы назвать язык "функциональным". То есть тот факт, что некоторый язык позволяет просто задавать функции с помощью комбинирования других функций в композиции, еще недостаточен для того, чтобы назвать язык "функциональным". Необходима по крайней мере возможность манипуляции одних функций над другими. Иначе пришлось бы зачислить в "функциональные" почти все языки


Интересный комментарий на эту тему есть в http://www.holobloc.com/stds/iec/sc65bwg7tf3/html/faq.htm


Can function block instances be passed as inputs to other blocks?
Yes if function block FB1 is passed as an input to a second function block FB2, it is possible to invoke the function block FB1 within the body of FB2. Any input parameters of FB1 not defined in the invocation call within FB2 will take values defined by earlier invocations of FB1 made outside of FB2. Function block instances should be passed as VAR_IN_OUT parameters otherwise the values produced within the internal invocation will not be preserved.



Да, стандарт действительно разрешает передавать блоки как параметры, только здесь есть несколько "отягчающих обстоятельств". Я, правда, не совсем уверен, но, кажется, это обычно невозможно собственно в FBD (то есть можно только в ST), то есть я не плохо себе представляю, как это изображается графически. Во вторых, переменные типа inout вообще не очень хороши, поскольку имеют побочный эффект и, соответственно, результат вычисления диаграммы начинает зависеть от порядка вычислений (то есть теряется одна из самых приятных черт ФБД). Ну и , даже если все хорошо вызвалось, это не слишком отличается от передачи в Си функций по указателю...
А вот Ваша идея насчет ленивых вычислений (я, может быть, повторюсь) мне кажется довольно продуктивной. ТО есть так действительно можно было бы решить вопрос if - then -else
в ФБД естественным для него способом, то есть без всяких en-eno и тем более прыжков. Др. словами, вычисляться должен только тот фрагмент диаграммы, котрый нужен для вычисления выходов. Вычисление начинается с конца (то есть с блоков, непосредственно выдающих выходы). Когда программа, реализующая блок, доходит первый раз до чтения к-л входа, выполнение приостанавливается, и начинает выполняться блок, вычисляющий этот вход. Так "волна запросов" на вычисления пробегает "справа-налево", в результате требуемое значение получено, и исходный блок продолжает работу. Если переменная или блок уже вычислялись, повторного вычисления, конечно, не происходит - просто возвращается значение. Решение, в общем, в духе функциональных языков, фактически переменные ФБД, при традиционной трактовке пассивные, трактуются здесь как функции вычисления своих значений (они и передаются из блока в блок, а уж сам блок решает, вычислять ли свои входы или некоторые не вычислять).
Конуептуально в этом подходе (я не имею ввиду вычислительный overhead) мне пока не ясно, как по возможности выразительно продекларировать те входы, которые могут не быть задействованы (по усмотрению блока) и каковы допустимые варианты комбинации входов. Если такой декларации не предусмотреть, программа не будет структурной (при взгляде на диаграмму, не углубляясь в блоки, трудно будет понять, какие части диаграммы "опциональны" и в каких случаях). А в целом, мне кажется,
в этом случае - лень - двигатель прогресса :)
С уважением,
Дмитрий Теркель
Наверх
Доктор Q Смотреть выпадающим
Действительный член
Действительный член


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

http://wwwipd.ira.uka.de/~prechelt/Biblio/jccpprtTR.pdf 

An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl...

80 implementations of the same set of requirements, created by 74 different programmers in various languages, are compared for several properties, such as run time, memory consumption, source text length, comment density, program structure, reliability, and the amount of effort required for writing them. The results indicate that, for the given programming problem, "scripting languages” (Perl, Python, Rexx, Tcl) are more productive than conventional languages. In terms of run time and memory consumption, they often turn out better than Java and not much worse than C or C++.

In general, the differences between languages tend to be smaller than the typical differences due to different programmers within the same language.

We see that non-scripts are typically two to three times as long as scripts. Even the longest scripts are shorter than the average non-script.

------------------------
          LL   LOC/FP
------------------------
C        3.5     91
C++    6      53
Java    6       53
Perl     15     21
Rexx   7      46
Tcl      5       64

LL is the language level and LOC/FP is the number of lines of code required per function point.

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


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

http://www.flownet.com/gat/papers/lisp-java.pdf

Lisp as an Alternative to Java

Our results show that Lisp’s performance is comparable to or better than C++ in execution speed; it also has significantly lower variability, which translates into reduced project risk. Furthermore, development time is significantly lower and less variable than either C++ or Java.

Lisp provides nearly all of the advantages that make Java attractive, including automatic memory management, dynamic object-oriented programming,and portability. Our results suggest thatLisp is superior to Java and comparable to C++ in runtime, and it is superior to both in programming effort and variability of results. This last item is particularly significant because it translates directly into reduced risk for software development.

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


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

Интереснее другие вопросы... Где, например, в списке
Паскаль и языки МЭК 61131.3? ;-)
Хотя даже понятно где, их даже в голову никому не
приходит с Перл сравнивать... :-( ... :-)

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

http://wwwipd.ira.uka.de/~prechelt/Biblio/jccpprtTR.pdf <FONT face=Arial size=7>


An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl...<FONT face="Times New Roman"><FONT face="Times New Roman">


<FONT face="Times New Roman"><FONT face="Times New Roman"><FONT face="Arial, Helvetica, sans-serif" size=2>80 implementations of the same set of requirements, created by 74 different programmers in various languages, are compared for several properties, such as run time, memory consumption, source text length, comment density, program structure, reliability, and the amount of effort required for writing them. The results indicate that, for the given programming problem, "scripting languages” (Perl, Python, Rexx, Tcl) are more productive than conventional languages. In terms of run time and memory consumption, they often turn out better than Java and not much worse than C or C++.


<FONT face="Arial, Helvetica, sans-serif" size=2>In general, the differences between languages tend to be smaller than the typical differences due to different programmers within the same language.


We see that non-scripts are typically two to three times as long as scripts. Even the longest scripts are shorter than the average non-script.

<FONT face="Times New Roman" size=3>

------------------------
          LL   LOC/FP
------------------------
C        3.5     91
C++    6       53
Java    6       53
Perl     15     21
Rexx   7       46
Tcl      5       64

<FONT face=Arial size=2>

LL is the language level and LOC/FP is the number of lines of code required per function point.

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

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

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