PLC Tecomat Foxtrot - Vizualizácia dát online

Diskuze k Tecomat Foxtrot, nastavení, návody, zkuěnosti, praxe
ondrejoo
Příspěvky: 5
Registrován: stř úno 24, 2021 1:08 pm

PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od ondrejoo »

Dobrý deň,
mám PLC Tecomat Foxtrot CP-1000 a k nemu pripojené 2 moduly C-RQ-0600, ktoré merajú teplotu, vlhkosť a CO2. Mám vytvorený datalogger a namerané dáta mi to ukladá do pamäte PLC. Potrebujem tieto dáta vykresľovať do grafov poprípade znázornovať do tabuliek tak aby sa dali pozrieť online. Keďže v tom všetkom niesom veľmi zbehlý potreboval by som pomôcť ako na to. Zatiaľ som si to len poväčšine čítal ale neviem ako to zrealizovať, keďže niesom programátor. (preto to robím cez graficky jazyk LD)

Chcel som to robiť najprv cez databázu, PLC by cez MQTT posielalo Brokerovi dáta, tieto dáta by sa ukladali na servery kde by bežala databáza. Táto databáza by bola prepojená s Grafana.com a tá by mi podľa nastavení vykresľovala potrebné hodnoty/grafy. Ale ako vravím niesom programátor a myslel som si, že to bude jednoduchšie ale z môjho pohľadu nieje.

Asi mi to bude stačiť aj cez WebMaker, kde si cez kresliace plátno a knižnicu ConvasObjectsLib nakreslim a zadefinujem grafy a tie otvorím cez prehliadač. Príde mi to o dosť jednoduchšie ako predošla varianta. Lenže neviem ako presne postupovať...

Mojím cieľom je interpretácia a vizualizácia nameraných dát online, chcem sa preto opýtať existuje ešte nejaký spôsob ako by som to mohol docieliť? ak áno aký?
Ako nadefinujem "kresliace plátno" vo WebMakeri aby mi ukazovalo aktuálne nameranú hodnotu?
Dá sa nejako pracovať so súbormi CSV čo mi ukladá do pamäte PLC?

Ďalej by som to potreboval nejako analyzovať/vyhodnocovať namerané dáta a podľa toho spínať výstupy na PLC. Ale to bude, až keď vyriešim tú vizualizáciu.

Vopred Ďakujem za cenné rady
Uživatelský avatar
marsal64
Příspěvky: 1200
Registrován: sob čer 16, 2018 1:45 pm
Lokalita: Velké Popovice
Systémové napětí: 48V
Výkon panelů [Wp]: 9,3
Kapacita baterie [kWh]: 30
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Velké Popovice

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od marsal64 »

Foxtrot je prima a jde s ním vše, co píšeš, ale je třeba do toho vniknout a bez programování a spousty stráveného času nad tím to asi nepůjde. Dávám aspoň pro ilustrativní představu příklad svých (velmý jednoduchých) grafů v jazyce ST, které se pak zapasovávají do webových stránek.
Jinak třeba https://forum.mypower.cz/viewtopic.php? ... 40#p115395 a samozřejmě celé vlákno k Foxtrotu, pokud neznáš.

Kód: Vybrat vše

