V oblasti průmyslové automatizace zůstává žebříková logika jedním z nejčastěji používaných programovacích jazyků; pro složitější řídicí objekty je však objektově{0}}orientované programování jistě vysoce efektivním přístupem. Pojďme si nejprve probrat objektově-orientované programování:
Objektově-orientované programování je pokročilé programovací paradigma v-počítačových jazycích vysoké úrovně. Tuto filozofii návrhu lze také aplikovat na programy PLC v průmyslových řídicích systémech. Přestože nemůžeme implementovat mnoho vynikajících funkcí objektově-orientovaného programování-, jako je „dědičnost“-a jazyk PLC nemusí mít ani vlastnosti objektově-orientovaného programovacího jazyka, základními pojmy objektově-orientovaného programování jsou třídy a instance tříd (tj. objekty). Potřebujeme pouze používat tyto koncepty. V počítačovém programování potřebujeme k definování tříd abstrahovat a zobecňovat určité entity. V průmyslových řídicích systémech jsou však řídicí objekty, jako jsou motory a ventily, jasně definované kategorie řízení; můžeme pro ně definovat třídy přímo bez nutnosti abstrakce. Následující části budou používat programovací jazyk Step7 společnosti Siemens a programovací jazyk Unity společnosti Schneider k vysvětlení objektově{16}}orientovaného programování pro PLC.
I. Metody implementace
Objektově{0}}orientované programování v Kroku 7 je implementováno pomocí funkčních bloků (FB). Když se objeví toto téma, lidé si často vybaví modulární programovací přístup navržený společností Siemens. Ve skutečnosti se jedná o stejný koncept, ale termíny jako „modularizace“, „bloky dat na pozadí“ a „vícenásobné pozadí“ zavedené společností Siemens neumožňují uživatelům vždy jasně pochopit a aplikovat tuto vynikající filozofii designu.
Pokud k tomu ale přistoupíte z perspektivy objektově{0}}orientovaného programování, můžete tomuto vzoru návrhu porozumět mnohem lépe. „FB blok“ je považován za „třídu“; lze na něj pohlížet jako na seskupení kódu pro podobné řídicí objekty. Například pro frekvenční měnič MM440- můžete napsat blok FB s názvem „MtrMM440“. V objektově-orientovaném programování se tomu říká „třída“. Když potřebujete naprogramovat řízení pro konkrétní motor, můžete mu přiřadit blok DB na pozadí-v objektově{9}}orientovaném programování, tomu se říká implementace třídy (tj. vytvoření instance třídy: objektu). Když potřebujete ovládat více motorů, můžete tomuto bloku FB přiřadit různé databáze na pozadí, což je ekvivalentní vytvoření více instancí třídy.
Krok 7 obsahuje další typ programového bloku: FC blok. Programování primárně využívající FC bloky se v systémech Siemens označuje jako strukturované programování, které lze přirovnat k procedurálnímu programování v počítačovém programování,-tedy programování, které je čistě funkční-.
Programování pomocí softwaru Unity společnosti Schneider poskytuje lepší porozumění objektově{0}}orientovanému programování. Jeho definice DFB zahrnují vstupní/výstupní parametry, soukromé/veřejné proměnné a implementaci kódu,-což jsou přesně základní prvky „třídy“ v počítačovém objektově-orientovaném programování. Vytvoření instance třídy (objektu) je stejně jednoduché jako vytvoření běžné "booleovské" proměnné; stačí definovat proměnnou této "třídy" v "Function Blocks."
Step7 i Unity podporují procedurální i objektově{1}}orientované programování. Rozdíl mezi těmito dvěma přístupy je podobný rozdílu mezi programováním v C a C++ v počítačových jazycích vyšší{4}}úrovně.
V následujícím vysvětlení budou FB v Step7 a DFB v Unity označovány jako "třídy", zatímco kombinace FB a pozadí DB v Step7, stejně jako instance DFB v Unity, budou označovány jako "objekty."
II. Objektově-orientovaná programovací architektura
Výše uvedená diskuse pokrývá detaily implementace, ale filozofie programování je postavena na architektuře programu. Pouhé použití objektově-orientovaných metod v určité části kódu neznamená, že je celý program-orientovaný. Tento typ programování vyžaduje přístup založený na následujících aspektech:
1. Návrh strukturovaného obvodu.
Tato sekce se zaměřuje především na automatizované výrobní linky; pro samostatné obráběcí stroje lze použít zjednodušenou strukturu:
<1>Vrstva automatizované výrobní linky: Toto je nejvyšší úroveň, která obsahuje hlavní PLC, které řídí různé zóny pod ní.
<2>Projektová vrstva: Tato vrstva má nezávislý systém distribuce energie, ale nemá PLC; skládá se pouze z distribuovaných modulů řízených automatizovanou výrobní linkou. Jak název napovídá, má vysoký stupeň nezávislosti a může být navržen a vyroben jako samostatný projekt. Když je automatizovaná výrobní linka relativně malá, může být tato vrstva vynechána.
<3>,Úroveň funkční skupiny: Na základě procesních divizí jsou segmenty zařízení, které plní specifickou procesní funkci, seskupeny do funkční skupiny. Tato skupina patří do úrovně inženýrství; pokud je vynechána úroveň inženýrství, patří do úrovně automatizované výrobní linky. Objektově-orientované programování nutně nevyžaduje použití výše uvedené struktury, ale dobře -navržená elektrická struktura je pro objektově-orientované programování vhodnější.
2. Veškerá logika pro jakýkoli řídicí objekt je implementována v rámci „třídy“.
Aby toho bylo dosaženo, je nutné analyzovat informace související s řídicím objektem. Například u motoru je třeba vzít v úvahu následující relevantní informace:
Vstupní informace:
<1>,Informace o ochraně obvodu, jako je jistič motoru a tepelné relé.
<2>,Informace o funkční ochraně, jako jsou koncové spínače pro pohybové motory, tlakové spínače pro ventilátory a spínače hladiny oleje pro olejová čerpadla.
<3>Podmínky spuštění a zastavení: Zatímco výše uvedená ochrana obvodu a funkční ochrana mohou způsobit zastavení chodu motoru a reset může spustit restart, zde uvedené podmínky jsou podmínky pro spuštění a zastavení během normálního provozu-, jako jsou kroky v procesu sekvenčního řízení.
<4>Režimy ovládání: jako manuální a automatický.
<5>Reset poruchy: Restartování systému pomocí resetovacích signálů.
Výstupní informace:
<1>Řídicí výstupy, jako je hlavní stykač ovládající motor.
<2>Výstupy stavových informací
<3>Poruchové výstupy
Informace o stavu úložiště:
Mezilehlé proměnné používané pro implementaci kódu, stejně jako stavové proměnné, které lze číst pomocí HMI. Integrujte všechny výše uvedené informace do jediné třídy a co nejvíce standardizujte parametry třídy. Stále však existují určité rozdíly ve srovnání s-programovacími jazyky vyšší úrovně. Pro Krok 7 se následuje standard: struktura programu je implementována pomocí FC a řízení objektu je implementováno pomocí FB, jak ilustruje následující strukturální rámec (jehož elektrická struktura je založena na úvodu výše): Toto je pouze hrubá architektura programu PLC; dobrá architektura by měla být komplexnější a vědecká.
3. Pečlivě plánujte datové struktury
Definování datových struktur je zásadní a měli byste se snažit tyto struktury co nejvíce sjednotit bez obav o úložný prostor; moderní paměť PLC je dostatečná pro uložení velkého množství dat. Stojí za zmínku, že v kroku 7 byste se měli vyvarovat definování uživatelsky-definovaných typů (UDT) mimo třídy, kdykoli je to možné; místo toho je definujte v rámci tříd. Ačkoli to může vést k duplicitním definicím stejné struktury napříč různými třídami, zvyšuje to nezávislost tříd.
V následujících částech porovnáme tyto dva přístupy k programování:
Výhody objektově{0}}orientovaného programování Ve srovnání s žebříkovou logikou nabízí objektově-orientované programování následující výhody:
• Kód je přenosný a snadno znovu použitelný;
• Je snadné používat matematické funkce, smyčky a další konstrukce;
• Objektově{0}}orientované programování se vyučuje prakticky v každém kurzu počítačového programování;
• Kód může běžet na různých hardwarových platformách.
Abyste zvládli objektově{0}}orientované programování, musíte nejprve porozumět konceptu objektů a tomu, jak je používat. Jakmile je objekt nebo třída zapsána, lze je snadno znovu použít prostřednictvím více volání. Vytvořte například objekt pro ovládání motoru, který zpracovává všechny vstupy, výstupy a poruchy. V případě potřeby lze více motorů ovládat několikanásobným vytvořením instance tohoto jediného ovládacího objektu. Toto je známé jako vytváření-instancí na vyžádání. Pokud je třeba ovládat více motorů, lze tento jediný objekt používat opakovaně. Volá se v případě potřeby a instance se vytvářejí tak, jak jsou používány.
Každá instance každého motoru má své vlastní charakteristiky, jako je zastavení motoru, chod motoru, rychlost motoru a přetížení motoru. Většina programátorských prací je dokončena při prvním vytvoření objektu. Toto je jiný způsob myšlení než žebříková logika a je výkonnější, protože jakmile je objekt postaven, je snadné jej používat a znovu používat. Objektově-orientované programování usnadňuje provádění složitých matematických funkcí, výpočtů smyček, polí a vnořených podprogramů. Prakticky každý kurz počítačového programování-ať už na střední, vysoké škole nebo online výukové programy-vyučuje tento koncept. Vytvořený kód je přenosný a může běžet na různých hardwarových platformách.
"Logika žebříkové logiky se řídí formátem elektrických žebříkových diagramů používaných v systémech řízení relé a většina lidí se ji může rychle naučit a zvládnout."
Ve srovnání s ladder logikou má však objektově{0}}orientované programování následující nevýhody:
• Vyšší náklady;
• Strmější křivka učení;
• Odstraňování problémů není pro personál údržby příliš snadné;
• Kompilace je obvykle vyžadována před nahráním zdrojového kódu do procesoru.
Ve srovnání s ladder logikou vyžaduje objektově{0}}orientované programování často více paměti a vyšší výpočetní výkon, což má za následek vyšší náklady. Naučit se objektově-orientovaný programovací jazyk může trvat déle. Pravděpodobně je vyžadována výuka ve třídě a zvládnutí základních konceptů vyžaduje značný čas, praxi, testování a aplikaci. Programátoři musí často studovat objektově{5}}orientované programování, aby mohli používat sledovací nástroje ke sledování kódu nebo debuggery k ladění logiky. S tímto typem-programování na vysoké úrovni může být obtížné implementovat-možnosti online monitorování v reálném čase.
Před stažením zdrojového kódu do ovladače je nutné jej zkompilovat. Zdrojový kód obvykle není uložen v paměti procesoru. To znamená, že je třeba věnovat pozornost zálohování zdrojového kódu, protože zkompilovaný kód obvykle nelze upravovat. Při objektově-orientovaném programování musí být soubory knihoven propojeny s dalšími zdroji používanými během procesu kompilace. Bez pochopení propojení a zdrojů bude obtížné spustit program.
Výhody žebříkové logiky:
Ladder logika je jednoduchá a samočinná -dokumentační metoda kódování-někteří dokonce pochybují, zda se kvalifikuje jako programovací jazyk. Dodržuje formát žebříkových diagramů používaných v reléových řídicích systémech a většina lidí se jej může rychle naučit a zvládnout. Po desetiletí je to jediný programovací jazyk široce používaný v oblasti automatizace strojů a v dohledné budoucnosti zůstane jedním z primárních programovacích jazyků v automatizačním průmyslu.
Postupem času, jak lidé z různých prostředí a oborů vstoupili do průmyslu, byly do sady nástrojů průmyslové automatizace zavedeny různé programovací jazyky. Patří mezi ně programování funkčních bloků, strukturovaný text, stavové programování a sekvenční funkční diagramy. Tyto čtyři programovací jazyky spolu s ladder logikou tvoří standardní programovací jazyky definované standardem IEC 61131-3 Mezinárodní elektrotechnické komise (IEC).
Logika normy IEC 61131 spočívá v tom, že pokud každý dodavatel dodržuje tuto normu, pak by se -alespoň do určité míry- stačilo naučit těchto pět programovacích jazyků, aby bylo možné snadno přepínat mezi platformami nabízenými různými dodavateli. To však není tento případ.
Totéž platí pro základní žebříkovou logiku (jako je použití reléových kontaktů a cívek); při programování se však člověk musí naučit syntaxi a uživatelskou zkušenost každého dodavatele a také specifika, jak používat jejich programovací platformu. Navzdory nedostatku standardizace nabízí žebříková logika oproti objektově-orientovanému programování následující výhody:
• Je vhodný-pro řízení strojů a procesů;
• Je snazší pochopit, protože je ze své podstaty -dokumentující;
• Usnadňuje odstraňování závad řízeného systému;
• Je snadné ladit;
• Zdrojový kód může být obvykle uložen v procesoru.
Žebříková logika se dobře-hodí pro řízení strojů a procesů, zejména pro automatizační systémy s velkým počtem diskrétních vstupů a výstupů (I/O). V průběhu let byla žebříková logika také neustále vylepšována, aby zvládla analogové I/O, díky čemuž je vhodnější pro širokou škálu aplikací řízení procesů.
Ve srovnání s aplikacemi pro řízení strojů mají procesní aplikace obvykle vyšší podíl analogových I/O.
Protože se žebříková logika používá snadněji než objektově{0}}orientované programování, mnoho zkušených techniků a inženýrů se ji může rychle naučit. Logika je vysoce systematická a organizovaná a její samo-dokumentační povaha usnadňuje její pochopení a zvládnutí. Před aktivací zařízení musí být každý řádek kódu vyhodnocen jako pravdivý. Pokud je k řízení pět motorů, je vyžadováno alespoň pět řádků kódu, což značně zjednodušuje proces.
"Zdrojový kód a deskriptory žebříkové logiky jsou obvykle uloženy v řadiči, což eliminuje potřebu přístupu ke zdrojovému kódu, a tím odstraňuje frustraci, kterou programátoři často zažívají, když se snaží porozumět zkompilovaným programům."
Pro elektrotechniky a personál údržby je žebříková logika vysoce intuitivní. Ačkoli žebříková logika vyžaduje jiný způsob myšlení než objektově{1}}orientované programování, lze ji rychle zvládnout studiem a pochopení kódu napsaného ostatními trvá méně času. Je křišťálově jasné, kdy je logika pravdivá a kdy nepravdivá. Dokonce i ti s omezenými zkušenostmi s programováním mohou snadno pochopit pojmy, jako jsou stavy zapnuto/vypnuto, napájení cívky, srovnávací proměnné a běžné matematické funkce.

