用MATLAB里的SIMULINK做关于给12V蓄电池充电的仿真 需要PID IGBT等元件 请问高手该如何仿真
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用MATLAB里的SIMULINK做关于给12V蓄电池充电的仿真 需要PID IGBT等元件 请问高手该如何仿真相关的知识,希望对你有一定的参考价值。
得先建立蓄电池的等效模型,这个比较简单,一般是一个欧姆电阻加上极化电阻、极化电容,它们之间是并联的关系,通过模型建立等效方程式,依据此建立simulink仿真模型。 参考技术A 用simulink的simpowersystems可以完成 参考技术B 很遗憾!我也不懂。 参考技术C 用simulink的simpowersystems可以完成,先建立蓄电池的等效模型,一般是一个欧姆电阻加上极化电阻、极化电容,它们之间是并联的关系,通过模型建立等效方程式,依据此建立simulink仿真模型。MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
matlab simulink汽车优化设计遍历法
1、内容简介
略
455-可以交流、咨询、答疑
2、内容说明
略
3、仿真分析
clc
close all
clear
m1 = 55;
m2 = 400;
k1 = 300000;
k2 = 40000;
b2 = 4000;
g = 9.8;
t = 0:0.0001:2;
v = 20;%车速
h = 0.05;
L = 3;
R = (L^2/4+h^2)/2/h;%路面不平顺等效的圆半径
delta = asin(L/2/R);
degre = -delta:0.0001:delta;
x0 = R*sin(degre)+L/2;
y0 = R*cos(degre)-R+h;
figure
plot(x0,y0)
xlabel 水平位移
ylabel 路面不平顺
x = t*v;
y = zeros(1,length(x));
for i = 1:length(x)
if x(i)<L
y(i) = interp1(x0,y0,x(i));
end
end
figure
plot(x,y)
xlabel 水平距离
ylabel 路面不平顺
title 完整路面的路面
simin = [t' y']; %路面数据输入到simulink
sim model1.mdl
figure
plot(tout,yout(:,4))
xlabel 时间/s
ylabel 车体位移/m
fop_init = trapz(tout,abs(yout(:,1))); %vehicle comfort
k_1 = 200000:50000:400000;
k_2 = 30000:5000:50000;
b_2 = 500:500:5000;
temp = [];
for i = 1:length(k_1)
for j = 1:length(k_2)
for m = 1:length(b_2)
k1 = k_1(i);
k2 = k_2(j);
b2 = b_2(m);
sim model1.mdl
fop_1 = trapz(tout,abs(yout(:,1)));
% max(-yout(:,3))*300000<=0.8*(m1+m2)*g
if max(yout(:,2))<=0.08 && max(-yout(:,3))*300000<=0.8*(m1+m2)*g %判断结果是否满足限制条件
aa = 1
if fop_1<fop_init %如果本次结果比上次的值小就更新目标函数值
bb = 1
fop_init = fop_1;
temp = [temp; i j m];
end
end
end
end
end
k11 = 300000;
k21 = 40000;
b21 = 4000;
if isempty(temp)
disp('未能得到最优的结果')
disp(['k1 = ',num2str(k11)])
disp(['k2 = ',num2str(k21)])
disp(['b2 = ',num2str(b21)])
else
disp('优化得到的结果为')
disp(['k1 = ',num2str(k_1(temp(end,1)))])
disp(['k2 = ',num2str(k_2(temp(end,2)))])
disp(['b2 = ',num2str(b_2(temp(end,3)))])
end
4、参考论文
略
以上是关于用MATLAB里的SIMULINK做关于给12V蓄电池充电的仿真 需要PID IGBT等元件 请问高手该如何仿真的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB /simulink中, sin导数后为啥cos(0)不等于1? 结果如图所示: