Файл: Лекция 4 по СРВ (Стандарт программирования ПЛК).pdf

Добавлен: 15.11.2018

Просмотров: 709

Скачиваний: 20

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Ст. преп. каф. ИТАС Фёдоров Андрей Борисович 

 

версия документа 2018-01-11 

 

Текст программы состоит из нескольких строк, каждая из которых содержит одну 

операцию  (инструкцию  процессора).  Т.о.  программа  представляет  собой  пошаговый 
список  инструкций,  который  легко  приводим  к  последовательности  математических 
формул. В таблице 1 представлены инструкции языка IL. 

Таблица 1 – Список инструкций языка IL 

№ 

Инструк-

ция 

Модифи-

катор 

Тип данных 

операнда 

Действие 

1  LD 

Любой 

Присвоить аккумулятору значение операнда 

2  ST 

Любой 

Присвоить значение аккумулятора операнду 

3  

 

Логический 

Присвоить лог. операнду значение ИСТИНА 

4  

 

Логический 

Присвоить лог. операнду значение ЛОЖЬ 

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

 

в других случаях: отрицание операнда 


background image

Ст. преп. каф. ИТАС Фёдоров Андрей Борисович 

 

версия документа 2018-01-11 

 

Т.к.  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); 


background image

Ст. преп. каф. ИТАС Фёдоров Андрей Борисович 

 

версия документа 2018-01-11 

 

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; 

Цикл 

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, 


background image

Ст. преп. каф. ИТАС Фёдоров Андрей Борисович 

 

версия документа 2018-01-11 

 

позволяет  создавать  программы,  которые  работают  гораздо  быстрее,  чем  программа 
созданные  на  графических  языках.  Дополнительным  преимуществом  языка  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 с. 


background image

Ст. преп. каф. ИТАС Фёдоров Андрей Борисович 

 

версия документа 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)