PLC - Programovatelné logické automaty
PLC-AUTOMATIZACE - PLC - POŽADAVKY Provoz webu zajišťuje:

www.hapesoft.cz

POŽADAVKY NA PLC

Obecný popis

Požadavky na automatizaci průmyslu pomocí výpočetní techniky, konkrétně PLC, má některé odlišnosti od běžných PC a jejich aplikací.

U klasického počítače (PC, notebook, ultrabook, ... ale i chytrý telefon) probíhá interakce mezi počítačem a prostředím pomocí klávesnice (hlasem, ovladačem a pod.) tedy způsobem, který je pro člověka blízký nebo je schopen se jej naučit a naopak, po zpracování úlohy je výstup prezentován v grafické podobě (znaky, symboly) na displeji zařízení (optickou interakcí), hlasem (akusticky), hmatatelně (3D tisk ale i slepecké písmo). Běžný počítač také převážnou dobu čeká, až jej uživatel k něčemu použije, zadá mu úlohu.

Poznámka: děrné pásky, štítky a výstupní tiskové sestavy již byly vynechány.

Zpracování signálů

Oproti tomu PLC, musí trvale a najednou zpracovávat velké množství signálů řízené technologie (automatizovaného procesu), řádově je dnešní PLC schopen zpracovávat 1000 - 10000 binárních signálů oproti 100-1000 v počátcích automatizace. Jednodušší binární signály (zapnuto / vypnuto) představují 80-100% signálů, které jsou zpracovávány, menší zpracovávanou skupinu pak tvoří analogové signály. Samozřejmě, u specifických systémů spojité regulace může být poměr i opačný. S rozvojem síťových prostředků komunikace je možno analogovou hodnotu digitalizovat přímo "u zdroje" ve snímači a ten přes síť předává PLC informace o analogové hodnotě vyjádřené v číselně jako stavové slovo, nebo PLC přes síť komunikuje s dalšími zařízeními.

PLC zpracovává nejen vnější signály, ale i signály interní. Tyto signály vznikají jako vazby a kombinace vycházející z požadované logiky řízení. Uvážíme-li základní možnost vytvoření stavové kombinace např. 4 signálů, tj. 16 kombinací (24=16) je zřejmé, že s každým dalším signálem narůstá počet možných kombinací. I při vyloučení stavů, které reálně nemohou nikdy nastat, řekněme 95% (u malých systémů) a až 99,5% (u velkých systémů) tak u malého systému s 10 vstupními signály dostáváme 1024 možných kombinací, s vyloučením stavů, které nemohou nastat, pak 51 možných reálných kombinací, interních signálů, samozřejmě podle konkrétní aplikace. Pokud klasický počítač zpracovává velké množství informací, tak si operátor na výsledek počká trochu déle a v zásadě se nejedná o havarijní stav. Technologie, řízený proces ale nemůže čekat na výsledky zpracování z PLC, tedy nastává potřeba kontroly rychlosti zpracování.

S předchozím odstavcem souvisí i tvorba programu, čím složitější program, tím pomalejší odezva. Odmyslíme si síťové datové toky sledování, trendy a archivace výroby, dostaneme se k algoritmu, který je možno v jednoduchém příkladu slovně vyjádřit následovně:

Zadání
Pokud jsou bezpečnostní okruhy aktivní a není porucha a je stisknuto tlačítko vpřed a mechanismus nejede vzad a není stisknuto tlačítko stop a mechanismus není na konci pojezdové dráhy vpřed, zapni stykač pro jízdu vpřed a analogicky naopak pro jízdu zpět.
Indikuj poruchu v případě, když jsou oba koncové snímače aktivovány současně nebo při pohybu vpřed je koncový spínač zpět aktivován déle než 1s a analogicky naopak nebo doba chodu motoru je delší než 20s nebo je porucha jištění motoru nebo není aktivován bezpečností okruh.

Reléová logika

Schéma na obrázku 1 ukazuje možné řešení zadané příkladu pomocí klasických relé. Pro dosažení potřebné logiky je potřeba vytvořit cca 27 interních signálů (počet signálů = 1x ochrana + 1x bezpečnost, 2x koncový snímač, 3x tlačítko, 2x stykač = 9, odhad interních signálů = 0,05 x 29 = 25.6).

 


