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

Добавлен: 15.11.2018

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

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

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

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

 

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

 

Системы реального времени 

Лекция 3 

Стандарт программирования ПЛК 

Использование даже простых, но полномасштабных компьютерных конфигураций 

на  нижних  уровнях  промышленных  систем  для  непосредственного  управления 
оборудованием  невыгодно  как  по  экономическим  соображениям,  так  и  по  причине 
избыточной  сложности.  В  системах  автоматизации  для  этого  традиционно  применяются 
более простые и дешевые устройства – программируемые логические контроллеры (ПЛК)
В  первом  поколении  ПЛК  представляли  собой  релейные  схемы,  вырабатывающие 
сигналы  для  оборудования  по  правилам  булевой  логики.  Сегодня  они  стали  более 
интеллектуальными [1]. 

Одним  из  главных  требований  к  ПЛК  всегда  была  и  остается  возможность  его 

эксплуатации  существующим  техническим  персоналом  и  возможность  быстрой  замены 
старого  оборудования.  Поэтому  языки  программирования  компьютеров  и  встраиваемых 
микропроцессорных  систем  управления  плохо  подходят  для  программирования  ПЛК. 
Здесь нужны более простые и наглядные языки, позволяющие излагать задачу в близких к 
применяемым  технологиям  категориях.  Привлечение  же  к  программированию 
специализированной  фирмы  неизбежно  порождает  зависимость,  если  реализация  не 
является  достаточно  прозрачной.  Сложный  язык  программирования  ПЛК  снижает  его 
шансы на конкурентном рынке существенно больше, чем массогабаритные показатели [2]. 

С  целью  повышения  скорости  и  качества  разработки  программ  для  ПЛК  в  1979 

году  в  рамках  Международной  электротехнической  комиссии  (МЭК)  была  создана 
специальная  группа  технических  экспертов  по  проблемам  ПЛК,  включая  аппаратные 
средства, монтаж, тестирование, документацию и связь. В 1982 году был выпущен первый 
вариант  стандарта  МЭК  61131  (IEC  61131  или  IEC  1131),  а  всего  на  текущий  момент 
времени было выпущено 3 редакции. Стандарт включает в себя 8 частей: 

1)  Общая информация. 
2)  Требования к оборудованию и тестам. 
3)  Языки программирования. 
4)  Руководства пользователя. 
5)  Спецификация сообщений. 
6)  Промышленные сети. 
7)  Программирование с нечеткой логикой. 
8)  Руководящие принципы применения и реализации языков ПЛК. 

Рассмотрим  более  подробно  3-ю  часть  стандарта  (МЭК  61131-3).  В  этой  части 

описаны 5 языков программирования ПЛК. Среди них три графических и два текстовых. 
К  графическим  языкам  относятся:  язык  релейных  схем,  язык  функциональных  блоков, 
язык  диаграмм  состояний.  К  текстовым  –  assembler-подобный  язык  Instruction  List  и 
паскале-подобный язык Structured Text. 


background image

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

 

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

 

Такое количество языков программирования ПЛК, определённое стандартом МЭК 

61131-3,  объясняется  тем,  что  при  разработке  стандарта  было  обнаружено  так  много 
вариаций  языков  контроллеров,  что  оказалось  невозможно  выбрать  какой-то  один  язык 
программирования как базовый [1]. 

Языки программирования ПЛК 

Языки стандарта МЭК 61131-3 базируются на следующих принципах [3]: 

  вся программа разбивается на множество функциональных элементов - Program 

Organization  Units  (POU),  каждый  из  которых  может  состоять  из  функций, 
функциональных  блоков  и  программ.  Любой  элемент  программы  может  быть 
сконструирован иерархически из более простых элементов; 

  стандарт требует строгой типизации данных. Указание типов данных позволяет 

легко обнаруживать большинство ошибок в программе до ее исполнения; 

  имеются  средства  для  исполнения  разных  фрагментов  программы  в  разное 

