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

Перспективы развития средств разработки для управления тех. процессами

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

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Перспективы развития средств разработки для управления тех. процессами
    Опубликовано: 22 Октябрь 2003 21:11

Мне хотелось бы продолжить единственное конструктивное обсуждение, которое началось в соседней ветке.

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

 
Собственно, мое исходное предложение по поводу "агрегатных" или "множественных" связей и было таким предложением. Пользователь сам создает определенный ТИП СВЯЗИ, соединяющий определенные ТИПЫ БЛОКОВ. Затем он может протянуть одну единственную агрегатную связь (это как жгут проводов, если хотите), содержащую некоторое множество элементарных. Тогда агрегация самих данных в структуры или массивы ДЛЯ ЭТОЙ ЦЕЛИ будет не нужна.

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

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


Имелось ввиду ситуация, когда разработчику алгоритма по смыслу неважно, берется значение переменной с текущего шага или с прошлого, достаточно, чтобы это значение было достаточно "актуально", то есть относилось к моменту, не очень древнему. Собственно, очень многие управляющие алгоритмы на самом деле нечувствительны к замене некоторых прямых связей на "неважно какие". В принципе коммуникации между разными задачами и коммуникации между узлами сети в мэке предствляются именно такими связями Их только не изображают линиями на "единой диаграмме сетевой системы", но, наверное, изображали бы, если бы в мэке (61131, я не имею ввиду 499) такая диаграмма была возможна. Но это уже другая история - о представлении распределенного алгоритма имено как алгоритма, без обязательной привязки к узлам, ресурсам и т.п. ...

Представление алгоритма без привязки к ресурсам - это, конечно, хорошо, но работать такой алгоритм не будет. При создании МЭКовских языков принималась во внимание необходимость простой идентификации каждого из ресурсов, используемых в алгоритме. Формально, алгоритм без привязки к ресурсам с точки зрения IEC-61131 есть не что иное, как функциональный блок. Но мысль о сколько-нибудь сложном алгоритме с соответствующим количеством входов и выходов приводит в ужас... Определенные задатки для решения проблемы есть в виде пользовательских типов данных, но, как Вами было показано, это не всегда удобно. Более простым способом могли бы быть средства привязки и перепривязки, реализованные в некоторых системах, но они имеют свои ограничения.

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

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

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

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

Собственно, в управлении тех. процессом присутствуют два уровня.
1) Вычислительный процесс, непосредственно управляющий объектом (фильтры, регуляторы и т.п.)
2) Программы управления этим вычислительным процессом, определяющие, какие конкретно алгоритмы первого уровня должны выполняться в данном режиме работы управляемого объекта.

Что касается уровня 1, то мэк в лице ST обеспечивает удовлетворительный уровень структуризации (правда, тот же уровень можно обеспечить и любым другим современным процедурным языком :). Хотя для больших проектов отсутствие ООП может быть недостатком, но, в целом, дела не так уж плохи.

В качестве уровня 2) предлагается SFC. Вот здесь структурность действительно не на высоте. Сети Петри, может быть, хороши как модели поведения программы (они для этого и создавались), но совершенно непригодны для их НАПИСАНИЯ, поскольку охватить одним взглядом сеть и понять, что она корректно работает и делает то, что нужно, весьма проблематично. Я также не в восторге от идеи использования конечных автоматов, по той же самой причине. Конечный автомат - это программирование с goto. В "обычном" программировании от этого давно ушли (хотя программа, конечно, отображается на автомат, но не всякий автомат соответствует ХОРОШЕЙ СТРУКТУРНОЙ программе).

Я не совсем согласен с этим утверждением. В SFC каждый из шагов может быть представлен не только алгоритмами на языках более низкого уровня (FBD, LD, ST), но и на самом SFC. Таким образом, в этом представлении алогритма заложена возможность структуризации, точно так же, как она заложена и в языках общего назначения. Мне кажется, SFC может быть инструментом для создания "хорошей структурной программы", сохраняя притом легкость её отображения на языки более низкого уровня.

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

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

Поэтому на мой взгляд, естественнее было бы писАть управляющие выч. процессом алгоритмы .. на обычном языке, где структуризация сама по себе имеется. Единственно, эти алгоритмы должны выполняться совершенно в другом "реальном времени", чем алгоритмы 1-го уровня. Управляющая программа должна доходить до точки ветвления и приостанавливаться до тех пор, пока одно из условий ветвления не станет истинным. Входя в блок ({} в сишном смысле), она может активировать некоторое количество функциональных блоков 1-го уровня. Они будут работать в другом вемени - приодически, в другой нити (или нитях) ОС. Они будут автоматически деактивироваться при выходе управляющей программы из блока (то есть по "}" в сишном смысле), в котором они были активированы. Разумеется, перед выходом из блока управляющая программа также должна споткнуться на условии, и провисеть на нем некоторое время.
Честно говоря, я так и не понял преимуществ традиционных языков (C++?) перед SFC. Зато вижу один явный недостаток - меньшую наглядность, пусть и в пределах видимой области экрана.

Инженер-системотехник
+7 (916) 477 3925
Наверх
 Ответить Ответить

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

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