Obrázek 1
Schéma zapojení s použitím klasických relé.

Programové řešení

Kompilátory vyšších programovacích jazyků nejsou vhodné pro programování PLC, málo kdy mají funkce pro práci s bity, složitě zpracovávají časové intervaly a generují příliš velký program ve strojovém kódu instrukčního souboru PLC. Pro účely programování PLC byly tedy vyvinuty vlastní programové jazyky blízké programování v Assembleru. Pro určitý komfort programátora byly vyvinuty i grafické nadstavby zobrazení PLC programů, které jsou názornější a přehlednější pro zpracování binární logiky. Příklady zápisu programu v jazyce C a pro PLC je uveden níže.)

Příklad zápisu programu v jazyce C

 
  001     #include <stdio.h> * // deklarace knihoven  
  002   #include <stdlib.h> *    
  003   #include <time.h> *    
 
  // GLOBÁLNÍ DEKLARACE PROMĚNNÝCH      
 
  004   int OUT_FORW = 0; * // výstup VPŘED  
  005   int OUT_BACKW = 0; * // výstup VPŘED  
  006   int BTN_FORW = 1; * // vstup tlačítko VPŘED  
  007   int BTN_BACKW = 0; * // vstup tlačítko ZPĚT  
  008   int BTN_STOP = 1; * // vstup tlačítko STOP  
  009   int SW_FORW = 1; * // vstup koncák vpřed   
  010   int SW_BACKW = 1; * // vstup koncák zpět  
  011   int FUSE = 1; * // vstup jištění motoru  
  012   int SAFETY = 1 * // vstup bezp. okruhy  
  013   int FAILURE = 0; * // interní porucha  
 
  // HLAVNÍ PROGRAMOVÝ CYKLUS    
 
  014   int main() { *    
  015    while (1) { *    
  016     readInputs() * // čtení vstupů  
  017     foo();   // volání řízení  
  018     usleep(10000); * // nastavení doby cyklu  
  019     writeOutputs() * // zápis výstupů  
  020    } *    
  021    return 0;   // konec  
  022   } *    
 
  // PODPROGRAM ŘÍZENÍ      
 
  023   int foo() {    
  * // Deklarace proměnných  
  024    static int firstRun = 1; * // příznak inicializace času  
  025    static time_t lastTime; * // pomocný proměnná času  
  026    static double forwTime = 0; * // časovač  
  027    static double backwTime = 0; * // časovač  
  028    static double onTime = 0; * // časovač  
  029    time_t currentTime; *    
 
  030    time(&currentTime); * // aktuální čas  
  031    if (firstRun) { * // inicializace časování  
  032     lastTime = currentTime; *    
  033     firstRun = 0; *    
  034    } *    
 
   // KONTROLNÍ ČASOVAČE      
 
  035    if (OUT_FORW && !SW_BACKW) {   // kontrola snímače ZPĚT  
  036     backwTime += difftime(currentTime, lastTime);      
  037    else *    
  038     backwTime = 0; *    
  038    } *    
  039    if (OUT_BACKW && !SW_FORW) {   // kontrola snímače VPŘED  
  040     forwTime += difftime(currentTime, lastTime);      
  041    else *    
  042     forwTime = 0; *    
  043    } *    
  044    if (OUT_FORW || OUT_BACKW) {   // kontrola doby chodu  
  045     onTime += difftime(currentTime, lastTime);      
  046    else *    
  047     onTime = 0; *    
  048    } *    
 
   // PORUCHA      
 
  049    if ((!SW_FORW && !SW_BACKW) || forwTime > 1 || backwTime > 1 ||   // souhrn stavů  
  050     onTime > 20 || !FUSE || !SAFETY) {   // indikující poruchu   
  051     FAILURE = 1;      
  052    else *    
  053     FAILURE = 0; *    
  054    } *    
 
   // VÝSTUPY (vlastní řídící logika)      
 
  055    if (!FAILURE && (BTN_BACKW || OUT_BACKW) && !OUT_FORW && BTN_STOP && SW_BACKW) {   // směr ZPĚT   
  056     OUT_BACKW = 1;      
  057    else *    
  058     OUT_BACKW = 0; *    
  059    } *    
  060    if (!FAILURE && (BTN_FORW || OUT_FORW) && !OUT_BACKW && BTN_STOP && SW_FORW) {   // směr VPŘED   
  061     OUT_FORW = 1;      
  062    else *    
  063     OUT_FORW = 0; *    
  064    } *    
 
  065    lastTime = currentTime; * // aktualizace času  
  070   }   // konec podprogramu  
 
      * ... řádky v programu pro PLC nepotřebné      

