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

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

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


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Средство для программирования контроллера: Си или МЭК 61131?
    Опубликовано: 02 Октябрь 2003 18:46
Перевод хороший. Значит проблемы с пониманием.
Переведите теперь определения ISA и сведите все вместе.

Удачи.

compile
1. A computer function that translates symbolic language into machine language. 2. To prepare a machine language program from a computer program written in
another programming language by making use of the overall logic, structure of the program, or generating more than one machine instruction for each symbolic
statement, or both, as well as performing the function of an assembler.

compiler
1. A program that translates a high level source language (such as FORTRAN IV or BASIC) into a machine language suitable for a particular machine. 2. A
computer program more powerful than an assembler. In addition to its translating function, which is generally the same process as that used in an assembler, it is able
to replace certain items of input with a series of instructions, usually called subroutines. Thus, an assembler translates item for item, and produces as output the same
number of instructions or constants which were put into it; a compiler will do more than this. The program which results from compiling is a translated and expanded
version of the original. Synonymous with "compiling routine" and related to "assembler."

interpreter
A system program which allows the execution of computer programs using a step by step translation of individual instructions instead of translating the complete
program before execution.

translate
To convert from one language to another language.

translator
1. A program whose input is a sequence of statements in some language and whose output is an equivalent sequence of statements in another language. 2. A
translating device.


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

<SPAN class=bold><FONT color=#008000 size=1>A program which executes other programs. This is in contrast to a <FONT color=#008000 size=1>compiler<FONT color=#008000 size=1> which does not execute its input program (the "<FONT color=#008000 size=1>source code<FONT color=#008000 size=1>") but translates it into executable "<FONT color=#008000 size=1>machine code<FONT color=#008000 size=1>" (also called "<FONT color=#008000 size=1>object code<FONT color=#008000 size=1>") which is output to a file for later execution</SPAN>


<SPAN class=bold>Владимир Е. Зюбин </SPAN>Ну и как, интересно, Вы это перевели?! 8-)
Интерпретатор - программа, которая производит исполнение других программ. В отличие от компилятора, который не исполняет свою исходную программу ("исходный текст"), а транслирует ее в исполняемый "машинный код" (еще называемый "объектным кодом"), который выводится в файл для последующего исполнения.

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


Но, по крайней мере это определение не выдвигает пресловутого глупого требования, чтобы интерпретатор сначала транслировал код, а уж потом его исполнял.

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


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


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

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


<SPAN class=bold>Владимир Е. Зюбин  [...] </SPAN>Увы, но Ваше предложение нереально


:-) В цитируемом Вами абзаце я, собственно, ничего не предлагал. Я просто проиллюстрировал, насколько высказываемые Вами мнения далеки от реальности.

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


Присоединился: 26 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - Дмитрий Теркель Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Октябрь 2003 20:02
А Joy действительно забавный маргинальный случай (собственно эту маргинальность отчасти признают и его создатели :). Признаюсь, я про него ничего не знал, так что спасибо за ссылку. Но вот читаем:

Joy is also reflective. As noted in passing earlier, expressions which denote compositions of stack functions which push a value already look like lists. Joy extends this to arbitrary expressions. These are now called quotations and can be manipulated by list operations. The effect of higher order functions is obtained by first order functions which take such quotations as parameters.

