控制系统数字仿真技术终极版1

控制系统数字仿真技术

1. c 语言仿真程序及仿真结果

#include #include #include #include #include

doubleoutputy[3][1501],st,dt; doublelp,vn; voidmainrun(); voiddispcurve(); void main() { }

voidmainrun() {

doublex11,x21,x31,x41,x51,x10,x20,x30,x40,x50,r,e1,e2,u10,u11,u20,u21,y1,y0;

inti,j,k,m,n,c;

x10=0;x20=0;x30=0;x40=0;x50=0;r=10;r=10;e1=0;e2=0;u10=0;u20=0;y0=0; outputy[0][0]=0;outputy[1][0]=0;outputy[1][0]=0; double f1[13]={0}; double f2[3]={0}; double f3[2]={0}; double f4[2]={0};

double kp1,ti1,td1,kp2,ti2,td2; double a1,a2;

kp1=1.2;ti1=80;td1=5;kp2=0.8;ti2=40;td2=0; a1=exp(-dt/10);a2=exp(-dt/25); st=1000;dt=1; lp=st/dt; mainrun(); vn=3; dispcurve();

{

e1=r+0.5*y0;

u11=u10+(kp1+kp1*dt/ti1+kp1*td1/dt)*e1-(kp1+2*kp1*td1/dt)*f3[1]+(kp1*td1/dt)*f3[0];

e2=u11+0.5*x20;

u21=u20+(kp2+kp2*dt/ti2+kp2*td2/dt)*e2-(kp2+2*kp2*td2/dt)*f4[1]+(kp2*td2/dt)*f4[0];

}

for (c=0;c

printf("%14.4f",outputy[0][c]); /*if (c/4==0)*/

x11=a1*x10+(1-a1)*u20; x21=a1*x20-0.8*(1-a1)*f2[0]; x31=a2*x30-0.85*(1-a2)*u20; x41=a2*x40+(1-a2)*x30; x51=a2*x50+(1-a2)*x40; y1=a2*y0+(1-a2)*f1[0];

outputy[0][i]=y1;outputy[1][i]=u21;outputy[2][i]=u11; for(j=0;j

f1[j]=f1[j+1]; f1[12]=x51; for(k=0;k

f2[k]=f2[k+1]; f2[2]=x11; for(m=0;m

f3[m]=f3[m+1]; f3[1]=e1; for(n=0;n

f4[n]=f4[n+1]; f4[1]=e2;

y0=y1;u10=u11;u20=u21;x10=x11;x20=x21;x30=x31;x40=x41;x50=x51;

}

}

voiddispcurve() {

int drive=DETECT; int mode=2; inti,j;

doubleym,kt,ky; char s[100],c; doublex,y,xe,ye; doublety;

initgraph(&drive,&mode," ");

ym=fabs(outputy[0][0]); /*给最大显示值赋初值*/ for(j=0;j

for(i=0;i

/*循环得到最大值*/ /*图像显示的范围*/

if(fabs(outputy[i][j])>ym) ym=fabs(outputy[i][j])/2;

}

x=40; xe=620;

y=40; ye=440; kt=(xe-x)/(lp*dt); ky=(ye-y)/ym/2.0; ty=y+(ye-y)/2; line(x,ty,xe+10,ty); line(xe,ty+3,xe+10,ty); line(xe,ty-3,xe+10,ty); line(x,y-10,x,ye+10); line(x-3,y,x,y-10);

/*画Y 轴和Y 轴的箭头*/

/*画X 轴和X 轴的箭头*/

for(j=1;j

line(x+j*(xe-x)/10.0,ty-3,x+j*(xe-x)/10.0,ty+3); /*均分X 轴*/ for(j=1;j

line(x-3,j*(ye-y)/10.0,x+3,j*(ye-y)/10.0);

/*均分Y 轴*/

outtextxy(xe,ty+5,"t"); outtextxy(x-10,y-10,"y"); for(j=1;j

outtextxy(x-10+j*(xe-x)/10.0,ty+5,s);

}

for(j=-5;j

outtextxy(0,240-j*(ye-y)/10.0,s); }

for(i=0;i

lineto(x+j*dt*kt,ty-ky*outputy[i][j]); }

do { c=getchar(); }

while(c!='q'&& c!='Q'); closegraph();

} /*显示X 轴坐标*/

/*显示Y 轴坐标*/

/*画输出曲线*/

仿真结果:

2. matlab 中simulink 仿真

控制系统数字仿真技术

1. c 语言仿真程序及仿真结果

#include #include #include #include #include

doubleoutputy[3][1501],st,dt; doublelp,vn; voidmainrun(); voiddispcurve(); void main() { }

voidmainrun() {

doublex11,x21,x31,x41,x51,x10,x20,x30,x40,x50,r,e1,e2,u10,u11,u20,u21,y1,y0;

inti,j,k,m,n,c;

x10=0;x20=0;x30=0;x40=0;x50=0;r=10;r=10;e1=0;e2=0;u10=0;u20=0;y0=0; outputy[0][0]=0;outputy[1][0]=0;outputy[1][0]=0; double f1[13]={0}; double f2[3]={0}; double f3[2]={0}; double f4[2]={0};

double kp1,ti1,td1,kp2,ti2,td2; double a1,a2;

kp1=1.2;ti1=80;td1=5;kp2=0.8;ti2=40;td2=0; a1=exp(-dt/10);a2=exp(-dt/25); st=1000;dt=1; lp=st/dt; mainrun(); vn=3; dispcurve();

{

e1=r+0.5*y0;

u11=u10+(kp1+kp1*dt/ti1+kp1*td1/dt)*e1-(kp1+2*kp1*td1/dt)*f3[1]+(kp1*td1/dt)*f3[0];

e2=u11+0.5*x20;

u21=u20+(kp2+kp2*dt/ti2+kp2*td2/dt)*e2-(kp2+2*kp2*td2/dt)*f4[1]+(kp2*td2/dt)*f4[0];

}

for (c=0;c

printf("%14.4f",outputy[0][c]); /*if (c/4==0)*/

x11=a1*x10+(1-a1)*u20; x21=a1*x20-0.8*(1-a1)*f2[0]; x31=a2*x30-0.85*(1-a2)*u20; x41=a2*x40+(1-a2)*x30; x51=a2*x50+(1-a2)*x40; y1=a2*y0+(1-a2)*f1[0];

outputy[0][i]=y1;outputy[1][i]=u21;outputy[2][i]=u11; for(j=0;j

f1[j]=f1[j+1]; f1[12]=x51; for(k=0;k

f2[k]=f2[k+1]; f2[2]=x11; for(m=0;m

f3[m]=f3[m+1]; f3[1]=e1; for(n=0;n

f4[n]=f4[n+1]; f4[1]=e2;

y0=y1;u10=u11;u20=u21;x10=x11;x20=x21;x30=x31;x40=x41;x50=x51;

}

}

voiddispcurve() {

int drive=DETECT; int mode=2; inti,j;

doubleym,kt,ky; char s[100],c; doublex,y,xe,ye; doublety;

initgraph(&drive,&mode," ");

ym=fabs(outputy[0][0]); /*给最大显示值赋初值*/ for(j=0;j

for(i=0;i

/*循环得到最大值*/ /*图像显示的范围*/

if(fabs(outputy[i][j])>ym) ym=fabs(outputy[i][j])/2;

}

x=40; xe=620;

y=40; ye=440; kt=(xe-x)/(lp*dt); ky=(ye-y)/ym/2.0; ty=y+(ye-y)/2; line(x,ty,xe+10,ty); line(xe,ty+3,xe+10,ty); line(xe,ty-3,xe+10,ty); line(x,y-10,x,ye+10); line(x-3,y,x,y-10);

/*画Y 轴和Y 轴的箭头*/

/*画X 轴和X 轴的箭头*/

for(j=1;j

line(x+j*(xe-x)/10.0,ty-3,x+j*(xe-x)/10.0,ty+3); /*均分X 轴*/ for(j=1;j

line(x-3,j*(ye-y)/10.0,x+3,j*(ye-y)/10.0);

/*均分Y 轴*/

outtextxy(xe,ty+5,"t"); outtextxy(x-10,y-10,"y"); for(j=1;j

outtextxy(x-10+j*(xe-x)/10.0,ty+5,s);

}

for(j=-5;j

outtextxy(0,240-j*(ye-y)/10.0,s); }

for(i=0;i

lineto(x+j*dt*kt,ty-ky*outputy[i][j]); }

do { c=getchar(); }

while(c!='q'&& c!='Q'); closegraph();

} /*显示X 轴坐标*/

/*显示Y 轴坐标*/

/*画输出曲线*/

仿真结果:

2. matlab 中simulink 仿真


相关文章

  • 物联网信息安全(终极版)
  • 填空(25*1') ①物联网的特征:全面感知.可靠传递.智能处理 ②物联网的安全问题:传统的网络安全问题.计算系统的安全问题.物联网感知过程中的特殊安全问题 ③物联网的安全特征:安全体系结构复杂.涵盖广泛的安全领域.有别于传统的信息安全 ④ ...查看


  • 耐克的数字战略:搏上一切才会赢
  • 耐克正在进行一场互联网时代与新老对手的"终极对决".目前耐克战绩不错. 耐克正在进行一场互联网时代与新老对手的"终极对决".目前来看,耐克战绩不错. 近日,耐克足球发布了#搏上一切#足球市场活动的第三 ...查看


  • 终极创业项目计划书模板
  • 希望对大家有帮助 创 业 项 目 计 划 书 样 本  计划目运作情况,阐述产品市场及竞争.风险等未来发展前景和融资要求的书面材料  开.未经本人同意,不得向第三方公开本项目计划书涉及的商业秘密. 一.项目企业摘要 创业计划书摘要,是全 ...查看


  • 密码:人类智力的终极对决(图)
  • 更多典藏请点击:城通家园 日前,美国一家网站评出了"最糟"密码榜,"最糟"意味着最易被黑客破解.上榜的25个密码大多有规律可循,多为常见名称. 其中,password排名第一(英文"密码&q ...查看


  • 保护关于技术措施的版权
  • 关于技术措施的版权保护 关于技术措施的版权保护 作者 梁志文 摘要 版权保护的技术措施,是指版权人所主动采取的,能有效控制进入受版权保护的作品并对版权人权利进行有效保护,防止侵犯其合法权利的设备.产品或方法.目前版权人常用的技术措施主要有: ...查看


  • 吉林省考考前必看申论真题范文精讲:弘扬黄河精神
  • >>>名师解析申论范文大全 吉林省考考前必看申论真题范文精讲:弘扬黄河精神 通过最新吉林公务员考试资讯.大纲可以了解到,公务员考试申论是测查从事机关工作应具备的基本能力的科目,吉林中公教育整理了吉林省考资料大全供考生备考学 ...查看


  • 学生综合素质评价实践研究与思考
  • 长春市第五十二中学,坐落在长春东部老城二道区,依傍穿城而过的伊通河.建校50年来,尤其是新课程改革以来,在上级政府的亲切关怀和科学指导下,五十二中人抓住机遇,勇于改革,追求卓越,稳步发展,构建了学生综合素质评价体系,开创"动力教育 ...查看


  • [终极完整]高中通用技术学业水平考试知识点汇总
  • 专题一 对技术的认识 基本要求 1.了解技术的发展史,破除对技术的神秘感 2.认识到技术是人的能动性和创造性的表现,是社会发展的主动力 3.全面地理解技术的基本性质 4.分清技术与科学的关系 知识梳理 一.技术的含义 技术是指人类为了满足社 ...查看


  • 从"人联"到互联,寻找咬合直销行业线上线下的"齿轮组"
  • 摘 要:安利(中国)三月在北京正式对外发布在华"互联网+"战略,宣布搭建以安利易联网.数码港APP.云服务微信号和移动工作室为核心的移动社交电商系统,充分利用数字化工具,设计了一整套紧密关联的"齿轮组" ...查看


热门内容