SYSTEM TANK_MVCL


This system configuration implements the Model+View+Control testing step for the process control example. It utilizes instances of the FACEPLATE, STRIP4, and FB_PIDR function block types to simulate and display the Proportional/ Integral/ Derivative (PID) control of liquid level in the process control example.

In Manual mode, adjusting the SP and PUMP sliders has the same effect on tank level as adjusting the VALVE and PUMP sliders, respectively, in the TANK_MVL configuration.

In Auto mode, the PID controller adjusts the Valve (OUT) position to hold the Tank level (PV) at the value specified by the SP slider, in the face of varying PUMP speeds.

Set point (SP = PUMP_SPEED ), process variable (PV = TANK_LEVEL ), controller output (OUT = VALVE_POS ), and PUMP_SPEED values are exchanged among resources using the local multicast pattern and are plotted on the strip chart in colors of orange , blue , green and red , respectively.

The FBDK uses the Tagged Data design pattern to ensure consistency of the communicated events and data, as shown in the table below. These are identical to the tags used in the TANK_MVL configuration, with the addition of the MODE and SP tags.

Name Type UDP Channel Description
MODE BOOL 0=Manual, 1=Automatic
PUMP_POS INT {-359..+359} degrees
PUMP_SPEED UINT {0..100}% => {0..36} degrees per clock tick
SIM_CLK Simulation Clock
SP UINT Set Point, {0..100}%
TANK_LEVEL UINT {0..100}%
VALVE_POS UINT {0..100}% => {closed..open}
The CTRL Device contains Resources for the PID controller and its associated faceplate.
CTRL
CTRL.CTL
CTRL.FACE

The only difference between the RECORDER device in this configuration vs. the TANK_MVL configuration is that the RECORDER.RES1 Resource contains a four-channel stripchart recorder to accommodate the additional SP variable to be plotted.

RECORDER
RECORDER.RES1

The only difference between the TANK_VIEW Device in this configuration vs. the TANK_MVL configuration is that the TANK_VIEW.SLIDERS Resource does not contain a VALVE slider, since the valve position is now determined by the controller output.

TANK_VIEW
TANK_VIEW.SLIDERS