10.06.2015 Views

Статья в формате PDF - Кафедра «Технологии программирования

Статья в формате PDF - Кафедра «Технологии программирования

Статья в формате PDF - Кафедра «Технологии программирования

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Статья</strong> опублико<strong>в</strong>ана <strong>в</strong> журнале “Промышленные АСУ и контроллеры”. 2005. №11, с. 49– 52.<br />

И.З. Альтерман, А.А. Шалыто<br />

Формальные методы программиро<strong>в</strong>ания логических<br />

контроллеро<strong>в</strong><br />

Предлагаются методы непосредст<strong>в</strong>енного построения программ на языке функциональных<br />

блоко<strong>в</strong> по графам переходо<strong>в</strong>. Примеры реализации рассмотрены для контроллеро<strong>в</strong> Simatic S7.<br />

The present article describes the methods of developing programs based on function blocks<br />

language by the agency of transition graphs. The ways of programming are displayed in terms of<br />

Simatic S7 controller .<br />

Постано<strong>в</strong>ка задачи<br />

При анализе программы, реализуемой контроллером, часто бы<strong>в</strong>ает так, что нет исходных<br />

тексто<strong>в</strong> программ с комментариями, нет и полной документации, объясняющей<br />

функциональные особенности программы. А что, если программу изначально строить по<br />

формальным принципам, изложенным, например, <strong>в</strong> работе [1]. Тогда логика работы<br />

программы может быть легко <strong>в</strong>осстано<strong>в</strong>лена из ее текста за счет формального преобразо<strong>в</strong>ания<br />

<strong>в</strong> изоморфный граф переходо<strong>в</strong>, описы<strong>в</strong>ающий по<strong>в</strong>едение объекта. Это поз<strong>в</strong>олит затратить<br />

минимум <strong>в</strong>ремени на анализ программы и ее модификацию <strong>в</strong> случае необходимости. Такой<br />

граф может служить не только компактным и наглядным способом предста<strong>в</strong>ления алгоритма,<br />

но и общим языком общения между программистом-исполнителем и технологом-заказчиком.<br />

В предлагаемой статье предлагается рассмотреть практические <strong>в</strong>опросы<br />

программиро<strong>в</strong>ания логических контроллеро<strong>в</strong> на осно<strong>в</strong>е а<strong>в</strong>томатного подхода [1, 2].<br />

При этом отметим, что программа <strong>в</strong> контроллере <strong>в</strong>ыполняется по шагам и циклически.<br />

Суть а<strong>в</strong>томатного программиро<strong>в</strong>ания, состоит <strong>в</strong> том, что упра<strong>в</strong>ляющая программа<br />

строится и функционирует как конечный а<strong>в</strong>томат, который может находиться <strong>в</strong> каждый<br />

момент <strong>в</strong>ремени только <strong>в</strong> одном из N состояний. При этом <strong>в</strong> каждом цикле для текущего<br />

состояния (иначе ШАГА программы) <strong>в</strong>ычисляются логические усло<strong>в</strong>ия, поз<strong>в</strong>оляющие<br />

изменить состояние программы.<br />

Такой подход однозначно определяет по<strong>в</strong>едение программы <strong>в</strong> каждом цикле по<br />

отношению к объекту упра<strong>в</strong>ления – обеспечи<strong>в</strong>ает ее детерминиро<strong>в</strong>анность. Осно<strong>в</strong>ное<br />

достоинст<strong>в</strong>о этого подхода, что искомая программа "строится" по формальным пра<strong>в</strong>илам.<br />

Рассмотрим пример реализации программы для упра<strong>в</strong>ления клапаном на осно<strong>в</strong>е<br />

а<strong>в</strong>томатного подхода. При<strong>в</strong>едем сло<strong>в</strong>есное описание алгоритма [1].<br />

1. При нажатии кнопки "Откр." (X1) клапан начинает откры<strong>в</strong>аться.<br />

2. После его открытия срабаты<strong>в</strong>ает сигнализатор открытого положения, зажигается лампа<br />

"Откр." (X4) и упра<strong>в</strong>ляющий сигнал с клапана снимается (Z2).<br />

3. При нажатии кнопки "Закр." (X2) клапан начинает закры<strong>в</strong>аться.<br />

4. После его закрытия срабаты<strong>в</strong>ает сигнализатор закрытого положения, зажигается лампа<br />

"Закр." (X3) и упра<strong>в</strong>ляющий сигнал с клапана (Z1) снимается.<br />

5. Если <strong>в</strong> течение 3 с клапан не откроется или не закроется, то упра<strong>в</strong>ляющий сигнал с<br />

клапана снимается и зажигается лампа контроля "Неиспра<strong>в</strong>ность" (Z3).<br />

6. Сброс сигнала контроля осущест<strong>в</strong>ляется нажатием кнопки "Разблок." (X5).<br />

Схема с<strong>в</strong>язей “источник информации – упра<strong>в</strong>ляющий а<strong>в</strong>томат – исполнительные<br />

механизмы”, задающая интерфейс а<strong>в</strong>томата, при<strong>в</strong>едена на рис.1.


X1<br />

X2<br />

1<br />

X5<br />

Откр.<br />

Закр.<br />

Разблок<br />

.<br />

УА<br />

Z1<br />

Z2<br />

Z3<br />

З З<br />

Кл<br />

0 0<br />

X3<br />

X4<br />

Закр.<br />

Откр.<br />

Неиспра<strong>в</strong>ность<br />

Рис. 1. Схема с<strong>в</strong>язей а<strong>в</strong>томата<br />

Построим по сло<strong>в</strong>есному описанию граф переходо<strong>в</strong> а<strong>в</strong>томата (рис.2).<br />

X4·T<br />

X1·X4<br />

0 1<br />

X3·T<br />

X2·X3<br />

X5<br />

T<br />

2<br />

T<br />

3<br />

Рис.2. Граф переходо<strong>в</strong> а<strong>в</strong>томата<br />

При анализе состояний графа переходо<strong>в</strong> обычно решаются следующие <strong>в</strong>опросы:<br />

• список команд на <strong>в</strong>ключение (команда акти<strong>в</strong>на);<br />

• список команд на <strong>в</strong>ыключение (если для реализации графа переходо<strong>в</strong> допускается<br />

использо<strong>в</strong>ание команд с запоминанием – с памятью);<br />

• максимальное/минимальное <strong>в</strong>ремя акти<strong>в</strong>ности состояния (Tмах/Tmin).<br />

Обозначим через Si состояние а<strong>в</strong>томата с номером i. Тогда для рассматри<strong>в</strong>аемого примера<br />

определяем:<br />

S 0 = { Z1=0; Z2=0; Z3=0; Tмах/Tmin не учиты<strong>в</strong>аются };<br />

S 1 = { Z2=1; Tмах= 3 c };<br />

S 2 = { Z1=1; Tмах= 3 c };<br />

S 3 = { Z3=1; Tмах/Tmin не учиты<strong>в</strong>аются }<br />

Переход из одного состояния графа <strong>в</strong> другое предста<strong>в</strong>ляет собой логическое усло<strong>в</strong>ие,<br />

которое <strong>в</strong>сегда про<strong>в</strong>еряется для текущего состояния. Если усло<strong>в</strong>ие – истина, то переход<br />

<strong>в</strong>ыполняется. В случае множест<strong>в</strong>енных переходо<strong>в</strong> из текущего состояния и акти<strong>в</strong>ности<br />

одно<strong>в</strong>ременно нескольких усло<strong>в</strong>ий, приоритетным будем считать тот переход, логическая<br />

функция которого должна быть <strong>в</strong>ычислена по ходу <strong>в</strong>ыполнения программы раньше.<br />

Обозначим Tij переход из состояния Si <strong>в</strong> состояние Sj. Тогда для рассматри<strong>в</strong>аемого<br />

примера получим следующие логические <strong>в</strong>ыражения переходо<strong>в</strong>:


Т 01 = X1 & X4; Т 02 = X2 & X3; Т 10 = X4 & T; Т 20 = X3 & T; Т 13 = Т; Т 23 =Т; Т 30 = X5<br />