Příklad zápisu programu pro PLC v instrukční sadě

  // HLAVNÍ PROGRAMOVÝ CYKLUS
 
  001     MAIN:      
  002   CALL FOO   // volání řízení  
  003   END   // konec  
 
  // PODPROGRAM ŘÍZENÍ
             
  004   FOO:      
 
  // KONTROLNÍ ČASOVAČE
 
  005   AN  SW_BACKW   // kontrola snímače ZPĚT  
  006   A   OUT_FORW      
  007   L   1s      
  008   SD  backwTime   // zpožděné zapnutí  
 
  009   AN  SW_FORW   // kontrola snímače VPŘED  
  010   A   OUT_BACKW      
  011   L   1s      
  012   SD  forwTime   // zpožděné zapnutí  
 
  013   A   OUT_FORW   // kontrola doby chodu  
  014   O   OUT_BACKW      
  015   L   20s      
  016   SD  onTime   // zpožděné zapnutí  
 
      // PORUCHA      
 
  017   AN  FUSE      
  018   ON  SAFETY      
  019   O(      
  020   AN  SW_FORW      
  021   AN  SW_BACKW      
  022   )      
  023   O   backwTime      
  024   O   forwTime      
  025   O   onTime      
  026   =   FAILURE      
 
  // VÝSTUPY (vlastní řídící logika)  
 
  027   AN  FAILURE   // směr ZPĚT  
  028   A   BTN_STOP      
  029   A(      
  030   A   BTN_BACKW      
  031   O   OUT_BACKW      
  032   )      
  033   A   SW_BACKW      
  034   AN  OUT_FORW      
  035   =   OUT_BACKW      
 
  036   AN  FAILURE   // směr VPŘED  
  037   A   BTN_STOP      
  038   A(      
  039   A   BTN_FORW      
  040   O   OUT_FORW      
  041   )      
  041   A   SW_FORW      
  043   AN  OUT_BACKW      
  044   =   OUT_FORW      
 
  045   END   // konec podprogramu  
 

Porovnáním obou zápisů programů pro realizaci stejného řízení je patrné, že programovací jazyk určený pro PLC je z hlediska zápisu přehlednější a úspornější  i v případě, že v jazyce C je možno zapsat logické (a jiné) funkce do jednoho řádku (viz program C, řádky 049, 055 a 060), což jazyk pro PLC neumožňuje.

Inovace

Protože technologický proces nikdy nedosáhne vývojově konečného stavu, je nutno zajistit možnost modifikace programového algoritmu. Ideálním stavem je případ, kdy je možno provést úpravy programu bez odstavení technologie. Výše popsaný příklad uvažuje jedno ovládací stanoviště a samotné zadání je sice realizovatelné reléovou logikou ale úprava na ovládání ze dvou stanovišť již představuje složitější zásah do zapojení, s použitím PLC je úprava nepoměrně jednodušší.

Diagnostika

S ideálním stavem souvisí i bezporuchový provoz. Minimum závad je způsobeno řídícím systémem jako takovým, zpravidla se jedná o případy mechanických nedostatků, selhání snímačů nebo akčních a výkonových prvků, různé výpadky technologie i chyby obsluhy. V případě, že již dojde k poruchové situaci, musí systém umožnit stavovou diagnostiku pro údržbu, ať již v logice řídícího programu nebo stavu systému jako takového. Principielně totiž nelze dosáhnout absolutně 100% stavu diagnostiky ať "ručně" naprogramované nebo s použitím diagnostických nástrojů, zvláště u rozsáhlých celků.

Napájení