Je jednoduchý a snadno se používá, zjednodušuje odstraňování problémů a ladění. Při sledování logiky je snadné pochopit aktuální provozní podmínky. Nevyžaduje se žádné softwarové vzdělání ani pokročilé znalosti programování. Díky žebříkové logice mohou pracovníci údržby a techniky snadno sledovat proces a porozumět tomu, co se děje. Žebříkovou logiku lze považovat za pravdivostní tabulku: pokud je logika nalevo pravdivá, aktivuje se logika napravo.
Zdrojový kód a deskriptory žebříkové logiky jsou obvykle uloženy v řídicí jednotce. To eliminuje frustraci, kterou programátoři často zažívají, když se snaží porozumět zkompilovanému kódu bez přístupu ke zdrojovému kódu,-což je problém také běžný v objektově-orientovaném programování.
Ve srovnání s objektově{0}}orientovaným programováním má však žebříková logika také následující nevýhody:
• Počítačoví programátoři a IT odborníci neznají žebříkovou logiku;
• Je obtížné provádět matematické funkce, zpracování textu a zpracování dat;
• Spoléhá na dobu skenování;
• Ke spuštění vyžaduje specializovaný hardware, jako je programovatelný logický kontrolér (PLC).
Žebříková logika je symbolický jazyk, který počítačoví programátoři a IT profesionálové neznají, protože se ho neučí ve škole. Manipulace s matematickými funkcemi, textovými řetězci a daty v žebříkové logice může být obtížná, především proto, že žebříková logika nebyla původně navržena pro zpracování těchto funkcí.
Ladder logika také závisí na době skenování. Větší programy vyžadují více času na skenování a zpracování logiky. Při provádění žebříkové logiky systém čte vstupy, skenuje logiku, aktualizuje datové tabulky a výstupy, provádí komunikaci a poté cyklus opakuje. K zajištění rychlejšího provádění určité logiky lze implementovat funkce, jako jsou přerušení a další programovací techniky.
Přestože softwarová -zařízení PLC konfigurovaná s žebříkovou logikou mohou běžet na PC, hardware (např. PLC) obvykle musí být kompatibilní s programovacím softwarem a je nejlepší zakoupit oba od stejného dodavatele. To zajišťuje kompatibilitu, ale není to příliš výhodné, pokud chcete změnit dodavatele.
Kromě porovnání výhod a nevýhod žebříkové logiky a objektově{0}}orientovaného programování by uživatelé měli také vyhodnotit, jak budou tyto programovací jazyky používány v prostředí, kde budou nasazeny. Pokud se továrna nebo zařízení již standardizovalo na žebříkové logice, nedoporučuje se její nahrazení objektově{2}}orientovaným programováním, i když je pro danou aplikaci vhodnější. Vzhledem k tomu, že používání objektově{4}}orientovaného programování neustále roste, očekává se, že bude v následujících desetiletích koexistovat s žebříkovou logikou. Progresivnímu-odborníkovi na automatizaci by bylo dobré-doporučit, aby ovládal oba jazyky.