Рассмотрим д<strong>в</strong>а подхода, поз<strong>в</strong>оляющих <strong>в</strong>ыполнить формализо<strong>в</strong>анный пере<strong>в</strong>од искомого<br />

графа переходо<strong>в</strong> <strong>в</strong> программный код для программируемых контроллеро<strong>в</strong>.<br />

2. Метод шаго<strong>в</strong>ых меток<br />

Метод шаго<strong>в</strong>ых меток осно<strong>в</strong>ы<strong>в</strong>ается на кодиро<strong>в</strong>ании состояний графа с помощью<br />

бито<strong>в</strong>ых ячеек памяти, которые будем назы<strong>в</strong>ать "шаго<strong>в</strong>ыми метками". Предста<strong>в</strong>им программу<br />

упра<strong>в</strong>ления клапаном из д<strong>в</strong>ух частей (рис.3), одна из которых от<strong>в</strong>ечает за реализацию<br />

переходо<strong>в</strong>, а <strong>в</strong>торая – за формиро<strong>в</strong>ание команд для <strong>в</strong>сех состояний. Назо<strong>в</strong>ем пер<strong>в</strong>ую часть<br />

блоком формиро<strong>в</strong>ания переходо<strong>в</strong> (БФП), а <strong>в</strong>торую – блоком формиро<strong>в</strong>ания команд (БФК).<br />

Еще раз отметим цикличность программы, которая <strong>в</strong>ытекает из циклического характера<br />

работы программируемого контроллера.<br />

Блок формиро<strong>в</strong>ания<br />

переходо<strong>в</strong><br />

Блок формиро<strong>в</strong>ания<br />

команд<br />

Рис.3. Соста<strong>в</strong>ные части программы упра<strong>в</strong>ления клапаном<br />

Формальный переход к программе заключается <strong>в</strong> том, что пользо<strong>в</strong>ателю предлагается<br />

наполнить типо<strong>в</strong>ые структуры блоко<strong>в</strong> формиро<strong>в</strong>ания переходо<strong>в</strong> (рис.4) и команд (рис.5)<br />

конкретными данными для заданного графа переходо<strong>в</strong>.<br />

Упра<strong>в</strong>ление шаго<strong>в</strong>ыми метками <strong>в</strong>ыполняется по триггерным функциям Set и Reset.<br />

При срабаты<strong>в</strong>ании перехода Tij текущая шаго<strong>в</strong>ая метка SMi сбрасы<strong>в</strong>ается и сразу же<br />

устана<strong>в</strong>ли<strong>в</strong>ается но<strong>в</strong>ая акти<strong>в</strong>ная метка SMj. При рестарте контроллера должна обеспечи<strong>в</strong>аться<br />

устано<strong>в</strong>ка <strong>в</strong> единицу шаго<strong>в</strong>ой метки, соот<strong>в</strong>етст<strong>в</strong>ующей исходному состоянию.<br />

Логическая<br />

схема<br />

перехода Tij<br />

Timax<br />

1<br />

Timin<br />

SMi<br />

&<br />

.<br />

R<br />

S<br />

SMi<br />

SMj<br />

Рис. 4. Реализация перехода Tij <strong>в</strong> блоке формиро<strong>в</strong>ания переходо<strong>в</strong><br />

Акти<strong>в</strong>ность команд ста<strong>в</strong>ится <strong>в</strong> прямую за<strong>в</strong>исимость от акти<strong>в</strong>ности шаго<strong>в</strong>ой метки. Если<br />

одна и та же команда акти<strong>в</strong>на сразу <strong>в</strong> нескольких состояниях графа, то она формируется по<br />

схеме "ИЛИ" от соот<strong>в</strong>етст<strong>в</strong>ующих шаго<strong>в</strong>ых меток. Если для i-го состояния графа<br />

предусмотрен учет <strong>в</strong>ремени его дейст<strong>в</strong>ия, то по фронту шаго<strong>в</strong>ой метки запускаются<br />

соот<strong>в</strong>етст<strong>в</strong>ующие таймеры задержки. Таймер Timax определяет максимальное <strong>в</strong>ремя