PROGRAM PlotGraph

 VAR_EXTERNAL
    AT %S20.1   : BOOL;   // casova zakladna
 END_VAR
 
 VAR
    VyrSpotrLine : fbBarGraph2 := (fit := True,
                                minX := MHON, maxX := 0,
                                graphColor1 := GCOLOR_ORANGE, graphColor2 := GCOLOR_BLUE_A200,
                                maxPoints := HON, numPoints1 := HON, numPoints2 := HON);
    VyrSpotrLineD : fbBarGraph2 := (fit := True,
                                minX := MDON, maxX := 0,
                                graphColor1 := GCOLOR_ORANGE, graphColor2 := GCOLOR_BLUE_A200,
                                maxPoints := DON, numPoints1 := DON, numPoints2 := DON);
    VyrSpotrLineHome : fbLineGraph2 := (fit := True,
                                minX := MHON, maxX := 0,
                                axisColor := 69 + 69 * 256 + 69 * 256 * 256,
                                graphColor1 := GCOLOR_WHITE, graphColor2 := GCOLOR_ORANGE,
                                maxPoints := HON, numPoints1 := HON, numPoints2 := HON);
    Vyroba1 : fbBarGraph1 := (fit := True,
                                minX := MHON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := HON, numPoints := HON);
    Vyroba1D : fbBarGraph1 := (fit := True,
                                minX := MDON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := DON, numPoints := DON);
    Vyroba2 : fbBarGraph1 := (fit := True,
                                minX := MHON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := HON, numPoints := HON);
    Vyroba2D : fbBarGraph1 := (fit := True,
                                minX := MDON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := DON, numPoints := DON);
    SOC : fbLineGraph1 := (fit := True,
                                minX := MHON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := HON, numPoints := HON);
    SOCD : fbLineGraph1 := (fit := True,
                                minX := MDON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := DON, numPoints := DON);
    SOChome : fbLineGraph1 := (fit := False,
                                minX := MHON, maxX := 0,
                                minY := 0, maxY := 100,
                                graphColor := GCOLOR_WHITE,
                                axisColor := 69 + 69 * 256 + 69 * 256 * 256,
                                maxPoints := HON, numPoints := HON);

    i : int;


 END_VAR

    h_right := hhvals[HON] ;
    h_left := hhvals[1];
    i := HON/2;
    h_mid := hhvals[i];
    
    d_right := hdvals[DON] ;
    d_left := hdvals[1];
    i := DON/2;
    d_mid := hdvals[i];


 VyrSpotrLine (refr := %S20.1, bufY1 := void(mer[49].vh), bufY2 := void(mer[39].vh));
 VyrSpotrLineD (refr := %S20.1, bufY1 := void(mer[49].vd), bufY2 := void(mer[39].vd) );
 VyrSpotrLineHome (refr := %S20.1, bufY1 := void(mer[39].vh), bufY2 := void(mer[49].vh));
 Vyroba1 (refr := %S20.1, bufY := void(mer[31].vh));
 Vyroba1D (refr := %S20.1, bufY := void(mer[31].vd));
 Vyroba2 (refr := %S20.1, bufY := void(mer[33].vh));
 Vyroba2D (refr := %S20.1, bufY := void(mer[33].vd));
 SOC (refr := %S20.1, bufY := void(mer[51].vh));
 SOCD (refr := %S20.1, bufY := void(mer[51].vd));
 SOChome (refr := %S20.1, bufY := void(mer[51].vh));

END_PROGRAM
Přílohy
Grafy2.jpg
Grafy2.jpg (23.56 KiB) Zobrazeno 1091 x
Grafy1.jpg
dumi
Příspěvky: 2037
Registrován: stř zář 05, 2018 8:38 pm

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od dumi »

Me se.osvedcilo pres teco api nacitat data do DB (mysql nebo mariadb) a sup s nima do grafany :-)
Dumiho ostruvek: 4,7kWp, 13,3kWh, 2400W inverter
ondrejoo
Příspěvky: 5
Registrován: stř úno 24, 2021 1:08 pm

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od ondrejoo »

marsal64 píše:Foxtrot je prima a jde s ním vše, co píšeš, ale je třeba do toho vniknout a bez programování a spousty stráveného času nad tím to asi nepůjde. Dávám aspoň pro ilustrativní představu příklad svých (velmý jednoduchých) grafů v jazyce ST, které se pak zapasovávají do webových stránek.
Jinak třeba https://forum.mypower.cz/viewtopic.php? ... 40#p115395 a samozřejmě celé vlákno k Foxtrotu, pokud neznáš.

Kód: Vybrat vše