(http://www.latrobe.edu.au/philosophy/phimvt/joy/j00rat.html)

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


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

Но опять же повторюсь:

1. У оппонента неверное представаление о том, что такое
трансляция, интерпретация и компиляция...
(ссылки на ISO-определения приведены)

2. Фактография, которую использовал оппонент, несомненно
интересна, но не влияет ни на справедливость
утверждений, ни на выводы статьи.

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

4.Основной вывод статьи - невозможность достижения
переносимости на базе стандарта МЭК61131-3 и
принципиальной невозможности продвижения в этом
направлении в рамках PLCopen, почему-то критикуемый
оппонентом - это факт. Этот факт прекрасно
подтверждается сворачиванием PLCopen деятельности
в этом направлении (см. PLCopen.org): в PLCopen
прекратили даже разработку паллиативного решения -
проект FxF (проект по разработке File eXchange
Format, переносимость кода).

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

К слову, и ник-то, который выбрал оппонент,
свидетельствует о некоторых проблемах
психологического характера...
содержит заявку на некий авторитет (доктор),
и нежелание действовать открыто (Q),
желание сохраненить анонимность, со всеми
вытекающими.

Ув. "Доктор Q", подумайте, может имеет смысл
отказаться от Вашего ника и перезарегистрироваться
в системе?

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


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


Ну что ж, можно подвести итоги.


В своей статье автор продемонстрировал поверхностное понимание основ вычислительной техники (см. про препроцессор, интерпретацию и компиляцию). Анализ материала в статье проведен с пропусками и натяжками (см. "два оправдания использования IL"). В статье содержатся неточные формулировки и ряд фактических ошибок (про IL,  и др).  С историей развития PLC автор, судя по всему, совсем не знаком (см. про Siemens, и др). Некоторые высказывания автора являются абсурдными (см. о "необходимости" единого графического интерфейса). Список можно продолжить. 


Учитывая сказанное, совсем неудивительно, что за время, прошедшее с момента публикации, выводы и прогнозы, сделанные автором,  не оправдались.


На конструктивную критику автор, к сожалению, реагирует недостаточно адекватно. "Пойманный с поличным" на ошибках, он периодически пытается хамить. Однако в его оправдание можно привести тот довод, что многие, окажись на его месте, вели бы себя не лучше.

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


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Октябрь 2003 10:31
Добиваться межплатформенной переносимости
с помощью ассемблера - ИДИОТИЗМ вдвойне.
Т.к. 1. ассемблер по определению отражает
архитектурные особенности вычислительной
платформы (если разговор идет о "железе" и
переносимости с одной "железки" на другую).
2. этот способ не позволит модифицировать
исходные тексты на других языках (если разговор
идет о переносимости ПО разных брэндов).

По определению Си - более подходящий вариант
по сравнению с IL. По ВСЕМ параметрам...
стоимости, надежности, гибкости, удобства,
читабельности, модифицируемости... и т.д.
и т.п.

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

Первоначально опубликовано Владимир Е. Зюбин


Вот кратко тезис статьи, относительно IL:
Программировать логику работы ПЛК на ассемблеро-
подобном языке, не являющемся Ассемблером
целевой платформы - ИДИОТИЗМ.

Какие тут могут быть возражения?! :-)


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


Присоединился: 07 Август 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 108
Свойства публикации Свойства публикации   Ответить, цитируя автора - bessonov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Октябрь 2003 12:34
Первоначально опубликовано Владимир Е. Зюбин

Добиваться межплатформенной переносимости
с помощью ассемблера - ИДИОТИЗМ вдвойне.
Т.к. 1. ассемблер по определению отражает
архитектурные особенности вычислительной
платформы (если разговор идет о "железе" и
переносимости с одной "железки" на другую).
2. этот способ не позволит модифицировать
исходные тексты на других языках (если разговор
идет о переносимости ПО разных брэндов).

По определению Си - более подходящий вариант
по сравнению с IL. По ВСЕМ параметрам...
стоимости, надежности, гибкости, удобства,
читабельности, модифицируемости... и т.д.
и т.п.

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

Первоначально опубликовано Владимир Е. Зюбин


Вот кратко тезис статьи, относительно IL:
Программировать логику работы ПЛК на ассемблеро-
подобном языке, не являющемся Ассемблером
целевой платформы - ИДИОТИЗМ.

Какие тут могут быть возражения?! :-)


Почему ИДИОТИЗМ?
А как же межплатформенная переносимость?


Пожалуйста, скажите по поводу тезиса в статье, "об ассемблероподобном языке".
Ещё раз -- почему ИДИОТИЗМ?

Вы не ответили на этот вопрос,
но рассуждаете о непереносимости ассемблера.
С уважением,
Бессонов Ян.
Наверх
Доктор Q Смотреть выпадающим
Действительный член
Действительный член


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

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

Я готов согласиться. Однако признайтесь, что сам факт существования языка Joy заставляет подправить расхожие представления о том, что является, а что не является функциональным языком. Хотя бы потому что Joy не использует лямбда-калькулус.

Если Вы обратили внимание, несмотря на упомянутую Вами "маргинальность", Joy имеет весьма солидного "союзника" в лице Бэкуса с его FP-системами. 

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

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


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

Владимир Е. Зюбин Переведите теперь определения ISA и сведите все вместе

Уважаемый, я вынужден повторить свою просьбу давать проверяемую информацию. Указывайте хотя бы источник и, самое главное, год издания. Дело в том, что computer science прогрессирует настолько быстро, что некоторые вещи устаревают даже к моменту их публикации ;-)

