New Features in Maple 16: Control Design

Next Feature

When it comes to control design, Maple, together with MapleSim and the MapleSim Control Design Toolbox, provides a very effective environment for working with both linear and non-linear systems. Use these tools to:

  • Define linear and nonlinear systems using transfer functions, state-space matrices, zero-pole-gain, and differential equations, and easily convert between these representations
  • Work with continuous and discrete systems with multiple discretization schemes
  • Access numerous analysis tools from Bode, Nyquist, Zero Pole, Root Locus and Root Contour plots to observability, controllability and Routh tables.
  • Compute operating points and effectively linearize your system
  • Develop PID controllers using the Ziegler-Nichols (time and frequency response) as well as the Cohen-Coon method
  • Take advantage of advanced PID tuning methods: dominant pole placement, pole placement in a specified region and gain and phase margin; state-feedback control using LQR, as well as single and multiple input pole placement; state estimation using Kalman filters and multiple input pole placement.

Maple 16 provides improved linearization routines which greatly facilitate the process of integrating a linearized system into your original model. In previous releases, users had to include the derivative of the input when linearizing their system. This resulted in the addition of an extra input which required users to manipulate the structure of their model in order to accommodate their newly linearized system. In Maple 16, users can apply the linearization routines without any post-processing. A non-linear model with one input and one output will continue to have the the same I/O configuration.

In addition to improvements to linearization, Maple 16 offers built-in support for Nichols plots, further extending the analysis and computation capabilities for control design.

control design

Nichols Plots 

Maple 16 offers built-in support for Nichols plots. Below is a Nichols plot of a closed-loop system with unity feedback. Select frequencies are labeled. 


Linearization in Maple 16

The example below uses the model of a controlled electrical power source driving a capacitor with a series resistor and a parallel resistance load to illustrate the improvements to the linearization command in Maple 16.

The equations of this system can be defined as: 

> with(DynamicSystems); -1

> sys := {NULL, P(t) = `*`(vR(t), `*`(`+`(iC(t), iR(t)))), iC(t) = `*`(C, `*`(diff(vC(t), t))), vR(t) = `*`(R, `*`(iR(t))), vR(t) = `+`(vC(t), `*`(Rc, `*`(iC(t))))}
sys := {NULL, P(t) = `*`(vR(t), `*`(`+`(iC(t), iR(t)))), iC(t) = `*`(C, `*`(diff(vC(t), t))), vR(t) = `*`(R, `*`(iR(t))), vR(t) = `+`(vC(t), `*`(Rc, `*`(iC(t))))}

{P(t) = `*`(vR(t), `*`(`+`(iC(t), iR(t)))), iC(t) = `*`(C, `*`(diff(vC(t), t))), vR(t) = `*`(R, `*`(iR(t))), vR(t) = `+`(vC(t), `*`(Rc, `*`(iC(t))))}
{P(t) = `*`(vR(t), `*`(`+`(iC(t), iR(t)))), iC(t) = `*`(C, `*`(diff(vC(t), t))), vR(t) = `*`(R, `*`(iR(t))), vR(t) = `+`(vC(t), `*`(Rc, `*`(iC(t))))}

The linearization points for the system are:

> dceqs := `union`(eval(sys, diff = 0), {P(t) = P0}); -1

> vars := indets(dceqs, anyfunc(identical(t))); -1

> linpoints := allvalues(solve(dceqs, vars))

{P(t) = P0, iC(t) = 0, iR(t) = `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2))), vC(t) = `*`(R, `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2)))), vR(t) = `*`(R, `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2))))}, {P(t) =...
{P(t) = P0, iC(t) = 0, iR(t) = `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2))), vC(t) = `*`(R, `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2)))), vR(t) = `*`(R, `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2))))}, {P(t) =...

> linpoint1 := linpoints[1]

{P(t) = P0, iC(t) = 0, iR(t) = `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2))), vC(t) = `*`(R, `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2)))), vR(t) = `*`(R, `*`(`^`(`/`(`*`(P0), `*`(R)), `/`(1, 2))))}

In Maple 15, if we attempted to linearize this system would obtain the following error message:

> lin, smap, imap, omap := Linearize(sys, [P(t)], [vR(t)], linpoint1)
Error, (in DynamicSystems:-Linearize) need values for the following variables, in order to compute linear model: diff(P(t), t)

The reason for this message was that the derivative of input function, P(t), needed to be included in the linearization point. This resulted in a linearized system with one extra input as compared to the original non-linear system.

> lin, smap, imap, omap := Linearize(sys, [P(t)], [vR(t)], `union`(linpoint1, {(D(P))(t) = 0}))

In Maple 16, we are able to linearize the system without specifying the derivate of the input function. As a result, the linearized system has the same number of inputs and outputs as the non-linear model, enabling the user to incorporate the linearized system into the original model with modification.

> lin, smap, imap, omap := Linearize(sys, [P(t)], [vR(t)], linpoint1)

Next Feature

How to Proceed:   Pricing & Purchase Evaluate Upgrade Get Price Quote Buy Online