Статья в формате PDF - Кафедра «Технологии программирования
Статья в формате PDF - Кафедра «Технологии программирования
Статья в формате PDF - Кафедра «Технологии программирования
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 />
технологий, механики и оптики