дейст<strong>в</strong>ия i-го шага. При его срабаты<strong>в</strong>ании i-шаг заменяется на но<strong>в</strong>ый. Таймер Timin<br />

предназначен для задержки <strong>в</strong>ремени <strong>в</strong>ыполнения i-го шага минимум на <strong>в</strong>ремя Tmin. Он<br />

используется <strong>в</strong> тех случаях, когда необходимо исключить прежде<strong>в</strong>ременный переход объекта<br />

<strong>в</strong> но<strong>в</strong>ое состояние.<br />

SMi<br />

1<br />

SMj =<br />

K 1<br />

K n<br />

SMi<br />

IN<br />

Q Timax<br />

SMi<br />

IN<br />

Q<br />

Timin<br />

TW<br />

PT<br />

Tjmax<br />

TW<br />

PT<br />

Tjmin<br />

Рис.5. Компоненты блока формиро<strong>в</strong>ания команд<br />

В качест<strong>в</strong>е примера реализации программы рассмотрим контроллеры фирмы Siemens<br />

серии Simatic S7-300/400 [3]. Выполним упра<strong>в</strong>ление клапаном на базе программного блока FB<br />

(Function Block), поскольку ти блоки имеют собст<strong>в</strong>енную статическую память, часть которой<br />

будем использо<strong>в</strong>ать для кодиро<strong>в</strong>ания шаго<strong>в</strong>ых меток. Для этого, <strong>в</strong> разделе описания<br />

статической памяти блока, объя<strong>в</strong>им переменную SM как бито<strong>в</strong>ый масси<strong>в</strong> с инициализацией<br />

пер<strong>в</strong>ой ячейки:<br />

VAR SM : ARRAY [0 .. 3 ] OF BOOL := TRUE, 3 (FALSE) ;<br />

Для таймеро<strong>в</strong> задержки будем использо<strong>в</strong>ать системную функцию процессора TON<br />

(SFB4), которая соот<strong>в</strong>етст<strong>в</strong>ует стандарту IEC 1131-3. Для оценки <strong>в</strong>ремени дейст<strong>в</strong>ия шаго<strong>в</strong><br />

один и д<strong>в</strong>а потребуется д<strong>в</strong>а таймера. Поэтому <strong>в</strong> разделе описания статической памяти блока<br />

FB объя<strong>в</strong>им еще д<strong>в</strong>е переменные T1max и T2max с типом SFB4:<br />

VAR T1max : SFB 4; T2max : SFB 4;<br />

Для предста<strong>в</strong>ления программы упра<strong>в</strong>ления клапаном <strong>в</strong>оспользуемся языком FBD<br />

(Function Block Diagram). Фрагмент блока формиро<strong>в</strong>ания переходо<strong>в</strong> для переходо<strong>в</strong> Т 20 и Т13<br />

при<strong>в</strong>еден на рис.6.


Рис. 6. Фрагмент программы для переходо<strong>в</strong> Т 20 и Т13<br />

Поскольку <strong>в</strong> рассматри<strong>в</strong>аемом графе <strong>в</strong>сего семь различных переходо<strong>в</strong>, то <strong>в</strong> блоке FB<br />

записы<strong>в</strong>ается семь однотипных секций программного кода. Блок формиро<strong>в</strong>ания команд (рис.<br />

7) формирует три команды и упра<strong>в</strong>ляет д<strong>в</strong>умя таймерами.<br />

Рис. 7. Фрагмент программы для блока формиро<strong>в</strong>ания команд<br />

Предложенный подход значительно сокращает <strong>в</strong>ремя на разработку и тестиро<strong>в</strong>ание.<br />

Упра<strong>в</strong>ляющие программы с использо<strong>в</strong>анием шаго<strong>в</strong>ых меток имеют четкую и ясную<br />

структуру, по которым можно легко <strong>в</strong>осстано<strong>в</strong>ить граф переходо<strong>в</strong>, а, следо<strong>в</strong>ательно, и<br />

по<strong>в</strong>едение объекта. Однако, при этом ресурсы процессора используются недостаточно<br />

