Автор | Сообщение |
---|---|
#249 / 20.11.2018 08:41
admin
|
|
Предлагаются методы непосредственного построения программ на языке функциональных блоков по графам переходов. Примеры реализации рассмотрены для контроллеров Simatic S7. Постановка задачи В предлагаемой статье предлагается рассмотреть практические вопросы программирования логических контроллеров на основе автоматного подхода [1, 2]. При этом отметим, что программа в контроллере выполняется по шагам и циклически. Суть автоматного программирования, состоит в том, что управляющая программа строится и функционирует как конечный автомат, который может находиться в каждый момент времени только в одном из N состояний. При этом в каждом цикле для текущего состояния (иначе ШАГА программы) вычисляются логические условия, позволяющие изменить состояние программы. Такой подход однозначно определяет поведение программы в каждом цикле по отношению к объекту управления – обеспечивает ее детерминированность. Основное достоинство этого подхода, что искомая программа "строится" по формальным правилам. Рассмотрим пример реализации программы для управления клапаном на основе автоматного подхода. Приведем словесное описание алгоритма [1]. 1. При нажатии кнопки "Откр." (X1) клапан начинает открываться. 3. При нажатии кнопки "Закр." (X2) клапан начинает закрываться. 4. После его закрытия срабатывает сигнализатор закрытого положения, зажигается лампа "Закр." (X3) и управляющий сигнал с клапана (Z1) снимается. 5. Если в течение 3 с клапан не откроется или не закроется, то управляющий сигнал с клапана снимается и зажигается лампа контроля "Неисправность" (Z3). 6. Сброс сигнала контроля осуществляется нажатием кнопки "Разблок." (X5). Схема связей “источник информации – управляющий автомат – исполнительные механизмы”, задающая интерфейс автомата, приведена на рис.1. Рис. 1. Схема связей автомата Рис.2. Граф переходов автомата • список команд на включение (команда активна); • список команд на выключение (если для реализации графа переходов допускается использование команд с запоминанием – с памятью); • максимальное/минимальное время активности состояния (Tмах/Tmin). Обозначим через Si состояние автомата с номером i. Тогда для рассматриваемого примера определяем: S0 = { Z1=0; Z2=0; Z3=0; Tмах/Tmin не учитываются }; S1 = { Z2=1; Tмах= 3 c }; S2 = { Z1=1; Tмах= 3 c }; S3 = { Z3=1; Tмах/Tmin не учитываются } Переход из одного состояния графа в другое представляет собой логическое условие, которое всегда проверяется для текущего состояния. Если условие – истина, то переход выполняется. В случае множественных переходов из текущего состояния и активности одновременно нескольких условий, приоритетным будем считать тот переход, логическая функция которого должна быть вычислена по ходу выполнения программы раньше. Обозначим Tij переход из состояния Si в состояние Sj. Тогда для рассматриваемого примера получим следующие логические выражения переходов: Рассмотрим два подхода, позволяющих выполнить формализованный перевод искомого графа переходов в программный код для программируемых контроллеров. 2. Метод шаговых меток Рис.3. Составные части программы управления клапаном Управление шаговыми метками выполняется по триггерным функциям Set и Reset. При срабатывании перехода Tij текущая шаговая метка SMi сбрасывается и сразу же устанавливается новая активная метка SMj. При рестарте контроллера должна обеспечиваться установка в единицу шаговой метки, соответствующей исходному состоянию. Рис. 4. Реализация перехода Tij в блоке формирования переходов Рис.5. Компоненты блока формирования команд VAR SM : ARRAY [0 .. 3 ] OF BOOL := TRUE, 3 (FALSE) ; Для таймеров задержки будем использовать системную функцию процессора TON (SFB4), которая соответствует стандарту IEC 1131-3. Для оценки времени действия шагов один и два потребуется два таймера. Поэтому в разделе описания статической памяти блока FB объявим еще две переменные T1max и T2max с типом SFB4: VAR T1max : SFB 4; T2max : SFB 4; Для представления программы управления клапаном воспользуемся языком FBD (Function Block Diagram). Фрагмент блока формирования переходов для переходов Т 20 и Т13 приведен на рис.6. Рис. 6. Фрагмент программы для переходов Т 20 и Т13 Рис. 7. Фрагмент программы для блока формирования команд Метод шаговых блоков Рис.8. Структура программы для метода шаговых блоков Таблица 1. Типовая структура шагового блока Рассмотрим реализацию шаговых блоков для контроллеров Simatic S7. Как и в первом случае, воспользуемся блоком FB. В разделе описания статической памяти блока объявим одну переменную SW и один таймер Tmax. Массив PP логических переменных, в котором хранятся результаты переходов, разместим в разделе временных переменных. VAR SW : INT; Tmax : SFB 4; VAR_TEMP PP: ARRAY [0 .. 7 ] OF BOOL ; Используем инструкцию языка STEP7, имещую сокращение JL (Jump to Labels — множественный переход) для выбора блоков SBi (рис.9). Список переходов объявляется командами JU (Jump Unconditional – безусловный переход), расположенными вслед за командой JL и завершается командой, символьный адрес которой указывается непосредственно в инструкции JL. Выбор перехода зависит от значения аккумулятора (от 0 до 255). При нуле в аккумуляторе выбирается первая команда JU из списка, при единице – вторая и т.д. Рис.9. Фрагмент программы для вызова шагового блока Начало любого шагового блока отмечается той меткой, которая была указана в списке переходов. Секции (network) пять и шесть соответствуют действиям один и два шаблона (табл.). В них проверяются условия переходов T10 и Т13, а в случае их активности изменяется переменная SW. Секция семь отвечает за одну единственную команду шага – «открыть клапан». Все шаговые блоки должны заканчиваться передачей управления в конец программы. Рис.10. Фрагмент программы для шагового блока SB1 Заключение Использование предлагаемых методов повышает качество программного продукта и продлевает его жизненный цикл. Простота предлагаемых решений снимает извечный вопрос о понимании программных текстов и делает их доступными даже специалисту "средней" квалификации. Список литературы 3. SIMATIC. Simatic S7/M7/C7. Programmable controllers. SIEMENS. Catalog ST 70. 2002. Об авторах: Альтерман И.З. – канд. техн. наук, руководитель группы АСУТП. Шалыто А.А. – д-р техн. наук, профессор, заведующий кафедрой “Технологиии программирования” Санкт-Петербургского государственного университета информационных технологий, механики и оптики |
|
Сообщения: 463 |