Спроектируйте и управление Cosimulate высокочастотной башни дистилляции с Аспеном плюс динамика

В этом примере показано, как спроектировать прогнозирующий контроллер модели в MATLAB для высокочастотной модели башни дистилляции, созданной в Аспене Плюс Dynamics®. Эффективность контроллера затем проверяется через cosimulation между Simulink и Аспеном Плюс Динамика.

Башня дистилляции

Башня дистилляции использует 29 идеальных этапов, чтобы разделить смесь бензола, толуола и ксилолов (представленный p-ксилолом). Процесс дистилляции непрерывен. Оборудование включает ребойлер и общий конденсатор как показано ниже:

Башня дистилляции действует при номинальном установившемся условии:

  • Поток канала содержит 30% бензола, 40% толуола и 30% ксилолов.

  • Скорость потока жидкости канала является 500 kmol/hour.

  • Чтобы удовлетворить требованию чистоты продукта перегонки, продукт перегонки содержит 95% бензола.

  • Чтобы удовлетворить требованию восстановления 95% бензола в канале, примесь бензола в нижних частях составляет 1,7%.

Цели управления описаны ниже, отсортированы по их важности:

  1. Содержите постоянное давление башни.

  2. Обеспечьте 5% толуола в продукте перегонки (это эквивалентно, чтобы обеспечить 95% бензола в продукте перегонки, потому что продукт перегонки только содержит бензол и толуол).

  3. Обеспечьте 1,7% бензола в нижних частях.

  4. Сохраните уровни жидкости в сборнике и емкости орошения в заданных пределах.

Создайте высокочастотную модель объекта управления в Аспене плюс динамика

Используйте Аспен плюс RADFRAC блокируйтесь, чтобы задать установившиеся характеристики башни. В дополнение к обычной информации, необходимой для установившейся симуляции, необходимо задать гидравлику лотка, геометрию сборника башни и размер емкости орошения. Лотки являются проектом решета, расположенным с интервалами на расстоянии в 18 дюймов. Все лотки имеют 1,95 м в диаметре с высотой плотины на 5 см. Номинальные жидкие глубины составляют 0,67 м и 1,4875 м в горизонтальной емкости орошения и сборнике соответственно.

Установившаяся модель портирована к Аспену плюс динамике (APD) для управляемой потоком симуляции. Это пропускает динамику привода и принимает точное регулирование скоростей потока жидкости, которыми управляют. По умолчанию APD добавляет ПИ-контроллеры, чтобы отрегулировать давление башни и эти два уровня жидкости. В этом примере намеренно удалены ПИ-контроллеры по умолчанию.

Модель APD высокочастотной башни дистилляции показывают ниже:

Линеаризуйте объект Используя Аспен плюс интерфейс системы управления

Прогнозирующий Контроллер модели требует модели LTI объекта. В этом примере входные параметры объекта:

  1. Конденсаторная обязанность (W)

  2. Обязанность ребойлера (W)

  3. Массовый расход жидкости отлива (kg/h)

  4. Массовый расход жидкости продукта перегонки (kg/h поток № 2)

  5. Нижний массовый расход жидкости (kg/h поток № 3)

  6. Питайте молярную скорость потока жидкости (kmol/h поток № 1)

Объект выходные параметры:

  1. Давление башни (в конденсаторе: этап 1, панель)

  2. Уровень жидкости (m) емкости орошения

  3. Уровень жидкости (m) сборника

  4. Массовый дробный толуол в продукте перегонки

  5. Массовый дробный бензол в нижних частях

Аспен Плюс Динамика обеспечивает инструмент Control Design Interface (CDI), который линеаризует динамическую модель при заданном условии.

Следующие шаги взяты, чтобы получить линейную модель объекта управления в Аспене Плюс Динамика.

Step 1: Добавьте скрипт в модель APD под Flowsheet папка. В этом примере именем скрипта является CDI_Calcs (как показано выше), и это содержит следующие команды APD:

Set Doc = ActiveDocument
set CDI = Doc.CDI
CDI.Reset
CDI.AddInputVariable "blocks(""B1"").condenser(1).QR"
CDI.AddInputVariable "blocks(""B1"").QrebR"
CDI.AddInputVariable "blocks(""B1"").Reflux.FmR"
CDI.AddInputVariable "streams(""2"").FmR"
CDI.AddInputVariable "streams(""3"").FmR"
CDI.AddInputVariable "streams(""1"").FR"
CDI.AddOutputVariable "blocks(""B1"").Stage(1).P"
CDI.AddOutputVariable "blocks(""B1"").Stage(1).Level"
CDI.AddOutputVariable "blocks(""B1"").SumpLevel"
CDI.AddOutputVariable "streams(""2"").Zmn(""TOLUENE"")"
CDI.AddOutputVariable "streams(""3"").Zmn(""BENZENE"")"
CDI.Calculate

