УНИВЕРСИТЕТ ИТМО
Кафедра «Технологии программирования»



Главная

Новости
 Новости науки
 Важное
 Почетные доктора
 Инновации
 Культура
 Люди
 Разное
 Скартел-Yota
 Стрим
 Смольный
Учебный процесс
 Образование
 Дипломы
 Курсовые проекты
 Лабораторные работы
 Учебные курсы
 Визуализаторы
 Unimod-проекты
 Семинары
 Стипендии
Наука
 События и факты
 Госконтракты
 Статьи
 Диссертации
 Книги
 Презентации
 Свидетельства
 Сотрудничество
Исследования
 Автоматы
 Верификация
 Биоинформатика
 Искусственный интеллект
 Генетические алгоритмы
 Движение
 UniMod
 Роботы и агенты
 Нейронные сети
 ФЦП ИТМО-Аалто
 Разное

О нас
 Премии
 Сертификаты и дипломы
 Соревнования по программированию
 Прорыв
 Автографы
 Рецензии

Беллетристика
 Мотивация
 Мысли
Медиа
 Видео
 Фотографии
 Аудио
 Интервью

English
 Home

 Articles
 Posters
 Automata-Based Programming
 Initiatives
 Projects
 Presentations
 UniMod
 UniMod Projects
 Visualizers


Поиск по сайту

Яndex



   Главная / Статьи / Алгоритмизация и программирование для систем логического управления и «реактивных» систем (версия для печати)


Алгоритмизация и программирование для систем логического управления и «реактивных» систем



[ << | 1 | 2 | 3 | 4 | Литература | >> ]

6. Применение конечных автоматов при программировании схем программируемой логики

Подход, аналогичный с изложенным для программной реализации алгоритмов, широко используется в настоящее время для настройки схем программируемой логики [165], также называемой программированием [166]. При этом разработаны языки описания аппаратуры (Hardware Description Language (HDL) в англоязычной литературе), которые, в частности, позволяют конвертировать текст программы в функциональную схему и наоборот. Описание, выполненное на одном из таких языков, компилируется в схему [167]. Среди языков этого класса отметим языки VHDL [168] и AHDL [169].

Например, в языке AHDL для реализации условной логики (Conditional Logic) включены конструкции if then и case, последняя из которых является аналогом конструкции switch языка Си. При этом одно из "золотых" правил, приведенных в [169], состоит в применении везде, где это возможно, конструкции case вместо вложенных конструкций if then.

Это правило используется для реализации последовательностной логики (Sequential Logic), описываемой в терминах состояний с помощью конечных автоматов (State Machine). При этом автоматы с многозначным кодированием состояний (этот термин в [168] не применяется) задаются в виде диаграмм состояний (State Diagram). В [169] приводятся примеры реализации автоматов с синхронными выходами (State Machines with Synchronous Outputs), соответствующих автоматам Мура, и автоматов с асинхронными выходами (State Machines with Asynchronous Outputs), соответствующих автоматам Мили.

Дальнейшее развитие автоматного подхода для настройки схем программируемой логики состоит в визуализации диаграмм состояний, которая осуществляется с помощью пакетов типа "State CAD", один из которых описан в [170].

Таким образом, технология проектирования алгоритмического и программного обеспечения, изложенная в разд.2 и 5, дополняет известные подходы к настройке схем программируемой логики, что позволяет с единых позиций проводить аппаратную [171] и программную реализации алгоритмов логического управления, так же как это имеет место в технологии "Co-Design", предназначенной для совместной разработки аппаратных и программных средств с помощью формализованных методов, в которой в качестве языка описания высшего уровня абстракции применяются конечные автоматы [172].

7. Лауреаты премии Тьюринга о применении понятия "состояние" в программировании

После издания [8] автор познакомился с работами [173, 174]. Некоторые из особенностей излагаемого подхода, базирующегося на парадигме конечных автоматов, являющейся одной из парадигм программирования, рассмотренных Р.Флойдом [173], совпадают с предложениями, высказанными лауреатами премии Тьюринга, самим А.Тьюрингом [183] и Дж. фон Нейманом [184].

Так, А.Дж.Перлис в 1966 г. [173] предложил в описания языка, среды и правил вычислений включить состояния, которые могут подвергаться мониторингу во время исполнения, позволяя диагностировать программы, не нарушая их целостности. При этом под мониторингом он понимал распределенное управление, более известное в настоящее время под названием "объектно-ориентированное программирование".

В этом же году Э.Дейкстра [174] предложил ввести так называемые переменные состояния, с помощью которых можно описывать состояния системы в любой момент времени, и ввел для этих целей целочисленные переменные. При этом им были поставлены вопросы о том, какие состояния должны вводиться, как много значений должны иметь переменные состояния и что эти значения должны означать. Он предложил сначала определять набор подходящих состояний, а лишь затем строить программу. Он также предложил сопоставлять процессы с переменными состояния и связывать процессы через эти переменные. По мнению Э.Дейкстры, диаграммы состояний могут оказаться мощным средством для проверки программ. Все это обеспечивает поддержку его идеи, состоящей в том, что программы должны быть с самого начала составлены правильно, а не отлаживаться до тех пор, пока они не станут правильными.

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

