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. |