В области промышленной автоматизации лестничная логика остается одним из наиболее часто используемых языков программирования; однако для более сложных объектов управления объектно--ориентированное программирование, безусловно, является весьма эффективным подходом. Давайте сначала обсудим объектно--ориентированное программирование:
Объектно--ориентированное программирование – это продвинутая парадигма программирования на компьютерных языках-высокого уровня. Эту философию проектирования можно также применить к программам ПЛК в промышленных системах управления. Хотя мы не можем реализовать многие замечательные особенности объектно--ориентированного программирования-, такие как "наследование"-, а язык ПЛК может даже не обладать характеристиками объектно--ориентированного языка программирования, основными понятиями объектно--ориентированного программирования являются классы и экземпляры классов (т. е. объекты). Нам нужно только использовать эти концепции. В компьютерном программировании нам необходимо абстрагировать и обобщать определенные сущности, чтобы определить классы. Однако в промышленных системах управления объекты управления, такие как двигатели и клапаны, относятся к четко определенным категориям управления; мы можем определить для них классы напрямую, без необходимости абстракции. В следующих разделах для объяснения объектно-ориентированного программирования для ПЛК будут использоваться язык программирования Siemens Step7 и язык программирования Unity Schneider.
I. Методы реализации
Объектно--ориентированное программирование в Step7 реализовано с помощью функциональных блоков (FB). Когда возникает эта тема, люди часто думают о модульном программировании, предложенном Siemens. Действительно, это одна и та же концепция, но такие термины, как «модуляризация», «блоки фоновых данных» и «множественный фон», введенные Siemens, не всегда позволяют пользователям четко понять и применить эту превосходную философию проектирования.
Однако если вы подойдете к этому с точки зрения объектно-ориентированного программирования-, вы сможете гораздо лучше понять этот шаблон проектирования. «Блок FB» рассматривается как «класс»; его можно рассматривать как группу кода для аналогичных объектов управления. Например, для преобразователя-частоты MM440 можно написать блок FB с именем «MtrMM440». В объектно--ориентированном программировании это называется «классом». Когда вам нужно запрограммировать управление для конкретного двигателя, вы можете назначить ему фоновый блок БД-в объектно--ориентированном программировании, это называется реализацией класса (т.е. созданием экземпляра класса: объекта). Когда вам нужно управлять несколькими двигателями, вы можете назначить этому блоку FB разные фоновые DB, что эквивалентно созданию нескольких экземпляров класса.
В Step7 имеется другой тип программного блока: блок FC. Программирование, в основном с использованием блоков FC, в системах Siemens называется структурным программированием, которое можно сравнить с процедурным программированием в компьютерном программировании,-то есть программированием, основанным исключительно на функциях-.
Программирование с помощью программного обеспечения Schneider Unity позволяет лучше понять объектно-ориентированное-программирование. Его определения DFB включают параметры ввода/вывода, частные/общедоступные переменные и реализацию кода,-которые в точности являются базовыми элементами "класса" в компьютерном объектно-ориентированном программировании-. Создать экземпляр класса (объекта) так же просто, как создать обычную «логическую» переменную; вам просто нужно определить переменную этого «класса» в «Функциональных блоках».
И Step7, и Unity поддерживают как процедурный, так и-ориентированный подходы к программированию; различие между этими двумя подходами аналогично разнице между программированием на C и C++ на компьютерных языках высокого-уровня.
В следующем объяснении FB в Step7 и DFB в Unity будут называться «классами», тогда как FB в сочетании с фоновыми базами данных в Step7 и экземплярами DFB в Unity будут называться «объектами».
II. Объектно--архитектура объектно-ориентированного программирования
Вышеприведенное обсуждение охватывает детали реализации, но философия программирования построена на архитектуре программы. Простое использование объектно--ориентированных методов в определенной части кода не означает, что вся программа является объектно--ориентированной. Этот тип программирования требует подхода, основанного на следующих аспектах:
1. Структурированная схема.
В этом разделе основное внимание уделяется автоматизированным производственным линиям; для автономных станков можно использовать упрощенную структуру:
<1>Уровень автоматизированной производственной линии: это самый высокий уровень, на котором имеется основной ПЛК, который контролирует различные зоны под ним.
<2>Уровень проекта: на этом уровне имеется независимая система распределения электроэнергии, но нет ПЛК; он состоит только из распределенных модулей, управляемых автоматизированной производственной линией. Как следует из названия, он обладает высокой степенью самостоятельности и может быть спроектирован и изготовлен как отдельный проект. Если автоматизированная производственная линия относительно невелика, этот уровень можно опустить.
<3>Уровень функциональной группы: на основе требований процесса сегменты оборудования, выполняющие определенную функцию процесса, группируются в функциональную группу. Эта группа относится к инженерному уровню; если инженерный уровень опущен, он относится к уровню автоматизированной производственной линии. Объектно--ориентированное программирование не обязательно требует использования указанной выше структуры, но хорошо-электрическая структура больше подходит для объектно--ориентированного программирования.
2. Вся логика объекта управления реализована внутри «классов».
Для этого необходимо проанализировать информацию, касающуюся объекта управления. Например, для двигателя необходимо учитывать следующую соответствующую информацию:
Входная информация:
<1>,Информация о защите цепи, такая как автоматический выключатель двигателя и тепловое реле.
<2>,Информация о функциональной защите, такая как концевые выключатели для двигателей движения, выключатели давления для вентиляторов и выключатели уровня масла для масляных насосов.
<3>Условия запуска и останова. Хотя упомянутая выше защита цепи и функциональная защита могут привести к остановке двигателя, а сброс может вызвать перезапуск, условия, упомянутые здесь, относятся к условиям запуска и останова во время нормальной работы,-например, к этапам процесса последовательного управления.
<4>Режимы управления: такие как ручной и автоматический.
<5>Сброс неисправности: перезапуск системы с помощью сигналов сброса.
Выходная информация:
<1>,Выходы управления, такие как главный контактор, управляющий двигателем.
<2>,Выходы информации о состоянии
<3>,Выходы неисправности
Информация о хранении статуса:
Промежуточные переменные, используемые для реализации кода, а также переменные состояния, которые могут быть прочитаны HMI. Объедините всю вышеуказанную информацию в один класс и максимально стандартизируйте параметры класса. Однако некоторые различия по сравнению с языками программирования-высокого уровня все же имеются. Для Step7 стандартом, которому следует следовать, является: структура программы реализуется с использованием FC, а управление объектом реализуется с использованием FB, как показано следующей структурной структурой (чья электрическая структура основана на введении выше): Это просто приблизительная архитектура программы ПЛК; хорошая архитектура должна быть более всеобъемлющей и научной.
3. Тщательно планируйте структуры данных
Определение структур данных имеет решающее значение, и вы должны стремиться максимально унифицировать эти структуры, не беспокоясь о пространстве для хранения; Памяти современного ПЛК достаточно для размещения больших объемов данных. Стоит отметить, что на шаге 7 вам следует избегать определения пользовательских-типов (UDT) вне классов, когда это возможно; вместо этого определите их внутри классов. Хотя это может привести к дублированию определений одной и той же структуры в разных классах, это повышает независимость классов.
В следующих разделах мы сравним эти два подхода к программированию:
Преимущества объектно--ориентированного программирования По сравнению с релейной логикой объектно--ориентированное программирование предлагает следующие преимущества:
• Переносимость кода и простота повторного использования;
• Простота использования математических функций, циклов и других конструкций;
• Объектно--ориентированное программирование преподается практически в каждом курсе компьютерного программирования;
• Код может работать на различных аппаратных платформах.
Чтобы освоить объектно--ориентированное программирование, вы должны сначала понять концепцию объектов и способы их использования. После того как объект или класс написан, его можно легко использовать повторно посредством нескольких вызовов. Например, создайте объект для управления двигателем, который обрабатывает все входы, выходы и неисправности. При необходимости можно управлять несколькими двигателями, многократно создавая экземпляр одного объекта управления. Это называется созданием экземпляра по-требованию. Если необходимо управлять несколькими двигателями, этот единственный объект можно использовать повторно. Он вызывается при необходимости, а экземпляры создаются по мере использования.
Каждый экземпляр каждого двигателя имеет свои собственные характеристики, такие как остановка двигателя, работа двигателя, скорость двигателя и перегрузка двигателя. Большая часть работы по программированию завершается при первом создании объекта. Это способ мышления, отличный от лестничной логики, и он более мощный, поскольку после создания объекта его легко использовать и использовать повторно. Объектно--ориентированное программирование упрощает выполнение сложных математических функций, вычислений циклов, массивов и вложенных подпрограмм. Практически каждый курс компьютерного программирования-будь то в средней школе, колледже или онлайн-курсы- преподает эту концепцию. Созданный код является портативным и может работать на различных аппаратных платформах.
«Релейная логика соответствует формату электрических лестничных схем, используемых в системах релейного управления, и большинство людей могут быстро ее изучить и освоить».
Однако по сравнению с релейной логикой объектно--ориентированное программирование имеет следующие недостатки:
• Более высокая стоимость;
• Более крутая кривая обучения;
• Устранение неполадок не является особенно легкой задачей для обслуживающего персонала;
• Компиляция обычно требуется перед загрузкой исходного кода в процессор.
По сравнению с релейной логикой объектно--ориентированное программирование часто требует больше памяти и большей вычислительной мощности, что приводит к более высоким затратам. Изучение объектно--ориентированного языка программирования может занять больше времени. Вероятно, потребуется обучение в классе, а освоение основных концепций требует значительного времени, практики, тестирования и применения. Программистам приходится часто изучать объектно-ориентированное программирование, чтобы использовать трассировщики для отслеживания кода или отладчики для отладки логики. При таком типе-программирования высокого уровня может быть сложно реализовать возможности онлайн-мониторинга-в режиме реального времени.
Прежде чем исходный код можно будет загрузить в контроллер, его необходимо скомпилировать. Обычно исходный код не хранится в памяти процессора. Это означает, что необходимо позаботиться о резервном копировании исходного кода, поскольку скомпилированный код обычно не подлежит редактированию. При объектно--ориентированном программировании файлы библиотеки должны быть связаны с другими ресурсами, используемыми в процессе компиляции. Без понимания связей и ресурсов будет сложно запустить программу.
Преимущества лестничной логики:
Лестничная логика – это простой и-самодокументируемый метод кодирования-некоторые даже задаются вопросом, можно ли его квалифицировать как язык программирования. Он соответствует формату электрических лестничных схем, используемых в системах релейного управления, и большинство людей могут быстро его изучить и освоить. Это был единственный язык программирования, широко используемый в области автоматизации машин на протяжении десятилетий, и в обозримом будущем он останется одним из основных языков программирования в индустрии автоматизации.
Со временем, когда в отрасль пришли люди из разных слоев общества и областей, в набор инструментов промышленной автоматизации были введены различные языки программирования. К ним относятся программирование функциональных блоков, структурированный текст, программирование состояний и последовательные функциональные схемы. Эти четыре языка программирования вместе с релейной логикой составляют стандартные языки программирования, определенные стандартом Международной электротехнической комиссии (МЭК) IEC 61131-3.
Логика IEC 61131 заключается в том, что если каждый поставщик будет придерживаться этого стандарта, то -по крайней мере в некоторой степени-человеку нужно будет выучить всего лишь эти пять языков программирования, чтобы легко переключаться между платформами, предлагаемыми разными поставщиками. Однако это не так.
Базовая логика релейной логики (например, использование контактов и катушек реле) работает таким же образом; однако при программировании необходимо изучить синтаксис и пользовательский интерфейс каждого поставщика, а также особенности использования платформы программирования. Несмотря на отсутствие стандартизации, релейная логика имеет следующие преимущества перед объектно-ориентированным программированием:
• Он хорошо-подходит для управления машинами и процессами;
• Его легче понять, поскольку он по своей природе-самодокументирован;
• Облегчает устранение неисправностей управляемой системы;
• Легко отлаживать;
• Исходный код обычно может храниться в процессоре.
Релейная логика хорошо-подходит для управления машинами и процессами, особенно для систем автоматизации с большим количеством дискретных входов и выходов (I/O). На протяжении многих лет релейная логика постоянно совершенствуется для обработки аналогового ввода-вывода, что делает ее более подходящей для многочисленных приложений управления технологическими процессами.
По сравнению с приложениями управления машинами, технологические приложения часто имеют более высокую долю аналогового ввода-вывода.
Поскольку релейную логику проще использовать, чем объектно--ориентированное программирование, многие квалифицированные специалисты и инженеры могут быстро освоить ее. Логика очень систематична и организована, а ее-самодокументируемый характер упрощает понимание и освоение. Каждая строка кода должна иметь значение true, прежде чем устройство можно будет активировать. Если нужно управлять пятью двигателями, потребуется как минимум пять строк кода, что значительно упрощает процесс.
«Исходный код и дескрипторы релейной логики обычно хранятся в контроллере, что устраняет необходимость доступа к исходному коду,-что устраняет разочарование, которое программисты часто испытывают при попытке понять скомпилированные программы».
Для инженеров-электриков и обслуживающего персонала лестничная логика очень интуитивно понятна. Хотя лестничная логика требует иного образа мышления, чем объектно--ориентированное программирование, ее можно быстро освоить при некотором изучении, и для понимания кода, написанного другими, требуется меньше времени. Совершенно ясно, когда логическое утверждение истинно, а когда ложно. Даже те, у кого ограниченный опыт программирования, могут легко понять такие понятия, как включение/выключение, подача напряжения на катушку, переменные сравнения и общие математические функции.

