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.
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
| 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. |
| 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. |
Blok používá interní stavový automat (Off → WaitForFeedback → On → Run-Down s paralelními větvemi Failure, Kick a Emergency) a spravuje dva alarmy:
Command, ale Feedback se nestane aktivním během FeedbackTimeout. Priorita = NotRunAlarmPriority.Failure (a volitelně také EmergencyShutdown, viz bit 3 v ControlFlags). Priorita = FailureAlarmPriority / EmergencyAlarmPriority.Hlavní funkce:
Off má nejvyšší prioritu; EmergencyShutdown přebíjí všechny režimy.Feedback = 2, logika zpětné vazby je vynechána a stav běhu odpovídá Command.Demand v automatickém režimu zařízení pokračuje v chodu po dobu RunDown (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čí.KickFunctionInterval, je spuštěno na KickFunctionDuration, aby se zabránilo jeho zadření. Protočení má vlastní dohled nad zpětnou vazbou.Command = FALSE bez ohledu na provozní režim. Pokud je nakonfigurováno (bit 3 v ControlFlags), současný požadavek na spuštění vyvolá alarm Failure.ControlFlags určují, zda bude Command př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).OperatingHours a StartCounter, 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í.
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:
BOOL_TO_USINT.Command, ale během FeedbackTimeout = T#10s nevznikne 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.ControlFlags je Command při poruše v automatickém režimu zrušen.T#7d a KickFunctionDuration = T#30s zajistí týdenní protočení čerpadla.
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.