How to create custom Closed Loop Margin based on the Complementary Sensitivity Function in Systune TuningGoal?

3 次查看(过去 30 天)
I want to have a hard constraint for my system that puts a constraint on the dynamic margin (generalized delay margin) of the entire system. Mathemathically, the constraint is formulated as follows.
(1)
Where is the complementary sensitivity function of the systems input. I have a similar hard constraint on the sensitivity function:
(2)
And this should be implemented by using TuningGoal.LoopShape as follows.
Hardreq2 = TuningGoal.LoopShape("u",1/0.5,1)
The problem with the first requirement I think is the additional s term in the norm. I do not know how to set up this constraint properly. Can anyone help me out?

采纳的回答

Stijn
Stijn 2024-10-7
I think I solved it by forcing a constraint on the Sensitivity function and the Complementary sensitivity function seperately with TuningGoal.MinLoopGain and TuningGoal.MaxLoopGain instead.
% Reference Sensitivity Functions
tau = 0.2;
v = 0.5;
s = tf("s");
T_max = 1/(tau*s);
Sinv_min = frd([10 v v],[0.01 0.1 10]);
% Constraints
Hardreq1 = TuningGoal.MaxLoopGain("u",T_max);
Hardreq2 = TuningGoal.MinLoopGain("u",Sinv_min);
The constraint equations are basically converted to the following:
, which ensures that the norm of is always smaller than .
and
, which is similar to the previously mentioned constrained equation.
Using viewGoal, I then verified that this works as intended.
It is also possible to manually check if the constraints are met.
% Reference System
sys = ...;
% Get System Functions
T = getCompSensitivity(sys,"u");
S = getSensitivity(sys,"u");
s = tf("s");
% Constraint Equation Terms
H1 = 1/norm(s*T,Inf);
H2 = 1/norm(S,Inf);
Which seemed to attain the correct values after tuning. I hope this helps others that had a similar issue.

更多回答(1 个)

UDAYA PEDDIRAJU
UDAYA PEDDIRAJU 2024-10-4
Hey Stijin,
I can share my previous experiance by relating your requirement. To create a custom Closed Loop Margin based on the Complementary Sensitivity Function in Systune, you can define a tuning goal that incorporates the additional ( s ) term in the norm. The goal is to ensure that the complementary sensitivity function ( T(s) ) meets your specified constraints.
% Define the system
sys = ...; % Your system model
% Define the complementary sensitivity function
T = feedback(sys, 1); % Assuming unity feedback
% Define the tuning goal for the complementary sensitivity function
% Here, we use the norm with the additional s term
s = tf('s');
Hardreq1 = TuningGoal.LoopShape('u', T/(1 + T), 1); % Adjust as needed
% Add the tuning goal to the tuning requirements
TuningGoal = [Hardreq1];
% Use systune to tune the system
[sysTuned, info] = systune(sys, TuningGoal);

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by