Он прост и удобен в использовании, упрощая устранение неполадок и отладку. При мониторинге логики легко понять текущие условия работы. Никакого образования в области программного обеспечения или продвинутых навыков программирования не требуется. Благодаря релейной логике обслуживающий и инженерный персонал может легко отслеживать процесс и понимать, что происходит. Лестничную логику можно рассматривать как таблицу истинности: если логика слева истинна, активируется логика справа.
Исходный код и дескрипторы лестничной логики обычно хранятся в контроллере. Это устраняет разочарование, которое часто испытывают программисты, пытаясь понять скомпилированный код без доступа к исходному коду.-Эта проблема также распространена в объектно--ориентированном программировании.
Однако по сравнению с объектно--ориентированным программированием релейная логика имеет и следующие недостатки:
• Программисты и ИТ-специалисты не знакомы с релейной логикой;
• Трудно выполнять математические функции, обработку текста и данных;
• Это зависит от времени сканирования;
• Для выполнения требуется специализированное оборудование, например программируемый логический контроллер (ПЛК).
Лестничная логика — это символический язык, с которым незнакомы программисты и ИТ-специалисты, поскольку они не изучают его в школе. Обработка математических функций, текстовых строк и данных в релейной логике может быть затруднена, главным образом потому, что релейная логика изначально не была предназначена для обработки этих функций.
Релейная логика также зависит от времени сканирования. Большим программам требуется больше времени для сканирования и обработки логики. При выполнении релейной логики система считывает входные данные, сканирует логику, обновляет таблицы данных и выходные данные, осуществляет связь, а затем повторяет цикл. Такие функции, как прерывания и другие методы программирования, могут быть реализованы для обеспечения более быстрого выполнения определенной логики.
Хотя программные-ПЛК с релейной логикой могут работать на ПК, аппаратное обеспечение (например, ПЛК) обычно должно быть совместимо с программным обеспечением, и лучше всего приобретать оба устройства у одного и того же поставщика. Это обеспечивает совместимость, но не особенно удобно, если вы хотите сменить поставщика.
Помимо сравнения плюсов и минусов релейной логики и объектно-ориентированного программирования-пользователям также следует оценить, как эти языки программирования будут использоваться в среде, в которой они будут развернуты. Если на заводе или объекте уже стандартизирована релейная логика, замена ее объектно-ориентированным программированием не рекомендуется, даже если последнее лучше подходит для приложения. Поскольку использование объектно--ориентированного программирования продолжает расти, ожидается, что оно будет сосуществовать с релейной логикой в ближайшие десятилетия. Дальновидному-профессионалу в области автоматизации рекомендуется-владеть обоими языками.




