
- •Алматы 2012
- •Введение
- •Лабораторная работа №1. Знакомство с языком программирования контроллеров unity pro
- •1.1 Основные теоретические сведения
- •1.1.1 Интерфейс пользователя программы Unity Pro
- •1.3 Понятие эмулятор плк
- •1.3 Порядок выполнения лабораторной работы №1. Создание конфигурации контроллера и конфигурации сети.
- •1.5 Контрольные вопросы
- •Лабораторная работа №2 построение систем логического управления на языке ld (ladder diagram)
- •2.2 Пример решения задачи на языке ld
- •2.3 Пример работы комибинированной программы на языке ld c использованием функционального блока
- •2.4 Порядок выполнения лабораторной работы №2. Решение задач на языке ld.
- •2.6 Контрольные вопросы
- •3.1 Основные теоретические сведения
- •3.1.1 Свойства программы fbd
- •3.2 Пример решения задачи на языке fbd
- •3.3 Порядок выполнения лабораторной работы №3
- •3.5 Контрольные вопросы
- •4.1 Основные теоретические сведения
- •4.2 Пример решения задачи на языке st
- •Порядок выполнения лабораторной работы на st
- •Язык программирования il
- •Порядок выполнения лабораторной работы на il
- •4.7 Контрольные вопросы
- •5.1 Основные теоретические сведения
- •5.2 Пример решения задачи на языке sfc
- •Порядок выполнения работы №5 на языке sfc
- •5.5 Контрольные вопросы
- •6.1 Основные теоретические сведения
- •Порядок выполнения работы №6
- •6.4 Контрольные вопросы
- •Список литературы
- •Объектно ориентированное программирование
4.7 Контрольные вопросы
Охарактеризуйте язык структурированного текста ST.
Что такое выражение, оператор, операнд на языке ST?
Какое утверждение используется в языке ST для завершения утверждения повторения (FOR, WHILE, REPEAT) прежде, чем конечное условие будет выполнено?
Охарактеризуйте язык списка инструкций IL.
Для чего служат модификаторы в языке IL?
Что такое оператор в языке IL?
Перечислите основные достоинства и недостатки языков ST и IL.
ЛАБОРАТОРНАЯ РАБОТА №5 ПОСТРОЕНИЕ СХЕМЫ ЛОГИЧЕСКОГО УПРАВЛЕНИЯ НА ЯЗЫКЕ
ПРОГРАММИРОВАНИЯ SFC
Цель лабораторной работы: Получение навыков программирования контроллеров на языке SFC.
5.1 Основные теоретические сведения
5.1.1 Язык программирования SFC
SFC ( Series functional charts - последовательность функциональных диаграмм) — графический язык программирования стандарта МЭК 611131-3, является графическим языком, в котором программа описывается в виде схематической последовательности шагов, объединенных переходами. Язык SFC построен по принципу, близкому к концепции конечного автомата, что делает его одним из самых мощных языков программирования.
Наиболее простым и естественным образом на языке SFC описываются технологические процессы, состоящие из последовательно выполняемых шагов, с возможностью описания нескольких параллельно выполняющихся процессов, для чего в языке имеются специальные символы разветвления и слияния потоков.
Шаги последовательности располагаются вертикально сверху вниз. На каждом шаге выполняется определенный перечень действий (операций). При этом для описания самой операции используются другие языки программирования, такие как IL или ST.
Действия (операции) в шагах имеют специальные классификаторы, определяющие способ их выполнения внутри шага: циклическое выполнение, однократное выполнение, однократное выполнение при входе в шаг и т.д. В сумме таких классификаторов насчитывается девять, причем среди них есть, например, классификаторы так называемых сохраняемых и отложенных действий, заставляющие действие выполняться даже после выхода программы из шага.
После того, как шаг выполнен, управление передается следующему за ним шагу. Переход между шагами может быть условным и безусловным.
Условный переход требует выполнения определенного логического условия для передачи управления на следующий шаг; пока это условие не выполнено программа будет оставаться внутри текущего шага, даже если все операции внутри шага уже выполнены.
Безусловный переход происходит всегда после полного выполнения всех операций на данном шаге. С помощью переходов можно осуществлять разделение и слияние ветвей последовательности, организовать параллельную обработку нескольких ветвей или заставить одну выполненную ветвь ждать завершения другой.
Как и любому другому языку, SFC свойственны некоторые недостатки. Хотя SFC может быть использован для моделирования конечных автоматов, его программная модель не совсем удобна для этого.
Это связано с тем, что текущее состояние программы определяется не переменной состояния, а набором флагов активности каждого шага, в связи с чем при недостаточном контроле со стороны программиста могут оказаться одновременно активными несколько шагов, не находящихся в параллельных потоках. Еще одно неудобство языка связано с тем, что шаги графически располагаются сверху вниз, и переход, идущий в обратном направлении, изображается в неявной форме, в виде стрелки с номером состояния, в которое осуществляется переход.
Макросекция (рисунок 5.1) состоит из одной строки последовательности, имеющей принципиально те же элементы, как и секция "контроля последовательности" (т.е. шаги, начальный шаг[и], макрошаги, переходы, ветви, соединение и т.п.). Дополнительно, каждая макросекция содержит входной шаг в начале и выходной шаг в конце. Каждый макрошаг может быть заменен строкой последовательности в выделенной макросекции. Поэтому макросекции могут содержать 0, 1 или более начальных шагов.
Название макросекции идентично названию макрошага, из которого она вызывалась. Если название макрошага изменилось, название макросекции изменяется автоматически. Макросекция может использоваться только однажды.
Рисунок 5.1 Принцип использования макросекций на языке SFC
Таблица 5.1 Типы шагов в языке SFC
№ |
Тип |
Изображение |
Описание
|
1 |
"Нормальный" шаг |
|
Шаг становится активным, когда предыдущий шаг становится неактивным (задержка может быть определена) и вышерасположенный переход исполнен. «Нормальный» шаг становится неактивным, когда закончилась определенная задержка и нижерасположенный переход выполнен. Для параллельного соединения все предыдущие шаги должны удовлетворять этим условиям. Ноль или более действий принадлежат каждому шагу. Шаги без действий известны как шаги ожидания.
|
2 |
Начальный шаг |
|
Начальный статус строки последовательности характеризуется начальным шагом. После инициализации проекта или инициализации строки последовательности начальный шаг становится активным.
|
3 |
Макрошаг |
|
Макрошаги используются для вызова макросекций и для иерархического структурирования последовательного контроля.
|
4 |
Входной шаг |
|
Каждая макросекция начинается со входного шага.
|
5 |
Выходной шаг |
|
Каждая макросекция заканчивается выходным шагом. |
Рисунок 5.2 Структура секции на языке SFC
Переход и условие перехода. Переход обеспечивает условие, на которое проверяется один или более шагов перед переходом, и происходит переход к одному или более последующему шагу по соответствующей ссылке (таблица 5.2). Каждому переходу выделяется условие перехода данных типа BOOL.
Тип условия перехода определяет положение имени:
Таблица 5.2 Сведенья о переходах языка SFC
№ |
Условие перехода |
Положение имени |
1 |
Адрес, переменная
|
|
2 |
Литерал
|
|
3 |
Секция перехода
|
|
Прыжок. Прыжки используются для указания прямых связей, которые не изображены в полную длину. Изображение прыжка:
Связи. Стандартный сигнальный поток в строке последовательности идет сверху вниз. Для создания петель связи могут быть сделаны снизу к верхнему шагу. Это применимо к связям от переходов, параллельных ветвей или альтернативных соединений к шагу. В этих случаях направление связи указывается символом стрелки.
Альтернативная ветвь (рисунок 3,а) предлагает возможность программировать ветви в зависимости от управляющего потока структуры SFC. Для альтернативных ветвей, столько переходов следуют за шагом под горизонтальной линией, сколько есть различных процессов. Все альтернативные ветви объединяются в одну ветвь при помощи альтернативного соединения или прыжков, где они выполняются далее.
а) б)
Рисунок 5.3 а) альтернативная последовательность б) параллельная последовательность на языке SFC
Для параллельных ветвей (рисунок 5.3,б) переключение одиночного перехода ведет к параллельному активированию более одного (максимум 32) шага (ветвей). Выполнение слева направо.