Regulation modules

In SIC^2, a regulation module corresponds to a set of regulators (also called controllers) which will operate simultaneously during a simulation. It is possible to define several control modules in a project, thus stored in the xml file and potentially available for all scenarios and variants. For each scenario, it is necessary to define which control module to use before starting a simulation. If a regulation module is selected for a scenario, it will also be active for all its variants. To deactivate it in a variant, it must be disabled in the parent scenario. It is of course possible to select none, but at most one. It can be said that a regulation module can make it possible to define a logic for managing a network, possibly comprising several regulators or controllers.

The regulation modules can be used both in unsteady-state calculation and steady-state calculation.

The regulation modules can be accessed from hydraulic mode of SIC^2 either via the menu Tools> Regulation modules, or by right-clicking on a blank area of ​​the network graph.

The window that appears allows you to:

  • Add, delete and modify regulation modules in the current project.
  • Select a regulation module to be used for the simulation.

Choosing a regulation module

If you do not want to use a regulation module, click the "No Module" button. If not, choose a regulation module from the list and click on "Select".

In hydraulic mode, for scenarios and variants editions, all the controllers of the selected regulation module will appear on the network graph. Unless of course, for example to lighten the display, or to hide some controllers less important than others, some of them are declared as non-visible (click or not on the box Visible to the right of the name of the Controller in the list). The variables U are connected to the box representing the regulator with a red line. Y variables with a dark green line. Variables Z with a light green line.

Editing a regulation module

The principle of the regulation modules in this version is, on the one hand, to define the measuring points (measured variables Z), controlled variables (controlled variables Y and their setpoints as a function of time YT, if necessary) and control action variables (U), and on the other hand to specify the method of regulation acting on these points, whatever their nature and location.

This method can be chosen from an existing library. The regulation methods proposed for now are:

  • AMIL (Gec-Alsthom control gates, but old option available in version 4 of SIC, it is now possible to directly select this device in the library of devices, which is much better)
  • AVIS (same remark as for AMIL)
  • AVIO (same remark as for AMIL)
  • ATV (Auto Tuning Variation, to automatically calibrate a PID controller)
  • ATVPID (Method that applies the ATV method initially and then starts the PID as soon as ATV has supplied the parameters of the PID, and switches from one to another. The temporisation can be used to wait for hydraulic stabilization before switching to the next U)
  • BIVAL (Method controlling a virtual intermediate point obtained as a linear combination of an upstream point and a downstream point, which, if well chosen, corresponds more or less to controlling a volume in this section.) Method developed by the Sogreah in the 80s)
  • BOLST (open loop provided as a text file)
  • BOMAT (open loop provided as a MatLab .mat file)
  • BOSCI (open loop provided as a .dat SciLab file)
  • DIGEST (simulator of the SCADA digester inspired by that of the Gignac irrigation canal, cf. SCADA below)
  • DSS (discrete controller in the state space whose matrices A, B, C and D are given in a MatLab .mat file, allowing to simulate any LTI = Linear Time Invariant controller)
  • FILEX (data exchange U, Y, YT and Z in an external file)
  • GPC (Generalized Predictive Controller. Not active in this release)
  • LP (calculation of the LP norm of a chosen Z signal)
  • MATLAB (DDE link with MatLab)
  • PID (Controller Proportional, Integral, Derivative)
  • PLOT (drawings, in development. Not active in this release)
  • PUMPS (pumps start and stop according to water elevations, see example and specific documentation)
  • PRINT (writing of the variables U, Y, YT and Z chosen on the .LST file)
  • QSCP (typical scenario of irrigation canal offtake withdrawals)
  • SCADA (simulator of the SCADA inspired by that of the Gignac channel, cf DIGEST above)
  • SCILAB (DDE link with SciLab)
  • STEPS (automatic generation of steps)
  • STOP (interruption of the calculation allowing to mimic a manual regulation)
  • USER1 to USER9 (9 modules open to the user, to be programmed in FORTRAN in DLLUSERn.FOR (n = 1 to 9) and then to compile with the Digital or Intel compiler, cf MkDllUser.bat under sic/prog. It will replace the initial empty dll under sic/exe).
  • WDLANG (possibility to write a script in WdLanguage of Windev)

Examples are provided for each of these methods.

These control methods use the variables U, Y, YT and Z or sometimes just a sub-part of these variables. For example, the LP method does not calculate a variable U, and does not use the variables Y or YT since it simply computes the norm Lp of the measured variables Z. If the minimum number of these variables is not supplied, an error message will be indicated when the calculation is executed.

The variables used by the different methods are shown in the following table. This table is important because it indicates, for example, that if you use the PID control method, you will have to set the controlled variable as Y variable, not as Z variable.

Method U (control variables) Y (controlled variables) YT (target on controlled variables) Z (measured variables) Mono or Multivariable
AMIL, AVIS, AVIO X X: must be given by water depth SISO
ATV X X X Option if calculating parameters from Z instead of U. Option also if ATV is to be applied to a weighted combination of Z such as for a Bival controller SISO but duplicated if nu>1
ATVPID X X X Option if calculating parameters from Z instead of U MIMO with successive SISOs sent to ATV then PID
BIVAL X X: a variable Y(1) must be defined, even if it is recalculated from Z(1) and Z(2), but thus makes available the trajectories over time YT X X 2ISO but duplicated if nu>1
BOLST X SISO but we can have several that share the same parametrization file BOLST.TXT
BOMAT, BOSCIL X MO
DIGEST X X X X MIMO
DSS X X X X MIMO
FILEX X X X X MIMO
GPC X X X X Not active
LP X MI
LQR X X X X Not active
MATLAB X X X X MIMO
PID X X X SISO but duplicated if nu>1
PUMPS X X X SISO but SI2O if nu=2: the flow is reinjected elsewhere: U(2) = - U(1)
PRINT X X X X MIMO
QSCP X SISO but duplicated if nu>1
SCADA X X X X MIMO
SCILAB X X X X MIMO
STEPS X: All U are moved in the same way Option: written on LST file X: the trigger threshold is calculated on the min of all Z MIMO
STOP X X MIMO
USER1 to USER9 X X X X MIMO
WDLANG X X X X MIMO