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



[ Введение | 1 | 2 | 3 | 4, 5, Заключение | Литература | >> ]

Отсюда можно скачать полный текст статьи в формате pdf (279 кб)

УДК 681.3.06: 62-507

(с) А.А.Шалыто

Федеральный научно-производственный центр ГУП "НПО "Аврора"",
Санкт-Петербургский государственный институт точной механики и оптики
(технический университет)

Опубликована в журнале: "ИЗВЕСТИЯ АКАДЕМИИ НАУК. ТЕОРИЯ И СИСТЕМЫ УПРАВЛЕНИЯ"
Номер 6. Ноябрь-Декабрь 2000. c. 63-81.

Существует английская версия статьи: Shalyto A.A. Software Automation Design: Algoritmization and Programming of Problems of Logical Control //Journal of Computer and Systems Sciences International. 2000. N6, pp.899-916.

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

Введение

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

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

Эта проблема является актуальной и для других классов задач. Так, Э. Дейкстра во введении к [1] пишет: "Я знал, что программы могут очаровывать глубиной своего логического изящества, но мне постоянно приходилось убеждаться, что большинство из них появляются в виде, рассчитанном на механическое выполнение, и что они совершенно непригодны для человеческого восприятия. Меня не удовлетворяло также и то, что программы часто приводятся в форме готовых изделий, почти без упоминания тех рассуждений, которые проводились в процессе разработки и служили обоснованием для окончательного вида завершенной программы". Продвижение в направлении решения этой проблемы для задач логического управления имеет особую важность в связи с большой ответственностью их решения для многих объектов управления, например, для ядерных или химических реакторов, а предпосылки для такого продвижения определяются наличием развитого математического аппарата теории автоматов.

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

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

При программной реализации на базе аппаратуры "Selma-2" фирмы ABB Stromberg (Финляндия) [2] в качестве как языка алгоритмизации, так и языка программирования, используются функциональные схемы, а для программируемых логических контроллеров "Autolog" фирмы "FF-Automation" (Финляндия) [3] в качестве языка программирования применяется язык инструкций ALPro, в то время как язык алгоритмизации не определен. Последний неопределен и для многих других типов программируемых логических контроллеров, таких, как, например, как "Melsec" фирмы "Mitsubishi Electric" (Япония) [4], языками программирования которых является язык инструкций и язык лестничных схем — язык релейно-контактных, дополненный большим числом вычислительных операций.

В настоящее время в качестве языков алгоритмизации в системах логического управления наиболее часто применяются лестничные и функциональные схемы и блок-схемы алгоритмов, называемые также граф-схемами алгоритмов или схемами алгоритмов, а в качестве языков программирования в зависимости от типов управляющих вычислительных устройств используются три типа языков: алгоритмические языки высокого уровня (например, Си, "Паскаль", ПЛ/М, "Форт"), алгоритмические языки низкого уровня (ассемблеры, языки инструкций) и специализированные языки (например, функциональные и лестничные схемы).

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

При логическом управлении могут использоваться традиционные (классические) пути формализации, как процедур управления, так и описаний объектов управления, что отличает этот класс задач, например от ситуационного управления [5].

Для ответственных технологических объектов системы логического и ситуационного управления могут применяться совместно.


[ Введение | 1 | 2 | 3 | 4, 5, Заключение | Литература | >> ]