Diskuse Elektrika.cz

HYBRIDNÍ zóna => Technická podpora výrobce TECO Kolín radí odborníkům => Téma založeno: MrPeter 20.12.2021, 21:49



Název: Jak v Mosaicu počítat počet sepnutí výstupu?
Přispěvatel: MrPeter 20.12.2021, 21:49
Chtěl bych v Mosaicu počítat počet sepnutí digitálního výstupu (heatingRelay1) - počítat náběžné hrany signálu. Mám v funkční blok v ST a v něm tento kód:

Kód:
VAR
      lastHeatingRelay1 : BOOL;
END_VAR
...
IF heatingRelay1 AND (heatingRelay1 = NOT lastHeatingRelay1) THEN
      counterHeatingRelay1 := counterHeatingRelay1 + 1;
END_IF;
...
lastHeatingRelay1 := heatingRelay1;

Jenže do proměnné counterHeating Relay1 se přičte 1 vždy při zapnutí i vypnutí výstupu. Je to triviální funkce, ale už mě nějak nenapadá, co přehlížím?

Existuje v Mosaicu přímo nějaký blok/funkce na počítání motohodin. Pro případ, že bych chtěl monitorovat celkovou dobu např. běhu čerpadla?


Název: Re: Jak v Mosaicu počítat počet sepnutí výstupu?
Přispěvatel: Tomáš Martinek 23.01.2022, 01:07
Jsem jen hobby programátor, ale řekl bych, že vám v kódu chybí právě to vyhodnocení náběžné hrany...

... nechce se mi hledat, jak je to v ST, ale zkoušel jsem to v CFC s R_TRIG pro vyhodnocení hrany a ADD navýšení čítače a funguje to - obrázek tu bohužel z nějakého důvodu nelze přiložit  :-\


Název: Re: Jak v Mosaicu počítat počet sepnutí výstupu?
Přispěvatel: Tomáš Martinek 23.01.2022, 01:18
Ještě bych to napsal jinak... není potřeba držet proměnnou lastHeatingRel ay1 a porovnávat s aktuálním stavem, pokud vyhodnotíte právě tu náběhovou hranu.
Nechce se mi to teď zkoušet, ale možná by pomohlo nepracovat přímo s proměnnou heatingRelay1, ale definovat si lokální vstupní proměnou POU a to právě jako BOOL_R_EDGE a čítač podmínit pouze touto proměnnou...


Název: Re: Jak v Mosaicu počítat počet sepnutí výstupu?
Přispěvatel: Juraj Rojko 23.01.2022, 11:30
Ten kód je v pořádku, detekce hrany tam je. R_TRIG nebo BOOL_R_EDGE se použít dá, ale v principu to dělá to samé (porovnává s předchozí hodnotou). Chyba bude někde v těch třech tečkách - t.j. v tom, co zde není uvedeno. Nicméně Peter na to už asi za ten měsíc přišel.


Název: Re: Jak v Mosaicu počítat počet sepnutí výstupu?
Přispěvatel: MrPeter 15.02.2022, 21:32
Ne, ne, ještě jsem  na to nepřišel. Neměl jsem zatím moc času to zkoušet. Hodnotu si zatím dělím dvěma :D Ale přijdu na to... Čím víc používám Mosaic, tím víc oceňuji TIA portal (bohužel).

Každopádně v simulátoru mi to funguje a v reálném PLC to nejde.

Ty tři tečky v ukázce už nijak s touto částí programu nepracují. Jediná věc, která se jinde v programu mění je proměnná "heatingRelay1",  která je vlastně název přímo digitálního výstupu.