Blok Switcher (v3.2)
Popis
- Plný název funkčního bloku: Lib.Mervis.v3_2.SwitcherBlock
- Dědí z: Lib.Mervis.v2_0.BaseAlarmBlock
- Požadované reference projektu: Lib.Mervis, Lib.Mervis.Alarms
Univerzální blok pro bezpečné spínání jednostupňového fyzického zařízení (čerpadlo, ventilátor, kompresor, ventil, topná patrona). Sdružuje standardní funkcionalitu potřebnou pro řízení takového zařízení: provozní režimy Automatika / Ručně zapnuto / Ručně vypnuto, dohled nad zpětnou vazbou běhu, dva vestavěné alarmy (Nespuštění a Porucha/Havarijní stav), periodické protočení zařízení, doběh po vypnutí, havarijní odstavení s nejvyšší prioritou a servisní čítače (provozní hodiny a počet startů). Protože dědí z BaseAlarmBlock, poskytuje blok jednotné alarmové rozhraní, které lze řetězit do projektového alarmového systému.
Volání ve ST
PROGRAM PUMP_CONTROL_DEMO VAR Heating_Demand : BOOL; Pressure_Switch : BOOL; Thermal_Fault : BOOL; PumpSwitcher : Lib.Mervis.v3_2.SwitcherBlock; Pump_Relay : BOOL; END_VAR PumpSwitcher( OperatingMode := OperatingModeType#Automatic, Demand := Heating_Demand, Feedback := BOOL_TO_USINT(Pressure_Switch), // 0/1; použijte 2 pro ignorování zpětné vazby Failure := Thermal_Fault, RunDown := T#2m, // doběh 2 min pro odvedení zbytkového tepla FeedbackTimeout := T#10s // čekat 10 s na vytvoření tlaku ); Pump_Relay := PumpSwitcher.Command; END_PROGRAM
Vstupy
| Název | Datový typ | Povolený rozsah | Retain | Povinné | Popis |
|---|---|---|---|---|---|
| OperatingMode | OperatingModeType | Ano | Ne | Požadovaný provozní režim (Automatika / Zapnuto / Vypnuto). Režim Off má nejvyšší prioritu a zabraňuje spuštění jakoukoli jinou funkcí. Výchozí hodnota: Off. |
|
| Demand | bool | Ne | Ano | Požadavek na provoz v automatickém režimu (standardní průmyslový signál „požadavek na topení / požadavek na chod“). V manuálních režimech je ignorován. | |
| Feedback | usint | 0..2 | Ne | Ne | Zpětná vazba běhu. Logický signál lze přímo mapovat pomocí BOOL_TO_USINT. Výchozí hodnota: 2 (zpětná vazba není připojena → logika zpětné vazby je vynechána). |
| FeedbackManual | bool | Ne | Ne | Indikuje ruční hardwarové ovládání (např. přepínač HOA na rozvaděči). Promítá se do CompositeState. Výchozí hodnota: false. |
|
| Failure | bool | Ne | Ne | Externí hlášení poruchy zařízení (vypadlý motorový jistič, tepelná ochrana, porucha měniče, …). Vyvolá alarm Failure. Výchozí hodnota: false. |
|
| EmergencyShutdown | bool | Ne | Ne | Havarijní odstavení. Okamžitě deaktivuje Command a má prioritu nad všemi režimy. Výchozí hodnota: false. |
|
| OperatingHoursReset | bool | Ne | Ne | Náběžná hrana, která resetuje čítače provozních hodin a počtu startů. Výchozí hodnota: false. |
|
| ControlFlags | uint | 0..15 | Ne | Ne | Pole bitů definující rozšířené chování (viz tabulka níže). Výchozí hodnota: 0. |
| RunDown | time | Ne | Ne | Doba doběhu po vypnutí: zařízení zůstane v chodu po tuto dobu po zrušení Demand (např. kvůli odvodu zbytkového tepla). Pokud je 0, je funkce vypnuta. Výchozí hodnota: T#5m. |
|
| FeedbackTimeout | time | Ne | Ne | Maximální doba, po kterou se čeká na aktivaci Feedback po vydání Command, než je vyvolán alarm Not Run. Výchozí hodnota: T#30s. |
|
| KickFunctionInterval | time | Ne | Ne | Interval periodického protočení zařízení (ochrana proti zadření). Pokud je 0, je funkce vypnuta. Výchozí hodnota: T#0s (vypnuto). |
|
| KickFunctionDuration | time | Ne | Ne | Doba, po kterou zařízení běží během periodického protočení. Výchozí hodnota: T#1m. |
|
| NotRunAlarmPriority | AlarmPriorityType | Ne | Ne | Třída alarmu pro alarm „Nespuštění“ (Not Running). Výchozí hodnota: 32. |
|
| FailureAlarmPriority | AlarmPriorityType | Ne | Ne | Třída alarmu pro externí alarm poruchy. Výchozí hodnota: 32. |
|
| EmergencyAlarmPriority | AlarmPriorityType | Ne | Ne | Třída alarmu pro reakci na havarijní odstavení jako alarm (viz bit 3 v ControlFlags). Výchozí hodnota: 32. |
Popis hodnot Feedback
| Hodnota | Význam |
|---|---|
| 0 | Zpětná vazba není aktivní (zařízení neběží). |
| 1 | Zpětná vazba je aktivní (zařízení běží). |
| 2 | Zpětná vazba není připojena (výchozí stav) — logika zpětné vazby je vynechána; stav běhu odpovídá hodnotě Command. |
Popis hodnot ControlFlags
| Bit | Maska | Význam |
|---|---|---|
| 0 | 1 | Pokud je TRUE, je kompletně vypnuto veškeré vyhodnocování alarmů. |
| 1 | 2 | Pokud je TRUE, Command je při aktivní poruše zrušen v režimu Automatika. |
| 2 | 4 | Pokud je TRUE, Command je při aktivní poruše zrušen v režimu Ručně (Zapnuto). |
| 3 | 8 | Pokud je TRUE, EmergencyShutdown, ke kterému dojde současně s požadavkem na spuštění, je také hlášeno jako alarm Failure. |
| 4..15 | - | Nepoužito. |
Výstupy
| Název | Datový typ | Popis |
|---|---|---|
| Command | bool | Výstupní povel k provozu (TRUE = běh, FALSE = zastavení). |
| CompositeState | uint | Pole bitů popisující kompletní interní stav bloku (viz tabulka níže). |
| OperatingHours | time | Celková akumulovaná doba běhu (uchovávaná). Resetuje se pomocí OperatingHoursReset. |
| StartCounter | udint | Celkový počet startů (uchovávaný). Resetuje se pomocí OperatingHoursReset. |
Protože je blok potomkem BaseAlarmBlock, poskytuje také zděděné alarmové rozhraní (AlarmsInterface / Reset / Acknowledge / GetActiveAlarmsMask …), které slouží k začlenění jeho dvou interních alarmů do projektového alarmového systému.
Popis hodnot výstupu CompositeState
| Bit | Maska | Význam |
|---|---|---|
| 0 | 1 | Command je aktivní. |
| 1 | 2 | Zpětná vazba je aktivní (Feedback = 1 nebo Feedback = 2 při aktivním Command). |
| 2 | 4 | Je aktivní manuální režim (OperatingMode ≠ Automatic nebo je hlášeno ruční hardwarové ovládání). |
| 3 | 8 | Je aktivní režim Ručně zapnuto (OperatingMode = On nebo ruční ovládání při běhu). |
| 4 | 16 | Demand je aktivní. |
| 5 | 32 | Právě probíhá periodické protočení. |
| 6 | 64 | Právě probíhá doběh po vypnutí. |
| 7 | 128 | Je přítomen aktivní alarm. |
| 8..9 | - | Aktuální reprezentace OperatingMode. |
Podrobný popis funkce
Blok používá interní stavový automat (Off → WaitForFeedback → On → Run-Down s paralelními větvemi Failure, Kick a Emergency) a spravuje dva alarmy:
- Not Run (Nespuštění): vyvolá se, pokud je vydán
Command, aleFeedbackse nestane aktivním běhemFeedbackTimeout. Priorita =NotRunAlarmPriority. - Failure (Porucha): vyvolává jej externí vstup
Failure(a volitelně takéEmergencyShutdown, viz bit 3 vControlFlags). Priorita =FailureAlarmPriority/EmergencyAlarmPriority.
Hlavní funkce:
- Provozní režimy: Automatika, Ručně zapnuto, Ručně vypnuto. Režim
Offmá nejvyšší prioritu;EmergencyShutdownpřebíjí všechny režimy. - Dohled nad zpětnou vazbou: ověřuje, že se zařízení skutečně spustilo; pokud
Feedback= 2, logika zpětné vazby je vynechána a stav běhu odpovídáCommand. - Doběh po vypnutí: po zrušení
Demandv automatickém režimu zařízení pokračuje v chodu po dobuRunDown(např. pro odvod zbytkového tepla), poté se zastaví. Zařízení, které nikdy nepotvrdilo běh zpětnou vazbou nebo bylo vypnuto již v prvním cyklu, dobu doběhu přeskočí. - Periodické protočení: v automatickém režimu, pokud bylo zařízení nečinné po dobu
KickFunctionInterval, je spuštěno naKickFunctionDuration, aby se zabránilo jeho zadření. Protočení má vlastní dohled nad zpětnou vazbou. - Havarijní odstavení: okamžitě nastaví
Command= FALSE bez ohledu na provozní režim. Pokud je nakonfigurováno (bit 3 vControlFlags), současný požadavek na spuštění vyvolá alarm Failure. - Reakce na poruchu: bity 1 a 2 v
ControlFlagsurčují, zda budeCommandpři poruše zrušen samostatně pro automatický a manuální režim (např. aby kritické čerpadlo zůstalo při méně závažném alarmu v manuálním režimu v provozu). - Servisní čítače: akumulované
OperatingHoursaStartCounter, které lze resetovat pomocíOperatingHoursReset.
Logika vykonávání: V automatickém režimu je spuštění vyžádáno vstupem Demand; v režimu Ručně zapnuto je vynuceno. Po požadavku na spuštění blok přejde do stavu WaitForFeedback, aktivuje Command a čeká maximálně FeedbackTimeout na Feedback. Pokud je zpětná vazba potvrzena, přejde do stavu On a zvýší StartCounter; při překročení časového limitu vyvolá alarm Not Run. Vstup Failure nebo EmergencyShutdown kdykoli přesměruje řízení do odpovídající větve. Po zrušení Demand zajistí větev Run-Down běh zařízení ještě po dobu RunDown a poté jeho zastavení.
Příklad použití z reálného projektu
Scénář: Redundantní čerpadlo chladiva pro kolektor ledové plochy
Dvě čerpadla (M4/M5) zajišťují cirkulaci chladiva do ledové plochy. Každé čerpadlo je řízeno vlastním blokem SwitcherBlock:
- Požadavek z logiky střídání čerpadel Lead/Lag je přiveden na Demand; diferenční tlakový spínač (dP) je mapován na Feedback pomocí
BOOL_TO_USINT. - Pokud PLC aktivuje
Command, ale během FeedbackTimeout =T#10snevznikne signál dP, alarm Not Run indikuje například prasklou spojku nebo zadřený rotor a logika střídání může přepnout na záložní čerpadlo. - Porucha motorové ochrany nebo frekvenčního měniče je přivedena na Failure; při nastaveném bitu 1 v
ControlFlagsjeCommandpři poruše v automatickém režimu zrušen. - Aby nedošlo k zadření během letní odstávky, KickFunctionInterval =
T#7da KickFunctionDuration =T#30szajistí týdenní protočení čerpadla. - Krátký RunDown udržuje po ukončení požadavku krátce cirkulaci chladiva.
Command ovládá relé čerpadla; AlarmsInterface je připojeno do agregátoru alarmů strojovny a OperatingHours / StartCounter jsou využity v servisním přehledu.