Step 2: Инициализируйте модель APD к номинальному установившемуся условию.

Step 3: Вызовите скрипт, который генерирует следующие текстовые файлы:

  • cdi_A.dat, cdi_B.dat, cdi_C.dat задайте A, B, и матрицы C стандартной модели в пространстве состояний LTI непрерывного времени. D матрица нуль. A, B, C матрицы являются разреженными матрицами.

  • cdi_list.lis перечисляет переменные модели и их номинальную стоимость.

  • cdi_G.dat задает ввод/вывод статическая матрица усиления при номинальном условии. Матрица усиления является также разреженной матрицей.

В этом примере, cdi_list.lis включает следующую информацию:

A matrix computed, number of non-zero elements = 1408
B matrix computed, number of non-zero elements = 26
C matrix computed, number of non-zero elements = 20
G matrix computed, number of non-zero elements = 30
Number of state variables:    120
Number of input variables:      6
Number of output variables:     5
Input variables:
   1        -3690034.247458334  BLOCKS("B1").Condenser(1).QR
   2            3819023.193875  BLOCKS("B1").QRebR
   3            22135.96620144  BLOCKS("B1").Reflux.FmR
   4            11717.39655353  STREAMS("2").FmR
   5            34352.86345834  STREAMS("3").FmR
   6                       500  STREAMS("1").FR
Output variables:
   1         1.100022977953499  BLOCKS("B1").Stage(1).P
   2        0.6700005140605662  BLOCKS("B1").Stage(1).Level
   3                    1.4875  BLOCKS("B1").SumpLevel
   4       0.05002582161855798  STREAMS("2").Zmn("TOLUENE")
   5       0.01705308738356429  STREAMS("3").Zmn("BENZENE")

Номинальная стоимость переменных состояния, перечисленных в файле, проигнорирована, потому что они не нужны в проекте MPC.

Создайте масштабированную и уменьшаемую модель в пространстве состояний LTI

Step 1: Преобразуйте сгенерированные CDI разреженные матрицы в модель в пространстве состояний.

Загрузите матрицы пространства состояний от файлов данных CDI до рабочего пространства MATLAB и преобразуйте разреженные матрицы в полные матрицы.

load mpcdistillation_cdi_A.dat
load mpcdistillation_cdi_B.dat
load mpcdistillation_cdi_C.dat
A = full(spconvert(mpcdistillation_cdi_A));
B = full(spconvert(mpcdistillation_cdi_B));
C = full(spconvert(mpcdistillation_cdi_C));
D = zeros(5,6);

Возможно, что целая строка разреженной матрицы или столбец являются нулем, в этом случае вышеупомянутые команды недостаточны. Используйте следующие дополнительные проверки, чтобы убедиться A, B, и C имеют правильные размерности:

[nxAr,nxAc] = size(A);
[nxB,nu] = size(B);
[ny,nxC] = size(C);
nx = max([nxAr, nxAc, nxB, nxC]);
if nx > nxC
    C = [C, zeros(ny,nx-nxC)];
end
if nx > nxAc
    A = [A zeros(nxAr,nx-nxAc)];
end
if nx > nxAr
    nxAc = size(A,2);
    A = [A; zeros(nx-nxAr, nxAc)];
end
if nxB < nx
    B = [B; zeros(nx-nxB,nu)];
end

Step 2: Масштабируйте сигналы объекта.

Это - хорошая практика, если не важный, чтобы преобразовать сигналы объекта от технических модулей до универсальной безразмерной шкалы (e.g., 0-1 или 0-100%). Одна альтернатива должна задать масштабные коэффициенты как часть Прогнозирующего Проектирования контроллера Модели. Это может упростить контроллер, настраивающийся значительно. Например, смотрите, Используя Масштабные коэффициенты, чтобы Упростить Настройку Веса.