PROGRAM PlotGraph

 VAR_EXTERNAL
    AT %S20.1   : BOOL;   // casova zakladna
 END_VAR
 
 VAR
    VyrSpotrLine : fbBarGraph2 := (fit := True,
                                minX := MHON, maxX := 0,
                                graphColor1 := GCOLOR_ORANGE, graphColor2 := GCOLOR_BLUE_A200,
                                maxPoints := HON, numPoints1 := HON, numPoints2 := HON);
    VyrSpotrLineD : fbBarGraph2 := (fit := True,
                                minX := MDON, maxX := 0,
                                graphColor1 := GCOLOR_ORANGE, graphColor2 := GCOLOR_BLUE_A200,
                                maxPoints := DON, numPoints1 := DON, numPoints2 := DON);
    VyrSpotrLineHome : fbLineGraph2 := (fit := True,
                                minX := MHON, maxX := 0,
                                axisColor := 69 + 69 * 256 + 69 * 256 * 256,
                                graphColor1 := GCOLOR_WHITE, graphColor2 := GCOLOR_ORANGE,
                                maxPoints := HON, numPoints1 := HON, numPoints2 := HON);
    Vyroba1 : fbBarGraph1 := (fit := True,
                                minX := MHON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := HON, numPoints := HON);
    Vyroba1D : fbBarGraph1 := (fit := True,
                                minX := MDON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := DON, numPoints := DON);
    Vyroba2 : fbBarGraph1 := (fit := True,
                                minX := MHON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := HON, numPoints := HON);
    Vyroba2D : fbBarGraph1 := (fit := True,
                                minX := MDON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := DON, numPoints := DON);
    SOC : fbLineGraph1 := (fit := True,
                                minX := MHON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := HON, numPoints := HON);
    SOCD : fbLineGraph1 := (fit := True,
                                minX := MDON, maxX := 0,
                                graphColor := GCOLOR_BLUE,
                                maxPoints := DON, numPoints := DON);
    SOChome : fbLineGraph1 := (fit := False,
                                minX := MHON, maxX := 0,
                                minY := 0, maxY := 100,
                                graphColor := GCOLOR_WHITE,
                                axisColor := 69 + 69 * 256 + 69 * 256 * 256,
                                maxPoints := HON, numPoints := HON);

    i : int;


 END_VAR

    h_right := hhvals[HON] ;
    h_left := hhvals[1];
    i := HON/2;
    h_mid := hhvals[i];
    
    d_right := hdvals[DON] ;
    d_left := hdvals[1];
    i := DON/2;
    d_mid := hdvals[i];


 VyrSpotrLine (refr := %S20.1, bufY1 := void(mer[49].vh), bufY2 := void(mer[39].vh));
 VyrSpotrLineD (refr := %S20.1, bufY1 := void(mer[49].vd), bufY2 := void(mer[39].vd) );
 VyrSpotrLineHome (refr := %S20.1, bufY1 := void(mer[39].vh), bufY2 := void(mer[49].vh));
 Vyroba1 (refr := %S20.1, bufY := void(mer[31].vh));
 Vyroba1D (refr := %S20.1, bufY := void(mer[31].vd));
 Vyroba2 (refr := %S20.1, bufY := void(mer[33].vh));
 Vyroba2D (refr := %S20.1, bufY := void(mer[33].vd));
 SOC (refr := %S20.1, bufY := void(mer[51].vh));
 SOCD (refr := %S20.1, bufY := void(mer[51].vd));
 SOChome (refr := %S20.1, bufY := void(mer[51].vh));

END_PROGRAM
Ďakujem za odpoveď. Chcem sa opýtať čo zadefinujem do VAR_IN_OUT vo funkcnom bloku na obrázku pod označením bufY1? chcel som tam dať premenné, ktoré dané moduly merajú, lenže tie sú len VAR_IN. Po nastavení a prepojení s "kresliacim platnom" vo WebMakeri a spustením vo webovom prehliadaci mi vykreslí len graf, ale žiadnu krivku v ňom. Alebo potrebujem ešte niečo k tomuto funkcnému bloku pridať?
Taktiež mi niekedy hlási chybu "Xpro:Fatální] proces ´P 0´ není vytvořen" je to spôsobené tým, že mám niečo zle nastavené (alebo mi tam chýba niečo) vo funkčnom bloku?
Ďakujem
Přílohy
otazka1.PNG
ondrejoo
Příspěvky: 5
Registrován: stř úno 24, 2021 1:08 pm

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od ondrejoo »

dumi píše:Me se.osvedcilo pres teco api nacitat data do DB (mysql nebo mariadb) a sup s nima do grafany :-)
Môžem poprosiť viac info ohľadom tej teco API ako to funguje alebo ako postupovať pri nastavovaní? To Teco API k nemu pripojím PLC ale potreba je to aj nastaviť (naprogramovať) aby si zbieralo dáta do databázy či? Ako to potom zadefinujem do prostredia Mosaic? Nepotrebujem žiadneho Brokera, MQTT clienta a pod.? Ta Teco API obsahuje už spomínané databázy alebo to bude potreba nainštalovať/nastaviť?

Vopred Ďakujem
Uživatelský avatar
marsal64
Příspěvky: 1200
Registrován: sob čer 16, 2018 1:45 pm
Lokalita: Velké Popovice
Systémové napětí: 48V
Výkon panelů [Wp]: 9,3
Kapacita baterie [kWh]: 30
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Velké Popovice

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od marsal64 »

