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

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

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


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

Владимир Е. Зюбин человек, написавший "Sructured Text (ST) - A high level textual language that encourages structured programming." , не понимает, что такое структурное программирование

Чья бы корова мычала...

www.wikipedia.org

... It is possible to do structured programming in almost any procedural programming language, but since about 1970 when structured programming began to gain popularity as a technique, most new procedural programming languages have included features to encourage structured programming, (and sometimes have left out features that would make unstructured programming easy). Some of the better known structured programming languages are

At the level of relatively small pieces of code, structured programming typically recommends simple, hierarchical program flow structures. These can be obtained in most modern languages by using only structured looping constructs, often named "while", "repeat", "for". Often it is recommended that each loop should only have one entry point and one exit point, and a few languages enforce this.

http://www.searcheng.co.uk/selection/control/Articles/IEC61131/main.htm

Structured Text (ST) - A high level textual language that encourages structured programming. It has a language structure (syntax) that strongly resembles PASCAL and supports a wide range of standard functions and operators.

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


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

Надо просто отдавать себе отчет, что язык типа ST, -
язык, где невозможно создать процедуру/функцию, -
вообще не может иметь никакого отношения к
структурному программированию.

Такие вот пироги.

Удачи.

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

<SPAN class=bold>Владимир Е. Зюбин </SPAN>человек, написавший "Sructured Text (ST) - A high level textual language that encourages structured programming." , не понимает, что такое структурное программирование

<FONT color=#0000ff>

Чья бы корова мычала...


www.wikipedia.org


... It is possible to do structured programming in almost any procedural <A class=internal href="http://en.wikipedia.org/wiki/Programming_language" title="Programming language">programming language</A>, but since about 1970 when structured programming began to gain popularity as a technique, most new procedural programming languages have included features to encourage structured programming, (and sometimes have left out features that would make unstructured programming easy). Some of the better known structured programming languages are



  • <A class=internal href="http://en.wikipedia.org/wiki/Pascal_programming_language" title="Pascal programming language">Pascal</A>
  • <A class=internal href="http://en.wikipedia.org/wiki/Ada_programming_language" title="Ada programming language">Ada</A>

At the level of relatively small pieces of code, structured programming typically recommends simple, hierarchical program flow structures. These can be obtained in most modern languages by using only structured looping constructs, often named "while", "repeat", "for". Often it is recommended that each loop should only have one entry point and one exit point, and a few languages enforce this.


<FONT color=#008000>http://www.searcheng.co.uk/selection/control/Articles/IEC61131/main.htm


<FONT color=#008000>Structured Text (ST) - A high level textual language that encourages structured programming. It has a language structure (syntax) that strongly resembles PASCAL and supports a wide range of standard functions and operators.

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


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

Владимир Е. Зюбин ...ST, - язык, где невозможно создать процедуру/функцию...

Выдержки их хелп-файла ISaGRAF:

ST (Structured text) - это структурный язык высокого уровня разработанный для процессов автоматизации. Этот язык, в основном, используется для создания сложных процедур, которые не могут быть легко выражены при помощи графических языков. По умолчанию ST является языком для описания действий внутри шагов и условий языка SFC.

Основные операторы языка ST:
- оператор присвоения (variable := expression)
- вызов подпрограммы или функции
...

Стандартные ST вызовы функций  могут быть использованы для каждого из следующих объектов:
- Подпрограммы
- Библиотечные функции и функциональные блоки, написанные на IEC языках
...

Имя: имя вызываемой подпрограммы или библиотечной функции написанной на IEC языке или C
Значение: вызывает ST, IL, LD, или FBD подпрограммы или функции или C функции и дает возвращаемое значение
Синтаксис: <variable> := <subprog> (<par1>,...<parN>);
Операнды: За типом возвращаемого значения и параметрами вызова должен следовать интерфейс определенный для подпрограммы
Возвращаемое значение: значение возвращаемое подпрограммой
Вызовы подпрограмм могут быть использованы в выражении. Они также могут быть использованы в переходах SFC.
...

Пример 2: Вызов функции
...
limited_value := min (16, max (0, input_value) );
rol_msg := right (message, mlen (message) - 1) + left (message, 1);

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


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

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

В Си, например, структурной единицей является функция.
Описывается функция в Си, например, так:


int MAX (int a, int b) {
if (a > b) return (a);
return (b);
}


в ортодоксально структурном виде будет что-то типа такого:

int MAX (int a, int b) {
if (a > b) b = a;
return (b);
}


Сюда опять же посмотрите:

structured language
<programming> A programming language where the
program may be broken down into blocks or procedures
which can be written without detailed knowledge of the
inner workings of other blocks, thus allowing a top-down
design approach.

