基于IPC和PLC的温度控制系统设计.docx
《基于IPC和PLC的温度控制系统设计.docx》由会员分享,可在线阅读,更多相关《基于IPC和PLC的温度控制系统设计.docx(12页珍藏版)》请在冰点文库上搜索。
基于IPC和PLC的温度控制系统设计
重庆科技学院
课程设计任务书
设计题目:
基于IPC和PLC的温度控制系统设计
学生姓名
学生选题后附名单
课程名称
计算机测控系统
专业班级
测控普2008
地点
I504、I502
起止时间
11.12.19~11.12.30
设计内容及要求
1.使用IPC、S7-200PLC以及PLC实验台的加热器实现一个温度控制系统的所有接线图设计。
2.程序设计
(1)界面设计:
主界面设计、细目画面设计、温度实时变化趋势曲线和棒图的设计。
(2)IPC和S7-200的数据通信程序设计:
从PLC接收实测温度;将温度设定值、PID控制参数等发送到PLC。
(3)S7-200温度采集与PID控制程序设计,实现任意设定温度的实时控制。
3.单回路温度控制的PID参数整定和分析。
要求:
根据自己的学号与模10之余确定自己的温度设定值(40+余数)及其相应的报警参数,据此设计相应的接线图;编写、调试和运行控制程序;整定PID参数满足相应的控制要求;撰写设计报告。
设计
参数
1.加热器参数:
见实验室PLC实验设备温度控制挂件标示或说明
2.数据采集误差:
<0.5%
3.稳态误差:
<2%
4.动态误差:
<5%
进度
要求
第1天:
选题、讲解任务、CB编程培训;第2天:
IPC、S7-200PLC和加热器的接线图设计、PLC控制加热器的基本应用;第3和4天:
在IPC/PC上完成界面程序设计、曲线显示、参数设定界面等;第5和6天:
IPC和PLC的通信程序设计;第7-8天:
PLC温度控制程序设计和调试;第9天:
IPC和PLC联调、PID参数整定、分析;第10天:
撰写设计报告和检查设计结果
参考资料
胡文金等.计算机测控系统.重庆:
重庆大学出版社,2003.6
陈建明.电器控制与PLC应用.北京:
电子工业出版社,2006
李世平.PC计算机测控技术及应用.西安:
西安电子科技大学出版社,2003.9
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
杨波、王雪
2011年12月16日
摘要
基于IPC和PLC的温度控制系统设计,使用CB编程及PLC编程对S7-200实验台上加热器进行控制。
PC与PLC的通信中C++Builder采用MSComm串口通信,PLC采用自由口通信模式,对加热器的温度进行采集反馈,进而对加热器进行控制,使测量温度趋近于设定温度。
采用PID闭环控制进行调节。
PID闭环控制是控制系统中应用很广泛的一种控制算法,对大部分控制对象都有良好的控制效果。
PLC(可编程控制器) 以其可靠性高、抗干扰能力强、编程简单、功能强大、性价比高、体积小、能耗低等显著特点广泛应用于现代工业的自动控制之中。
关键字:
MSComm串口通信自由口通信PID闭环控制
1.引言
温度的测量和控制对人类日常生活、气象预报、工业生产等都起着极其重要的作用。
PLC不仅具有传统继电器控制系统的控制功能,而且能扩展熟人输出模块,特别是可以扩展一些智能控制模块,构成不同的控制系统,将模拟量输入输出控制和现代控制方法融为一体,实现智能控制、闭环控制、多控制功能一体的综合控制。
S7-200PLC的扩展模块中,有集温度采集和数据处理于一身的专用智能温度模块—EM231热电偶模块,该模块中数据格式为二进制补码形式,能自动进行现行化处理,有冷端补偿功能。
基于PLC与IPC的温度控制系统,首要实现IPC与PLC的通信,根据实验室的条件,以PC代替IPC,通信时PC为RS232C接口,S7-200系列自由口为RS485。
因此PC的RS232接口必须先通过RS232/RS485转换器,再与PLC通信端口相连接,连接媒质可以是双绞线或是电缆线。
西门子公司提供的PC/PPI电缆带有RS232/RS485转换器,可直接采用PC/PPI电缆,因此在不增加任何硬件的情况下,可以很方便地将PLC和PC的连接。
2.系统方案的设计
本次设计是基于PLC与PC的温度控制系统。
使用PC与S7-200PLC完成通
信,通过发送和接收数据控制试验台上一个加热器,整体实现一个温度控制系统。
此次设计要求实现如下功能:
①界面设计:
主界面设计、细目画面设计、温度实时变化趋势曲线和棒图的设计。
②IPC和S7-200的数据通信程序设计:
从PLC接收实测温度;将温度设定值、PID控制参数等发送到PLC。
③S7-200温度采集与PID控制程序设计,实现任意设定温度的实时控制。
1CB设计部分:
用趋势图和棒图显示设定温度和测量温度,并实现PID值的修改、发
送和显示,报警功能的实现,与PLC通信功能的实现。
②PLC设计部分:
实现与计算机的通信通信,并通过反馈的数据调节PID参数值,使测量温度稳态时稳态误差小于2%。
3.硬件设计
3.1总线路的设计
PC机将设定温度发送给PLC,PLC接收温度后,以输出0~10V的电压控制温度控制器的温度升降,经过温度控制器后输出的电压值反馈给PLC,PLC再将测量电压传送给PC。
3.2CB界面的设计
根据任务书的要求,用趋势图和棒图显示测量温度的值。
故在Image->Picture中添加“趋势图”和“棒图”,用2个Edit编辑框分别显示“设定温度”值和“测量温度”值,并分别用2个Label键注释“设定温度”和“测量温度”。
趋势图和棒图中分别用5个Label键注释温度值。
界面如下图3.1所示:
图3.1初始界面设计图
如图1界面所示,界面中设计2个Edit编辑框显示报警上限和报警下限值。
设计3个Edit编辑框显示P、I、D参数的设定值。
后来界面做了细微的调动,用“动态误差”替换了“报警死区”,并增设了“报警提示”,即测量温度大于报警上限或小于报警下限的值,报警指示灯变为红色,则为蓝色。
完善界面设计图如下图3.2所示:
图3.2完善界面设计图
如图3.2所示,界面中还增设了4个Button按键,分别用于设定温度值的发送、PID参数值的发送和报警上下限的修改。
4.软件设计
4.1趋势图和棒图的显示
4.1.1趋势图。
趋势图的画线中涉及到重调趋势背景图、画线的宽度、画线的颜色、画线起点的坐标及所画线的含义。
Image1->Picture->LoadFromFile("QUSHI.BMP");//重调趋势背景,清除当前趋势曲线
Image1->Canvas->Pen->Width=1;//曲线粗细程度
Image1->Canvas->Pen->Color=clBlue;//给定值曲线为蓝色
Image1->Canvas->MoveTo(0,305);//曲线起点
for(inti=0;i<480;i++)//曲线由480点组成
{
Image1->Canvas->LineTo(i,300-305*t30sp/100);//两点之间连一直线
}
t30sp表示设定温度值,即为编辑框Edit2中的值,用下面一句程序修改编辑框中的设定温度值。
t30sp=StrToFloat(Edit2->Text);//设定温度值
如下图4.1所示:
图4.1设定温度=60的趋势图
图4.1中,趋势图中设定温度画线宽度为1,画线颜色为蓝色,画线起点坐标为(0,305),温度设定值为60,趋势图中画线亦在趋势图60%处。
测量温度值在趋势图中的画线方法与设定温度值的画法相同。
4.1.2棒图。
棒图的画线中同样也涉及到重调背景图、画线的宽度、画线的颜色、画线的起点坐标及画线的含义。
Image2->Picture->LoadFromFile("bangtu.bmp");//重调背景,清楚当前棒图
Image2->Canvas->Pen->Color=clRed;//给定值棒图为红色
Image2->Canvas->Pen->Width=10;//棒条宽度
Image2->Canvas->MoveTo(47,305);//给定值棒条起点
Image2->Canvas->LineTo(47,304-305*t30sp/100);
棒图的宽度和长度分别为105、305。
4.2通信的设计
4.2.1CB通信的设计。
PC与PLC的通信采用MCSomm控件完成。
打开菜单Component->ImportActiveXControl,并选择MicrosoftCommomControl6.0,再点击Install按钮,最后根据提示进行操作,就在C++Builder项目中引入所需的ActiveX控件MSComm。
设置MSComm控件中用到的主要属性:
属性
值
意义
CommPort
1
使用串行口COM1
Settings
9600,n,8,1
设置通信的波特率、奇偶校验、数据位、停止位这些通信协议,当两台计算机或计算机与单片机相互通信时,该设置应完全一样
PortOpen
运行时使用,没有初值
返回或设置串口是否打开,只有串口打开后才能进行通信
Input
在适当的时候,可以在接收缓冲区取得对方通过串口送来的信息
OutPut
在发送信息时,只需把信息放在发送缓冲区中就可以了
InputLen
0
把接收缓冲区中的信息一次全部读完
InputMode
0
0文本模式接收信息,1二进制形式接收信息
RtsHold
1
每接收一个字符,就产生OnCommEvent事件,我们常在这个事件中接收信息,并对接收到的信息进行处理,为0时表示不产生OnCommEvent事件
在窗体运行时打开串口通信,并在串口响应事件中接收命令,定时器中不断的发送命令。
void__fastcallTForm1:
:
Timer1Timer(TObject*Sender)
{
MSComm1->Output=OleVariant(AnsiString(Edit2->Text));//发送设定温度
}
void__fastcallTForm1:
:
MSComm1Comm(TObject*Sender)
{
if(MSComm1->CommEvent==2)
{
dy=MSComm1->Input;
t30pv=dy*20*5/32000;
Edit1->Text=FloatToStrF(t30pv,0,4,4);//测量值显示,取4位有效数
for(inti=0;i<479;i++)
{
t30trend[i]=t30trend[i+1];//刷新实时数据
}
t30trend[479]=t30pv;//最新数据
}
4.2.2PLC通信的设计。
PLC中数据接收指令RCV和数据发送指令XTM。
(1)利用字符终端控制接收数据。
每接收完成1个字符,就产生一个中断事件25,特殊继电器SMB2作为通信接收缓冲区。
接收到的字符存放在特殊继电器SMB2中,以便程序访问。
奇偶校验状态存放在特殊继电器SMB3中。
(2)利用接收结束中断控制接收数据。
当指定字符接收结束后,产生中断事件24.如果有一个中断服务程序连接到接收结束中断事件上,就可以实现相应的操作。
4.2.3PID参数的设计。
PID参数的设计模块写到了PLC里面,调用了编程软件自带的PID指令向导模块,得到了如下图4.2的界面。
图4.2PID控制后的界面
根据图4.2的界面可以看出,PLC编程自带的PID指令向导模块得到的误差相对较大。
如果替换成在CB中用一个子程序编写PID控制指令,得到的效果会更好。
5.系统调试
(1)测量温度的显示时,趋势图能准确的显示采集到的温度值,而棒图却无任
何显示。
经检查发现是因为标度转换时转换后的值太小,棒图无法正常显示。
(2)PC与PLC通信时,总是无法显示采集值。
采用分步检查法发现PLC正
常接收和发送了数据,而是CB面板中MSComm控件中事件陷阱的值设为0,改为1后棒图、趋势图及编辑框中能正常显示测量值。
并用万用表检测温度控制器输出端的电压值,其检测到的电压值与测量温度编辑框中的温度值成10倍关系。
(3)趋势图中测量温度波动较大,据图像中观察,大部分为干扰信号。
用一根
导线将控制电压负端共地,将能消除干扰,得到比较平稳的曲线。
6.结论
本次设计性实验,通过对趋势图和棒图画线的设计、对PLC与PC通信的设
计、对PID参数的设计,实现了以下功能:
(1)温度实时变化趋势曲线的显示
(2)PID参数的调节控制
(3)设定温度的修改
(4)报警上下线的修改
在西门子S7-200系列PLC与C++Builder的基础上,我成功的设计出了温度控制系统,整个系统操作简单,控制方便,大大提高了系统的自动化程度和实用性。
该温度控制系统也有一些有不足的地方需要改进,编写PLC程序时我用了编程软件自带的PID指令向导模块,这样虽然方便,但是使得控制系统超调量和调节时间都稍微偏大,若不直接调用该模块,把PID控制程序写到CB程序里,这样得到的效果会更好。
7.参考文献
[1]张扬等.S7-200PLC原理与应用系统设计.北京:
机械工业出版社,2007
[2]廖常初.S7-300/400PLC应用教程.机械工业出版社.2009年
[3]胡文金等.计算机测控系统.重庆:
重庆大学出版社,2003.6[4]陈建明.电器控制与PLC应用.北京:
电子工业出版社,2006[5]戴仙金.西门子S7-200系列PLC应用与开发.北京:
中国水利水电出版社,2007