Diskuse Elektrika.cz

VEŘEJNÁ ZÓNA => Témata ještě nezařazená do příslušných rubrik => Téma založeno: Jakub Horváth 14.09.2022, 14:10



Název: Lze programovat PLC v jazyce C/C++/C# ?
Přispěvatel: Jakub Horváth 14.09.2022, 14:10
Projektuji řízení pro lisovací stroj a dostal jsem od zákazníka zajímavý požadavek - řízení musí být naprogramované v programovacím jazyce C (nespecifikoval jakém). Netuším zatím, od kud ten požadavek plyne nebo kam směřuje. Chci se jenom zeptat na jednoduchou otázku - Mám zkušenosti programování PLC pouze v jazycích, které jsou definovány standardem IEC61131-3. Je vůbec možné programovat PLC v jazyce C, nebo je třeba volit nějaké jiné zařízení než je PLC ?

Řízení stroje nebude nijak sofistikované. V podstatě se jedná jen o pár koncáků a tlačítek + analogové měření teploty a tlaku.


Název: Re: Lze programovat PLC v jazyce C/C++/C# ?
Přispěvatel: Martin Kurka 15.09.2022, 13:30
Některá PLC (Simatic, B&R...) mají možnost programování úseků pomocí "Síšarpů" jako nadstavbu pracující v koexistenci s "paralelně" běžícími bloky programů v IEC61131-3.

V tom problém není. Problém je v bezpečnosti programového vybavení. PLC byly původně vymyšlené tak, aby program běhal pravidelně v jedné odladěné smyčce se zaručeným koncem. Na začátku smyčky vždy načetl vstupy nacucnul si jejich otisk do lokálních proměnných, provedl výpočty v jednom cyklu a na jeho konci otisknul vnitřní proměnné do výstupů. Tomu celému průběhu se říkalo otočka.
Dopředné skoky byly zakázány, cykly byly většinou hlídány na maximální čas. Mezní doba otočky, byla posvátná a dodnes je jedním z parametru rychlosti PLC.

Nemohlo se tedy stát, že by
- program zabloudil v nekonečné smyčce
- vstupy a výstupy se v jedné smyčce měnily podle stavu a času zpracování mezivýpočtů uvnitř cyklu
- v programu byla syntaktická chyba, která by cykl úkonů zastavila
- podmínka větvení byla nezacílena nebo neošetřena
-  nedostupná volaná periferie (tiskárna apod.) program zasekla

 Ale když výkonné kroky budete volně programovat v C jazycích, musíte skoro vše výše uvedené ošetřit ručně a napsat a odladit kvalitní program.

Jako zákazník a investor bych do toho nešel ani náhodou. Úroveň bezpečnost stroje bude dána úrovní a hlubokými znalostmi bezpečného návrhu a zkušenostmi programátora.
Už samotné programování v IEC61131-3 vyžaduje obrovskou úroveň zkušeností a znalostí, aby nedošlo k logickým chybám v algoritmu programu. Už jen odladění algoritmu najde tytp chyby, protože nedomyslíte všechny možné eventuality a kombinace. A zdánlivě nemožné kombinace v reále nastávají (jednopólový přepínač zapnutý do obou poloh najednou, nebo ani do jedné atd. výtah není v 1. ani v 2. patře, ale mezi nimi a přijel ze 3. atd.)
 A k tomu najednou ještě musíte hlídat, ošetřit samotný postup programu v C a to i  podle HW nuancí daného PLC. 

Buď bude program kvalitní a velmi drahý, nebo bude laciný s nemalými bezpečnostními riziky.
Jakákoliv změna nebo doplnění programu jiným programátorem, může způsobit nebezpečné chování stroje z jiných důvodů než logické chyby.

Jazyky C jsou v PLC určeny pro snadné programování HMI. Grafické vizualizace, WEB stránek a WEB serverů, tisku, datové komunikace.... Tam je jejich síla a potřebnost.
Ale na výkonné kroky a bezpečné řízení stroje je určen jazyk na bázi IEC61131-3.

A jestli zákazník stále požaduje jen C ,tak jste-li zodpovědný, musíte mu napálit cenu za programování nejméně na trojnásobek a i tak si sotva vyděláte na slanou vodu.




 


Název: Re: Lze programovat PLC v jazyce C/C++/C# ?
Přispěvatel: Petr Chalupa_ 15.09.2022, 17:10
PLC, které by primárně používalo jazyk C jsem ještě neviděl. Na vašem místě bych zákazníkovi předvedl, jak třeba vypadá codesys. Používají ho např. PLC bosch, beckhof a další. Nebo pokud děláte se siemensem, přepněte v TIA jazyk na "SCL". Pokud ten člověk ovládá C-čko, pak pro něj tento jazyk bude velice příjemný a rychle se v něm zorientuje. Je možné, že lpí na tomto požadavku jen proto, že neví, co dnešní PLC umožňují a představuje si třeba, že musí na PLC mít program pouze v ladderu.

Jinak znám jednoho pána, který vyrabí pro truhlárny lisy na brikety a řízení si dělá atmegou. Dělá si na to DPS, krabičku, no prostě komplet. Tam nejspíš program v C-čku má. Nicméně za mě už je to bastl, kde je potřeba řešit spoustu zbytečných problémů, takže bych do toho taky nešel.