JK Různé 10. 2. 2023 12:54 7. 2. 2023 23:17

Dobry den,

snazim se neuspesne zprovoznit CP-2945 s Node-Red a potreboval bych dobre mirenou radu. 

PLCComS - funguje a mam v nem promenne z nejakeho examplu. Zaroven se na nej muzu pripojit telnetem a vypsat seznam promenych.  Toto tedy funguje.

Node-Red -  v3.0.2 - uplne cista instalace v Dockeru. Stazeny plugin Tecomat z palety.  Ve Flow je Foxtrot-input ktery je nastaveny viz obrazek nize. Nicmene ve variables  se nezobrazi moznost zadneho vyberu.  Napravo v obrazku je videt uspesny ping z ping_test - RJ je tedy z Dockeru dostupna. Nejaky napad co s tim? At zkousim co zkousim, nevim jak zobrazit seznam promenych  z PLCComS.

 

Jeste bych mel doplnujici otazku: Je mozne s tim ridit pres Node-red  spinace (click + press)  + svetla + nekolik C-HM-1121M tak aby tam nebyla znatelna latence?  

 

S pozdravem JK

 

Odpovědi 12

pizla 23. 1. 2023 7:41

Dobrý den, 

právě jsem si tu nasimuloval stejnou situaci. Po nakonfigurování PLCComS je skutečně pole Variables prázdné. Po stisknutí tlačíkta Done, tedy zavření konfiguračního dialogu a následném znovu otevření mi již dané pole všechny proměnné vylistuje.

 

Odpověď na doplňující otázku: 

Existuje spoustu dobrodruhů, kteří si vystavěli řízení svého domu na použití Foxtrotu a Node-Red, a to tedy včetně ovládání světel. Záleží pak na Vás, co považujete za snesitelnou latenci. Oproti přímému aplikačnímu programu v PLC tu nějaká samozřejmě bude, neboť informace je zpracovávána několika sw. Výchozí komunikační smyčka PLCComS, tedy interval mezi vyčítáním dat z PLC, je 100ms. Takže i zde vzniká nějaká prodleva.

JK 24. 1. 2023 9:13

Dobry den,

dekuji za odoved, bylo to otestovano a vysledek je velmi nejasny.  Po kliknuti na Done se sice zobrazily promenne. Ale jen jednou, po kliknuti na deploy se uz pak nezobrazily ani po kliknuti na Done / znovu otevreni okna a pod.  Parkrat se mi jeste povedlo dostat k promennym, ale neni tam zadny spolehlivy pattern a po vetsinu doby se zadne promenne neukazujou. Je nejaka sance ze by jste toto opravili (a pokud ano v jakem casovem horizontu).? 

 

Co se tyce te doplnujici otazky:

O 100ms defult cyklu jsem se jiz docetl drive a zmenil jsem jej na 10ms. Celkovou latenci jeste neznam protoze ani nejjednodussi sample mi nefunguje. Nicmene v tu pidi chvilku co to zrovna nahodou fungovalo to vypadalo opticky dobre. Az se dostanu do stabilni faze (tj asi az opravite ten plugin do NodeRED, tak provedu mereni pro pripad ze by to nekoho zajimalo). 

Preformuluji tedy otazku - jaka je vnitrni latene PLC pri pouziti cca 10x C-HM-1113M  + nejake dalsi prevodniky. Snazil jsem se tento udaj najit, ale nikde jsem ho nenasel.  Cesta z/do PLC je jasna: musi projit skrz PLCComS (cca 10ms latence) a pak nekam vejs napr do NodeRED (ten ma prd co na praci a sedi na nasobne vykonejsi masine nez je PLC).

pizla 24. 1. 2023 10:37

Dobrý den,

rád bych Vám pomohl a případně něco opravil, ale zatím moc nevím co. Opět jsem si tady vše odzkoušel, provedl jsem několikrát Deploy s jednoduchými příklady a okno s Variables se mi načítá.

 

K doplňující otázce:

Velmi zjednodušeně řečeno, latence způsobená PLC je dána dobou programové smyčky. Program PLC se provádí cyklicky, tzn. seberou se vstupy, provede se výpočet, nastaví se výstupy. Hodnotu programové smyčky lze vyčítat pomocí systémového registru %S22 (viz Help Mosaicu) nebo jednorázově přes Mosaic menu PLC -> Informace o PLC -> záložka Doplňkové. Pokud bychom věc chtěli ještě zesložitit, lze odměřovat změny 6. alternačního bitu statusu každé CIB jednotky, který se mění na základě přijetí nových dat do jednotky. Status jednotky je dostupný přes procesní data CIB sběrnice. V ideálním případě však data do jednotky dorazí v rámci jednoho cyklu PLC, tedy proto lze zjednodušeně říci, že latence je tedy dána pouze dobou cyklu programu.

JK 24. 1. 2023 12:07

Dobry den,

