Szűk 3 napom ment el a témára, ledokumentálom gyorsan.
A probléma
A PLC-ben futó szoftvert a PLC-n kívülről is akarjuk utasítgatni.
A megoldás
A kommunikációt network variable használattal oldjuk meg. Ehhez PLC oldalon az kell, hogy engedélyezzük a PLC-ben a hálózati változó támogatást, valamint a benne futó szoftver a hálózati változók tartalmával mókoljon, amit akar.
A “B” oldalon Node-Red-et akartam használni. Node-Redhez létezik egy node-red-contrib-netwar csomag, ezt feltesszük és már huss meg is vagyunk az UDP packet generálással, valahogy így:
A netvar-sender által kiküldendő táviratnak a CodeSys 2 network functionality doksi szerint így kell kinéznie:
Az UDP telegram dokumentációja világosan elmondja, hogy a packet elején levő protocol ID a 3 byte hosszú -S3, ami decimálisban a 2970419 számnak felel meg, amit a netvar-sender node ID mezőjében kell megadnod. Ha ez nincs, a PLC ignorálja a packetet és várhatod, hogy beálljanak a network variabLÉK.
Az utóbbi mondatban leírt felismeréshez nekem szűk két nap kellett, mert elsiklottam a milliónyi manualban / tutorialban afelett, hogy ez az a mező, ami az UDP packet headerét definiálja. Kurt videóját pl. vagy tizenötször kockáztam ki, hogy mi a fenét nézek be – ő pl. itt 4:42-nél állítja át ezt az ID-t egyetlen egy frame alatt: