Line connections |
||
1 |
Reference value - process value |
|
2 |
Actual value |
|
3 |
Correction value - controlled value |
The colour indicates the type of activation of the controller (depending upon the flag FACT):
Dark purple: controller starts immediately
Red: delayed start after 20, 30, 40 or 50 iterations
Pink: delayed start after 100 iterations
White: controller is deactivated
General User Input Values Characteristic Lines Physics Used Displays Example
Generally, the aim of a controller (component 12) is to modify an "actual / process value" by changing the "controlled value", until the "scheduled / target value / set point" is reached.
Depending on the complexity of the controlling task, you can select between three types of controllers:
Component 39 is a two-pin controller (actual value and correction value). It can be used if the scheduled value is a constant.
Component 12 is a three-pin controller (scheduled value, actual value and correction value). It is to be used if the scheduled value is not a fixed number, but instead determined during the calculation.
Component 69 is a five-pin-controller. It has additional pins, which enable an external activation and deactivation of the controlling process depending upon certain influencing variables.
For all controllers, you have to specify the type of the controlled value and the type of the process value. The type of the controlled value must be a basic quantity (pressure, enthalpy or mass flow). The type of the process value can be a derived quantity, such as the temperature or the heat flow, or a fraction of a chemical composition. In the latter case, you must specify the substance, on which the controlling will be based.
An important flag is the characteristic of the controller. It defines the direction, in which the correction value is to be modified:
if both values (correction and actual value) move in the same direction, the characteristic is positive. Example: if you control the generator power through the feed water mass flow, increasing the feed water mass flow will increase the generator power.
if both values move in opposite directions, the characteristic is negative. Example: if you control the steam temperature through a water injection, increasing the water injection will decrease the steam temperature.
A start value has to be specified for the controlled value, either internally as the specification value or externally via the component 33 (start value).
The start value should be at least in the order of magnitude of the expected value and not several powers of ten off. The recommended procedure is to get the model running without a controller first, then you will get suitable start values.
Note that controllers often are critical to the convergence of your calculation, especially if there are several controllers that work against each other. There are certain flags to tune the convergence behaviour by damping or delayed activation of the controller.
Controllers can be damped even more strongly as of Release 9 this, three more damping levels ("very very high”, "even higher”, ”extremely high") have been introduced.
When you perform a data validation, you should avoid conflicts with controllers.
With all controllers, a new mode of calculation with an improved integration of the control into the equation system has been implemented. In particular, problems occurring in the case of controls near the value 0 have been fixed.
The new mode of calculation is globally activated and deactivated, respectively, for all controllers in the model settings (simulationcontroller). In many cases it is possible to do without relaxations and dampings when using the new controller mode.
As in many cases controllers are the cause of convergence problems, controllers are often switched off first to analyze these problems. This had to be done individually for each controller. It is possible to carry out global settings for activating the controllers.
- Activation of the controllers only from a certain iteration step on
- Activation of the controllers only after reaching a certain degree of convergence
In any case, the activation of a controller will be effected only when this is also provided by the individual specifications at the controller. In particular, switched-off controllers will remain switched off.
The sequence of the specification values in the input screen has been sorted. First are the specification values that relate to the reference value, and then the values that relate to the correction variable. Then follow general controller parameters like characteristic, activation, start value specification, and damping or limitation of change.
Decoupling of turn-on/-off feature and delayed start
The flag FACT served both to turn a controller on and off, and to specify a delayed start. In order to be able to better expand the setting options, this feature has been distributed to the two flags FACT and FFU.
The flag FACT is used to specify at which iteration step the controller is to start (at the earliest). FACT=0 means that the controller is to start as early as possible. The variants FACT=-1 and FACT=-2 for deactivating the controller with (-1) and without (-2) start value setting respectively have been marked as “deprecated“, but they are still operational for reasons of compatibility. However, it is recommended to use the new flag FFU for this purpose.
The flag FFU offers various variants for activating and deactivating controllers in different load cases. There are e. g. the following setting options :
• Controller active
- always: FFU=1
- only in design case: FFU=4 or -4
- only in off-design case: FFU=5 or -5
- never: FFU=0 or -1
• Controller not active (i.e. does not control) but sets its start value
- always: FFU=0
- only in design case: FFU=5
- only in off-design case: FFU=4
• Controller not active, without start value setting
- always: FFU=-1
- only in design case: FFU=-5
- only in off-design case: FFU=-4
As of release 11, there is an alternative start value L2STARTOFF (component 39) or L3STARTOFF (components 12 and 69), which is used when the controller is switched off but should set its start value.
Alternative start value in the case of deactivated controller
The start value one wants to set with deactivated controller is not always suitable as start value in the case of activated controller (e.g. 0 kg/s). You then had to set different starting values in the different profiles. As of release 11, there is an alternative start value L2STARTOFF (Component 39) and L3STARTOFF (Components 12 and 69) respectively for this. It is used when the controller is deactivated but is to set its start value. If no value is entered here, L2START and L3START respectively will be used also in the case of deactivated controller.
Compliance with limits
The limits L2MIN/L2MAX (Component 39) and L3MIN/L3MAX (Component 12, Component 69) respectively were not strictly adhered to, but only caused the controller to be deactivated when the respective limit was exceeded. This mainly served to prevent a drifting off in the course of the iteration. For the final result, however, this behaviour is unsatisfactory as the precise achieved value depends on the behaviour of the iteration.
For this reason, from Release 11 the limits are strictly complied with. For reasons of compatibility, however, it is possible to switch back to the old behaviour via the flag FLIM. For this, FLIM has to be set to 0 (“Shut off controller after limit was exceeded“). The standard setting is FLIM=1 (“Stop at limit“).
Functionality of the limits
The limits L3MIN/L3MAX (Component 12, Component 69) and L2MIN/L2MAX (Component 39) only become effective if numerical values are specified for them.
If that is the case, the flag FLIM checks according to the specification with
FLIM=0: the controller is switched off after the limit L3MIN/L3MAX is fallen below / transgressed
or with
FLIM=1: the controller stops on the limit L3MIN/L3MAX.
Examples of the functionality of L3MIN, L3MAX and FLIM see Controller component 39 (EBSILON®Professional,Online Help).
Deactivation of warnings
A warning is issued by default when the controller cannot achieve its target value. In some cases, however, this is unnecessary, e.g. when, in the case of an injection, the inlet temperature is already below the set point temperature. In such cases it is possible to shut off the warning with the flag FWARN.
The flag FWARNOFF allows to activate or deactivate warnings for deactivated controllers. Here it is checked if the start value (in the case of component 69 also the off-value L3OFF) is within the range of validity.
Start Value Transfer In controllers (FMODE)
(Components 12, 39, and 69) it is possible to take over the result for the control variable as start value for the next calculation. As there is a certain analogy with respect to the transfer of the reference values for off-design calculations here, the flag for this has been named FMODE as well. The following settings exist:
The transferred value is written onto the specification values L3START and L3STARTOFF. However, it only has an impact if FL3START is set to “internal start value specification“. Also, the transfer only takes place if a value was entered into L3START respectively before. If the field has been set to the “empty”, the field will remain empty. When adding new controllers, FMODE=1 will be set by default. In a good modeling, the final result should in fact not (or only slightly) depend on the start value, but a change of the start value may lead to convergence problems. An influence on the final result also arises from the interaction of controllers with threshold values and limit values if it depends on the convergence behaviour when a controller is activated and deactivated respectively.
Flag FWARN
In the controllers there is a flag FWARN that allows setting in which situations the controller is to output warnings. For this there is a new setting FWARN=3.
With this setting, a warning is only output if the controller has not reached its target but the control variable has not reached its limit value either.
This setting makes sense if reaching the limit value represents a “normal” condition, like e.g. in the case of an injection where a certain temperature is to be set downstream
of the injection. By the injection, however, only a reduction of the temperature can be effected. If the temperature is below this set point value, nothing needs to be injected.
FWARN=3 allows to set that in this case no warning is to be effected. The control variable of the controller then equals the lower limit value of 0 kg/s, and no warning is output
if the set point value of the temperature has not been reached.
It is possible to output an error message instead of a warning with the setting FWARN=4.
FWARN=5 allows to individually program in a Kernel expression EWARN under which circumstances a comment, a warning or an error message is to be output.
Control Precision
For the solution of an equation system, Ebsilon continues the iteration as long as the changes from one iteration step to the next are smaller than the specified iteration precision.
Here the termination of the iteration is independent of to what extent the controllers have reached their set point value. Only a warning will be output if the deviation between
actual value and set point value is too great.
In the case of strongly damped controllers in particular, the change from one iteration step to the next is relatively small, so that the convergence criterion is already fulfilled although
the control target has not been achieved yet. In these cases it would be desirable if the iteration were continued for another couple of steps in order to get closer to the specified target. Therefore in Release 12 the possibility to prevent a termination of the iteration in the case of too great a deviation from the set point value has been created.
Inversely, there are also cases where the adjustment of an unimportant variable requires very many iteration steps and thus increases the computing time for the entire model. In such
cases it is desirable to be able to carry out the control with a greater fuzziness.
This option is available with the specification value TOL (for all controllers).
The specification value TOL is used for setting the control precision in both cases. Which one of the two cases is desired is set via the flag FTOL:
FTOL=1 (“TOL=lower bound“) serves to accelerate the control by means of a greater fuzziness. In this case, the controller terminates the control if the relative deviation between actual
value and set point value falls below the bound TOL.
FTOL=2 (“TOL=upper bound“) prevents the termination of the iteration as long as the relative deviation between actual value and set point value transgresses the bound TOL. However,
this does not apply if the correction variable has reached its lower or upper bound. As the controller does not continue operating in this case, carrying out further iteration steps does
not make sense.
For analyzing the convergence behaviour, in the case FTOL=2 you can see in the result value ITNOTCONV up to which iteration step the controller has prevented a termination of the
iteration. This allows to systematically find out the controllers that are responsible for a deterioration of the convergence behaviour and to improve their settings if necessary.
FTOL=0 is the default setting.
As in the case of controllers in Ebsilon the change of the actuating variable is effected via a change factor, controllers previously could not be operated in such a way that the actuating variable was able to change its algebraic sign. To enable this, there is now a specification value CZP that serves to shift the zero point of the controller internally. Shifting is effected in positive direction. If e.g. “100“ is entered, -100 will be mapped onto 0 and it will also be possible to control beyond 0 in the range >-100.
With great values of CZP, the internal actuating variable will become great accordingly so that this way, in the case of similar relative changes, the absolute change of the actuating variable will become very great too. This may lead to convergence problems. In this case, it is recommended to decrease the maximum change factor (CHL3 respectively), and that from the beginning ( ITCHL3 = 0 respectively).
Previously, only fixed values could be entered as range limits for the actuating variable. Now it is possible to use a Kernel expression as the limit. To do so, the corresponding flag (FL3MIN and FL3MAX respectively for Components 12 and 69) has to be set to “Kernel expression“, and an EbsScript that calculates the corresponding limit has to be created in EL3MIN and EL3MAX respectively for Components 12 and 69.
This feature was needed for the variation of the steam inlet pressure for a preheater in order to achieve a certain feed water outlet temperature. Without limitation, the controller decreased the pressure so far that the saturated water temperature dropped below the feed water inlet temperature and no condensation was possible anymore. A fixed limit, however, was not possible either as the feed water inlet temperature is not known in advance but only appears in the course of the calculation. For instance, the following Kernel expression allows to set the lower pressure limit to a reasonable value in each iteration step:
function evalexpr:REAL;
begin
evalexpr:=waterSteamTable(1006, Feedwater.T, 0.0);
end;
To a relative humidity of for example, to set 100% or super saturation, a controller is required.
In the previous handling with the function "air humidity (rel.)", It could happen after iteration course that the air was supersaturated, i. Water contained in the liquid phase. The reason for this was that even with supersaturated air, the relative humidity remained at the value of 100% and the controller had thus reached its set point.
In order to allow a regulation to the saturation point (100%) or the setting of a certain super saturation, there is a function "saturation factor".
The saturation factor always refers to the maximum possible proportion of gaseous water. If the water content is higher, you get liquid water XH2OL. Humid air can only be considered approximately as an ideal gas. With increasing water content, the real proportion of gaseous water XH2OG decreases again. In the ideal approximation, the proportion of gaseous water would then simply remain constant, no matter how much liquid water would add to it. In reality, that's probably not the case and therefore with supersaturated air:
XH2OG> X_SAT = f (p, t (air outlet line))
For values up to 100%, the results of the "Saturation factor" function are the same as those of the "Humidity (rel.)" Function.
Definition Saturation factor for "saturated air" 0 - 100%: The result values agree with the results of the "relative humidity" function.
Definition saturation factor for "supersaturated air"> 100% = corresponds to the ratio: total water content (XH2O) / maximum possible gaseous water content
(Water vapour saturation concentration x_sat = f (p, t (air, port 2))
Example: Application of saturation factor:
See example "Saturation factor" in the chapter Component 39 "Controller (internal set value)"
Controller Main Attributes |
|
FFU |
Flag for ON / OFF / SET-start-value Like in Parent Profile (Sub Profile option only) Expression =0: OFF: No regulation, but initial value setting in all load cases NOTE on: -6 / -7: In both cases there is no regulation. Actually, the use of a controller is superfluous in this case, since the same effect could also be achieved with a measuring point (component 46) instead. However, it facilitates a uniform design of several circuits or the creation of generally usable macros if a control can be activated if necessary.
|
FCHAR |
Flag for Controller characteristic Like in Parent Profile (Sub Profile option only) Expression =1: Positive (i.e. an increase in the correction variable leads to an increase in the actual value) |
Process Variable |
|
FL1L2 |
Flag for Type of process variable (target and process value) Like in Parent Profile (Sub Profile option only) Expression =1: Pressure =2: Temperature =3: Enthalpy =4: Mass flow =5: Power/heat flow =6: Enthalpy of boiling liquid for given pressure =7: Enthalpy of saturated vapour for given pressure =8: Enthalpy of boiling liquid for given temperature =9: Enthalpy of saturated vapour for given temperature =10: Pressure of boiling liquid for given temperature
=13: Composition of the mass ratio (use with FSUBST) =14: Net calorific value =15: Composition as mole ratio (use of FSUBST) of all substances =16: Composition as mole ratio (use of FSUBST) of the dry part (without water/steam) =17: Entropy =18: Volume flow =19: Specific volume =20: Degrees sub cooling (with WD-lines this value refers to the boiling point, when humid air to the dew point temperature) =21: Degrees super heating (with WD-lines this value refers to the boiling point, when humid air to the dew point temperature) =22: Relative Pressure =23: Exergy, Note: Regarding the exergy, however, please be aware that the solution may not be unambiguous as the exergy does not =24: Voltage
|
FSUBST |
Substance to be controlled (in combination with FL1L2 = composition) Like in Parent Profile (Sub Profile option only) =0: nothing
further material properties No. 41 - No. 2400
Further material values to be regulated for a composition can be found on the surface of the controller - default value "FSUBST"
Obviously, or entering two to three significant letters of the desired material value is sufficient to obtain a targeted selection of material values.
|
ADD |
Controller offset: <L2>=<L1>+ADD |
Controller Output |
|
FL3 |
Controlled variable type Like in Parent Profile (Sub Profile option only) =1: Pressure |
FL3START |
Flag for the type of start value default Like in Parent Profile (Sub Profile option only) =0: internal default through specification value L3START =1: external default (Stricter plausibility checks:, There will as of "Release 12" be error messages if - a value is used as actuating variable that cannot be modified at all but is determined by other components. )
|
L3START |
Start value for the controlled value (if FL3START=0) |
L3STARTOFF |
Alternative start value for controllers with FFU = 0 (optional) |
FLIM |
Handling of L3MIN and L3MAX =0: Shut controller off after limit was exceeded =1: Stop at limit |
FL3MIN |
Source of minimum value of controlled variable =0:Specification value L3MIN |
L3MIN |
Minimum value for the controlled value : |
EL3MIN |
Function for minimum value |
FL3MAX |
Source of maximum value of controlled variable |
L3MAX |
Maximum value for the controlled value : |
EL3MAX |
Function for maximum value
|
Additional Attributes |
|
FACT |
Number of iterations after which the controller is activated
Expression =0: immediately =20: after 20 iterations =30: after 30 iterations =40: after 40 iterations =50: after 50 iterations =60: after 60 iterations =80: after 80 iterations =100: after 100 iterations =150: after 150 iterations =250: after 250 iterations =Deprecated: -1: controller deactivated, only setting the start value =Deprecated: -2: controller completely deactivated |
FDAMP |
Flag for strength of damping Expression =1: Without =2: Very little =3: Little =4: Medium =5: Medium high =6: High =7: Very high =8: Very very high =9: Even higher =10: Extremely high |
ITCHL3 |
Number of iterations after which the change factor becomes active (default value: 100) |
CHL3 |
Maximum change factor of corrected value (set as constant 0.15 till ITCHL3 is reached, after ITCHL3 according to the default between the limits: 0 < CHL3 <= 0.15) |
CZP |
Controller zero point |
STOPGRAD |
Stop controlling if gradient is less than |
ITSTEP |
Controller is active every n-th step (default value: 1) |
FSEQ |
Flag to define the position in calling sequence Like in Parent Profile (Sub Profile option only) Expression =0: Parallel to other components =1: Late, after fluids are recalculated |
FSTOP |
Stop behaviour if controller has not started Like in Parent Profile (Sub Profile option only) Expression =0: Do not stop iteration before controller has started |
FTOL |
Flag for meaning of TOL Like in Parent Profile (Sub Profile option only) Expression = 0: not used |
TOL |
Controller tolerance |
FMODE |
Flag for transfer of calculated value of controlled variable to start value Like in Parent Profile (Sub Profile option only) Expression =0 : After calculation in design mode =1 : No =-1: After each calculation |
Notification Options |
|
FWARN |
Notification in case of missed target Expression =0: Not notification |
EWARN |
Function for notification function evalexpr:REAL; |
FWARNOFF |
Plausibility check in case of inactive controller Expression =0: No warning if range (L2MIN to L2MAX) is exceeded =1: Warning if range (L2MIN to L2MAX) is exceeded |
Generally, all inputs that are visible are required. But, often default values are provided.
For more information on colour of the input fields and their descriptions see Edit Component\Specification values
For more information on design vs. off-design and nominal values see General\Accept Nominal values
Values for FL1L2 |
Default value |
Actual value |
|
measured |
for comparison |
for comparison |
|
1 2 3 4 5 |
Pressure Temperature Enthalpy Mass flow Heat flow |
Pressure Temperature Enthalpy Mass flow Heat flow |
Pressure Temperature Enthalpy Mass flow Heat flow |
6 7 8 9 10 13 14 15 16 17 18 19 20 21 |
Pressure Pressure Temperature Temperature Temperature Concentration (Mass) Net calorific value Mole fraction Mole fraction (mole, dry) Entropy Volume flow Specific volume Degrees sub cooling Degrees super heating
|
Enthalpy' (P) Enthalpy'' (P) Enthalpy' (T) Enthalpy'' (T) Pressure' (T) Concentration (Mass) Net calorific value Mole fraction Mole fraction (mole, dry) Entropy Volume flow Specific volume TS=(P) TS=(P) |
Enthalpy Enthalpy Enthalpy Enthalpy Pressure Concentration (Mass) Net calorific value Mole fraction Mole fraction (mole, dry) Entropy Volume flow Specific volume No.20/21: In the case of water-/steam pipes this value refers to the boiling temperature, in the case of humid air to the dew temperature.
|
Values for FDAMP |
Limits for the change gradient GRi |
||||
lower limit for GRi |
upper limit for GRi |
CHL3 for Iteration |
Damping behaviour |
||
<ITCHL3 |
>=ITCHL3 |
||||
1 2 3 4 5 6 7 8 9 10 |
0.3 0.3 0.3 0.75 0.2 0.1 0.05 |
99999.0 9999.0 2.0 1.25 1.0 0.6 0.3 |
0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 |
Input Input Input Input Input Input Input Input Input Input |
Without Very little Little Medium Medium high High Very high Very very high Even higher Extremely high |
CCHL3 - correction factor for CHL3
This characteristic makes it possible to change the maximum possible change factor CHL3 continuously during the iteration (ITCHL3 enables an abrupt change in the iteration step ITCHL3). Normally one would be able to make the permissible deviation narrower at the end of iteration, in order to achieve a faster convergence.
x-value: Iteration step
y-value: correction factor (used CHL3 = default value CHL3 * y-value)
Relative change |
||
(scheduled value+ADD-actual value) Si = ----------------------------------------------------- Scheduled value |
Definition of the sensitivity |
||
| f- f(old) | CHL3 = | ------------------------ | | f(old) | |
Relative change of the correction value f |
||
Df Ki= ------------------------ f |
During the iteration steps 1 to 10, GRi will be set as follows:
from iteration 1 to 5: GRi = 0.95, and
from iteration 6 to 10: GRi = 0.90 .
The gradient GRi will be calculated after iteration 11 by the interpreting the previous controlling success.
Change gradient |
||
Ki GRi = ----- Si |
The controller has a "self-learning" characteristic i.e. the best possible change of the correction value for the next iteration is taken from the analysis of the controlling success of the last iteration step. For this, the change gradient is used, which is defined as follows: The change gradient is a measure of the relative change of the correction value as a function of the relative deviation. A change gradient of GRi=1.0 results in a relative change of, for instance, 5% to a change of the correction value of this 5% itself. The change gradient set to GRi=0.5 returns, for this change, the correction value of 2.5%.
The value calculated in the last two steps is used to determine the new correction value in accordance with the following list.
Correction value |
||
Df = f * GRi * Si f(new) = f(old) * (1.0 + Df) * FCHAR |
Display Option 1 |
Display Option 2 |
||
Display Option 3 |
Click here >> Component 12 Demo << to load an example.