typicka patova situace - me to nic nedela a Vam to funguje bez problemu 8-). Udelam jeste par testu a dam vedet. 

 

Jeste k dopnujici otazce:  Omlouvam se za prilisnou zvedavost (proste me zajima jak to je) . Dovolim si lehce oponovat - mate i nemate pravdu. Z datasheetu je doba cyklu pro 1k logickych instrukci 0.036ms pro CP2xxx .  Ne ze bych Vam nefandil, ale pro komunikacni rychlost 19200Bd (toto jsem nasel pro CIB) to odpovida cca 1920B/1s (podle nastaveni komunikace) =>  1.9B/za ms. Pokud smycka trva 0.036ms tak  se za tu chvilku neprenese ani bit z te komunikace.  Takze to neni uplne spravne - resp neni cyklus jako cyklus.  Jak pisete cyklus PLC zacina nactenim vstupu - delka teto operace se tedy bude menit s poctem pripojenych expanznich modulu - a tady nam zacne rust delka celeho cyklu +- nezavisle na velikosti uzivateskeho kodu. Navic s rostoucim poctem expanzich modulu se na konci cyklu jeste musi obslouzit zapis do modulu - opet toto poroste s poctem pripojenych modulu.  Tady pak zalezi jak moc mate zoptimalizovany protokol - rekneme, ze kazda jednotka posle 6B (asi nejaka adresa, stavy vstupu, kdyz budou analogove tak to bude jeste vic) + kdyz budete mit TDMA (ne CSMA/CD) tak neni potreba velka mezera mezi pakety. Takze palcovym vypoctem se prenesou 2B/ms => prenos 6B = 3ms + rekneme ze aspon 1ms jako mezera mezi pakety => 4ms/paket. Pri 10 expannich jendotkach to je  40ms na cteni a 40ms na zapis.   (doufam ze jsem nekde neudelal skolackou chybku). Na drtivou vetsinu MaR je to vice nez dostacujici rychlost,  ale pro rozsviceni svetel tlacitkem to uz zacina byt celkem kriticke.  Jak pisete dalo by se to odhadnout z toho celkoveho cyku  - ktery se da zmerit kdyz mate ty jendotky k dispozici. Nicmene ja je nemam a to jesli je budu mit ovlivnuje to jestli ma vubec smysl je kupovat kdyz bude dopredu jasne ze talence je tak vyskoka ze to nedava smysl. 

 

 

pizla 24. 1. 2023 15:54

Nechci nijak schazovat Vaše výpočty, zřejmě máte v dané věci přehled. Ale v tomto případě nelze takto jednoduše serializovat jednotlivé časy. Každá sběrnice je obsluhována samostatným komunikačním procesorem, který řeší komunikaci s danou sběrnicí. Zásoba práce se jim předáva po rychlé interní sběrnici z hlavního procesoru, který dané obsluhy řeší v samostatných threadech. Celé zpracování je tedy paralelní a asynchronní. Navíc situaci ještě komplikují různé vlastnosti protokolů daných sběrnic, např. u CIB pak prioritizace zpráv zápisu výstupů atd. U CP-2xxx byla pro některé CIB jednotky zvýšena i rychlost komunikace na 111kb/s (to je platné pouze pro CIB jednotky s velkým datovým objemem). Nejsme tedy schopni bez přímého měření jednoznačně určit Vámi požadovanou latenci.

Pojem "Doba cyklu na 1k logických instrukcí" v datasheetu je pravda zavádějící. Správně je to doba potřebná k vykonání 1k instrukcí. Do realné doby cyklu je nutné započítat i nutné režie jednotlivých obsluh a v případě CP2x nějaký čas uzme i zbytek Linuxu. Minimální dobu cyklu (tedy v případě prázdného programu) nelze tedy pevně stanovit, neboť je opět závislá na jiných faktorech.

JK 24. 1. 2023 23:44

Dobry den,

velmi dekuji za obsahle odpovedi. 

Co se tyce primarniho probemu tak prikladam video (https://drive.google.com/file/d/17Zc3fJJG2DdN6DkViRw6whBFOYu_-FqK/view?usp=share_link)- NodeRed byl cerstve rebootovan a v takovem pripade vidim seznam promenych, ale jakmile z toho okna vylezu tak uz ten seznam nikdy neuvidim - viz ukazka. 

 

Re sekundarni dotaz: 

Ano mam sve letite zkusenosti s LINUX, RTOS, baremetal 8-) a se zrychlovanim RTOS driveru tak aby se z nich dalo vymacknout co nejvic a co nejrychleji. 

Paraelismus ano (diky za Linux a RTOS), ale ten je na urovni vykonavani SW (thready a pod) a to rekneme ze je z pohledu latence zanedbatelny, mate tam myslim cca 750MHz cpu, to ma dost sily na cokoliv. Nicmene pokud se bavime o pristupu na komunikacni linku (jednu) tak se bavile o seriovem razeni tasku (na sbernici). Kdyby to slo, muzete vzit libovolny CP-2xxx zmerit delku cyklu a pak k nemu pripojit C-HM-1113M nebo cokoliv co se Vam tam bude valet na stole a znova zmerit delku cyklu? To  umozni jednoduchou estimaci latence. Idelane kdyby se to dalo zmerit nejdiv s jednim externim zarizenim a pak se dvema. 

Na druhou stanu - nejsem uplne PLC fanda, ale clovek do toho musi trochu dozrat. Tak jakozto clovek ktery vystudoval ridici techniku bych ocekaval, ze latence rizeni nekterych procesu je hot topic. Trochu jsem ocekaval, ze me uzemnite strohou dopovedi ze to je xyz ms. Jaky smysl ma uvadet delku vykonavani 1k instrukci kdyz nemam sanci se dozvedet jaky je overhead pripojenych periferii ktery je pravdepodobne radove vetsi nez samostatne vykonavani instrukci?

 

 

pizla 25. 1. 2023 10:05

Dobrý den,

děkuji za zaslané video. Zde je mé video:

https://drive.google.com/file/d/1F_6vH-yQtP0H1ZXpYH6iYvO-8gdVaXzp/view

JK 26. 1. 2023 10:08

Dekuiji, 

zkusil jsem to na jinem environmentu a uz se nedostanu ani pres Done. Jakou verzi Dockeru pouzivate? 

Moje je:

26 Jan 08:40:28 - [info] Node-RED version: v3.0.2 
26 Jan 08:40:28 - [info] Node.js  version: v16.16.0 
26 Jan 08:40:28 - [info] Linux 5.15.0-58-generic x64 LE

Muj testovaci workflow je v Dockeru (otestovano na dvou ruznych PC v jinych sitich):

1. docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red  (fresh instalace Docekru aby nebyla zatizena jinym balastem). 

2. Stazeni node-red-contrib-foxtrotnode  (viz info nize)

3. Pridani foxtrot-input  nodu  a debud nodu + propoj mezi nima.

4. Nastaveni plccoms 

5. V tomto pripade se k promennym dokonce vubec nedostanu.

6. Restart Dockeru

7. Vidim promenne, ale jen jednou jako to je na videu co jsem posilal

 

Otazka tedy je co je u Vas jinak? Neumim uz udelat vice cistou instalaci. Ciste hypoteticky muze byt jeste problem na strane plccoms kdy Vy muzete mit jinou verzi nez ja....

 26 Jan 08:43:39 - [info] Installing module: node-red-contrib-foxtrotnode, version: 1.1.0 
26 Jan 08:43:41 - [info] Installed module: node-red-contrib-foxtrotnode 
26 Jan 08:43:41 - [info] Added node types: 
26 Jan 08:43:41 - [info]  - node-red-contrib-foxtrotnode:plccoms 
26 Jan 08:43:41 - [info]  - node-red-contrib-foxtrotnode:foxtrot-input 
26 Jan 08:43:41 - [info]  - node-red-contrib-foxtrotnode:foxtrot-output


 

 

pizla 26. 1. 2023 12:53

Spouštím to naprosto stejně jak popisujete:

26 Jan 09:37:34 - [info] Node-RED version: v3.0.2
26 Jan 09:37:34 - [info] Node.js  version: v16.16.0
26 Jan 09:37:34 - [info] Linux 5.15.79.1-microsoft-standard-WSL2 x64 LE
26 Jan 09:37:35 - [info] Loading palette nodes
26 Jan 09:37:35 - [debug] Module: node-red-contrib-foxtrotnode 1.1.0 /data/node_modules/node-red-contrib-foxtrotnode

PLCComS používáte přímo na plc nebo Vám běží někde externě?

Můžete ještě zkusit přenastavit log level v settings.js pro nodered na debug, jestli nebude vidět nějaký problém ve výpisech. Ale popravdě je ten plugin napsaný trochu hulvátsky, takže těch logovacích výpisů tam není mnoho. Což by se dalo případně asi vylepšit. Ostatně plugin si můžete forknout z githubu a zkusit proložit logy, není nijak složitý.

Případně Vám ještě mohu poslat konfigurační soubor pro wireguard VPN, která by tu Vaší centrální jednotku (pokud používáte řadu CP-2x) připojila do naší servisní sítě a já bych mohl zkusit spojení, jestli mi to dělá to samé.

JK 26. 1. 2023 13:09

Dobry den,

zajimave. Pokud mozno zaslete mi konfiguracni soubor (je to CP-2945I v2.2.053).  Ja akorat musim prijit na to kam jednotku pripojit aby nebyla ve firemni siti 8-). 

pizla 26. 1. 2023 13:28

Konfiguraci jsem zaslal na váš email.

JK 7. 2. 2023 23:17

Uspesne vyreseno ve spolupraci s TECO podporou aktualizaci Foxtrot pluginu v NodeRed.

 

Tento dotaz je vyřešený.