基于远程IO和变频器的电机调速系统设计毕业设计.docx
《基于远程IO和变频器的电机调速系统设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于远程IO和变频器的电机调速系统设计毕业设计.docx(24页珍藏版)》请在冰点文库上搜索。
基于远程IO和变频器的电机调速系统设计毕业设计
《计算机测控系统设计》课程设计报告
设计题目:
__基于远程I/O和变频器的电机调速系统设计__
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
摘要
本文介绍了基于ADAM4000系列模块通过远程I/O和变频器控制电机转速的控制系统的工作原理、硬件结构和软件设计。
其中PC机作为控制器,变频器作为执行器,电机的转速作为被控对象,、ADAM-4019、ADAM-4024和ADAM-4050等模块作为测量变送器,共同构成一个单回路闭环控制和报警系统。
软件设计时我们采用了不完全微分PID控制算法,这种算法与完全微分PID控制想必,明显提高了系统的控制精度。
经过系统地测试,该控制系统动态误差控制在较小范围,能够满足控制要求。
关键词:
远程I/O,ADAM4000,不完全微分PID
目录
摘要2
1系统设计方案2
1.1系统概述2
1.2设计方案2
1.2.1硬件设计方案2
1.2.2控制方案2
2硬件系统设计3
2.1ADAM-4019+模块3
2.2ADAM-4024模块4
2.3ADAM-4050模块及报警电路4
2.4其他硬件4
3软件设计5
3.1主程序设计5
3.2数据采集和数据发送7
3.2.1数据采集程序设计7
3.2.2控制数据输出程序设计7
3.2.3报警输出程序设计8
4调试过程及结果分析9
4.1调试过程9
4.2调试结果10
4.3结果分析11
5.结束语11
致谢12
参考文献12
附录程序清单13
重庆科技学院
课程设计任务书
设计题目:
基于远程I/O和变频器的电机调速系统设计
学生姓名
学生选题后附名单
课程名称
计算机测控系统设计
专业班级
测控2011
地点
I510、I512
起止时间
14.12.1~14.12.26
设计内容及要求
1.接线图设计:
使用ADAM4000和MM420变频器控制电机转速的所有接线图;包括接线操作、MM420单独控制电机转速的试验和基本应用等。
2.程序设计
(1)界面设计:
主界面设计,设定转速/实际转速的趋势图和棒图,报警等设计。
(2)数据采集与处理程序设计:
ADAM4000数据输入/输出程序;利用一元线性回归拟合测量环节的特性曲线;分析系统的系统误差、粗大误差与随机误差,确定减小各类误差的方法;比较常见数字滤波器性能,实现一阶惯性滤波等。
(3)电机速度的可编程曲线控制:
开环控制电机的转速按预先设定的曲线变化;通过闭环控制(PID调节)将电机的转速控制到任意设定转速。
3.单回路PID参数的整定和分析。
要求:
根据自己的学号与模8之余确定自己的A/D通道(采集电机的实际转速),据此设计相应的接线图;实现控制死区和输出限幅;整定PID参数满足相应的控制要求;撰写设计报告。
设计
参数
1.变频器:
MM420;电机:
具体参数见铭牌
2.稳态误差:
<1%
进度
要求
第1-2天:
选题、讲解任务;第3-4天:
ADAM4000基本应用、CB编程培训;第5-6天:
ADAM4000、MM420变频器和电机的接线图设计、ADAM4000基本编程、变频器基本应用;第7-8天:
数据采集程序设计与传感器精度分析;第9-10天:
系统精度分析;第11-12天:
数字滤波器设计;第13-15天:
实时控制程序设计;第16-17天:
界面设计与调试;第18-19天:
演示、检查、答辩;第20天:
撰写设计报告
参考资料
胡文金等.计算机测控系统.重庆:
重庆大学出版社,2003.6
西门子.MM420变频器使用手册
费业泰.《误差理论与数据处理》(第6版).北京:
机械工业出版社.2006.1
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
系主任:
指导教师:
杨波、王雪
1系统设计方案
1.1系统概述
控制系统以ADAM4000系列模块组作为控制器,电动调节阀作为执行器,气体压力作为被控量,压力计作为测量变送器,构成了一个完整单回路闭环控制系统。
结合增量式不完全微分PID控制算法,使系统的控制精度控制在较高范围,满足控制要求。
系统总体框图如图1-1所示。
图1-1系统总体框图
1.2设计方案
1.2.1硬件设计方案
控制器ADAM-4000系列远程I/O主要由ADAM-4019作为数据输入模块、ADAM-4024作为控制量输出模块、ADAM-4050作为模块报警开关量输出模块组成。
空气压缩机提供整个系统需要的稳定气流,通过压力计和电动调节阀的相互作用实现控制目的后空气即可排出。
1.2.2控制方案
本次控制方案我们将采用增量式不完全微分PID控制算法,它由一个不完全微分环节和一个PI环节组成。
其实际微分环节的微分作用按照指数衰减慢慢释放,有利于提高气体压力控制系统的控制精度。
不完全微分相对于纯微分能够更好的达到控制要求。
在本次方案中我们基本确定采样周期等于控制周期,周期时间选用3至10秒,再根据实际控制效果适当匹配周期。
2硬件系统设计
系统硬件硬件主要由ADAM4000系列模块组、压力计和电动阀组成。
压力计将0至1Mpa的气压转化为标准的4至20mA的电流信号,送至ADAM-4019模块作为控制器的采集信号,经PID计算后由ADAM-4024输出4至20mA的电流信号控制电动阀,来实现闭环控制效果。
控制器主要模块实物图如图2-1所示。
图2-1ADAM-4000模块组与PC机连接示意图
2.1ADAM-4019+模块
ADAM-4019+是16位A/D8通道的模拟量输入模块,可以采集电压、电流等模拟量输入信号。
它为所有通道都提供了可编程的输入范围,这些模块为工业测量和监控的应用中提供很好的性价比;而且它的模拟量输入通道和模块之间还提供了3000V的电压隔离,这样就有效的防止模块在受到高压冲击时而损坏。
ADAM-4019+不仅支持8路差分信号,还支持Modbus协议。
各通道可独立设置其输入范围,同时在模块右侧使用了一个拨码开关来设置INT*和正常工作状态的切换,4019+还增加了4~20mA的输入范围,测量电流时,不需要外接电阻,只需打开盒盖,设置跳线即可。
跳线设置即是打开盒盖将接线柱向下调整即可。
2.2ADAM-4024模块
ADAM-4024有4路模拟量输出通道,分辨率为12位,带有光隔离器,可防止接地回路、电源冲击对设备造成损害,可以指定转换速率和启动电流,支持Modbus协议,输出范围可选0-20mA,4-20mA,+/-10V。
本设计选择4-20mA标准信号以便控制电动阀。
2.3ADAM-4050模块及报警电路
ADAM-4050带有7路数字量输入和8路数字量输出。
它的数字量输出为集电极开路的晶体管开关,可由主机进行控制。
主机可以利用模块的数字量输入来检测行程开关、安全开关或远程数字量信号。
本设计使用它输出开关量来控制报警器,当程序计算值超出设定报警限时,模块将输出低电平,触发报警。
2.4其他硬件
系统选用输出标准电流信号的压力计作为测量变送器,且选用接受标准信号的电动阀作为执行器。
系统出报警器直接由220V/AC供电以外,其他模块和仪表均由输出24V/DC开关电源供电。
系统硬件设计面板连接图和实物接线图如图2-3和2-4所示。
图2-3系统硬件设计面板连接图
图2-4压力系统硬件设计面板连接实物图
接线说明:
1.仪表和模块24V/DC供电;
2.4019+接电流模式0通道Iin+接传感器“信号+”,Iin-接24V电源“-”,传感器“输入+”接24V电源“+”;
3.4024的3通道Iout+输出接调节阀“输入+”,Iout-接调节阀“输入-”;
4.4050数字量输出0通道“DO0”接“报警器2”,报警器GND接24V电源“-”;
3软件设计
3.1主程序设计
本本设计采用增量式不完全微分PID控制算法,其控制精度相对于纯微分PID控制算法有明显优势。
不完全微分PID实际上是由一个不完全微分环节和一个PI环节组成,其微分作用是按照指数衰减缓慢释放的。
其流程图如图3-1所示。
图3-1不完全微分PID控制算法流程图
不完全微分算法核心代码如下:
En=L_ad-SP;//反作用
Udn=Udn1+K1*(En-En1)+K2*(En-Udn1);//微分环节的位置型算式
DeltaUn=(KP*TS/I)*Udn+KP*(Udn-Udn1);//整个不完全微分PID的增量式算式
Un=Un1+DeltaUn;//Un为本周期PID控制器的输出
if(Un>20.000)Un=19.998;
if(Un<4.000)Un=4.001;
Un1=Un;//偏差移动
En1=En;
Udn1=Udn;
控制系统软件流程图如图3-2所示。
图3-2系统软件流程图
3.2数据采集和数据发送
本设计需要微软环境所提供的ActiveX的MSComm控件。
3.2.1数据采集程序设计
4019模块读指定通道输入值命令为:
“#AAn(cr)”其中AA为栈号,n为通道号。
4019模块在0通道数据采集语句如下:
floatdav;
if(MSComm1->PortOpen==false)MSComm1->PortOpen=true;
AnsiStringSendString="#010";
SendString+="\xd";
MSComm1->Output=OleVariant(AnsiString(SendString));
Sleep(200);
3.2.2控制数据输出程序设计
数据输出分为4024电流量和4050数字量,分别表示不完全微分PID控制输出和报警信号输出。
其程序语句如下:
4024模块送D/A数据的命令为:
“#AACn(data)”,其中AA为栈号,C为固定字符,n为通道号,data为待发送的数据。
4024模块3通道数据输出语句如下:
if(MSComm1->PortOpen==false)MSComm1->PortOpen=true;
AnsiStringSendString1="#02C3";
if(Un<10.0)
{
SendString1+="+0";
SendString1+=FloatToStrF(Un,0,4,4);
}
if(Un>=10.0)
{
SendString1+="+";
SendString1+=FloatToStrF(Un,0,5,5);
}
SendString1+="\xd";
MSComm1->Output=OleVariant(AnsiString(SendString1));
MSComm1->PortOpen=false;
Edit1->Text=FloatToStrF(L_ad,0,5,5);
Edit3->Text=FloatToStrF(Un,0,5,5);
}
3.2.3报警输出程序设计
4050模块数字量输出的命令为:
“#AABB(data)”其中AA为栈号,BB为输出格式,data为待发送的数据。
当测量值大于设定值“dan”或是“PV-SP”大于1.5时则输出报警信号。
报警器程序代码如下:
/*********设置报警限********/
if(Press>HL||Press{
if(MSComm1->PortOpen==false)
MSComm1->PortOpen=true;
AnsiStringSendString2="#030001";
SendString2+="\xd";
MSComm1->Output=OleVariant(AnsiString(SendString2));
MSComm1->PortOpen=false;
}
if(Press>(LL+DB)&&Press<(HL-DB))
{
if(MSComm1->PortOpen==false)
MSComm1->PortOpen=true;
AnsiStringSendString3="#030000";
SendString3+="\xd";
MSComm1->Output=OleVariant(AnsiString(SendString3));
MSComm1->PortOpen=false;
}
4调试过程及结果分析
4.1调试过程
1)首先按照电气CAD的连线图连接好线路。
打开配置软件,设置好传输波特率,波特率设置为9600Bps,4024模块的3通道和4019+模块的0通道均设置为4至20mA电流模式。
2)输出测试,使用配置软件,4024分别输出不同毫安的的电流值,观察调节阀的开度是否随着随电流值变化而变化,如果调节阀开度随着电流值的变化而变化即说明调节阀工作正常。
3)采集数据单位标定,查看4019+的0通道电流值,可以看到此时为4.000mA,继续打开空气压缩机,压力表示数逐渐增大,4019+采集的电流值也逐渐增大,经标度换算发现,4019采集的电流值与压力计示数对应,说明数据采集正常。
4)设置PID相关参数初始值,控制周期设为500毫秒,采样周期为500毫秒,运行程序。
首先,调节比例系数Kp,由小往大调,记录下临近振荡的值约0.8;然后,加入积分环节,由大到小调节积分时间Ti,尽量消除系统余差,观察达到实时曲线已经趋于平稳,记录较理想值在22至24之间;最后,再适当加入微分环节,已达到改变系统动态系能,如减小超调量和数段调节时间等,观察曲线趋势,直到出现比较好的调节效果,记录较为理想数据在4到6之间。
4.2调试结果
通过设定不同的PID参数和不同的设定气压值,最终得出了叫理想的实验效果,具体其中PI控制和PID控制如图4-1和4-2所示。
图4-1PID控制趋势图1
图4-2PID控制趋势图2
注:
趋势图部分从上至下(靠左)分别代表控制输出线、气压设定线和气压测量线;棒状图部分从左至右分别代表气压设定值、气压测量值和控制输出值。
4.3结果分析
综合上述结果,设计各项指标均达到要求。
其中稳态误差控制在:
0.001至0.007MPa之间。
由于电动阀存在滞后,系统调节时间一般在20秒左右。
PID参数对系统的影响。
本控制周期不宜取得过大,在1秒左右较为合适;Kp偏大或Ti偏小,系统振荡次数增多;Kp太大或Ti太小讲师系统趋于不稳定;Td偏大或偏小均会引起超调量较大或调节时间较长。
因此,整定PID参数的过程是较为漫长的,只有合适的参数才能保证系统稳定运行。
5.结束语
计算机测控系统设计课程设计为我们提供了一次很实用,很难得的学习和实践的机会。
该设计充分利用到了闭环控制系统方面的知识,也提升了闭环PID控制系统的工程实践能力。
通过这次课程设计,使我对远程I/O及过程控制有了进一步的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。
通过这次实践,我感觉到自己从课本上学到的理论知识和实践仍有很大的差距。
在设计编程过程中,我也遇到很多问题,只有重新看书才能找到答案,这让我体会到了时间的重要性和理论的权威性。
理论不经过实践考验,是没法实施的,就像我们编的程序,很多方面考虑的都不够,几乎没有涉及到实际应用时的防范方法措施。
致谢
这次课程设计在老师和同学的帮助顺利完成了,在设计中遇到了很多编程问题,最后在老师的建议下终于解决了。
对我以后的工作和生活将产生很大的影响。
特别感谢各位老师给予我很大的关心和支持。
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
参考文献
[1]胡文金等.计算机测控系统.重庆:
重庆大学出版社,2003.6
[2]《误差理论与数据处理》(第6版).北京:
机械工业出版社.2006.1
[3]压力计使用手册
附录程序清单
//-------------------------------------------------------------------
#include
#pragmahdrstop
#include"Unit1.h"
#include"math.h"
//-------------------------------------------------------------------
#pragmapackage(smart_init)
#pragmalink"MSCommLib_OCX"
#pragmalink"PERFGRAP"
#pragmaresource"*.dfm"
floatSP=5.2253;
inti;
floatL_ad,L_ad1;
floatPress=0.0,SetP=0.0,HL=0.4,LL=0.1,DB=0.0;
floatKP=0.8,I=22,D=4.00,KD=2.5,PV=0.0;
floatUn=0.0,Un1=0.0,Val=0.0,DeltaUn=0.0,En=0.0,En1=0.0,Udn=0.0,Udn1=0.0;
floatTS=4.5;
floatK1,K2;
TForm1*Form1;
//-------------------------------------------------------------------
__fastcallTForm1:
:
TForm1(TComponent*Owner)
:
TForm(Owner)
{
}
//-------------------------------------------------------------------
void__fastcallTForm1:
:
Timer1Timer(TObject*Sender)
{
floatdav;
if(MSComm1->PortOpen==false)MSComm1->PortOpen=true;
AnsiStringSendString="#010";
SendString+="\xd";
MSComm1->Output=OleVariant(AnsiString(SendString));
Sleep(200);
PV=AnsiString(WideString(MSComm1->Input)).SubString(3,6).ToDouble();//数据转换
/*********一阶惯性滤波********/
L_ad=0.55*PV+0.45*L_ad1;
L_ad1=L_ad;
Edit1->Text=FloatToStrF(L_ad,0,5,5);
Press=L_ad*0.0669-0.2494;//计算设定压强
Edit15->Text=FloatToStrF(Press,0,2,2);
Edit14->Text=FloatToStrF(((Press-SetP)*100.0)/SetP,0,5,2);//计算相对误差
/*********设置报警限********/
if(Press>HL||Press{
if(MSComm1->PortOpen==false)
MSComm1->PortOpen=true;
AnsiStringSendString2="#030001";
SendString2+="\xd";
MSComm1->Output=OleVariant(AnsiString(SendString2));
MSComm1->PortOpen=false;
}
if(Press>(LL+DB)&&Press<(HL-DB))
{
if(MSComm1->PortOpen==false)
MSComm1->PortOpen=true;
AnsiStringSendString3="#030000";
SendString3+="\