Кое е по-практично: обектно{0}}ориентирано програмиране на PLC или стълбовидна логика?

Aug 03, 2026 Остави съобщение

В областта на индустриалната автоматизация, стълбовата логика остава един от най-често използваните езици за програмиране; за по-сложни обекти за управление обаче обектно{0}}ориентираното програмиране със сигурност е много ефективен подход. Нека първо обсъдим обектно-ориентираното програмиране:


Обектно-ориентираното програмиране е усъвършенствана програмна парадигма на високо-компютърни езици. Тази философия на проектиране може да се приложи и към PLC програми в индустриални системи за управление. Въпреки че не можем да приложим много от отличните характеристики на обектно-ориентираното програмиране-като „наследяване“-и PLC езикът може дори да не притежава характеристиките на обектно-ориентиран език за програмиране, основните понятия на обектно-ориентираното програмиране са класове и екземпляри на класове (т.е. обекти). Трябва само да използваме тези концепции. В компютърното програмиране трябва да абстрахираме и обобщим определени обекти, за да дефинираме класове. В индустриалните системи за управление обаче обектите на управление като двигатели и вентили са ясно дефинирани категории за управление; можем да дефинираме класове за тях директно без необходимост от абстракция. Следващите раздели ще използват езика за програмиране Step7 на Siemens и езика за програмиране Unity на Schneider, за да обяснят обектно{16}}ориентираното програмиране за PLC.


I. Методи за изпълнение


Обектно-ориентираното програмиране в Стъпка 7 се реализира с помощта на функционални блокове (FB). Когато се появи тази тема, хората често се сещат за модулния програмен подход, предложен от Siemens. Наистина това е една и съща концепция, но термини като "модулизация", "блокове с фонови данни" и "множество фонове", въведени от Siemens, не винаги позволяват на потребителите ясно да разберат и приложат тази отлична философия на дизайна.


Ако обаче подходите от гледна точка на обектно-ориентираното програмиране, можете да разберете много по-добре този модел на проектиране. „FB блок“ се счита за „клас“; може да се разглежда като групиране на код за подобни контролни обекти. Например, за MM440 променливо{4}}честотно задвижване, можете да напишете FB блок с име "MtrMM440." В обектно-ориентираното програмиране това се нарича „клас“. Когато трябва да програмирате управление за конкретен двигател, можете да му присвоите фонов DB блок-в обектно-ориентирано програмиране, това се нарича имплементация на класа (т.е. създаване на екземпляр на класа: обект). Когато трябва да контролирате множество двигатели, можете да присвоите различни фонови DB на този FB блок, което е еквивалентно на създаване на множество екземпляри на класа.


Стъпка 7 включва друг тип програмен блок: FC блок. Програмирането, използващо основно FC блокове, се нарича структурно програмиране в системите на Siemens, което може да се аналогизира на процедурното програмиране в компютърното програмиране-тоест програмиране, което е чисто функционално-базирано.


Програмирането със софтуера Unity на Schneider осигурява по-добро разбиране на обектно-ориентираното програмиране. Неговите DFB дефиниции включват входно/изходни параметри, частни/публични променливи и внедряване на код-които са точно основните елементи на „клас“ в компютърно обектно-ориентирано програмиране. Създаването на екземпляр на клас (обект) е толкова просто, колкото създаването на обикновена "булева" променлива; просто трябва да дефинирате променлива от този "клас" във "Функционални блокове".


И Step7, и Unity поддържат както процедурни, така и обектно-ориентирани подходи за програмиране. Разликата между тези два подхода е подобна на разликата между програмирането на C и C++ в компютърните езици на високо-ниво.


В следващото обяснение FB в Стъпка 7 и DFB в Unity ще се наричат ​​„класове“, докато комбинацията от FB и фонова DB в Стъпка 7, както и екземпляри на DFB в Unity, ще се наричат ​​„обекти“.


II. Обектно-ориентирана програмна архитектура


Горната дискусия обхваща подробности за изпълнението, но философията на програмирането е изградена върху програмната архитектура. Простото използване на обектно-ориентирани методи в определена част от кода не означава, че цялата програма е обектно-ориентирана. Този тип програмиране изисква подход, основан на следните аспекти:


1. Проектиране на структурна схема.


Този раздел се фокусира предимно върху автоматизирани производствени линии; за самостоятелни машинни инструменти може да се използва опростена структура:


<1>Слой на автоматизирана производствена линия: Това е най-високото ниво, включващо основен PLC, който контролира различните зони под него.