Я мог бы, например, привести достаточно много ссылок на определения интерпретаторов, где фаза трансляции указана как, казалось бы, необходимый атрибут интерпретатора. Начиная с ув. Легалова, см. http://www.softcraft.ru/translat/lect/t01-02.shtml 

Интерпретатор - программа или устройство, осуществляющее пооператорную трансляцию и выполнение исходной программы

Однако, обратите внимание что он пишет в самом начале страницы:

Большинство рассматриваемых определений заимствовано из [АРНФТС].

Если Ва не поленитесь и откроете эту ссылку то, вероятно, будете неприятно разочарованы:

[АРНФТС] Шишмарев А.И., Заморин А.П. Англо-русско-немецко-французский толковый словарь по вычислительной технике. М.: Издательство "Русский язык", 1978.

Увы... Можно представить, как давно _создавались_ эти определения. Так ведь и до "лженауки кибернетики" можно докопаться ;-)

Основная проблема с приводимыми Вами определениями состоит в том, что они логически взаимно противоречивы. Если Вам это непонятно, я могу объяснить.

 

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

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Октябрь 2003 13:15
Первоначально опубликовано Дмитрий Теркель

Первоначально опубликовано Максим Ананских

И в результате мы получим нечто вроде "IEC-1131 для тех, кто пишет на C". А насколько это нужно?


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

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


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


...изобретение нового языка только ради минимизации возможностей программиста совершать НЕКОТОРЫЕ виды ошибок ... Но, впрочем я не против существования ST как такового, просто, он как бы не добавляет ВЫРАЗИТЕЛЬНОСТИ по сравнению с другими языками.

При создании ST были, как раз, учтены те самые абстракции, которыми Вы предлагаете наделить C. И, соответственно, убраны элементы языка, которые позволили бы программисту действовать вне рамок этих абстракций. Тем не менее, конкретная реализация языка может, наоборот, добавить ему функциональности, тем самым внося свой вклад в несовместимость с другими реализациями.


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

Первоначально опубликовано Максим Ананских


А какие преимущества для задач автоматизации даст ООП?

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

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

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

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

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


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

Если исходить из того, что графически выраженный "агрегат" представляет собой вектор X=(x1,x2,...xn), то для того, чтобы получить из него другой вектор Y, представляющий собой некоторую комбинацию элементов исходного вектора, то мы должны выполнить преобразование, например, y1=x2, y2 = x1 и т.п. Таким образом, чтобы получить из одного "агрегата" другой, мы должны создать некоторую подпрограмму (функцию или функциональный блок), реализующую это преобразование. Либо делать это преобразование в том блоке, которому этот "агрегат" предназначается. Разве есть другие возможности?

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


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

Если я правильно понял, это что-то наподобие механизма "дружественных классов" в C++. Да, такой механизм мог бы добавить описательности языку, но  способен также сильно запутать программу, приводя к трудноуловимым ошибкам. Представьте себе, если три функциональных блока связаны между собой такими двунаправленными связями, как будет определяться порядок вычислений?

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


Я все-таки не совсем согласен с тем, что если какая-то проблема плохо решается на каком-то языке, то она автоматически исключается из его "проблемной ориентации". МНе не очень понятно, чем проблема обработки десяти сэмплов с датчика противоречит ИДЕЕ графического представления этой обработки с помощью блоков и информационных связей. Просто на конкретном языке ФБД это выглядит не очень изящно.

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

Инженер-системотехник
+7 (916) 477 3925
Наверх
Доктор Q Смотреть выпадающим
Действительный член
Действительный член


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

Владимир Е. Зюбин compiler 1. A program that translates a high level source language (such as FORTRAN IV or BASIC) into a machine language suitable for a particular machine.

Вместо того чтобы переводить это определение, я приведу определение ув. Легалова из источника, на который давал ссылку в предыдущем постинге:

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

Удивительная схожесть, не правда ли? Зная, из какого источника брал свое определение Легалов (словарь 1978г),  я догадываюсь, из каких пыльных архивов добыто приводимое Вами ;-)

А теперь я приведу современное определение этого термина, взятое из наиболее авторитетного на сей день источника - "книги дракона" (А.Ахо, Р.Сети, Д.Ульман, "Компиляторы. Принципы, технологие, инструменты", Вильямс 2001, перевод издания 1985г) 

Компилятор - это программа, которая считывает текст программы, написанной на одном языке - исходном, и транслирует (переводит) его в эквивалентный текст на другом языке - целевом.

Во избежание всяческих ошибок и недоразумений, настоятельно рекомендую Вам использовать именно это определение ;-)

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

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

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