ondrejoo píše:Chcem sa opýtať čo zadefinujem do VAR_IN_OUT vo funkcnom bloku na obrázku pod označením bufY1? chcel som tam dať premenné, ktoré dané moduly merajú, lenže tie sú len VAR_IN. Po nastavení a prepojení s "kresliacim platnom" vo WebMakeri a spustením vo webovom prehliadaci mi vykreslí len graf, ale žiadnu krivku v ňom. Alebo potrebujem ešte niečo k tomuto funkcnému bloku pridať?
Taktiež mi niekedy hlási chybu "Xpro:Fatální] proces ´P 0´ není vytvořen" je to spôsobené tým, že mám niečo zle nastavené (alebo mi tam chýba niečo) vo funkčnom bloku?
Ďakujem
Neprogramuji v tom grafickém jazyce, tak nevím :-/. Samozřejmě je potřebné mít příslušné hodnoty proměnných v (daném případě) mer[49].vh atd., odtud se to bere do grafu. Kód je ilustrativní příklad.
Grafy jsem se naučil dělat z projektu ExampleGraphs, který se dodává jako vzorový s Mosaic.
Pamatuji si mlhavě, že podle příkladů jsem nejdřív dělal pouze statické grafy, které se nehýbaly, proto jsem do kódu dodával tu "časovou základnu".
Uživatelský avatar
marsal64
Příspěvky: 1200
Registrován: sob čer 16, 2018 1:45 pm
Lokalita: Velké Popovice
Systémové napětí: 48V
Výkon panelů [Wp]: 9,3
Kapacita baterie [kWh]: 30
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Velké Popovice

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od marsal64 »

dumi píše:Me se.osvedcilo pres teco api nacitat data do DB (mysql nebo mariadb) a sup s nima do grafany :-)
To je určitě dobré řešení, ale je to holt další krabička a další spotřeba, systém, údržba, komunikace.

Osobně mám doma ještě Qubino elektroměr Z-wave zprovozněný na Home Assistant Linuxové krabičce. A uvažuji o variantě, že místo Qubina půjde druhý Modbus elektroměr a vyčítat ho bude také Foxtrot. Uvidím, budu meditovat, zda ten Z-wave chci nakonec nějak použí doma šířeji. To je možné, protože holt rozvody překopávat kvůli spínání spotřebičů doma nebudu a v rámci šetření baterek nějaká automatizace vhodná bude.

Nevím pak, jesli má smysl Foxtrota přímo rozbíhat se z-wave, nevědí o tom něco náhodou místní profi foxtroťáci?
ondrejoo
Příspěvky: 5
Registrován: stř úno 24, 2021 1:08 pm

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od ondrejoo »

marsal64 píše:
ondrejoo píše:Chcem sa opýtať čo zadefinujem do VAR_IN_OUT vo funkcnom bloku na obrázku pod označením bufY1? chcel som tam dať premenné, ktoré dané moduly merajú, lenže tie sú len VAR_IN. Po nastavení a prepojení s "kresliacim platnom" vo WebMakeri a spustením vo webovom prehliadaci mi vykreslí len graf, ale žiadnu krivku v ňom. Alebo potrebujem ešte niečo k tomuto funkcnému bloku pridať?
Taktiež mi niekedy hlási chybu "Xpro:Fatální] proces ´P 0´ není vytvořen" je to spôsobené tým, že mám niečo zle nastavené (alebo mi tam chýba niečo) vo funkčnom bloku?
Ďakujem
Neprogramuji v tom grafickém jazyce, tak nevím :-/. Samozřejmě je potřebné mít příslušné hodnoty proměnných v (daném případě) mer[49].vh atd., odtud se to bere do grafu. Kód je ilustrativní příklad.
Grafy jsem se naučil dělat z projektu ExampleGraphs, který se dodává jako vzorový s Mosaic.
Pamatuji si mlhavě, že podle příkladů jsem nejdřív dělal pouze statické grafy, které se nehýbaly, proto jsem do kódu dodával tu "časovou základnu".
Tie hodnoty premenných sa berú z nejakého súboru alebo priamo z modulu ako to merá v čase? alebo odkiaľ beriete to "mer[49].vh "? Je to nejaký súbor kam sa zaznamenávajú namerané hodnoty a tie potom vyberáte do grafu? Ako to "mer[49].vh" máte zadefinované vo vašom kode? Neviem či to mám brať zo súboru CSV v pamäti PLC alebo tam nejako nastaviť ten vstup daného snímača a bude to teda brať aktuálnu hodnotu a tú vykreslovať. Lenže potom ako dosiahnem ukladanie predošlých nameraných hodnôt v grafe. Neviete mi poradiť nejakú stránku kde by som to našiel? Poprípade stránku kde najdem už pripravené podobné scripty, podľa ktorých by som postupoval/poprípade si to nakonfiguroval podľa seba. Neviem hlavne nastaviť to "bufY" akú mu priradiť tú "cestu" odkiaľ má tie hodnoty načítať do grafu. Podľa funkcneho bloku to musí byť premenná VAR_IN_OUT lenže neviem čo tam priradiť. Na Obr sú znázornené vstupy/výstupy/vstupyvystupy...väčšina vstupov je len nastavovanie grafu... ale to VAR_IN_OUT ten typ premennej ako prepojím so svojim modulom, ktorý meria hodnoty. Prepáčte, že sa pýtam blbosti ale nemám to vôbec naštudované a neviem odkiaľ by som to mohol naštudovať... skôr to skúšam pokus/omyl... ano viem že su v pomocniku html príklady k tomuto lenže je to v inom jazyku ako používam ja. Ďakujem
Přílohy
otazka2.PNG
ondrejoo
Příspěvky: 5
Registrován: stř úno 24, 2021 1:08 pm

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od ondrejoo »

