Описание условий прикрепленных к переходу.
К каждому переходу пишется булево выражение, которое называют вторым уровнем перехода. Описание условие обычно выполняется на языке ST или IL. Выражение должно быть булевым (не арифметическим) и заканчиваться точкой с запятой. Когда к переходу не прикреплено условие, то оно по умолчанию питается истинным, т.е. принимает значение TRUE.
Основные достоинства SFC можно определить следующим образом.
Высокая выразительность. Язык SFC имеет те же возможности, что и диаграммы состояний, и является наиболее подходящим средством для описания динамических моделей.
Графическое представление. Благодаря графической мнемонике SFC максимально прост в использовании и изучении. Вместе с тем, он является наглядным средством представления логики на разных уровнях детализации.
Язык FBD.
FBD (Functional Block Diagram) - язык функциональных блоков (Function Block Diagrams) позволяет создать программную единицу практически любой сложности на основе стандартных кирпичиков (арифметические, тригонометрические, логические блоки, PID-регуляторы, блоки, описывающие некоторые законы управления, мультиплексоры и т.д.). Это языковое средство использует технологию инкапсуляции алгоритмов обработки данных и законов регулирования. Все программирование сводится к "склеиванию" готовых компонентов. В результате получается максимально наглядная и хорошо контролируемая программная единица.
Этот язык позволяет пользователю строить сложные процедуры обработки данных и управления объектами. В языке используются существующие библиотеки функций и связывание их в функциональную схему или диаграмму решающую данную задачу.
Блоками могут быть
- Стандартные Операторы и Функции
- Функции из секции «Functions» или библиотеки функций ISaGRAF
- Функциональные Блоки из секция «F. Blocks» или библиотеки F.Blocks ISaGRAF
- Функции C или Функциональные блоки C из библиотеки ISaGRAF.
Основной формой представления функциональных блоков являются следующие изображения.
Входные и выходные переменные присоединяются к блоку линиями соединения.
Подключение блока:
Входом блока может быть
- Входная переменная
- Внутренняя переменная
- Константа
- Выходная переменная
Выходом блока может быть
- Внутренняя переменная
- Выходная переменная
Левые и правые части линии соединения должны иметь тот же самый тип переменной.
Прямое и обратное простые подключения
Прямое подключение
Инверсное подключение
Множественные подключения
Используются для широковещательной передачи информации от левого края до каждого правого края
Пример описания алгоритма.
Рассмотрим функциональный блок выполняющий функцию “контроль граничных значений”.
X- входная переменная , любое вещественное аналоговое значение.
H- значение верхней границы.
L- значение нижней границы.
EPS- величина гистерезиса должна быть больше нуля.
Q-сигнал выхода значения входной переменной X за заданные границы.
QH-сигнал достижения верхней границы , TRUE если X > H.
QL- сигнал достижения нижней границы , TRUE если X < H.
Гистерезис применяется к верхней и нижней границе.
Пример программы.
Язык LD.
LD (Ladder Diagram) - графический язык программирования, являющийс стандартизованным вариантом класса языков релейно-контактных схем. Логические выражения на этом языке описываются в виде реле, которые широко применялись в области автоматизации в 60-х годах. Ввиду своих ограниченных возможностей язык дополнен привнесенными средствами: таймерами, счетчиками и т.п. Происхождение: различные варианты языка релейно-контактных схем (Allen-Bradley, AEG Schneider Automation, GE-Fanuc, Siemens).
Присутствие в стандарте языка LD определяется, скорее всего, данью традициям: для релейной техники было разработано огромное количество оборудования и алгоритмов. Сегодня, имея типовой набор цифрового ввода/вывода, можно создавать управляющие системы на отлаженной годами алгоритмической базе.
Это графическое представление булевых функций содержащее контакты (входные переменные) и обмотки (выходные переменные). Графические символы языка LD очень похожи на изображение в релейно-контактных схемах, при этом приняты следующие условные изображения.
Для изображения входных контактов существует несколько символов:
Прямой(замыкающий)
Обратный контакт(размыкающий)
Контакт с обнаружением нарастания фронта
Контакт с обнаружением падающего фронта
Контакт с обнаружением положительного фронта
Значение правого края TRUE, если BOO1(предыдущее) = FALSE и BOO1(текущее) = TRUE
Контакт с обнаружением отрицательного фронта
Значение правого края TRUE, если BOO1(предыдущее) = TRUE и BOO1(текущее) = FALSE
Используется несколько типов обмоток:
Прямая обмотка
Обратная обмотка
Катушка с обнаружением положительного фронта
Out1 устанавливается в TRUE, когда булево состояние левого подключения меняется от FALSE к TRUE.
Выходная переменная сбрасывается в FALSE во всех других случаях
Катушка с обнаружением отрицательного фронта
Out1 устанавливается в TRUE, когда булево состояние левого подключения меняется от TRUE к FALSE
Выходная переменная сбрасывается в FALSE во всех других случаях
Пример на языке LD.
Output 1 – равен TRUE , если Input 1= TRUE
Output 1 – равен FALSE , если Input 2 = TRUE
Output 2 – равен TRUE , если Input 1 + Input 2 = TRUE
Язык ST.
ST (Structured Text) - текстовый высокоуровневый язык общего назначения, по синтаксису ориентированный на Паскаль. Происхождение: Grafcet (Telemechanique-Groupe Schneider). Язык по умолчанию используется для описания действий внутри шагов и переходов.
Основной синтаксис языка.
Программа на языке ST это список операторов, каждый из которых заканчивается «;».
В программе имена переменных и констант разделяются либо неактивными разделителями: ENTER, ТАБ, либо активными, которые имеют заранее определённое значение (например, разделители “<“, “>“...). Комментарии могут вставляться в текст произвольным образом и оформляются следующим образом: ( * комментарий * ).
Основные операторы языка.
v ( ) - для выделения частей выражения с целью изменения приоритета выполнения операций , в их отсутствии используется приоритет по умолчанию.
v Булевы операторы: NOT , AND , OR , XOR ,
REDGE – обнаружение переднего фронта ,
FEDGE – обнаружение спада или заднего фронта.
v Арифметические операторы:
+ сложение , - вычитание , умножение , / деление.
v Операторы сравнения: < , > , = , <> , <= , >= .
v := - присваивает переменной значение некоторого выражения или константы:
< переменная > := <любое выражение или константа >
X1:= a+b.
Переменная должна быть внутренней или входной , также иметь один тип с выражением.
v Return завершает выполнение текущей программы.
v Условное действие IF...END_IF
Простейшая форма (инструкция выполняет действие, если условие истинно).
IF условие THEN действия;
END_ IF;
Полная форма
IF условие1 THEN действие1;
ELSIF условие2 THEN действие 2;
ELSE действие3;
END_IF;
v WHILE – это циклическая структура для группы операторов на языке ST , условие продолжения которой вычисляется до каждой итерации.
while < условие > do
< оператор 1 >;
< оператор 2 >;
end_while;
Инструкция выполняет повторно действие пока условие истинно.
— Условие проверяется до выполнения действия. Если при первой проверке условие ложно, то действие не выполняется ни разу.
— Допускается вложение различных управляющих структур WHILE.
Примечание.
Т.к. система программирования и исполнения программ на языке ST является циклической синхронизации, то исходные переменные не обновляются в течение операции while и следовательно изменение состояния входной переменной не может быть использовано для описания условия оператора while.
v REPEAT – циклическая структура , условие продолжения которой вычисляется после каждой итерации .
Repeat
< оператор 1 >;
< оператор 2 >;
until < условие >;
end_repeat;
Инструкция выполняет повторно действие до момента, когда условие станет истинно.
Примечание аналогичное для while.
v FOR - выполняет ограниченное количество итераций , используя целочисленную переменную (integer) для ограничения.
for < index > := < min > to < max > by <step >
do < оператор 1 >;
< оператор 2 >;
end_for;
где index – внутренняя переменная , step – шаг изменения переменной (при отсутствии равно 1).
Инструкция выполняет обработку операции определенное количество раз, увеличивая индекс на 1 в каждом цикле.
FOR индекс: = начальное значение ТО конечное значение DO
действие;
END_FOR;
— Когда индекс строго больше конечного значения, выполнение программы продолжается с инструкции, следующей за ключевым словом END_FOR.
— Индекс увеличивается автоматически, без участия пользователя.
— Действие представляется списком инструкций.
— Начальное значение и конечное значение могут быть цифровыми выражениями типа 'слово'.
— Индекс может быть объектом типа 'слово', который доступен в режиме чтения.
— Допускается вложение различных управляющих структур FOR.
v Множественный выбор CASE
Оператор CASE позволяет выполнить разные действия, в зависимости от значения целочисленной переменной:
Оператор множественного выбора CASE позволяет выполнить различные группы выражений в зависимости от значения одной целочисленной переменной или выражения. Синтаксис:
CASE <целочисленное выражение> OF
<значение 1>: <выражения 1>;
<значение 2>, <значение 3>: <выражения 3>;
<значение 4>..<значение 5>: <выражения 4>;
ELSE
<выражения ELSE>;
END_CASE;
Если значение выражения совпадает с заданной константой, то выполняется соответствующая группа выражений. Прочие условия не анализируются (<значение 1>: <выражения 1>;).
Если несколько значений констант должны соответствовать одной группе выражений, их можно перечислить через запятую (<значение 2> , <значение 3>: <выражения 3>;).
Диапазон значений можно определить через двоеточие (<значение 4>..<значение 5>: <выражения 4>;).
Группа выражений ELSEявляется необязательной. Она выполняется при несовпадении ни одного из условий (<выражения ELSE>;).
Пример:
CASE byLeft/2 OF
0,127: bReset := TRUE; Varl := 0;
16..24: Varl := 1;
ELSE
Varl := 2;
END_CASE;
Значениями выбора CASE могут быть только целые константы, переменные использовать нельзя. Одинаковые значения в альтернативах выбора задавать нельзя, даже в диапазонах. Так, следующий пример обязан вызвать ошибку при трансляции:
CASE byLeft OF
20: Varl := 0;
16..24: Varl := 1;
END_CASE;
Безусловно, оператор CASE «слабее» оператора IF, не имеющего подобных ограничений. Но формат CASE не только выразителен для программиста, но и более эффективен. Использование целочисленных констант позволяет транслятору выполнить оптимизацию кода, часто весьма существенную (ПЕТРОВ).
v EXIT
— Ключевое слово EXIT используется для остановки вычислений в цикле и продолжения с инструкции, следующей за ключевым словом конца цикла.
— Оно может быть использовано только внутри одного из трех циклов: WHILE, REPEAT или FOR.
— Оно прерывает выполнение ближайшего цикла, т.е. не останавливает выполнение других окружающих его циклов.
v Операторы управления таймерными параметрами.
TSTART пуск обновление таймерной переменной, после выполнения этого оператора таймерная переменная наращивается на каждом временном цикле выполнения программы вплоть до остановки оператором TSTOP.
Пример программы на ST.
Вариант 1:
if input1 then output1:=true;
end if;
if input2 then output1:=false;
end if;
output2:= input1 or input2;
Вариант 2
bol:=(bol1 OR bol2) AND NOT(bol3)
Язык IL
Дата добавления: 2020-08-31; просмотров: 531;