время,  с  разной  скоростью,  а  также  параллельно.  Например,  один  фрагмент 
программы может сканировать концевой датчик с частотой 100 раз в секунду, в 
то время как второй фрагмент будет сканировать датчик температуры с частотой 
один раз в 10 сек; 

  для выполнения операций в определенной последовательности, которая задается 

моментами  времени  или  событиями,  используется  специальный  язык 
последовательных функциональных схем (SFC); 

  стандарт обеспечивает совместное использование всех пяти языков, поэтому для 

каждого фрагмента задачи может быть выбран любой, наиболее удобный, язык; 

  программа,  написанная  для  одного  контроллера,  может  быть  перенесена  на 

любой контроллер, совместимый со стандартом МЭК 61131-3. 

Все языки, включенные в стандарт  МЭК 61131-3, можно комбинировать.  Полная  

реализация    МЭК  61131-3    доступна    как    коммерческий  продукт:    например,  это 
инструментальная  графическая  среда  разработки  прикладных  программ  для 
программируемых  логических  контроллеров    ISaGRAF  производства  фирмы  Rockwell 
Automation  (Милуоки,  штат  Висконсин,  США),  инструментальный  программный 
комплекс  промышленной  автоматизации  CODESYS  фирмы  3S-Smart  Software  Solutions 
GmbH  (Кемптен,  Германия),  среда  разработки  MULTIPROG  фирмы  Advantech  и  другие 
[7]. 

Язык релейных схем (Ladder Diagram, LD) 

Язык релейных или релейно-контактных схем (Ladder Diagram, LD) – графический 

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


background image

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

 

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

 

 

Рисунок 1 – Пример программы на языке LD 

Основными  элементами  языка  являются  контакты  и  катушки.  Различаются 

нормально замкнутые и нормально разомкнутые контактные элементы, которые можно 
сопоставить  с  нормально  замкнутыми  и  нормально  разомкнутыми  кнопками  в 
электрических цепях. 

  ─┤├─ Нормально разомкнутый контакт. 

Разомкнут  при  значении  ложь,  назначенной  ему  переменной  и  замыкается  при 
значении истина. 

  ─┤/├─ Нормально замкнутый контакт. 

Замкнут,  если  переменная  имеет  значение  ложь,  и  разомкнут,  если  переменная 
имеет значение истина. 

  ─( )─ Катушка. 

Итог  логической  цепочки  копируется  в  целевую  переменную,  которая 
называется  катушка  (англ.  coil).  Это  слово  имеет  обобщенный  образ 
исполнительного  устройства,  поэтому  в  русскоязычной  документации  обычно 
говорят о выходе цепочки, хотя можно встретить и частные значения термина, 
например катушка реле. 

Конкретные версии языка реализуются обычно в рамках программных продуктов, 

для  работы  с  определенными  типами  ПЛК.  Часто  такие  реализации  содержат  команды, 
расширяющие  множество  стандартных  команд  языка,  что  вызвано  желанием 
производителя полнее учесть желания заказчика, но в итоге приводят к несовместимости 
программ, созданных для контроллеров различных типов. 

Однако  язык  LD  проблематично  использовать  для  реализации  сложных 

алгоритмов,  поскольку  он  не  поддерживает  подпрограммы,  функции,  инкапсуляцию  и 
другие  средства  структурирования  программ  с  целью  повышения  качества 
программирования. 

Эти 

недостатки 

затрудняют 

многократное 

использование 

программных компонентов, что делает программу длинной и сложной для обслуживания. 
Сложные  вычисления  в  этом  языке  невозможны.  Недостатком  является  также  то,  что 
только  маленькая  часть  программы  умещается  на  мониторе  компьютера  или  панели 
оператора при программировании.  


background image

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

 

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

 

Несмотря  на  указанные  недостатки,  язык  LD  относится  к  наиболее 

распространенным  в  мире  [3],  хотя  чаще  всего  используется  для  программирования 
только простых задач. 