dumi píše:Me se.osvedcilo pres teco api nacitat data do DB (mysql nebo mariadb) a sup s nima do grafany :-)
Už som si to trošku naštudoval odtialto https://www.tecomat.cz/modules/Download ... xv00537_01 a stiahol som si free verziu ..postupoval som podľa návodu, lenže hned na začiatku v kolonke "Device" po zaškrtnutí HTTPS mi vyskočilo že sa nepodarilo nadviazať spojenie so serverom...ak som to nezaškrtol tak to šlo...lenže pri kolonke "Variables" som získal vybrané premenne z PLC a ak som chcel získaŤ vybrané premenne tak mi vyhodilo, že ta free verzia to nepodporuje...Nemám problém si zakúpiť plnu verziu len neviem ako ďalej postupovať a či by som to vedel správne ponastavovať - aké funkčné bloky použiť v programe alebo ako nastaviť databázu v TecoAPI. Ďakujem
Uživatelský avatar
marsal64
Příspěvky: 1200
Registrován: sob čer 16, 2018 1:45 pm
Lokalita: Velké Popovice
Systémové napětí: 48V
Výkon panelů [Wp]: 9,3
Kapacita baterie [kWh]: 30
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Velké Popovice

Re: PLC Tecomat Foxtrot - Vizualizácia dát online

Příspěvek od marsal64 »

ondrejoo píše:
Tie hodnoty premenných sa berú z nejakého súboru alebo priamo z modulu ako to merá v čase? alebo odkiaľ beriete to "mer[49].vh "?
vh ("values hour") je proměnná, pole, součást položky pole mer. V položce pole mer si tedy v poli vh ukládám hodinové hodnoty a každou hodinu je mimochodem odrotuji nějak takto (s různými možnostmi agregace):

Kód: Vybrat vše

// Rotuj hodinové hodnoty
FOR i := 1 to MEASN DO
  IF mer[i].status THEN
     FOR j := 1 TO HON - 1 DO
         mer[i].vh[j] := mer[i].vh[j+1];
     END_FOR;
     IF (mer[i].typ = 'A') or (mer[i].typ = 'W') THEN
        mer[i].vh[HON] := 0;                // 0 - začíná nová agregace
     ELSE
        mer[i].vh[HON] := mer[i].vh[HON-1]; // kopie
     END_IF;

     // zkopíruj poslední hodnotu pro datalogger a zobrazení
     mer[i].v_lhour := mer[i].vh[HON-1];

  END_IF;
END_FOR;
třeba v mer[49] si ukládám vše co se týká položky "celková spotřeba" - okamžité naměřené hodnoty, sekundové průměry, hodinovou kumulaci atd. a je tam tedy také ono pole vh s hodinovými hodnotami nebo třeba jiné pole vd, kam si ukládám denní kumulace pro zobrazení v jiných grafech.

Nezlob se, ale není jiné cesty než studium:
https://www.tecomat.cz/modules/Download ... progiec_cz
https://www.tecomat.cz/ke-stazeni/priru ... ed-funkci/

  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek