ВУЗ: Пермский национальный исследовательский политехнический университет
Категория: Лекция
Дисциплина: Системы реального времени
Добавлен: 15.11.2018
Просмотров: 854
Скачиваний: 20
Ст. преп. каф. ИТАС Фёдоров Андрей Борисович
версия документа 2018-01-11
6
Текст программы состоит из нескольких строк, каждая из которых содержит одну
операцию (инструкцию процессора). Т.о. программа представляет собой пошаговый
список инструкций, который легко приводим к последовательности математических
формул. В таблице 1 представлены инструкции языка IL.
Таблица 1 – Список инструкций языка IL
№
Инструк-
ция
Модифи-
катор
Тип данных
операнда
Действие
1 LD
N
Любой
Присвоить аккумулятору значение операнда
2 ST
N
Любой
Присвоить значение аккумулятора операнду
3 S
Логический
Присвоить лог. операнду значение ИСТИНА
4 R
Логический
Присвоить лог. операнду значение ЛОЖЬ
5 AND
N, (
Логический
Логическое И
6 OR
N, (
Логический
Логическое ИЛИ
7 XOR
N, (
Логический
Исключающее логическое ИЛИ
8 ADD
(
Любой
Сложение
9 SUB
(
Любой
Вычитание
10 MUL
(
Любой
Умножение
11 DIV
(
Любой
Деление
12 GT
(
Любой
Сравнение с содержимым аккумулятора: >
13 GE
(
Любой
Сравнение с содержимым аккумулятора: >=
14 EQ
(
Любой
Сравнение с содержимым аккумулятора: =
15 NE
(
Любой
Сравнение с содержимым аккумулятора: <>
16 LE
(
Любой
Сравнение с содержимым аккумулятора: <=
17 LT
(
Любой
Сравнение с содержимым аккумулятора: <
18 JMP
C, N
Имя метки
Переход на метку
19 CAL
C, N
Имя функции
Вызов функции
20 RET
C, N
Возврат из функции или блока
21 )
Окончание вложенной операции
Пример программы на языке IL приведён на рисунке 4:
LD X1
(* загрузить в аккумулятор значение X1 *)
SUB X2
(* из X1 вычесть X2 *)
ST Y
(* загрузить в Y результат выполнения X1-X2 *)
MUL Y
(* умножить Y на Y *)
ST Result
(* сохранить результат операций в Result *)
GT Max
(* значение Result > Max? *)
JMPC TEST_OK (* *)
TEST_OK: LD 100
(* *)
Рисунок 4 – Пример программы на языке IL
Перед оператором может находиться метка, оканчивающаяся двоеточием « : ».
Комментарий должен быть последним элементом в строке.
В IL можно использовать следующие модификаторы (см. таблицу 2):
Таблица 2 – Применение модификаторов с операторами
Модификатор с инструкциями
Описание
С
с
JMP
,
CAL
,
RET
инструкция выполняется только тогда, когда результат
аккумулятора ИСТИНА
N
с
JMPC
,
CALC
,
RETC
инструкция выполняется тогда, когда результат аккумулятора
ЛОЖЬ
N
в других случаях: отрицание операнда
Ст. преп. каф. ИТАС Фёдоров Андрей Борисович
версия документа 2018-01-11
7
Т.к. IL является языком нижнего уровня, то программы, написанные на нем,
работают быстрее аналогов, созданных с помощью графических языков. Также программа
занимает меньше памяти по сравнению с остальными языками.
Несмотря на вышеперечисленные достоинства, язык имеет ряд существенных
недостатков. Во-первых, язык ненагляден по сравнению с графическими языками, и
поэтому сложно понять, что делает программа и какие ошибки могут возникнуть. Во-
вторых, по мере усложнения ПЛК в списке инструкций могут возникнуть сложности при
вводе некоторых функций, например, ПИД-регулирование [5].
Использование языка IL постепенно снижается. К тому же он был исключен из
списка языков МЭК 61131-3 в 3-й редакции стандарта.
Паскале-подобный язык Structured Text (ST)
Язык Structured Text (ST) – второй из текстовых языков программирования
стандарта МЭК 61131-3. Его синтаксис очень похож на Паскаль.
В таблице 3 представлены основные языковые конструкции.
Таблица 3 – Основные языковые конструкции языка ST
№
Выражение
Пример
1 Присваивание
A:= B;
CV:= CV+1;
C:= SIN(X);
2 Вызов функции или процедуры
CMD_TMR(IN:= %IX5, PT:= T#300ms);
A:= CMD_TMR.Q;
3 Возврат RETURN
RETURN;
4 Конструкция IF
D:= B * B – 4 * A * C;
IF D < 0.0 THEN NROOTS:= 0;
ELSIF D = 0.0 THEN
NROOTS:= 1;
X1:= -B / (2.0 * A);
ELSE
NROOTS:= 2;
X1:= (-B + SQRT(D)) / (2.0 * A);
X2:= (-B - SQRT(D)) / (2.0 * A);
END_IF;
5 Конструкция CASE
TW:= BCD_TO_INT(THUMBWHEEL);
TW_ERROR:= 0;
CASE TW OF
1,5: DISPLAY:= OVEN_TEMP;
2: DISPLAY:= MOTOR_SPEED;
3: DISPLAY:= GROSS - TARE;
4,6..10: DISPLAY:= STATUS(TW - 4);
ELSE DISPLAY:= 0;
TW_ERROR:= 1;
END_CASE;
QW100:= INT_TO_BCD(DISPLAY);
Ст. преп. каф. ИТАС Фёдоров Андрей Борисович
версия документа 2018-01-11
8
6 Цикл FOR
J:= 101 ;
FOR I:= 1 TO 100 BY 2 DO
IF WORDS[I] = 'KEY' THEN
J:= I;
EXIT;
END_IF;
END_FOR;
7 Цикл WHILE
J:= 1;
WHILE J <= 100 & WORDS[J] <> 'KEY' DO
J:= J + 2;
END_WHILE;
8
Цикл
REPEAT
(аналог
DOWHILE)
J:= -1;
REPEAT
J:= J + 2 ;
UNTIL J = 101 OR WORDS[J] = 'KEY'
END_REPEAT;
9 EXIT (выход)
EXIT;
10 Пустой оператор
;
На рисунке 5 представлен пример программы на языке ST.
Рисунок 5 – Пример программы на языке ST
Ещё один короткий пример программы ST представлен на рисунке 6:
WHILE A >= B DO
A:= A - B
END_WHILE;
Result:= A;
Рисунок 6 – Ещё один пример программы на языке ST
Этот язык лучше всего подходит для сложного программирования ПЛК.
Тригонометрические функции, математические вычисления и анализ данных на этом
языке можно реализовать легче, чем на языке релейно-контактных схемах или языке
списка инструкций. Текстовый, неграфический характер языка ST, похожего на язык IL,
Ст. преп. каф. ИТАС Фёдоров Андрей Борисович
версия документа 2018-01-11
9
позволяет создавать программы, которые работают гораздо быстрее, чем программа
созданные на графических языках. Дополнительным преимуществом языка ST является
то, что он ближе других языков программирования подошел к достижению
переносимости, обещанной стандартом МЭК 61131. Окончательным преимуществом
является то, что многие студенты инженерных специальностей лучше владеют
компьютерными языками, чем основами электротехники, и поэтому лучше владеют
языком ST, чем, например, LD.
Недостаток языка ST заключается в том, что для многих старых специалистов в
области программирования и отладки среда языка ST является чем-то незнакомым и
неудобным. В определенном смысле, код и структура необходимые, чтобы сделать
поддержку этого кода удобной, снижают преимущества, связанные с компактностью
программ. В результате основной тенденцией использования языка ST является его
использование так сказать «за сценой». Например, МЭК 61131 позволяет программисту
реализовать функции на одном языке, а затем использовать их в другом языке. Таким
образом, программист, скорее всего, включит программу на языке ST внутрь команды,
вызываемой на языке LD. Это не обязательно является недостатком, но программисту
понадобится тщательно протестировать любой «скрытый» код, и удостовериться в
отсутствии ошибок, поскольку у других, кто будет использовать этот код, возможно
доступа к данному коду не будет [5].
Будущее стандарта МЭК 61131-3 связывается со стандартизацией форматов
программных файлов, что обеспечит возможность обмена пакетами функциональных
блоков между различными платформами и позволит реально перейти к модульному
программированию – созданию больших систем из готовых пакетов. Второе направление
развития – использование в распределенных управляющих системах функциональных
блоков за пределами программируемых контроллеров. С этой целью был создан
стандарт IEC TC65/WG6, в котором концепции IEC 61131-3 применены к стандарту
Fieldbus и который определяет, каким образом средства связи могут объединяться с
прикладным ПО.
Вопросы для самоконтроля:
1)
Список использованных источников
1) Системы реального времени: учебное пособие / А.М. Сулейманова. – Уфа: Уфимск.
гос. авиац. техн. ун-т. Уфа, 2004. – 292 с.
2) Петров И.В. Программируемые контроллеры. Стандартные языки и приемы
прикладного проектирования / Под ред. проф. В.П. Дьякова – М.: СОЛОН-Пресс,
2004.- 256 с: ил.
3) Lewis R.W. Programming industrial control systems using IEC 113-3 Revised edition. - The
Institution of Electrical Engineers, London, 1998. - 329 с.
Ст. преп. каф. ИТАС Фёдоров Андрей Борисович
версия документа 2018-01-11
10
4) Системы программирования на языках МЭК 61131-3 / Энциклопедия АСУ ТП
[Электронный
ресурс].
URL:
http://www.bookasutp.ru/Chapter9_3.aspx
(дата
обращения: 17.05.2014)
5) Понимание языков программирования IEC61131-3/ Про АСУ ТП. Профессионально и
в
деталях
[Электронный
ресурс].
URL:
http://proasutp.com/articles/plc/understanding_the_iec61131_3_programming_languages.ht
ml (дата обращения: 18.05.2014)
6) Системы реального времени: обзорный курс лекций / К.Е. Климентьев. – Самара:
Самар. гос. аэрокосм. ун-т. Самара, 2008. – 45 с.
7) IEC
61131-3
/
Википедия
[Электронный
ресурс].
URL:
https://ru.wikipedia.org/wiki/IEC_61131-3 (дата обращения: 26.11.2017)