Understanding Controllers
Controllers use feedback control to influence the state of a “process” and adjust it to a desired value (a target). A “process” could conceptually involve something quite complex (e.g., an entire chemical plant), but typically it will be something much more specific (e.g., a single tank in that plant). The state is some property of the process that we want to control (e.g., the volume of water in the tank). The state is referred to as the process variable. In GoldSim, the process variable is usually the main output of a Pool A stock element that integrates and conserves flows of materials. A Pool is a more powerful version of a Reservoir (it has additional features to more easily accommodate multiple inflows and outflows). or Reservoir A stock element that integrates and conserves flows of materials. (and hence a state variable The output of an element in GoldSim whose value is computed based on the historical value of the element’s inputs (as opposed to only being a function of the current value of the element’s inputs). State variables have well-defined initial conditions. Feedback loops can only be created if they contain at least one state variable.), but this is not required (e.g., it could be some function of one or more state variables).
Controllers always have a target (or in the case of one type of Controller, a target band). This is the desired value of the process variable. In GoldSim, this is a user-defined value or expression. It will often be constant but can also change with time if necessary.
Note: There are many types of feedback processes that you might want to represent in a model. Not all of them, however, involve a Controller (i.e., not all of them are feedback control systems that have a target for the process variable). Other feedback processes may result in a system that converges on a particular value (while others may oscillate or grow exponentially). But even those processes that converge to some value are not necessarily designed to target that specific value. Feedback processes involving Controllers always have a specified target value that the process is explicitly trying to attain. That is, a feedback system involving a Controller is designed to control a process variable by adjusting it to a specified target.
Controllers produce a single output which is always a flow of some kind (e.g., an inflow or ourflow of water, heat, mass, items, etc.). This flow is then intended to be connected back to the process (e.g., a Pool element representing the volume of water in a tank) in order to adjust the value toward the target. The key point here is that the Controller requires as input a process variable (which will be either the primary output For an element with multiple outputs, the output that has the same name as the element. of a Pool or Reservoir or some function of such outputs) and in turn produces a flow that is then directed back to impact that process variable (e.g., an inflow or an outflow to the Pool or Reservoir defining the process variable). This forms a feedback loop A looping system in which the variables in the loop represent a closed chain of cause and effect. Note that the terms “feedback” and “cause and effect” intentionally imply that the relationship between the variables is dynamic and the system changes over time (although systems with feedback loops can also reach a dynamic equilibrium). Feedback loops contain at least one state variable.:
The goal of the Controller is to produce an output that when fed back into the process directs the process variable back toward the target.
The Controller has three different (user-selected) control methods by which it determines the Controller output. For two of the methods, the method involves computing an error, which is the difference between the process variable and the target.
Controllers are defined as either Inflow Controllers or Outflow Controllers. This means that they are uni-directional (a Controller can only act in one direction: it can either act to increase the process variable or to decrease it).
In particular:
- An Outflow Controller responds with an increasing output to an increasing process variable (and a decreasing output to a decreasing process variable). For example, as pond volume increases, an Outflow Controller will increase the output (this might represent a pump that increases the pumping rate out of the pond as the volume increases). Similarly, as pond volume decreases, an Outflow Controller will decrease the output (this might represent a pump that decreases the pumping rate out of the pond as the volume decreases).
- An Inflow Controller responds with an increasing output to a decreasing process variable (and a decreasing output to an increasing process variable). For example, as pond volume decreases, an Inflow Controller will increase the output (this might represent a pump that increases the pumping rate into the pond as the volume decreases). Similarly, as pond volume increases, an Inflow Controller will decrease the output (this might represent a pump that decreases the pumping rate into the pond as the volume increases).
As their names indicate, the output of an Inflow Controller is intended to be used as an inflow to the process (e.g., an inflow to the Pool or Reservoir being controlled), while the output of an Outflow Controller is intended to be used as an outflow to the process (e.g., an outflow request to the Pool or Reservoir being controlled).
Because Controllers are uni-directional in GoldSim, depending on the process, you may need just an Inflow Controller, just an Outflow Controller, or both. For example, if a pond had inflows that you had no control over (e.g., rainfall), and you had a pump that you could control to respond to those inflows and maintain a target water level (by removing water), you would need an Outflow Controller. On the other hand, if a pond had outflows that you had no control over (e.g., evaporation), and you had a pump that you could control to respond to those outflows and maintain a target water level (by adding water), you would need an Inflow Controller. Finally, if you had a pond that had both inflows (rainfall) and outflows (evaporation) that you had no control over and you had one pump that you could control to remove water when needed and one pump that you could control to add water when needed, you would need both an Inflow Controller and an Outflow Controller (i.e., a Controller for each pump).
- Basic Controller Inputs
- Browser View of a Controller
- Comparing the Different Methods: Which Type of Controller Should I Use?
- Constraints on the Output of Controllers
- Controlling a Process Using Multiple Controllers
- Defining a Deadband Controller
- Defining a Proportional Controller
- Defining a Proportional Integral Derivative (PID) Controller
- Defining a Target that Represents an Upper or Lower Limit
- Turning a Controller On and Off
- Understanding Controllers
- Using a Proxy for the Process Variable When Defining a Controller
- Using Controller Elements