Язык функциональных блоков (Function Block Diagram, FBD) 

Язык функциональных блоков (Function Block Diagram, FBD) является графическим 

языком и наиболее удобен для программирования процессов прохождения сигналов через 
функциональные  блоки.  Язык  FBD  удобен  для  схемотехников,  которые  легко  могут 
составить  электрическую  схему  системы  управления  на  «жесткой  логике»,  но  не  имеют 
опыта программирования.  

Функциональные блоки представляют собой фрагменты программ, написанных на 

IL,  SFC  или  других  языках,  которые  могут  быть  многократно  использованы  в  разных 
частях  программы  и  которым  соответствует  графическое  изображение,  принятое  при 
разработке функциональных схем электронных устройств (см. рисунок 2). 

 

Рисунок 2 – Пример программы на языке FBD 

Язык  FBD  может  быть  использован  для  программирования  функций, 

функциональных  блоков  и  программ,  а  также  для  описания  шагов  и  переходов  в  языке 
SFC.  Функциональные  блоки  инкапсулируют  данные  и  методы,  чем  напоминают 
объектно-ориентированные языки программирования, но не поддерживают наследование 
и полиморфизм. 

Типичным  применением  языка  FBD  является  описание  «жесткой  логики»  и 

замкнутых контуров систем управления. Язык функциональных блоков является удобным 
также для создания и пополнения библиотеки типовых функциональных блоков, которую 
можно  многократно  использовать  при  программировании  задач  промышленной 
автоматизации.  К  типовым  блокам  относятся  блок  таймера,  ПИД-регулятора,  блок 
секвенсора, триггера, генератора импульсов, фильтра, и т.п. [4] 

Язык диаграмм состояний (Sequential Function Chart, SFC) 

Графический  язык  диаграмм  состояний  (Sequential  Function  Chart,  SFC)  создан  на 

базе математического аппарата сетей Петри, описывающий последовательность состояний 
и  условий  переходов.  Для  создания  программы  используются  следующие  структурные 
элементы:  шаг  (и  начальный  шаг),  переход,  блок  действий,  прыжок  и  связи  типа 
дивергенция и конвергенция (рисунок 3). 


background image

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

 

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

 

 

Рисунок 3 – Пример программы на языке SFC 

Программа  состоит  из  шагов  и  условий  переходов.  Шаги  показываются  на  схеме 

прямоугольниками, а условия переходов – жирной перечеркивающей линией. Программа 
выполняется  сверху  вниз.  Начальный  шаг  на  схеме  показывается  в  виде  двойного 
прямоугольника.  Условия  переходов  записываются  рядом  с  их  обозначениями.  Каждый 
шаг программы может представлять собой реализацию сложного алгоритма, написанного 
на одном из языков стандарта МЭК 61131-3 [4]. 

При  выполнении  программы  каждый  шаг  активен  до  тех  пор,  пока  не  активен 

переход, следующий за ним. Как только активируется переход, текущий шаг отключается 
и  активируется  следующий  шаг  в  последовательности.  Переход  также  может  иметь  код, 
который образует необходимые условия для выполнения перехода. 

Язык  удобно  использовать  в  системах  с  повторяющимися  многошаговыми 

процессами  или  последовательностью  повторяющихся  процессов.  Язык  достаточно 
нагляден, а сегментация кода упрощает поиск неисправностей. 

К  недостаткам  относится  то,  что  такой  стиль  программирования  подходит  не  для 

всех систем, т.к. структура, которая накладывается на программу,  может ее значительно 
усложнить.  Дополнительные  ресурсы,  требующиеся  для  такого  программирования, 
приводят к замедлению процесса написания программы по сравнению с другими языками. 
Также язык очень сложно конвертировать в другие языки [5]. 

Assembler-подобный язык Instruction List (IL) 

Язык Instuction List (IL) – один из текстовых языков программирования стандарта 

МЭК 61131-3. Синтаксис языка очень похож на Assembler.