Princip činnosti a základy programování PLC

Dobrý den, milí obyvatelé Habru!
Po přečtení příspěvku o programování PLC Siemens řady S7 jsem se dostal do vyhledávání Habr a byl jsem velmi překvapen, že téma průmyslové automatizace obecně a programování PLC zvláště je pokryto velmi, velmi špatně. Dovolím si podělit se o své zkušenosti v této oblasti, popisující základní principy programování PLC, zejména těch vyrobených společností Beckhoff.

Pracuji v oblasti automatizace budov. Stalo se tak, že naše systémy stavíme především na bázi Beckhoff PLC. Tato volba byla učiněna především proto, že tyto regulátory jsou volně programovatelné v plném slova smyslu. Co to znamená? Vezměte si například ovladač TAC Xenta a zkuste jej vyměnit s externím zařízením přes RS232 pomocí vašeho vlastního protokolu, na úrovni „byte odesláno – byte přijato“. Nebude to fungovat, tyto řadiče nevědí jak – používejte pouze ty protokoly, které do nich vložil vývojář. Ale Beckhoff může. Než se ale pustíme do takových divočin, podívejme se na vývojové prostředí? V jakém jazyce budeme psát?

Norma IEC 61131-3

Průmyslové PLC jsou programovány v jazycích IEC 61131-3. Těchto jazyků je celkem 5, někteří výrobci přidávají vlastní. Jazyky si nejsou vůbec podobné a při pozorování svých kolegů mohu předpokládat, že výběr toho či onoho jazyka souvisí především s tím, co člověk dělal, než přišel do tohoto odvětví.

  1. IL, seznam pokynů Podobné jako assembler. Nikoho jsem neviděl používat, ale mám podezření, že to ocení kodéři ze staré školy, kteří děrovali štítky zpaměti.
  2. LD, žebříkový diagram. Vizuální jazyk pro ty, kteří se podíleli na vývoji reléových automatizačních obvodů.
  3. ST, strukturovaný text. Ze všeho nejvíc připomíná „klasické“ programovací jazyky, trochu podobné Pascalu. Proto to oceňují ti, kteří se před PLC zabývali programováním v jiných jazycích a platformách, zejména já.
  4. FBD, funkční blokové schéma. Jakési blokové schéma, milujeme především technology, kteří se rozhodnou jít do programování, pro jejich přehlednost.
  5. SFC, sekvenční funkční schéma. Grafický jazyk, víc neřeknu. Nikdy jsem to neviděl použité.

Z ne všech podporovaných jazyků stojí za zmínku jazyk CFC (kontinuální vývojový diagram), Beckhoff jej podporuje. Jedná se o další vývoj jazyka FBD, jedním z nejvýraznějších rozdílů je podle mého názoru podpora explicitní zpětné vazby v obvodech. Proč je to potřeba? Například takový generátor krátkých pulzů bude fungovat na CFC, ale ne na FBD.

READ
Samolepky na sluneční okna

Blok TON je standardní blok, časovač zpoždění zapnutí. Operační logika: výstup Q se stane TRUE, když je vstup IN TRUE alespoň po dobu PT.
Pravděpodobně nejoblíbenějším vývojovým prostředím PLC je CoDeSys. Mnoho výrobců to bere jako základ a buď pro něj vytvoří knihovnu, aby fungovalo s jejich PLC, nebo si dotvoří prostředí pro sebe.

Jak funguje PLC?

Program PLC běží cyklicky. Doba cyklu může být od jednotek milisekund do jednotek sekund, v závislosti na úkolech přiřazených tomuto PLC. Většina PLC umožňuje nastavit dobu cyklu pro návrháře programu, ale některé modely to neumožňují. Mnoho PLC, zejména Beckhoff, umožňuje vytvořit více než jednu cyklicky prováděnou úlohu v jednom programu a nastavit pro tyto úlohy prioritu. Co nám dává tuto příležitost?
Představte si situaci: PLC ovládá ventilační jednotku a ovládací panel je k ní připojen přes RS232. Teplota v místnostech se nemění rychle a nemá smysl spouštět algoritmus řízení ventilace častěji než jednou za 50 – 100 ms. Na druhou stranu, operátorský panel se dotazuje regulátor neustále a zpoždění v odezvě PLC větší než 10 ms se již projevuje „zpomalením“ uživatelského rozhraní a se zpožděním 20 ms hardwarovou vyrovnávací pamětí COM port přeteče. Přítomnost několika úloh nám umožňuje tento problém krásně vyřešit: nechte „rychlou“ úlohu pracovat s portem COM a je volána každé 2 ms a „pomalá“ implementuje logiku provozu ventilace a je volána každých 50 ms. Vše funguje dobře, ovládací panel nezpomaluje, uživatel je spokojen.

