P.Š. Programování Mosaic 3. 1. 2023 13:17 5. 1. 2023 17:10

Funkční blok Cascade3 z knihovny Rego.lib:

- v případě použití střídání dle motohodin po kolika motohodinách dochází ke střídání? Lze tuto mez motohodin přenastavit, v parametrech to není? Náš požadavek by byl cca 10/20 hod.

- v případě restartu (teplý/studený) regulátoru, nebo restartu regulátoru po výpadku napájení, pamatuje si FB Cascade 3 natočené motohodiny, nebo začne čítat od 0min?

Odpovědi 1

Luboš Urban 5. 1. 2023 17:10

Dobrý den,

omlouvám se za nezodpovězený dotaz. Funkční bloky kaskády fungují tak, že pokud je v konfiguraci funkčního bloku povoleno střídání stupňů parametrem EnableChange (ECHNG), střídají se stupně v definovaném pořadí (např. 123, 231, 312, 123, ...) bez ohledu na motohodiny při náběžné hraně signálu Change (CHNG). Je-li povoleno střídání podle motohodin parametrem ECHNGT, tak se na náběžnou hranu signálu CHNG porovnají časy WT1, WT2 a WT3 jednotlivých členů kaskády a od té doby se jako první bude zapínat ten člen, který měl v době změny pořadí naběháno nejméně hodin a jako poslední se připne ten, který měl v době změny nejvíce hodin. V programu se tedy bude hlídat průběžně počet motohodin aktuálně prvního stupně kaskády a když ten první stupeň naběhá deset motohodin, tak se vygeneruje náběžná hrana signálu CHNG a funkční blok zajistí, aby se pořadí členů kaskády přeskládalo podle momentálního stavu. Ale ten impuls pro změnu musí vyjít z hlavního programu.

Protože motohodiny jsou předávány jako výstupní parametr bloku (součást struktury STAT), tak se při restartu PLC vždy smažou a začnou se počítat od 0. Navíc jsou uloženy jako TIME a jsou tedy rozsahem dost omezené. Řešením je počítat přírůstek motohodin za určitý časový úsek jako WTx(t) - WTx(t-1) a tento rozdíl připočítávat k celkovým motohodinám, které už budou uloženy jako parametr typu DINT a zálohovány (RETAIN proměnná). Toto je ovšem nutné zase ošetřit na úrovni hlavního programu.

V příloze přikládám ukázkový projekt, kde jsou funkční bloky kaskády přepracované a výše uvedený nedostatek odstraňují, tedy řeší už na úrovni funkčního bloku. Stačí jen definovat zálohovanou proměnnou, kam se status uloží a k bloku kaskády se připojí jako VAR_IN_OUT proměnná.

Vaše odpověď

Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.