8. Заключение

Автор надеется, что изложенный подход, использующий элементы бихевиоризма, когнитивной психологии [57] и гештальт-психологии [41], позволит повысить качество проектирования и реализации программ логического управления ответственными технологическими объектами, в том числе и за счет автопрограммирования, при котором человек, знающий объект, сам выполняет алгоритмизацию и программирование, так как для рассматриваемого класса задач предлагаемая система обозначений является "естественным продолжением образа мышления, а не чуждого ему формализма" (Н.Вирт в [173]). Графы переходов в качестве языка алгоритмизации, как и любой "язык, на котором записывается решение задачи, напрямую влияют на ход мыслей человека, заставляя его рассматривать задачу под определенным углом" [37], определяя "дисциплину мышления" [20]. В настоящее время считается [77], что графы переходов позволяют наиболее естественным образом описывать процессы, протекающие в реальном мире, дополняя объектный подход, являющийся "естественным способом размышления о мире" [175].

Если процедурное программирование ориентировано на выбор и действия, объектное программирование - на объекты [175], событийное программирование - на события, то предлагаемое в [8] автоматное программирование - на автоматы, включающие состояния и входные и выходные воздействия.

При этом отметим, что, по "данным Киевского представительства фирмы "Шнайдер Электрик", в настоящее время только 4% украинских пользователей ее ПЛК используют язык "Графсет", входящий в стандарт IEC 1131-3. Это, видимо, связано с инерцией мышления у программистов [187], которые в большинстве случаев автоматически переносят стиль программирования на языках для персональных компьютеров на программирование для ПЛК" [9].

Однако, по мнению автора, указанная ситуация связана не только с особенностями пользователей, но и с методическим обеспечением применения этого языка и его реализацией. Так, например, в [176] сформулирована одна из задач логического управления и для нее построена диаграмма "Графсет", которая, однако, является "картинкой", а не математической моделью. Это исключает возможность формального и изоморфного перехода от нее к программе и применение диаграммы в качестве сертификационного теста. Удивительным является то, что эта диаграмма в [176] не используется для написания программы на языке "Графсет", а по ее "мотивам" эвристически строятся лестничная схема и программа на языке инструкций. Кроме того, как было отмечено в [8], графы переходов в системах логического управления обычно имеют многочисленные возвраты назад, что делает реализующие их диаграммы "Графсет" ненаглядными. Небольшое число двоичных переменных, выделяемых в ПЛК для кодирования вершин в этих диаграммах, резко ограничивает допустимое число вершин в реализуемых таким образом графах переходов.

По мнению автора, в рамках рассмотренной технологии программирование ПЛК наиболее целесообразно выполнять на языке "структурированный текст" ("Structured Text") [1], особенно для тех ПЛК, в которых этот язык содержит конструкцию, аналогичную конструкции switch языка Си.

Таким образом, в настоящее время SWITCH-технология использована при построении систем управления применительно ко всем трем типам управляющих вычислительных устройств, перечисленных в начале работы, и показала свою эффективность.

Из изложенного следует, что для рассматриваемого класса задач SWITCH-технология обеспечивает построение "добротных" [177] программ, подтверждая тем самым высказывание: "то, что не специфицировано формально, не может быть проверено, а то, что не может быть проверено, не может быть безошибочным" [38].

"Сложность служит причиной трудности перечисления, а тем более понимания, всех возможных состояний программы, а отсюда возникает ее ненадежность. Сложность служит также источником невизуализируемых состояний, в которых нарушается система защит" [158].

Описанная технология основана на априорном задании состояний и их визуализации, и поэтому хочется надеяться, что она, обладая минимализмом [178], по крайней мере для систем логического управления и "реактивных" систем является приближением к "серебряной пуле" [158] в части создания качественных программ, тем более, что Ф.Брукс в этой работе отозвался благосклонно только о подходе Д.Харела, сравнение с которым выполнено выше.

Эта технология может рассматриваться как одно из направлений выхода из "кризиса линейного мышления" [179], другое из которых, например, связано с заменой линейного текста гипертекстом.

Применение изложенной технологии может быть особенно важным для обеспечения требований международного стандарта IEC 880 "Программное обеспечение ЭВМ, использующихся в системах эксплуатационной надежности атомных электростанций (АЭС)", который регламентирует в том числе и процесс разработки и контроля за созданием программного обеспечения для систем управления ядерными энергетическими установками, а также порядок внесения в него изменений [180].

Применение в предлагаемой парадигме понятия "автомат" в качестве центрального понятия соответствует его месту в теории управления, что принципиально отличает ее от других парадигм программирования.


[ << | 1 | 2 | 3 | 4 | Литература | >> ]



© 2002—2024 По техническим вопросам сайта: alexvatyan@gmail.com