эффекти<strong>в</strong>но. Дейст<strong>в</strong>ительно, <strong>в</strong> каждом цикле происходит <strong>в</strong>ычисление логических усло<strong>в</strong>ий<br />

переходо<strong>в</strong> и формиро<strong>в</strong>ание команд не только для акти<strong>в</strong>ного, а для <strong>в</strong>сех состояний, что<br />

у<strong>в</strong>еличи<strong>в</strong>ает <strong>в</strong>ремя цикла. Количест<strong>в</strong>о используемых таймеро<strong>в</strong> прямо за<strong>в</strong>исит от количест<strong>в</strong>а<br />

“<strong>в</strong>ременных” состояний, что также нерационально. Указанных недостатко<strong>в</strong> при реализации<br />

графа переходо<strong>в</strong> можно избежать, если <strong>в</strong>оспользо<strong>в</strong>аться методом шаго<strong>в</strong>ых блоко<strong>в</strong>, который <strong>в</strong><br />

полной мере соот<strong>в</strong>етст<strong>в</strong>ует SWITCH-технологии [1].<br />

Метод шаго<strong>в</strong>ых блоко<strong>в</strong><br />

Метод шаго<strong>в</strong>ых блоко<strong>в</strong> использует многозначное кодиро<strong>в</strong>ание состояний графа, а<br />

программа <strong>в</strong>ыполняет усло<strong>в</strong>ные <strong>в</strong>ызо<strong>в</strong>ы процедур по текущему номеру состояния. Будем<br />

назы<strong>в</strong>ать эти процедуры "шаго<strong>в</strong>ыми блоками". Шаго<strong>в</strong>ый блок SBi решает только задачи для<br />

i-го состояния: реализация <strong>в</strong>озможных переходо<strong>в</strong>, формиро<strong>в</strong>ание команд на объект<br />

упра<strong>в</strong>ления и упра<strong>в</strong>ление таймерами для учета <strong>в</strong>ремени. Структура программы (рис.8)<br />

отражает усло<strong>в</strong>ный характер <strong>в</strong>ызо<strong>в</strong>а шаго<strong>в</strong>ых блоко<strong>в</strong> по число<strong>в</strong>ой переменной SW,<br />

используемой для хранения номера акти<strong>в</strong>ного шага.


SW<br />

0 1 i n-1<br />

SB 0 SB 1 SB i SB n-1<br />

Рис.8. Структура программы для метода шаго<strong>в</strong>ых блоко<strong>в</strong><br />

Шаблон для блока SBi, при<strong>в</strong>еденный <strong>в</strong> таблице 1, поз<strong>в</strong>оляет формализо<strong>в</strong>ать<br />

процесс разработки программы. Результаты <strong>в</strong>ычисления функций переходо<strong>в</strong> для каждого шага<br />

запоминаются <strong>в</strong>о <strong>в</strong>ременных переменных PPi. При <strong>в</strong>ыполнении хотя бы одного усло<strong>в</strong>ия<br />

перехода блокируются <strong>в</strong>се команды шага и изменяется число<strong>в</strong>ая переменная SW, что при<strong>в</strong>одит<br />

к <strong>в</strong>ыполнению но<strong>в</strong>ого шага уже на следующем цикле процессора.<br />

Таблица 1. Типо<strong>в</strong>ая структура шаго<strong>в</strong>ого блока<br />

N<br />

Дейст<strong>в</strong>ия<br />

1. Устано<strong>в</strong>ка признако<strong>в</strong><br />

акти<strong>в</strong>ации переходо<strong>в</strong><br />

Логическая<br />

схема<br />

перехода Ti1<br />

Программное решение<br />

PP1<br />

=<br />

Логическая<br />

схема<br />

перехода Tin<br />

PPk<br />

=<br />

2. Формиро<strong>в</strong>ание но<strong>в</strong>ого<br />

сло<strong>в</strong>а состояния (SW)<br />

N1 - номер шага для 1-го<br />

перехода<br />

Nk - номер шага для k-го<br />

перехода<br />

PP1<br />

N1<br />

MOVE<br />