<2>Слой на проекта: Този слой има независима система за електроразпределение, но няма PLC; той се състои само от разпределени модули, управлявани от автоматизирана производствена линия. Както подсказва името, той притежава висока степен на независимост и може да бъде проектиран и произведен като отделен проект. Когато автоматизираната производствена линия е относително малка, този слой може да бъде пропуснат.

<3>,Ниво на функционална група: Въз основа на разделение на процеси, сегментите на оборудването, които изпълняват специфична функция на процеса, се групират във функционална група. Тази група принадлежи към инженерното ниво; когато инженерното ниво е пропуснато, то принадлежи към нивото на автоматизираната производствена линия. Обектно-ориентираното програмиране не изисква непременно използването на горната структура, но добре-проектираната електрическа структура е по-благоприятна за обектно-ориентираното програмиране.


2. Цялата логика за всеки контролен обект се реализира в рамките на "клас".


За да се постигне това, е необходимо да се анализира информация, свързана с обекта на управление. Например за двигател трябва да се вземе предвид следната подходяща информация:


Входна информация:


<1>,Информация за защита на веригата, като прекъсвач на двигателя и термично реле.

<2>,Информация за функционална защита, като крайни превключватели за задвижващи двигатели, превключватели за налягане за вентилатори и превключватели за нивото на маслото за маслени помпи.

<3>Условия за стартиране и спиране: Въпреки че защитата на веригата и функционалната защита, споменати по-горе, могат да доведат до спиране на двигателя и нулирането може да предизвика рестартиране, условията, посочени тук, са тези за стартиране и спиране по време на нормална работа-като стъпки в процес на последователно управление.

<4>Режими на управление: като ръчен и автоматичен.

<5>Нулиране на грешка: Рестартиране на системата чрез сигнали за нулиране.


Изходна информация:

<1>Контролни изходи, като главния контактор, управляващ двигателя.

<2>Изходи за информация за състоянието

<3>Изходи за повреда


Информация за съхранение на състоянието:


Междинни променливи, използвани за внедряване на код, както и променливи на състоянието, които могат да бъдат прочетени от HMI. Интегрирайте цялата по-горе информация в един клас и стандартизирайте параметрите на класа, доколкото е възможно. Въпреки това все още има някои разлики в сравнение с-езиците за програмиране от високо ниво. За Стъпка 7 стандартът, който трябва да се следва, е: програмната структура се изпълнява с помощта на FC, а контролът на обекта се изпълнява с помощта на FB, както е илюстрирано от следната структурна рамка (чиято електрическа структура се основава на въведението по-горе): Това е просто груба програмна архитектура на PLC; добрата архитектура трябва да бъде по-всеобхватна и научна.


3. Планирайте структурите от данни внимателно


Дефинирането на структури от данни е от решаващо значение и трябва да се стремите да обедините тези структури колкото е възможно повече, без да се притеснявате за пространството за съхранение; съвременната PLC памет е достатъчна, за да побере големи количества данни. Струва си да се отбележи, че в Стъпка 7 трябва да избягвате дефинирането на-потребителски дефинирани типове (UDT) извън класовете, когато е възможно; вместо това ги дефинирайте в рамките на класовете. Въпреки че това може да доведе до дублиране на дефиниции на една и съща структура в различни класове, това подобрява независимостта на класовете.


В следващите раздели ще сравним тези два програмни подхода:


Предимства на обектно-ориентираното програмиране В сравнение със стълбовата логика, обектно-ориентираното програмиране предлага следните предимства:

• Кодът е преносим и лесен за повторно използване;

• Лесен е за използване на математически функции, цикли и други конструкции;

• Обектно{0}}ориентираното програмиране се преподава в практически всеки курс по компютърно програмиране;

• Кодът може да работи на различни хардуерни платформи.


За да овладеете обектно{0}}ориентираното програмиране, първо трябва да разберете концепцията за обекти и как да ги използвате. След като обект или клас е написан, той може лесно да се използва повторно чрез множество извиквания. Например, създайте обект за управление на двигател, който обработва всички входове, изходи и грешки. Когато е необходимо, множество двигатели могат да бъдат управлявани чрез инстанциране на този единичен контролен обект няколко пъти. Това е известно като-инстанциране при поискване. Когато трябва да се управляват няколко двигателя, този един обект може да се използва многократно. Извиква се, когато е необходимо, и екземплярите се създават, когато се използват.


Всеки екземпляр на всеки двигател има свои собствени характеристики, като спиране на двигателя, работа на двигателя, скорост на двигателя и претоварване на двигателя. По-голямата част от работата по програмирането е завършена, когато обектът е създаден за първи път. Това е различен начин на мислене от стълбовата логика и е по-мощен, защото след като един обект бъде построен, той е лесен за използване и повторно използване. Обектно{3}}ориентираното програмиране улеснява изпълнението на сложни математически функции, циклични изчисления, масиви и вложени подпрограми. На практика всеки курс по компютърно програмиране-независимо дали в гимназия, колеж или онлайн уроци-преподава тази концепция. Създаденият код е преносим и може да работи на различни хардуерни платформи.


„Стълбовидната логика следва формата на електрическите стълбищни диаграми, използвани в релейни системи за управление, и повечето хора могат бързо да я научат и овладеят.“


Въпреки това, в сравнение със стълбовата логика, обектно{0}}ориентираното програмиране има следните недостатъци:


• По-високи разходи;

• По-стръмна крива на обучение;

• Отстраняването на неизправности не е особено лесно за персонала по поддръжката;

• Обикновено се изисква компилация преди качване на изходния код в процесора.


В сравнение със стълбовата логика, обектно{0}}ориентираното програмиране често изисква повече памет и по-голяма процесорна мощност, което води до по-високи разходи. Изучаването на обектно-ориентиран език за програмиране може да отнеме повече време. Вероятно е необходимо обучение в класната стая и овладяването на основните концепции изисква значително време, практика, тестване и приложение. Програмистите трябва често да изучават обектно-ориентирано програмиране, за да използват програми за проследяване за проследяване на код или дебъгери за отстраняване на грешки в логиката. При този тип програмиране на високо-ниво може да е трудно да се приложат-възможности за онлайн наблюдение в реално време.


Преди да изтеглите изходния код на контролера, той трябва да бъде компилиран. Обикновено изходният код не се съхранява в паметта на процесора. Това означава, че трябва да се внимава да архивирате изходния код, тъй като компилираният код обикновено не може да се редактира. При обектно-ориентираното програмиране библиотечните файлове трябва да бъдат свързани с други ресурси, използвани по време на процеса на компилиране. Без разбиране на връзките и ресурсите ще бъде трудно програмата да стартира.


Предимства на Ladder Logic:


Ladder логиката е прост и само{0}}документиращ се метод за кодиране-някои дори се съмняват дали се квалифицира като език за програмиране. Той следва формата на стълбовидни диаграми, използвани в релейни системи за управление, и повечето хора могат бързо да го научат и овладеят. Той е единственият език за програмиране, широко използван в областта на машинната автоматизация от десетилетия и ще остане един от основните езици за програмиране в индустрията за автоматизация в обозримо бъдеще.


С течение на времето, когато хора от различен произход и области навлязоха в индустрията, различни езици за програмиране бяха въведени в инструментариума за индустриална автоматизация. Те включват програмиране на функционални блокове, структуриран текст, програмиране на състояния и последователни функционални диаграми. Тези четири езика за програмиране, заедно със стълбовата логика, съставляват стандартните езици за програмиране, определени от стандарта IEC 61131-3 на Международната електротехническа комисия (IEC).


Логиката зад IEC 61131 е, че ако всеки доставчик се придържа към този стандарт, тогава -поне до известна степен-човек ще трябва само да научи тези пет езика за програмиране, за да превключва лесно между платформи, предлагани от различни доставчици. Това обаче не е така.


Същото важи и за основната логика на стълбата (като използването на релейни контакти и намотки); обаче, когато програмирате, трябва да научите синтаксиса и потребителския опит на всеки доставчик, както и спецификата на това как да използвате тяхната програмна платформа. Въпреки липсата на стандартизация, стълбовата логика предлага следните предимства пред обектно-ориентираното програмиране:


• Подходящ е-за управление на машини и процеси;

• По-лесно е за разбиране, защото по своята същност е само-документиращо се;

• Улеснява отстраняването на повреди в управляваната система;

• Лесен е за отстраняване на грешки;

• Изходният код обикновено може да се съхранява в процесора.


Стълбовидната логика е -подходяща за управление на машини и процеси, особено за системи за автоматизация с голям брой отделни входове и изходи (I/O). С течение на годините стълбовата логика също непрекъснато се подобряваше, за да се справя с аналогови I/O, което я прави по-подходяща за широк спектър от приложения за контрол на процеси

 

В сравнение с приложенията за управление на машини, приложенията за процеси обикновено имат по-голям дял аналогови I/O.

Тъй като стълбищната логика е по-лесна за използване от обектно-ориентираното програмиране, много квалифицирани техници и инженери могат бързо да я научат. Логиката е много систематична и организирана, а нейният само-документиращ характер я прави по-лесна за разбиране и овладяване. Преди дадено устройство да бъде активирано, всеки ред от код трябва да бъде оценен като верен. Ако има пет двигателя за управление, са необходими поне пет реда код, което значително опростява процеса.

„Изходният код на стълбищната логика и дескрипторите обикновено се съхраняват в контролера, елиминирайки необходимостта от достъп до изходния код и по този начин премахвайки разочарованието, което програмистите често изпитват, когато се опитват да разберат компилираните програми.“

За електроинженерите и персонала по поддръжката логиката на стълбата е изключително интуитивна. Въпреки че стълбищната логика изисква различно мислене от обектно-ориентираното програмиране, тя може да бъде овладяна бързо чрез изучаване и отнема по-малко време за разбиране на код, написан от други. Кристално ясно е кога логиката е вярна и кога невярна. Дори тези с ограничен опит в програмирането могат лесно да схванат концепции като включени/изключени състояния, захранване на бобина, сравнителни променливи и общи математически функции.
 

81e77660-9f31-11ed-bfe3-dac502259ad0.jpg

Той е прост и лесен за използване, рационализира отстраняването на неизправности и отстраняването на грешки. При наблюдение на логиката е лесно да се разберат текущите условия на работа. Не се изисква софтуерна степен или напреднали умения за програмиране. Със стълбищната логика персоналът по поддръжката и инженеринга може лесно да проследи процеса и да разбере какво се случва. Стълбовата логика може да се разглежда като таблица на истината: ако логиката отляво е вярна, логиката отдясно се активира.


Изходният код на стълбищната логика и дескрипторите обикновено се съхраняват в контролера. Това елиминира разочарованието, което програмистите често изпитват, когато се опитват да разберат компилиран код без достъп до изходния код-проблем, често срещан и в обектно-ориентираното програмиране.


Въпреки това, в сравнение с обектно-ориентираното програмиране, стълбищната логика също има следните недостатъци:


• Компютърните програмисти и ИТ специалистите не са запознати със стълбовата логика;

• Трудно е да се изпълняват математически функции, обработка на текст и обработка на данни;

• Разчита на времето за сканиране;

• Изисква специализиран хардуер за изпълнение, като например програмируем логически контролер (PLC).


Ladder логиката е символичен език, с който компютърните програмисти и ИТ специалистите не са запознати, тъй като не го учат в училище. Боравенето с математически функции, текстови низове и данни в стълбищната логика може да бъде трудно, главно защото стълбищната логика първоначално не е проектирана да обработва тези функции.


Логиката на стълбата също зависи от времето за сканиране. По-големите програми изискват повече време за сканиране и обработка на логиката. При изпълнение на стълбовидна логика системата чете входове, сканира логиката, актуализира таблици с данни и изходи, осъществява комуникация и след това повтаря цикъла. Могат да бъдат внедрени функции като прекъсвания и други техники за програмиране, за да се осигури по-бързо изпълнение на определена логика.


Въпреки че базираните на софтуер- PLC, конфигурирани със стълбовидна логика, могат да работят на компютър, хардуерът (като PLC) обикновено трябва да е съвместим със софтуера за програмиране и е най-добре да закупите и двата от един и същи доставчик. Това гарантира съвместимост, но не е особено удобно, ако искате да смените доставчика.


В допълнение към сравняването на плюсовете и минусите на стълбищната логика и обектно{0}}ориентираното програмиране, потребителите трябва също така да оценят как тези езици за програмиране ще бъдат използвани в средата, в която ще бъдат внедрени. Ако дадена фабрика или съоръжение вече е стандартизирало стълбищната логика, замяната й с обектно-ориентирано програмиране не се насърчава, дори ако последното е по-подходящо за приложението. Тъй като използването на обектно-ориентираното програмиране продължава да расте, се очаква то да съществува съвместно със стълбищната логика за десетилетия напред. Един напредничав-професионалист по автоматизация би било добре-посъветван да владее и двата езика.

 

Изпрати запитване

whatsapp

Телефон

Имейл

Запитване