В существующем примере, однако, мы будем использовать процедуру снижения сложности модели до проектирования контроллера, и мы поэтому масштабируем модель объекта управления, с помощью масштабированной модели и в снижении сложности модели и в проектировании контроллера. Мы задаем промежуток для каждого ввода и вывода, i.e., различие между ожидаемыми максимальными и минимальными значениями в технических модулях. Также запишите номинальную стоимость и нулевые значения в технических модулях, чтобы упростить последующие преобразования.

U_span = [2*(-3690034), 2*3819023, 2*22136, 2*11717, 2*34353, 2*500];
U_nom = 0.5*U_span;
U_zero = zeros(1,6);
Y_nom = [1.1, 0.67, 1.4875, 0.050026, 0.017053];
Y_span = [0.4, 2*Y_nom(2:5)];
Y_zero = [0.9, 0, 0, 0, 0];

Масштабируйте B и матрицы C, таким образом, что все переменные ввода/вывода описываются как проценты.

B = B.*(ones(nx,1)*U_span);
C = C./(ones(nx,1)*Y_span)';

Step 3: Задайте модель объекта управления пространства состояний.

G = ss(A,B,C,D);
G.TimeUnit = 'hours';
G.u = {'Qc','Qr','R','D','B','F'};
G.y = {'P','RLev','Slev','xD','xB'};

Step 4: Уменьшайте порядок модели.

Снижение сложности модели ускоряет вычисления с незначительным эффектом на точности предсказания. Используйте hsvd команда, чтобы определить, какие состояния могут быть безопасно отброшены. Используйте balred функция, чтобы удалить эти состояния и уменьшать порядок модели.

[hsv, baldata] = hsvd(G);
order = find(hsv>0.01,1,'last');
Options = balredOptions('StateElimMethod','Truncate');
G = balred(G,order,baldata,Options);

Исходная модель имеет 120 состояний, и упрощенная модель имеет только 16 состояний. Обратите внимание на то, что Truncate опция используется в balred функционируйте, чтобы сохранить нулевую D матрицу. Модель имеет два полюса в нуле, которые соответствуют этим двум уровням жидкости.

Протестируйте точность линейной модели объекта управления

Прежде, чем продолжить проект MPC, это - хорошая практика, чтобы проверить, что масштабированная модель LTI точна для небольших изменений во входных параметрах объекта. Для этого необходимо сравнить ответ нелинейного объекта в APD и ответ линейной модели G.

Step 1: Чтобы получить ответ нелинейного объекта, создайте модель Simulink и добавьте Блок Средства моделирования Аспена в него.

Блок обеспечивается Аспеном Плюс Динамика в их AMSimulink библиотека.

Step 2: Дважды кликните блок и обеспечьте местоположение модели APD.

Информация о модели APD затем импортируется в Simulink. Для больших моделей APD может занять время процесс импорта.

Step 3: Задайте сигналы ввода и вывода в блоке AMSimulation.

Используйте те же имена переменных и последовательность как в скрипте CDI.

Блок теперь показывает импорт и выходные порты для каждого сигнала, что вы задали.

Step 4: Расширьте модель Simulink с входным сигналом, прибывающим из переменной Umat и выходной сигнал, сохраненный в переменную Ypct_NL. Обе переменные создаются на Шаге 5.

Начиная с Umat находится в модулях процента, Pct2Engr блок реализован, чтобы преобразовать от модулей процента до технических модулей.

Начиная с Ypct_NL находится в модулях процента, блок "Engr2Pct" реализован, чтобы преобразовать от технических модулей до модулей процента.

Со всем соединенным и сконфигурированным, появляется следующей модель:

Step 5: Проверьте линейную модель с cosimulation.

В этом примере 1-процентное увеличение масштабированного уровня отлива (вход № 3) используется в качестве сигнала возбуждения к объекту.

U_nom_pct = (U_nom - U_zero)*100./U_span;   % Convert nominal condition from engineering units to percentages
Y_nom_pct = (Y_nom - Y_zero)*100./Y_span;
Tend = 1;                                   % Simulation duration (1 hour)
t = (0:1/60:Tend)';                         % Sample period is 1 minute
nT = length(t);
Upct = ones(nT,1)*U_nom_pct;
DUpct = zeros(nT,6);
DUpct(:,3) = ones(nT,1);                    % Input signal where step occurs in channel #3

Ответ линейной модели объекта управления вычисляется с помощью lsim команда и сохраненный в переменной Ypct_L.

Ypct_L = lsim(G,DUpct,t);
Ypct_L = Ypct_L + ones(nT,1)*Y_nom_pct;