http://www.InstantWeb.com/D/dictionary/foldoc.cgi?structured+language

top-down design
<programming> (Or "stepwise refinement"). The
software design technique which aims to describe
functionality at a very high level, then partition it
repeatedly into more detailed levels one level at a time
until the detail is sufficient to allow coding. This
approach to software design probably originated at IBM,
and grew out of structured programming practices.

http://www.InstantWeb.com/D/dictionary/foldoc.cgi?top-down+design

Ну и т.д.

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

<SPAN class=bold>Владимир Е. Зюбин </SPAN>...ST, - язык, где невозможно создать процедуру/функцию...


Выдержки их хелп-файла ISaGRAF:


ST (Structured text) - это структурный язык высокого уровня разработанный для процессов автоматизации. Этот язык, в основном, используется для создания сложных процедур, которые не могут быть легко выражены при помощи графических языков. По умолчанию ST является языком для описания действий внутри шагов и условий языка SFC.


Основные операторы языка ST:
- оператор присвоения (variable := expression)
- вызов подпрограммы или функции
...


Стандартные ST вызовы функций  могут быть использованы для каждого из следующих объектов:
- Подпрограммы
- Библиотечные функции и функциональные блоки, написанные на IEC языках
...


Имя: имя вызываемой подпрограммы или библиотечной функции написанной на IEC языке или C
Значение: вызывает ST, IL, LD, или FBD подпрограммы или функции или C функции и дает возвращаемое значение
Синтаксис: <variable> := <subprog> (<par1>,...<parN>);
Операнды: За типом возвращаемого значения и параметрами вызова должен следовать интерфейс определенный для подпрограммы
Возвращаемое значение: значение возвращаемое подпрограммой
Вызовы подпрограмм могут быть использованы в выражении. Они также могут быть использованы в переходах SFC.
...


Пример 2: Вызов функции
...
limited_value := min (16, max (0, input_value) );
rol_msg := right (message, mlen (message) - 1) + left (message, 1);

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


Присоединился: 08 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 178
Свойства публикации Свойства публикации   Ответить, цитируя автора - evgen Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Октябрь 2003 00:11
Первоначально опубликовано Доктор Q

<SPAN class=bold>evgen </span>Это ваши личные трудности. Берите словари и ищите там слово
Контроллер/controller



CONTROLLER: Part of a computer, typically a separate circuit board, which allows the computer to use certain kinds of
[....]

Вашим тапочкам не смешно?



Конечно смешно.
Слово "controller" в буржуйском языке имеет множество значений, часть из которых относится к computer science, и одно из которых вы привели.
В переводе на простой русский язык - контроллер - это фиговина, которая занимается управлением других фиговин и может иметь размер от мелкой микросхемы до неслабого шкафа.

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


Форум называется "Программно-аппаратные средства АСУ ТП". Тема называется "Средство для программирования контроллера". Понимать в данном контексте "контроллер" иначе чем PLC - не вижу оснований.



Вот у меня есть немалое количество separate circuit boards, для computer и ни для одной из них в документации почему-то ничего не говорится ни про PLC, ни про языки для PLC. Наверное, - неправильные какие-то платы. И их произодители - неправильные. И компьютер тоже неправильный
И "микро"контроллеры работающие на "микро"процессорах -тоже совершенно неправильные

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


Большая часть того, что я навскидку перечислил - относится к прикладному программированию


Не для АСУ ТП "вообще", и уж тем более не для ПЛК.


Ну кто вам доктор, если вы сужаете область АСУТП до уровня ПЛК, а потом кричите "не могу" ?

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


Покажите мне задачу в АСУ ТП, где прикладной задаче так необходим MP3

Человеко-машинный интерфейс: датчики, которые могут сказать, какая сейчас температура, подъемный кран, орущий: "Иванов! Не стой под стрелой, твою мать!" и т.п.
Всякая информация о начале/завершении процесса или аварийной ситуации.
Первоначально опубликовано Доктор Q


или прямой доступ к тспип.

Почитайте на досуге об ограничениях интернет адресов. И для чего ее расширяют - чтоб каждый прибор, каждый выключатель имел свой ip-адрес.
Первоначально опубликовано Доктор Q


Сам факт, что Вы ссылаетесь на "32-битный ДСП", говорит о том, что Вы, вероятно, работаете в другой области.



Я ссылаюсь на то, на что облизываюсь. Цены дешевых 32-битных DSP уже вполне приемлемые. А область, в которой я работаю действительно далека от "кирки и лопаты" - там все больше лазеры, микроны и микросекунды

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


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

Вы не кипятитесь, а еще раз внимательно почитайте то, что в той же Википедии написано...

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

В Си, например, структурной единицей является функция.
Описывается функция в Си, например, так:


int MAX (int a, int b) {
if (a > b) return (a);
return (b);
}


в ортодоксально структурном виде будет что-то типа такого:

int MAX (int a, int b) {
if (a > b) b = a;
return (b);
}



????


FUNCTION WEIGH : WORD (* BCD encoded *)
VAR_INPUT
weigh_command : BOOL;
gross_weight : WORD ; (* BCD encoded *)
tare_weight : INT ;
END_VAR
IF weigh_command THEN
WEIGH := INT_TO_BCD (BCD_TO_INT(gross_weight)
END_IF ;
END_FUNCTION


(этот пример прямо из IEC 61131-3, 2nd Ed. (Proposed Working draft 1998)), F.1.
так что функции есть. И функциональные блоки есть.
Чего действительно нет - это блоков внутри функций, где было бы можно завести локальные для блока переменные, то есть недостаточная возможность структурирования ВНУТРИ функции (нет { } или BEGIN END). Но, мне кажется, это недосточное основание отказать ST в структурности.
С уважением,
Дмитрий Теркель
Наверх
VSerg Смотреть выпадающим
Новичок
Новичок


Присоединился: 14 Октябрь 2003
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - VSerg Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Октябрь 2003 15:57
Язык ST позволяет создавать и вызывать функции написанные на ST. Все прибамбасы типа объявления функции и ее переменных скрыты либо объявляются отдельно.

С этим я надеюсь спорить никто не будет. Если кто то не создавал функции на ST и не вызывал их, то можно с уверенностью сказать, что он на ST просто не работал.

Функции можно вызывать из функций, что подразумевает большую вложенность и достаточную структурированность.

Чего ДЕЙСТВИТЕЛЬНО нельзя, так это вызывать функцию (рекурсивно) из самой себя . Что на мой взгляд правильно.

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

Жесткое условие каждой функции свой Unit(файл) более структурирует программу, чем все в одном. :)
Наверх
VSerg Смотреть выпадающим
Новичок
Новичок


Присоединился: 14 Октябрь 2003
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - VSerg Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Октябрь 2003 16:08
Владимир Е. Зюбин :

Скажите пожалуйста, как Вы себе представляете ВЫЗОВ функции без ЕЕ ОПИСАНИЯ? Извините, но так можно договориться до вызова функции без наличия в природе самой функции.

Если есть ВЫЗОВ и он работает, то значит есть ОПИСАНИЕ функции и ее (функции) ТЕЛО. Иначе получается фигня какая-то.

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


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Октябрь 2003 17:10
Спасибо за поправку.
Забираю свои слова обратно относительно ST.
Доктор Q, Вы правы, язык ST в изложении МЭК
действительно является языком структурного
программирования... как и Си, как и Фортран, как и
Паскаль.

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

Но в любом случае, ST в версии МЭК позволяет применять технику структурного программирования.

Пойду с Lewis-ом пообщаюсь, попрошу прощения...

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

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

Вы не кипятитесь, а еще раз внимательно почитайте то, что в той же Википедии написано...

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

В Си, например, структурной единицей является функция.
Описывается функция в Си, например, так:


int MAX (int a, int b) {
if (a > b) return (a);
return (b);
}


в ортодоксально структурном виде будет что-то типа такого:

int MAX (int a, int b) {
if (a > b) b = a;
return (b);
}



????


FUNCTION WEIGH : WORD (* BCD encoded *)
VAR_INPUT
weigh_command : BOOL;
gross_weight : WORD ; (* BCD encoded *)
tare_weight : INT ;
END_VAR
IF weigh_command THEN
WEIGH := INT_TO_BCD (BCD_TO_INT(gross_weight)
END_IF ;
END_FUNCTION


(этот пример прямо из IEC 61131-3, 2nd Ed. (Proposed Working draft 1998)), F.1.
так что функции есть. И функциональные блоки есть.
Чего действительно нет - это блоков внутри функций, где было бы можно завести локальные для блока переменные, то есть недостаточная возможность структурирования ВНУТРИ функции (нет { } или BEGIN END). Но, мне кажется, это недосточное основание отказать ST в структурности.
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
VSerg Смотреть выпадающим
Новичок
Новичок


Присоединился: 14 Октябрь 2003
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - VSerg Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Октябрь 2003 17:22
Первоначально опубликовано Владимир Е. Зюбин



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

Но в любом случае, ST в версии МЭК является структурным языком.



В настоящий момент последней сущуствующей версией продукта ISaGRAF является версия ISaGRAF PRO 4.20. :)
Наверх
 Ответить Ответить Страница  <1 2425262728 53>

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

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