1、基于远程IO和变频器的电机调速系统设计基于远程IO和变频器的电机调速系统设计计算机测控系统设计课程设计报告 学 院:_电气与信息工程学院_专业班级: 学生姓名: 学 号 设计地点(单位)_ _ I510 _ _ _设计题目: _ 基于远程I/O和变频器的电机调速系统设计_ 完成日期: 2014年 12月 27日 指导教师评语: _ _ _ 成绩(五级记分制):_ _ 指导教师(签字):_ _ 摘要本文介绍了基于ADAM4000系列模块通过远程I/O和变频器控制电机转速的控制系统的工作原理、硬件结构和软件设计。其中PC机作为控制器,变频器作为执行器,电机的转速作为被控对象,、ADAM-4019、
2、ADAM-4024和ADAM-4050等模块作为测量变送器,共同构成一个单回路闭环控制和报警系统。软件设计时我们采用了不完全微分PID控制算法,这种算法与完全微分PID控制想必,明显提高了系统的控制精度。经过系统地测试,该控制系统动态误差控制在较小范围,能够满足控制要求。关键词:远程I/O,ADAM4000,不完全微分PID摘要 21 系统设计方案 21.1 系统概述 21.2设计方案 21.2.1 硬件设计方案 21.2.2 控制方案 22 硬件系统设计 32.1 ADAM-4019+模块 32.2 ADAM-4024模块 42.3 ADAM-4050模块及报警电路 42.4 其他硬件 43
3、 软件设计 53.1 主程序设计 53.2 数据采集和数据发送 73.2.1 数据采集程序设计 73.2.2 控制数据输出程序设计 73.2.3 报警输出程序设计 84 调试过程及结果分析 94.1调试过程 94.2 调试结果 104.3 结果分析 115. 结束语 11致 谢 12参考文献 12附录 程序清单 13重庆科技学院课程设计任务书设计题目:基于远程I/O和变频器的电机调速系统设计学生姓名学生选题后附名单课程名称计算机测控系统设计专业班级测控2011地 点I510、I512起止时间14.12.114.12.26设计内容及要求1. 接线图设计:使用ADAM4000和MM420变频器控制
4、电机转速的所有接线图;包括接线操作、MM420单独控制电机转速的试验和基本应用等。2. 程序设计(1)界面设计:主界面设计,设定转速/实际转速的趋势图和棒图,报警等设计。(2)数据采集与处理程序设计:ADAM4000数据输入/输出程序;利用一元线性回归拟合测量环节的特性曲线;分析系统的系统误差、粗大误差与随机误差,确定减小各类误差的方法;比较常见数字滤波器性能,实现一阶惯性滤波等。(3)电机速度的可编程曲线控制:开环控制电机的转速按预先设定的曲线变化;通过闭环控制(PID调节)将电机的转速控制到任意设定转速。3. 单回路PID参数的整定和分析。要求:根据自己的学号与模8之余确定自己的A/D通道
5、(采集电机的实际转速),据此设计相应的接线图;实现控制死区和输出限幅;整定PID参数满足相应的控制要求;撰写设计报告。设计参数1. 变频器:MM420;电机:具体参数见铭牌2. 稳态误差:20.000) Un=19.998; if(UnPortOpen=false) MSComm1-PortOpen=true; AnsiString SendString=#010; SendString +=xd; MSComm1-Output=OleVariant(AnsiString(SendString); Sleep(200);3.2.2 控制数据输出程序设计数据输出分为4024电流量和4050数字量
6、,分别表示不完全微分PID控制输出和报警信号输出。其程序语句如下:4024模块送D/A数据的命令为:“#AACn(data)”,其中AA为栈号,C为固定字符,n为通道号,data为待发送的数据。4024模块3通道数据输出语句如下:if(MSComm1-PortOpen=false) MSComm1-PortOpen=true; AnsiString SendString1=#02C3; if(Un=10.0) SendString1 +=+; SendString1 +=FloatToStrF(Un,0,5,5); SendString1 +=xd; MSComm1-Output=OleVar
7、iant(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(PressHL |PressPortOpen=false) MSComm1-PortOpen=t
8、rue; AnsiString SendString2=#030001; SendString2 +=xd; MSComm1-Output=OleVariant(AnsiString(SendString2); MSComm1-PortOpen=false; if( Press(LL+DB)& PressPortOpen=false) MSComm1-PortOpen=true; AnsiString SendString3=#030000; SendString3 +=xd; MSComm1-Output=OleVariant(AnsiString(SendString3); MSComm1
9、-PortOpen=false; 4 调试过程及结果分析4.1调试过程1)首先按照电气CAD的连线图连接好线路。打开配置软件,设置好传输波特率,波特率设置为9600Bps,4024模块的3通道和4019+模块的0通道均设置为4至20mA电流模式。2)输出测试, 使用配置软件,4024分别输出不同毫安的的电流值,观察调节阀的开度是否随着随电流值变化而变化,如果调节阀开度随着电流值的变化而变化即说明调节阀工作正常。3)采集数据单位标定,查看4019+的0通道电流值,可以看到此时为4.000mA,继续打开空气压缩机,压力表示数逐渐增大,4019+采集的电流值也逐渐增大,经标度换算发现,4019采集的
10、电流值与压力计示数对应,说明数据采集正常。 4)设置PID相关参数初始值,控制周期设为500毫秒,采样周期为500毫秒,运行程序。首先,调节比例系数Kp,由小往大调,记录下临近振荡的值约0.8;然后,加入积分环节,由大到小调节积分时间Ti,尽量消除系统余差,观察达到实时曲线已经趋于平稳,记录较理想值在22至24之间;最后,再适当加入微分环节,已达到改变系统动态系能,如减小超调量和数段调节时间等,观察曲线趋势,直到出现比较好的调节效果,记录较为理想数据在4到6之间。4.2 调试结果通过设定不同的PID参数和不同的设定气压值,最终得出了叫理想的实验效果,具体其中PI控制和PID控制如图4-1和4-
11、2所示。图4-1 PID控制趋势图1图4-2 PID控制趋势图2注:趋势图部分从上至下(靠左)分别代表控制输出线、气压设定线和气压测量线;棒状图部分从左至右分别代表气压设定值、气压测量值和控制输出值。4.3 结果分析 综合上述结果,设计各项指标均达到要求。其中稳态误差控制在:0.001至0.007MPa之间。由于电动阀存在滞后,系统调节时间一般在20秒左右。PID参数对系统的影响。本控制周期不宜取得过大,在1秒左右较为合适;Kp偏大或Ti偏小,系统振荡次数增多;Kp太大或Ti太小讲师系统趋于不稳定;Td偏大或偏小均会引起超调量较大或调节时间较长。因此,整定PID参数的过程是较为漫长的,只有合适
12、的参数才能保证系统稳定运行。5. 结束语计算机测控系统设计课程设计为我们提供了一次很实用,很难得的学习和实践的机会。该设计充分利用到了闭环控制系统方面的知识,也提升了闭环PID控制系统的工程实践能力。通过这次课程设计,使我对远程I/O及过程控制有了进一步的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。通过这次实践,我感觉到自己从课本上学到的理论知识和实践仍有很大的差距。在设计编程过程中,我也遇到很多问题,只有重新看书才能找到答案,这让我体会到了时间的重要性和理论的权威性。理论不经过实践考验,是没法实施的,就像我们编的程序,很多方面考虑的都不够,几乎没有涉及到实际应用时的防范方法
13、措施。致 谢这次课程设计在老师和同学的帮助顺利完成了,在设计中遇到了很多编程问题,最后在老师的建议下终于解决了。对我以后的工作和生活将产生很大的影响。特别感谢各位老师给予我很大的关心和支持。同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!参考文献1胡文金等.计算机测控系统.重庆:重庆大学出版社,2003.62误差理论与数据处理(第6 版).北京:机械工业出版社.2006.13压力计使用手册附录 程序清单/-#include #pragma hdrstop#include Unit1.h#include math.h/-#pragma package(smart_init)#pra
14、gma link MSCommLib_OCX#pragma link PERFGRAP#pragma resource *.dfmfloat SP=5.2253;int i;float L_ad,L_ad1;float Press=0.0,SetP=0.0,HL=0.4,LL=0.1,DB=0.0;float KP=0.8,I=22,D=4.00,KD=2.5,PV=0.0;float Un=0.0,Un1=0.0,Val=0.0,DeltaUn=0.0,En=0.0,En1=0.0,Udn=0.0,Udn1=0.0;float TS=4.5;float K1,K2;TForm1 *Form1
15、;/-_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner)/-void _fastcall TForm1:Timer1Timer(TObject *Sender)float dav; if(MSComm1-PortOpen=false) MSComm1-PortOpen=true; AnsiString SendString=#010; SendString +=xd; MSComm1-Output=OleVariant(AnsiString(SendString); Sleep(200); PV=AnsiString(WideSt
16、ring(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(PressHL |Pre
17、ssPortOpen=false) MSComm1-PortOpen=true; AnsiString SendString2=#030001; SendString2 +=xd; MSComm1-Output=OleVariant(AnsiString(SendString2); MSComm1-PortOpen=false; if( Press(LL+DB)& PressPortOpen=false) MSComm1-PortOpen=true; AnsiString SendString3=#030000; SendString3 +=xd; MSComm1-Output=OleVari
18、ant(AnsiString(SendString3); MSComm1-PortOpen=false; /*不完全微分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控制器的输出 ,P148页由增量式PID算式得到PID控制器输出 if(Un20.000) Un=19.998; if(UnPortOpen=false) MSComm1-PortOpen=true; AnsiString SendString1=#02C2; 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);/-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1