EN<br />

IN<br />

OUT SW<br />

MOVE<br />

PPk EN<br />

Nk<br />

IN OUT SW<br />

3. Формиро<strong>в</strong>ание<br />

команд шага<br />

(без памяти) и<br />

упра<strong>в</strong>ление таймерами<br />

PP1<br />

PPk<br />

1<br />

K1<br />

=<br />

Kn<br />

=<br />

TW<br />

IN<br />

PT<br />

Q Tmax<br />

Tmin<br />

Количест<strong>в</strong>о таймеро<strong>в</strong> на <strong>в</strong>сю программу с<strong>в</strong>одится к минимуму: один для <strong>в</strong>ычисления<br />

<strong>в</strong>ремени Tmax, другой – Tmin. Если необходимо, то <strong>в</strong> шаго<strong>в</strong>ом блоке <strong>в</strong>ыполняется запуск<br />

таймеро<strong>в</strong>, а по за<strong>в</strong>ершении шаго<strong>в</strong>ого блока таймеры сбрасы<strong>в</strong>аются и могут быть использо<strong>в</strong>аны<br />

<strong>в</strong> уже следующем блоке.


Рассмотрим реализацию шаго<strong>в</strong>ых блоко<strong>в</strong> для контроллеро<strong>в</strong> Simatic S7. Как и <strong>в</strong> пер<strong>в</strong>ом<br />

случае, <strong>в</strong>оспользуемся блоком FB. В разделе описания статической памяти блока объя<strong>в</strong>им<br />

одну переменную SW и один таймер Tmax. Масси<strong>в</strong> PP логических переменных, <strong>в</strong> котором<br />

хранятся результаты переходо<strong>в</strong>, разместим <strong>в</strong> разделе <strong>в</strong>ременных переменных.<br />

VAR SW : INT; Tmax : SFB 4;<br />

VAR_TEMP PP: ARRAY [0 .. 7 ] OF BOOL ;<br />

Используем инструкцию языка STEP7, имещую сокращение JL (Jump to Labels -<br />

множест<strong>в</strong>енный переход) для <strong>в</strong>ыбора блоко<strong>в</strong> SBi (рис.9). Список переходо<strong>в</strong> объя<strong>в</strong>ляется<br />

командами JU (Jump Unconditional – безусло<strong>в</strong>ный переход), расположенными <strong>в</strong>след за<br />

командой JL и за<strong>в</strong>ершается командой, сим<strong>в</strong>ольный адрес которой указы<strong>в</strong>ается<br />

непосредст<strong>в</strong>енно <strong>в</strong> инструкции JL. Выбор перехода за<strong>в</strong>исит от значения аккумулятора (от 0 до<br />

255). При нуле <strong>в</strong> аккумуляторе <strong>в</strong>ыбирается пер<strong>в</strong>ая команда JU из списка, при единице – <strong>в</strong>торая<br />

и т.д.<br />

Рис.9. Фрагмент программы для <strong>в</strong>ызо<strong>в</strong>а шаго<strong>в</strong>ого блока<br />

Рассмотрим пример для шаго<strong>в</strong>ого блока SB1 (рис.10), который соот<strong>в</strong>етст<strong>в</strong>ует пер<strong>в</strong>ому<br />

состоянию графа.<br />

Начало любого шаго<strong>в</strong>ого блока отмечается той меткой, которая была указана <strong>в</strong> списке<br />

переходо<strong>в</strong>. Секции (network) пять и шесть соот<strong>в</strong>етст<strong>в</strong>уют дейст<strong>в</strong>иям один и д<strong>в</strong>а шаблона<br />

(табл.). В них про<strong>в</strong>еряются усло<strong>в</strong>ия переходо<strong>в</strong> T10 и Т13, а <strong>в</strong> случае их акти<strong>в</strong>ности<br />

изменяется переменная SW. Секция семь от<strong>в</strong>ечает за одну единст<strong>в</strong>енную команду шага –<br />

«открыть клапан». Все шаго<strong>в</strong>ые блоки должны заканчи<strong>в</strong>аться передачей упра<strong>в</strong>ления <strong>в</strong> конец<br />

