коэфи пида вновь приведены к диапзаону 0-6.5535, коэф Ki сделан независимым от dt

This commit is contained in:
2025-12-07 18:12:58 +03:00
parent 9234b4508b
commit 67be0b2304
7 changed files with 43 additions and 28 deletions

View File

@@ -175,9 +175,9 @@ void app_readInputs(const real_T* Buffer) {
MB_INTERNAL.param.nominal.U = ReadInputArray(2, 2) * 10;
MB_INTERNAL.param.nominal.I = ReadInputArray(2, 3) * 10;
MB_INTERNAL.param.angle.PID_Kp = ReadInputArray(2, 4) * 65535;
MB_INTERNAL.param.angle.PID_Ki = ReadInputArray(2, 5) * 65535;
/*MB_INTERNAL.param.angle.PID_Kd*/dbg_err_limit = ReadInputArray(2, 6);
MB_INTERNAL.param.angle.PID_Kp = ReadInputArray(2, 4) * 10000;
MB_INTERNAL.param.angle.PID_Ki = ReadInputArray(2, 5) * 10000;
MB_INTERNAL.param.angle.PID_Kd = ReadInputArray(2, 6) * 10000;
MB_INTERNAL.param.angle.Angle_Max = ReadInputArray(2, 7)/180 * 65535;
MB_INTERNAL.param.angle.Angle_Min = ReadInputArray(2, 8)/180 * 65535;

23
MATLAB/calc_pi.m Normal file
View File

@@ -0,0 +1,23 @@
clc, clear all
%% Ввод данных
Ku = 0.03; % Твой Ku
Tu = 0.0847; % Твой Tu
Ts = 0.0005; % Твой Ts
%% Расч
Kp = 0.45 * Ku;
Ti = 0.85 * Tu;
Ki_abs = Kp / Ti; % Абсолютное Ki
Ki_disc = Ki_abs * Ts; % Дискретное Ki (если программа делит на Ts)
%% Вывод
fprintf('Kp = %.3f\n', Kp);
fprintf('Ki абсолютное = %.3f\n', Ki_abs);
fprintf('Ki дискретное = %.6f (если программа делит на Ts)\n', Ki_disc);
%% Рекомендация (с запасом)
Kp_safe = Kp * 0.7;
Ki_safe = Ki_abs * 0.7;
fprintf('\nС запасом 30%%:\n');
fprintf('Kp = %.3f\n', Kp_safe);
fprintf('Ki = %.3f\n', Ki_safe);

View File

@@ -1,11 +1,11 @@
clear all
IadcMax = 200;
IadcMax = 200;%50;
VadcMax = 1216;
Ts = 5e-6;
Vnom = 400;
Inom = 25;
Inom = 30;%4.2;
Fnom = 50;
Temperature1 = 2.22; % 20 градусов

Binary file not shown.