Ответ нелинейного объекта получен через cosimulation между Simulink и Аспеном Плюс Динамика. Сигнал возбуждения Umat создается как ниже. Результат хранится в переменной Ypct_NL.

Umat = [t, Upct+DUpct];

Сравните линейные и нелинейные ответы модели.

Предсказания модели LTI отслеживают нелинейные ответы хорошо. Количество ошибки предсказания приемлемо. В любом случае Прогнозирующий Контроллер Модели должен быть настроен, чтобы вместить ошибки предсказания, которые неизбежны в приложениях.

Можно повторить перечисленные выше шаги, чтобы проверить подобное соглашение для других пяти входных параметров.

Модель проекта прогнозирующий контроллер

Учитывая модель предсказания LTI, вы готовы спроектировать Прогнозирующий Контроллер Модели. В этом примере переменные, которыми управляют, являются первыми пятью входными параметрами объекта. Шестой вход объекта (скорость потока жидкости канала) является измеренным воздействием для компенсации прямого распространения. Весь объект выходные параметры измеряется.

Step 1: Увеличьте объект, чтобы смоделировать неизмеренные воздействия загрузки.

Испытывая недостаток больше в определенных деталях относительно воздействий загрузки, это - установившаяся практика, чтобы принять неизмеренное воздействие загрузки, происходящее в каждых из пяти входных параметров. Это позволяет средству оценки состояния MPC устранять смещение в каждом управляемом выходе, когда воздействие загрузки происходит.

В этом примере 5 неизмеренных воздействий загрузки добавляются к модели объекта управления G. Всего, существует теперь 11 входных параметров к модели Gmpc предсказания: 5 переменных, которыми управляют, 1 измеренное воздействие и 5 неизмеренных воздействий.

Gmpc = ss(G.A,G.B(:,[1:6,1:5]),G.C,zeros(5,11),'TimeUnit','hours');
InputName = cell(1,11);
for i = 1:5
    InputName{i} = G.InputName{i};
    InputName{i+6} = [G.InputName{i}, '-UD'];
end
InputName{6} = G.InputName{6};
Gmpc.InputName = InputName;
Gmpc.InputGroup = struct('MV',1:5,'MD',6,'UD',7:11);
Gmpc.OutputName = G.OutputName;

Step 2: Создайте начальный прогнозирующий контроллер модели и задайте шаг расчета и горизонты.

В этом примере период расчета контроллера составляет 30 секунд. Горизонт предсказания является 60 интервалами (30 минут), который является достаточно большим, чтобы сделать эффективность контроллера нечувствительной к дальнейшим увеличениям горизонта предсказания. Горизонт управления является 4 интервалами (2 минуты), который относительно мал, чтобы уменьшать вычислительное усилие.

Ts = 30/3600;       % sample time
PH = 60;            % prediction horizon
CH = 4;             % control horizon 
MPCobj = mpc(Gmpc,Ts,PH,CH);  % MPC object
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.

Step 3: Задайте веса для переменных, которыми управляют, и управлял выходными параметрами.

Веса являются ключевыми настраивающими корректировками в проекте MPC, и они должны быть выбраны на основе ваших целей управления.

Нет никакой причины содержать конкретный мВ в заданном значении, таким образом, устанавливает Weights.ManipulatedVariables свойство обнулить:

MPCobj.Weights.ManipulatedVariables = [0, 0, 0, 0, 0];

Продукт продукта перегонки (мВ № 4) переходит к устройству хранения данных. Единственный мВ, влияющий на нисходящие модульные операции, является нижним уровнем (мВ № 5). Чтобы препятствовать быстрым изменениям в нижнем уровне, сохраните вес по умолчанию 0,1 для его скорости изменения. Уменьшайте другие веса скорости изменения на коэффициент 10:

MPCobj.Weights.ManipulatedVariablesRate = [0.01, 0.01, 0.01, 0.01, 0.1];

Цели управления предоставляют инструкции, чтобы выбрать веса на управляемых выходных параметрах:

  1. Давление башни должно быть отрегулировано плотно из соображений безопасности и из минимизации нарушений в температурах лотка и гидравлике. (объективный № 1)

  2. Состав продукта перегонки должен также быть отрегулирован плотно. (объективный № 2)

  3. Нижний состав может быть отрегулирован менее плотно. (объективный № 3)

  4. Уровни жидкости являются четными менее важные. (объективный № 4)

