====== Three-point Valve Control (v1.4) ====== {{:cs:mervis-ide:35-help:threepointvalve.png}} ==== Full Name ==== Lib.Mervis.v1_4.ThreePointValve ===== Description ===== The block is used for controlling a three-point valve by generating commands for opening and closing. ==== Required Project References ==== * Lib.Mervis ===== Block Usage Limitations ===== [[..:..:generic_usagelimits.htm|**Test**]] ===== Usage in ST ===== program test var valve: lib.mervis.v1_4.ThreePointValve; end_var valve(); end_program ===== Input and Output Description ===== |Inputs |Name |Data Type|Retain|Mandatory Connection |Meaning| |x |real |No |Yes |Desired valve position| | |CalibrateMin |bool |No |No |Performs calibration to the closed state| | |CalibrateMax |bool |No |No |Performs calibration to the open state| | |Tmin |time |No |No |Minimum duration of generated pulse| | |Trunopen |time |No |No |Time needed to fully open the valve| | |Trunclose |time |No |No |Time needed to fully close the valve| | |Overrun |real |No |No |Time correction when reaching end positions, allowed range from 0 to 1| | |EnableEdgePulsing|bool |No |No |Enables generation of periodic opening and closing pulses| | |Outputs |Name |Data Type |Meaning| |Open |bool |Command for opening | | |Close |bool |Command for closing | | |Position |real |Current calculated valve position | | |ValveState |[[..:valvestatetype_v1.3.htm|Lib.Mervis.v1_3.ValveStateType]]|Current state of the block | | |CompositeState |uint |Bit field describing overall state\\ \\ |Bit|Number|Meaning |\\ |0 |1 |Fully closed |\\ |1 |2 |Fully open |\\ |2 |4 |Valve in motion |\\ |3 |8 |Active calibration| | ===== Detailed Function Description ===== The block generates impulses for opening and closing the three-point valve based on defined parameters and position request. Pulse generation is based on the calculated position. Position is calculated based on the lengths of generated pulses. For further explanation, the transition time is understood as the greater value between Trunopen and Trunclose. If the requested position does not change, the block is in the Idle state. The block considers the minimum step of the requested position according to the minimum pulse duration and the total transition time. If the requested position changes by more than this step, the block transitions to the //Moving// state and generates pulses on //Open// and //Close// until the desired position is reached. If the desired position is fully open or fully closed, a protective pulse of length (the block is in the //MovingOverrun// state) calculated as a multiple of the transition time and the //Overrun// parameter is generated.\\ When requesting end positions, if the //EnableEdgePulsing// parameter is set to true, additional opening and closing pulses are generated with an on-time equal to four times //Tmin// (at least 10s) and an off-time equal to one-quarter of the transition time (maximum 20s). During the on-time generation, the block is in the //Safe// state. Besides safety pulses, position calibration can be requested using the //CalibrateMin// and //CalibrateMax// inputs. Starting calibration causes a pulse to be generated on //Close// (for //CalibrateMin//) or //Open// (for //CalibrateMax//) with a length equal to the transition time plus 20s, and the corresponding calculated position is set. During this calibration, the block is in the //CalibrationMin// or //CalibrationMax// state and does not respond to changes in the requested position until the calibration is complete. It then returns to normal function and states //Idle// or //Moving//. ===== Versions ===== {{indexmenu>.005-threepointvalve#2}}