Mark Analysis Points in Closed-Loop Models

This example shows how to build a block diagram and insert analysis points at locations of interest using the `connect` command. You can then use the analysis points to extract various system responses from the model.

For this example, create a model of a Smith predictor, the SISO multiloop control system shown in the following block diagram.

Points marked by x are analysis points to mark for this example. For instance, if you want to calculate the step response of the closed-loop system to a disturbance at the plant input, you can use an analysis point at u. If you want to calculate the response of the system with one or both of the control loops open, you can use the analysis points at yp or dp.

To build this system, first create the dynamic components of the block diagram. Specify names for the input and output channels of each model so that `connect` can automatically join them to build the block diagram.

```s = tf('s'); % Process model P = exp(-93.9*s) * 5.6/(40.2*s+1); P.InputName = 'u'; P.OutputName = 'y'; % Predictor model Gp = 5.6/(40.2*s+1); Gp.InputName = 'u'; Gp.OutputName = 'yp'; % Delay model Dp = exp(-93.9*s); Dp.InputName = 'yp'; Dp.OutputName = 'y1'; % Filter F = 1/(20*s+1); F.InputName = 'dy'; F.OutputName = 'dp'; % PI controller C = pidstd(0.574,40.1); C.Inputname = 'e'; C.OutputName = 'u';```

Create the summing junctions needed to complete the block diagram. (For more information about creating summing junctions, see `sumblk`).

```sum1 = sumblk('e = ysp - ym'); sum2 = sumblk('ym = yp + dp'); sum3 = sumblk('dy = y - y1');```

Assemble the complete model.

```input = 'ysp'; output = 'y'; APs = {'u','dp','yp'}; T = connect(P,Gp,Dp,C,F,sum1,sum2,sum3,input,output,APs)```
```Generalized continuous-time state-space model with 1 outputs, 1 inputs, 4 states, and the following blocks: CONNECT_AP1: Analysis point, 3 channels, 1 occurrences. Type "ss(T)" to see the current value and "T.Blocks" to interact with the blocks. ```

When you use the `APs` input argument, the `connect` command automatically inserts an `AnalysisPoint` block into the generalized state-space (`genss`) model, `T`. The automatically generated block is named `AnalysisPoints_`. The three channels of `AnalysisPoints_` correspond to the three locations specified in the `APs` argument to the `connect` command. Use `getPoints` to see a list of the available analysis points in the model.

`getPoints(T)`
```ans = 3x1 cell {'dp'} {'u' } {'yp'} ```

Use these locations as inputs, outputs, or loop openings when you extract responses from the model. For example, extract and plot the response at the system output to a step disturbance at the plant input, u.

```Tp = getIOTransfer(T,'u','y'); stepplot(Tp)```

Similarly, calculate the open-loop response of the plant and controller by opening both feedback loops.

```openings = {'dp','yp'}; L = getIOTransfer(T,'ysp','y',openings); bodeplot(L)```

When you create a control system model, you can create an `AnalysisPoint` block explicitly and assign input and output names to it. You can then include it in the input arguments to `connect` as one of the blocks to combine. However, using the `APs` argument to `connect` as illustrated in this example is a simpler way to mark points of interest when building control system models.