====== Two-stage Boiler (v1.4) ====== {{:cs:mervis-ide:35-help:twostageboiler.png}} ==== Full Name ==== Lib.Mervis.v1_4.TwoStageBoiler ===== Description ===== Block used for controlling the performance of a boiler with a two-stage burner and a circulation pump. ==== Required Project References ==== * Lib.Mervis ===== Usage in ST ===== program test var twoStageBoiler: lib.mervis.v1_4.TwoStageBoiler; end_var twoStageBoiler(); end_program ===== Description of Inputs and Outputs ===== |Inputs |Name |Data Type|Retain|Required Connection |Meaning| |OperatingMode |[[..:operatingmodetype.htm|Lib.Mervis.v1_0.OperatingModeType]]|Yes |No |Boiler operating mode | | |PumpOperatingMode |[[..:operatingmodetype.htm|Lib.Mervis.v1_0.OperatingModeType]]|Yes |No |Circulation pump operating mode | | |OutputTemperature |real |No |Yes |Output temperature | | |BoilerDemand |[[..:stagecontroltype_v1.1.htm|Lib.Mervis.v1_1.StageControlType]]|No |Yes |Combined boiler demand from the [[..:cascadecontroller_v1_1.htm|cascade controller]] | | |RunningStage1 |bool |No |No |Feedback signal of boiler operation - stage 1 | | |FailureStage1 |bool |No |No |Feedback signal of boiler failure - stage 1 | | |RunningStage2 |bool |No |No |Feedback signal of boiler operation - stage 2 | | |FailureStage2 |bool |No |No |Feedback signal of boiler failure - stage 2 | | |PumpRunning |bool |No |No |Feedback signal of circulation pump operation | | |PumpFailure |bool |No |No |Feedback signal of circulation pump failure | | |ResetRuntime |bool |No |No |Reset runtime hours | | |MinimalOutput |real |No |No |External input for defining the minimum output temperature (if zero, it is not used) | | |LimitForAttach |real |No |No |Limit value of the [[..:integralcriterion.htm|criterion]] for activating the second stage | | |LimitForDettach |real |No |No |Limit value of the [[..:integralcriterion.htm|criterion]] for deactivating the second stage | | |MaxOutputTemperature |real |No |No |Maximum output temperature, exceeding it is considered a fault | | |FailureDelay |time |No |No |Interval waiting for active boiler operation feedback | | |FailureCountLimit |uint |No |No |Number of consecutive boiler errors before it is permanently marked as non-functional | | |FailureTimeout |time |No |No |Time after an unsuccessful boiler start before retrying | | |MinimalRunTime |time |No |No |Minimum burner runtime (based on this, the switching hysteresis is adjusted) | | |UseLocalOutputTemperature|bool |No |No |Determines whether the control uses the common output temperature or its own (= true) | | |RunTimeSource |[[..:runtimesourcetype.htm|Lib.Mervis.v1_0.RunTimeSourceType]]|No |No |Determines how the boiler runtime hours are counted | | |PumpRunDownTime |time |No |No |Run-down time of the circulation pump after the boiler is removed from the cascade | | |PumpFailureDelay |time |No |No |Interval waiting for active circulation pump operation feedback | | |Outputs |Name |Data Type |Meaning| |State |[[..:stageinfotype_v1_1.htm|Lib.Mervis.v1_1.StageInfoType]] |Combined boiler state to the [[..:cascadecontroller_v1_1.htm|cascade controller]]| | |DemandStage1 |bool |Command for stage 1 | | |DemandStage2 |bool |Command for stage 2 | | |PumpDemand |bool |Command for the circulation pump | | |RunTimeInHours |udint |Boiler runtime in whole hours | | |FailureOutput |bool |Boiler fault | | |PumpFailureOutput|bool |Circulation pump fault | | |AlarmsStatus |[[..:alarmsstatus.htm|Lib.Mervis.v1_0.AlarmsStatus]] |Combined interface for alarm indication | | |RunTime |time |Boiler runtime | | |Blocks |Name |Data Type |Meaning| |FailureFb1|[[..:failuredetector.htm|Lib.Mervis.v1_0.FailureDetector]] |Block for evaluating the first stage boiler fault | | |FailureFb2|[[..:failuredetector.htm|Lib.Mervis.v1_0.FailureDetector]] |Block for evaluating the second stage boiler fault | | |Alarms |[[..:alarmsextender4.htm|Lib.Mervis.v1_0.AlarmsExtender4]] |Alarm function block\\ \\ |Alarm Input|[[..:alarmspriorities.htm|Priority]]|Meaning |\\ |Alarm1 |32/33 |First stage boiler fault |\\ |Alarm2 |32/33 |Second stage boiler fault |\\ |Alarm3 |32 |Pump fault |\\ |Alarm4 |33 |Boiler overheating || | ===== Detailed Function Description ===== The block is used for controlling a two-stage boiler. Both stages are controlled separately in the following way: * 1st stage\\ Its control uses a thermostat, whose input is either the common or own output and the setpoint from the [[..:cascadecontroller_v1.1.htm|cascade controller]]. The hysteresis of this thermostat is dynamically set to meet the minimum boiler runtime condition and at the same time maintain the regulated temperature within the range from the setpoint to the setpoint plus hysteresis (the actual value is at least as high as the setpoint). The following two cases may occur: * //Runtime is shorter// - the hysteresis is increased by 1/3 of its size - up to a maximum size of fifteen degrees Celsius. * //Runtime is longer than twice the minimum// - the hysteresis is decreased by 1/3 of its value - down to a minimum value of five degrees Celsius. * 2nd stage\\ Its control uses the [[..:integralcriterion.htm|integral criterion]], whose inputs are the same as for the first stage. The second stage is switched by the AttachCmd and DettachCmd requests - it is activated upon attachment, and deactivated upon detachment. The circulation pump is started together with the command for the first or second stage, only when the boiler is the first in line is the pump continuously operated (if in automatic mode). The block also evaluates the following fault conditions: * //Burner non-operation// - based on the difference between the command and the feedback signal or directly using the fault input. If this fault occurs, the error counter is incremented, and if it exceeds the //FailureCountLimit//, the boiler is permanently marked as faulty and removed from cascade control. The counter is reset by a successful start. * //Circulation pump non-operation// - evaluated in the same way as the burner non-operation, its fault also results in removal from cascade control. ===== Usage Example ===== ===== Versions ===== {{indexmenu>.023-twostageboiler#2}}