С этими приоритетами в памяти, веса на управляемых выходных параметрах выбраны можно следующим образом::

MPCobj.Weights.OutputVariables = [10, 0.1, 0.1, 1, 0.5];

Масштабирование модели упрощает выбор весов оптимизации. В противном случае, в дополнение к относительному приоритету каждой переменной, необходимо было бы также рассмотреть относительные величины переменных и выбрать веса соответственно.

Step 4: Задайте номинальные значения ввода/вывода объекта.

В этом примере номинальная стоимость масштабируется как проценты. Контроллер MPC требует, чтобы номинальная стоимость для неизмеренных воздействий была нулем.

MPCobj.Model.Nominal.U = [U_nom_pct'; zeros(5,1)];
MPCobj.Model.Nominal.Y = Y_nom_pct';

Step 5: Настройте усиление средства оценки состояния.

Корректировка усиления средства оценки состояния влияет на эффективность подавления помех. Увеличение усиления средства оценки состояния (e.g. путем увеличения усиления возмущения ввода/вывода), заставляет контроллер отвечать более настойчиво к выходным изменениям (потому что контроллер принимает, что основной источник выходных изменений является воздействием вместо шума измерения). С другой стороны, уменьшение усиления средства оценки состояния делает систему с обратной связью более устойчивой.

Во-первых, проверяйте, обеспечивает ли использование средства оценки состояния по умолчанию достойную эффективность подавления помех.

Симулируйте ответ с обратной связью на 1%-й модульный шаг в отливе (мВ № 3) в MATLAB. Симуляция использует G как объект, который не подразумевает несоответствия модели.

T = 30;                                 % Simulation time
r = Y_nom_pct;                          % Nominal setpoints
v = U_nom_pct(6);                       % No measured disturbance
SimOptions = mpcsimopt(MPCobj);
SimOptions.InputNoise = [0 0 1 0 0];    % 1% unit step in reflux
[y_L,t_L,u_L] = sim(MPCobj, T, r, v, SimOptions); % Closed-loop simulation
-->Converting model to discrete time.
-->The "Model.Disturbance" property of "mpc" object is empty:
   Assuming unmeasured input disturbance #7 is integrated white noise.
   Assuming unmeasured input disturbance #8 is integrated white noise.
   Assuming unmeasured input disturbance #9 is integrated white noise.
   Assuming unmeasured input disturbance #10 is integrated white noise.
   Assuming unmeasured input disturbance #11 is integrated white noise.
   Assuming no disturbance added to measured output channel #1.
   Assuming no disturbance added to measured output channel #4.
   Assuming no disturbance added to measured output channel #5.
   Assuming no disturbance added to measured output channel #2.
   Assuming no disturbance added to measured output channel #3.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
% plot responses
f1 = figure();
subplot(2,1,1);
plot(t_L,y_L,[0 t_L(end)],[50 50],'k--')
title('Controlled Outputs, %')
legend(Gmpc.OutputName,'Location','NorthEastOutside')
subplot(2,1,2);
plot(t_L,u_L(:,1:5),[0 t_L(end)],[50 50],'k--')
title('Manipulated Variables, %')
legend(Gmpc.InputName(1:5),'Location','NorthEastOutside')
xlabel('Time, h')

Figure contains 2 axes. Axes 1 with title Controlled Outputs, % contains 6 objects of type line. These objects represent P, RLev, Slev, xD, xB. Axes 2 with title Manipulated Variables, % contains 6 objects of type line. These objects represent Qc, Qr, R, D, B.

Средство оценки по умолчанию обеспечивает вялое отклонение загрузки. В частности, критический xD выведите спады до 49%, и только что начал возвращаться к заданному значению после 0,25 часов.

Во-вторых, увеличьте усиление средства оценки путем умножения входного усиления возмущения по умолчанию на коэффициент 25.

EstGain = 25;                       % factor of 25
Gd = getindist(MPCobj);             % get default input disturbance model
Gd_new = EstGain*Gd;                % create new input disturbance model
setindist(MPCobj,'Model',Gd_new); % set input disturbance model
[y_L,t_L,u_L] = sim(MPCobj,T,r,v,SimOptions); % Closed-loop simulation
-->Converting model to discrete time.
   Assuming no disturbance added to measured output channel #1.
   Assuming no disturbance added to measured output channel #4.
   Assuming no disturbance added to measured output channel #5.
   Assuming no disturbance added to measured output channel #2.
   Assuming no disturbance added to measured output channel #3.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
% plot responses
f2 = figure();
subplot(2,1,1);
plot(t_L,y_L,[0 t_L(end)],[50 50],'k--')
title('Controlled Outputs, %')
legend(Gmpc.OutputName,'Location','NorthEastOutside')
subplot(2,1,2)
plot(t_L,u_L(:,1:5),[0 t_L(end)],[50 50],'k--')
title('Manipulated Variables, %')
legend(Gmpc.InputName(1:5),'Location','NorthEastOutside')
xlabel('Time, h')

Figure contains 2 axes. Axes 1 with title Controlled Outputs, % contains 6 objects of type line. These objects represent P, RLev, Slev, xD, xB. Axes 2 with title Manipulated Variables, % contains 6 objects of type line. These objects represent Qc, Qr, R, D, B.

Теперь пиковое отклонение в xD на 50% меньше случая по умолчанию и xD возвращается к его заданному значению намного быстрее. Другие переменные также отвечают более быстро.

В-третьих, посмотрите на ответ отлива (#3 в "Переменных, которыми Управляют", график). Поскольку воздействие является 1%-м модульным шагом, ответ начинается в 51%, и его окончательное значение составляет 50% в устойчивом состоянии. Ответ отлива промахивается на 20% (достижение 49,8%) перед урегулированием. Эта сумма перерегулирования приемлема.

Если усиление средства оценки было увеличено далее (e.g. на коэффициент 50), перерегулирование контроллера увеличилось бы также. Однако такое агрессивное поведение вряд ли будет устойчиво, когда применено нелинейная модель объекта управления.

Можно ввести другие воздействия загрузки, чтобы проверить, что подавление помех теперь быстро во всех случаях.

Масштабирование модели также упрощает настройку возмущения. В противном случае необходимо было бы настроить усиление каждого канала в возмущении, чтобы достигнуть хорошего подавления помех для всех загрузок.

Обычно вы затем проверяете ответ на изменения заданного значения. Если ответ слишком агрессивен, можно использовать фильтр заданного значения, чтобы сглаживать его. Фильтр заданного значения не оказывает влияния на подавление помех загрузки и таким образом может быть настроен независимо.

Cosimulate контроллер MPC и нелинейный объект

Используйте cosimulation, чтобы определить, достаточно ли проект MPC устойчив, чтобы управлять нелинейной моделью объекта управления.

Step 1: Добавьте ограничения в контроллер MPC

Поскольку нелинейная модель объекта управления имеет ограничения ввода и вывода во время операции, мВ и ограничения OV заданы в контроллере MPC можно следующим образом:

MV = MPCobj.MV;
OV = MPCobj.OV;
% Physical bounds on MVs at 0 and 100 
for i = 1:5
    MV(i).Min = 0;
    MV(i).Max = 100;
end
MPCobj.MV = MV;
% Keep liquid levels greater than 25% and less than 75% of capacity.
for i = 2:3
    OV(i).Min = 25;
    OV(i).Max = 75;
end
MPCobj.OV = OV;

Step 2: Создайте модель Simulink для cosimulation.

Модель может симулировать 1%-й модульный шаг в отливе (мВ № 3). Это может также симулировать изменение в составе канала, который является общим воздействием и отличается от воздействий загрузки, рассмотренных явным образом в проекте.

Step 3: Симулируйте 1%-й модульный шаг в отливе (мВ № 3). Сравните ответы с обратной связью между использованием линейной модели объекта управления и использованием нелинейной модели объекта управления.

Постройте состав продукта продукта перегонки (xD) и уровень отлива (R):

В cosimulation прогнозирующий контроллер модели отклоняет маленькое воздействие загрузки способом, почти идентичным линейной симуляции.

Step 4: Симулируйте значительное сокращение части бензола (от 0,3 до 0,22) в потоке канала. Сравните ответы с обратной связью между использованием линейных и нелинейных моделей объекта управления.

Понижение части бензола требует длительного уменьшения в уровне продукта перегонки и соответствующего увеличения нижнего уровня. Там также поддержаны, заглядывает обязанностям тепла и незначительному увеличению отлива. Все корректировки мВ являются гладкими, и все управляли выходными параметрами, почти вернулись к их заданным значениям в течение 0,5 часов.

Смотрите также

Для просмотра документации необходимо авторизоваться на сайте