программы.<br />

Рис.10. Фрагмент программы для шаго<strong>в</strong>ого блока SB1


Для тестиро<strong>в</strong>ания программы, реализующей граф переходо<strong>в</strong>, пользо<strong>в</strong>ателю достаточно<br />

наблюдать за одной единст<strong>в</strong>енной переменной SW. Изменяя <strong>в</strong>ручную значение SW, можно<br />

контролиро<strong>в</strong>ать <strong>в</strong>ыполнение программы с любого шага.<br />

Если необходимо модифициро<strong>в</strong>ать упра<strong>в</strong>ляющий граф, то пользо<strong>в</strong>атель может изменить<br />

только соот<strong>в</strong>етст<strong>в</strong>ующие шаго<strong>в</strong>ые блоки, а не <strong>в</strong>сю программу. Это с<strong>в</strong>одит к минимуму<br />

<strong>в</strong>ероятность ошибок и сокращает <strong>в</strong>ремя на разработку и обслужи<strong>в</strong>ание программы.<br />

Типо<strong>в</strong>ая структура шаго<strong>в</strong>ых блоко<strong>в</strong> поз<strong>в</strong>оляет легко <strong>в</strong>осстано<strong>в</strong>ить логику работы<br />

программы и делает ее пригодной для длительного использо<strong>в</strong>ания.<br />

Метод шаго<strong>в</strong>ых блоко<strong>в</strong>, как показы<strong>в</strong>ает опыт разработки АСУ ТП, например, для печей с<br />

шагающими балками (ОАО “Се<strong>в</strong>ерсталь”), хорошо понимается инженерно-техническим<br />

персоналом заказчика.<br />

Заключение<br />

Рассмотренные формальные методы программиро<strong>в</strong>ания логических контроллеро<strong>в</strong><br />

поз<strong>в</strong>оляют пре<strong>в</strong>ратить искусст<strong>в</strong>о написания программ <strong>в</strong> простое и надежное ремесло,<br />

осно<strong>в</strong>анное, как и создание аппаратуры, на проектиро<strong>в</strong>ании. Разработчик получает<br />

технологию для "монтажа" программы из гото<strong>в</strong>ых и понятных "конструкций". Ему<br />

достаточно только заполнить типо<strong>в</strong>ые программные структуры конкретными данными,<br />

<strong>в</strong>зятыми из графа переходо<strong>в</strong>.<br />

Использо<strong>в</strong>ание предлагаемых методо<strong>в</strong> по<strong>в</strong>ышает качест<strong>в</strong>о программного продукта и<br />

продле<strong>в</strong>ает его жизненный цикл. Простота предлагаемых решений снимает из<strong>в</strong>ечный <strong>в</strong>опрос о<br />

понимании программных тексто<strong>в</strong> и делает их доступными даже специалисту "средней"<br />

к<strong>в</strong>алификации.<br />

Список литературы<br />

1. Шалыто А.А. SWITCH-технология. Алгоритмизация и программиро<strong>в</strong>ание задач<br />

логического упра<strong>в</strong>ления. СПб.: Наука, 1998. 628 с.<br />

2. Шалыто А.А. Реализация алгоритмо<strong>в</strong> логического упра<strong>в</strong>ления программами на языке<br />

функциональных блоко<strong>в</strong> //Промышленные АСУ и контроллеры. 2000. № 4, с.45 – 50.<br />

3. SIMATIC. Simatic S7/M7/C7. Programmable controllers. SIEMENS. Catalog ST 70. 2002.<br />

Альтерман И.З. – канд. техн. наук, руко<strong>в</strong>одитель группы АСУТП, ООО "К<strong>в</strong>адроТек", Моск<strong>в</strong>а,<br />

igoralterman@hotmail.ru<br />

Шалыто А.А. – д-р техн. наук, профессор, за<strong>в</strong>едующий кафедрой “Технологиии<br />

программиро<strong>в</strong>ания” Санкт-Петербургского государст<strong>в</strong>енного уни<strong>в</strong>ерситета информационных<br />

технологий, механики и оптики

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!