Další problematikou je stabilita provozu při rušení (harmonických) v síti, výkyvech (podpětí, přepětí) a výpadcích napájení. Rušení v síti a výkyvy musí PLC překonat na základě odolného napájecího zdroje, případně záložního napájení. Nelze podceňovat ani atmosférickou elektřinu (blesky), bludné proudy, statickou elektřinu, nedostatečné ukostření a pospojování. V případě úplného výpadku se z PLC nesmí ztratit program (nebo pozměnit) je nutno zajistit i bezpečné najetí technologie z obecně nedefinovaného stavu. Prostá reléová logika "prostě vypne" a najíždí ze stavu po zapnutí napájení což může vést ke kolizním stavům. PLC má možnost uchovat poslední stav "před výpadkem" a podle toho samostatně nebo ve spolupráci s obsluhou řídit náběh technologie.

Prostředí

V neposlední řadě je nutno si uvědomit, v jakém prostředí je PLC provozován. Sálové superpočítače jsou hýčkány klimatizací, u osobních počítačů výrobce předpokládá, že pracují s lidmi, tedy v prostředí relativně stabilním. PLC se však nasazují do míst, kde se teploty pohybují v rozmezí větším než 10-40°C. Nízká teplota zvyšuje riziko kondenzace vodních v prostorách s PLC, vysoká teplota zase přehřátí součástek a oba teplotní faktory při rychlém střídání nepříznivě působí na teplotní roztažnost součástek a to způsobuje jejich mechanické selhání, stejně jako působení agresivních plynů a kapalin (kyseliny, louhy) (konkrétně omyl v chemičce, kdy pro řízení výroby H2SO4 byl nasazen nedostatečně krytý PLC s postříbřenými kontakty). Dalším rizikem je prach, postupně, i při samovolné cirkulaci vzduchu proniká do PLC, kde se usazuje a zhoršuje chlazení součástek. Vlhkost, prach, šmír, rozptýlený olej z tlakového vzduchu pak vytvářejí tepelně izolační vrstvu, případně i svody v elektronických obvodech. Popsané vlivy pak způsobující náhodné nestabilní a nedefinované chování systému.

Konkrétní požadavky

Řídící systém má být ...

  • navržen tak, aby byl odolný vůči průmyslovému prostředí jako je teplota, prašnost, vlhkost, výkyvy napájení.
  • schopen zpracovávat běžné úrovně řídících signálů, digitální signály zpravidla 24Vdc, analogové signály ±10V / 0-20mA.
  • jednoduchým způsoben rozšířitelný o další periferie, např. vstupy / výstupy.
  • programovatelný ve srozumitelném jazyce pro širší odbornou skupinu osob tak, aby bylo možno provádět změny v logice řízení.
  • navržen tak, aby umožňovat sledování a diagnostiku řízeného procesu, vyhledávání závad a diagnostiku sebe sama.
  • dostatečně rychlý v cyklu zpracování, typicky je doba zpracování do 100ms považována za vyhovující, závisí však od typu procesu.
  • vzhledem k obsluze postaven tak, aby ovládání rozuměla i bez znalosti konkrétní výpočetní techniky.
  • navržen tak, aby byla zaručena bezpečnost jak systému, tak zařízení, procesu, technologie.


PLC-AUTOMATIZACE - PLC - POŽADAVKY

Reference:
  • Bennett, S. (1979). A History of Control Engineering 1800-1930. London: Peter Peregrinus Ltd. pp. 47, 266. ISBN 0-86341-047-2
  • Bennett, S. (1993). A History of Control Engineering 1930-1955. London: Peter Peregrinus Ltd. On behalf of the Institution of Electrical Engineers. ISBN 0-86341-280-7
  • Hills, Richard L (1996), Power From the Wind, Cambridge University Press.
  • LMaxwell, James Clerk (1868). "On Governors". Proceedings of the Royal Society of London 16.
  • Wallace, Alfred Russel. "On the Tendency of Varieties to Depart Indefinitely From the Original Type".
 
Publikovaný obsah je určen pouze pro individuální studium.
Není povolena distribuce, prodej, přetisk a použití textu a/nebo vyobrazení (úplný, dílčí a/nebo částečný), použití ke školení a/nebo výuce (hromadné, skupinové nebo zadávané), veřejné a/nebo skupinové prezentace a ani jiné formy šíření v hmotné a/nebo nehmotné podobě.