A co mají tyto žlázy uvnitř?
  1. Můžete dělat „vše v jedné krabici“ – hlavu, určitou sadu vstupů / výstupů, několik možností konfigurace – tady máme více vstupů, tady je jich méně, tady je hlava výkonnější, tady slabší. Stejně tak například Carel a mnoho dalších. U malého projektu se tento přístup může nějakým způsobem ospravedlnit.
  2. Osobně se mi ale zdá, že jiný přístup poskytuje větší flexibilitu. Hlava je samostatná a přes sběrnici je k ní připojen typový “ocas” I/O modulů. Instalujeme moduly, které potřebujeme a v množství, které potřebujeme. Dělají to například Beckhoff a Siemens.

obraz

Další možností je ale hlava Beckhoff řady CX9000 (na fotce vlevo) se sadou I/O modulů.

READ
Filtrační pole jako systém úpravy vody šťávou: Přehled Video

Mimo jiné je na hlavě stále určitá sběrnice, která umožňuje připojit PLC k síti a často také měnit jeho program přes stejnou síť. Jaký druh sítě to bude, záleží na PLC. Ti, kteří se nesetkali s průmyslovými sítěmi EIA-485, Profibus, CAN a možná i docela známým Ethernetem, to možná nezná. Prostřednictvím této sítě, zvané fieldbus, je PLC připojeno k vyšší úrovni – například ke SCADA systému. Na fotce výše jsou jasně vidět 2 konektory 8P8C na Beckhoffově hlavě – to je Ethernet a Carel má (špatně, opravdu) vlevo nahoře 2 konektory 6P4C – takhle udělali RS-485. Toto rozhraní bohužel nemá obecně uznávaný konektor.

Takže stejně, jak pro to napsat programy?

Obecně se nejedná o téma článku, ale celé knihy. Ale řeknu vám, co jsem viděl z vlastní zkušenosti, a budiž to moucha.
Profesionálním programátorům bude ovládání PLC v mnoha ohledech připadat jako degradace. OOP? Nemáme je, existují pouze struktury, výčty a druh třídy nazývaný „funkční blok“. Co je Soukromé, Veřejné a tak dále, můžete také rovnou zapomenout – nepřijde vám to vhod. Z libovolného místa ve vašem programu máte přístup k jakémukoli jinému místu.
Dynamická alokace paměti? My je vůbec nemáme. Nejste si jisti, kolik dat vám bude zasláno? Přidělte vyrovnávací paměť s rezervou a zapomeňte na tuto paměť – nebudete ji moci uvolnit. Nebo ukažte zázraky rychlosti a zpracujte data za chodu, pokud se vám podaří dodržet zadanou dobu cyklu.
Výjimky? Co jsi. viděl jsem jeden zázrak, který pevně visel při provádění konstrukce formuláře:

Je jasné, že přetečení nevejde foo * bar do 16 bitů, ale proč potom viset? Navíc nic jiného než reset napájení nepomáhá.
Vývojové prostředí? Ne každý má CoDeSys, mnozí chtějí být originální a napsat něco vlastního. Jedno z těchto prostředí s vlastním zápisem se zhroutilo s chybou běhu při pokusu zapsat číslo 86400 do 16bitového INT. A říkáte zpracování výjimek na PLC. Ne vždy to jde normálně ve vývojovém prostředí udělat.

ALE! Ale pro milovníky té jemné čáry, která odděluje hardware od softwaru, je hovorový software opravdu velmi zajímavým odvětvím IT.

READ
Projekty domů se sedlovou střechou - 80 fotografií a dispoziční možnosti

Doufám, že vám tato malá recenze pomůže. Pokud má habrasociety o toto téma zájem, pak vám řeknu více o PLC.

Rating
( No ratings yet )
Like this post? Please share to your friends:
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: