监控组态软件课程设计钢厂加热炉监控设计毕业毕业设计.docx
《监控组态软件课程设计钢厂加热炉监控设计毕业毕业设计.docx》由会员分享,可在线阅读,更多相关《监控组态软件课程设计钢厂加热炉监控设计毕业毕业设计.docx(19页珍藏版)》请在冰点文库上搜索。
监控组态软件课程设计钢厂加热炉监控设计毕业毕业设计
课程设计说明书
(20--/20--学年第-学期)
课程名称:
监控组态软件课程设计
题目:
钢厂加热炉监控设计
专业班级:
学生:
学号:
指导教师:
设计周数:
设计成绩:
年月日
1.课程设计目的…………………………………………………………………………3
2.课程设计正文…………………………………………………………………………3
2.1设计思路…………………………………………………………………………3
2.2上位机监控界面与其说明………………………………………………………4
2.3数据库组态………………………………………………………………………6
2.4上位机程序与其说明……………………………………………………………7
2.4.1主程序………………………………………………………………………7
2.4.2热电厂煤运输系统子程序………………………………………………11
2.5下位机PLC程序与其说明……………………………………………………11
2.6上位机与下位机通讯设置………………………………………………………13
3.总结……………………………………………………………………………………13
4.课程设计心得体会……………………………………………………………………13
5.参考文献………………………………………………………………………………14
6.指导教师评语…………………………………………………………………………14
1.课程设计目的
课程设计历来是检验学生综合素质的一种很好的形式,尤其对于工科学生的操作类课程,更是一种切身的锻炼。
课程设计是一种小型的产品开发任务,通过对任务书的技术要求进行分析,确定整体的构思,软件硬件的设计,程序的编写与调试,再配合小组成员之间的协调、互助与合作,起到共赢的作用。
课程设计也是一种实验,但又不同于实验。
普通的实验课只是根据老师的要求按部就班地进行固有的程序化的操作,目的是为了验证课堂上的理论事实;而课程设计则包含了实验的一些容,但远比实验要复杂得多。
这时老师不再像“喂饭”似的教授,只起到启发作用,而很多具体的步骤则由同学们自己去想办法完成。
正因为课程设计具有这样的特点,学生才会主动开动脑筋,结合所学专业知识,通过各种渠道获取课题所需的线索。
无形之中,学生们的探索能力,学以致用的能力得到较好的发挥,而且往往这只通过这种亲自动手探索的过程才能真正掌握本课程的实质涵。
有句诗说得好,叫做“纸上得来终觉浅,绝知此事要躬行”。
由此可见,课程设计无论对于教师考核还是学生本身,都有很大的必要性!
2.课程设计正文
2.1设计思路
根据设计任务书技术要求,我们首先了解了钢厂加热炉的工作原理、控制方法和控制要求。
总体设计分为以下几个方面:
1上位机主界面与程序:
上位机是人机交互最直接的部分,因而做得最有人性化,有相应按钮,可自动/手动切换运行,并且可以实时显示系统运行状态,操作简单,使用方便。
同时主界面还有相应参数的显示与设置。
2上位机实时趋势、历史趋势、报警记录、历史报表界面:
可进行实时数据显示与查询。
3上位机热电厂输煤系统监控界面:
主要用来监视输煤的动态和进行控制。
4下位机PLC,主要是程序设计。
鉴于上位机编程实现了几乎所有功能,因而下位机程序相对简洁很多。
5上位机与下位机的接口设置,这是能否最终实现正常通讯的关键。
2.2上位机监控界面与其说明
图1
上图为上位机主界面的设计,如图1所示。
主体图包括了左部的进钢控制,中部的炉体控制,右部的出钢控制。
按顺序对钢坯进行入炉→炉加热→出炉的操作。
进钢控制部分分为进钢电机两台,一台推钢电机;炉体控制部分除炉体外型以外,部若干个钢坯循环右移;出钢控制部分由两台电机驱动,带动传送带移出加热完毕的钢坯。
对钢坯加热的燃气与空气则分别由两台电泵控制,两者在系统运行时即启动。
另外还增加了空气流量、燃气流量、温度的显示与控制,可以实时监测运行参数,并且进行人为调整。
剩余的若干按钮分别实现相应功能,不再赘述。
图2
上图为实时趋势曲线与历史趋势曲线界面,分别对应空气流量、燃气流量、温度。
图3
上图为报警记录界面,对空气流量、燃气流量、温度进行监视与报警。
图4
上图为历史报表,可以表格形式记录空气流量、燃气流量、温度的历史参数,并可实现打印功能。
图5
上图为输煤监控系统界面,“运煤控制”按钮和电机分别与下位机相连,通过程序实现动态监控功能。
2.3数据库组态
模拟I/O点组态如下图6所示:
图6
数字I/O点组态如下图7所示:
图7
2.4上位机程序与其说明
2.4.1主程序
(阅读以下代码前应注意:
带“/*……*/”的程序段为不需下位机而由上位机单独运行的代码,鉴于实际应下位机PLC,所以把它们当作解释语句而不执行。
)
进入程序
manual.PV=0;autorun.PV=0;jg.PV=0;cg.PV=0;tg.PV=0;rq.PV=0;kq.PV=0;gp0=0;gp1=0;gp2=0;gp3=0;gp4=0;gp5=0;gp6=0;gp7=0;gp8=0;gp9=0;gp10=0;/*mtg.PV=0;mcg.PV=0;mjg.PV=0;*/cnt=0;
flag=0;//出钢允许标志
flag0=0;//推钢棒允许标志
/*数字量输入:
进钢开关jg,出钢开关cg,推钢开关tg,空气泵开关kq,燃气泵开关rq,关闭close,手动manual,自动autorun,
数字量输出:
进钢电机mjg,出钢电机mcg,推钢电机mtg,空气泵mkq,燃气泵mrq,
模拟量输入:
空气流量设置skq,燃气流量设置srq,温度设置swd,
模拟量输出:
空气流量qkq,燃气流量qrq,温度wd,
中间变量:
推钢棒mtgb,钢坯gp0,gp1,gp2,gp3,gp4,gp5,gp6,gp7,gp8,gp9,gp10*/
程序运行周期执行
IFautorun.PV==1THEN//自动运行开始
/*mjg.PV=1;mrq.PV=1;mkq.PV=1;*/jg.PV=1;rq.PV=1;kq.PV=1;
IFmjg.PV==1THEN//进钢
gp0=gp0+18;
IFgp0>=100THEN
cnt=cnt+1;
IFt==10THEN
cnt=1;
ENDIF
/*mjg.PV=0;*/jg.PV=0;
gp0=0;
ENDIF
ENDIF
SWITCH(cnt)//第cnt个钢棒右移
CASE1:
flag1=1;
CASE2:
flag2=1;
CASE3:
flag3=1;
CASE4:
flag4=1;
CASE5:
flag5=1;
CASE6:
flag6=1;
CASE7:
flag7=1;
CASE8:
flag8=1;
CASE9:
flag9=1;
ENDSWITCH
IFflag1==1THEN//第1个钢棒右移
gp1=gp1+2;
IFgp1>=100THEN
flag1=0;gp1=0;
ENDIF
ENDIF
IFflag2==1THEN//第2个钢棒右移
gp2=gp2+2;
IFgp2>=100THEN
flag2=0;gp2=0;
ENDIF
ENDIF
IFflag3==1THEN//第3个钢棒右移
gp3=gp3+2;
IFgp3>=100THEN
flag3=0;gp3=0;
ENDIF
ENDIF
IFflag4==1THEN//第4个钢棒右移
gp4=gp4+2;
IFgp4>=100THEN
flag4=0;gp4=0;
ENDIF
ENDIF
IFflag5==1THEN//第5个钢棒右移
gp5=gp5+2;
IFgp5>=100THEN
flag5=0;gp5=0;
ENDIF
ENDIF
IFflag6==1THEN//第6个钢棒右移
gp6=gp6+2;
IFgp6>=100THEN
flag6=0;gp6=0;
ENDIF
ENDIF
IFflag7==1THEN//第7个钢棒右移
gp7=gp7+2;
IFgp7>=100THEN
flag7=0;gp7=0;
ENDIF
ENDIF
IFflag8==1THEN//第8个钢棒右移
gp8=gp8+2;
IFgp8>=100THEN
flag8=0;gp8=0;
ENDIF
ENDIF
IFflag9==1THEN//第9个钢棒右移
gp9=gp9+2;
IFgp9>=100THEN
flag9=0;gp9=0;
ENDIF
ENDIF
IFgp1>=98THEN//出钢
flag=1;//出钢允许标志
ENDIF
IFflag==1THEN
/*mcg.PV=1;*/cg.PV=1;gp10=gp10+18;
IFgp10>=100THEN
gp10=0;/*mcg.PV=0;*/cg.PV=0;
ENDIF
ENDIF
IF(gp1==2||gp2==2||gp3==2||gp4==2||gp5==2||gp6==2||gp7==2||gp8==2||gp9==2)
THEN
flag0=1;//推钢棒允许标志
ENDIF
IFflag0==1THEN//第cnt次推钢棒动作
/*mtg.PV=1;*/tg.PV=1;mtgb=mtgb+25;
IFmtgb==100THEN
/*mtg.PV=0;*/tg.PV=0;mtgb=0;flag0=0;
ENDIF
ENDIF
ELSE
IFmanual==0THEN
/*mjg.PV=0;mrq.PV=0;mkq.PV=0;*/jg.PV=0;rq.PV=0;kq.PV=0;
ENDIF
ENDIF//自动运行结束
IFmanual.PV==1THEN//手动运行开始
IFjg.PV==1THEN//进钢
/*mjg.PV=1;*/gp0=gp0+18;
IFgp0>100THEN
gp0=100;
ENDIF
ELSE
/*mjg.PV=0;*/
ENDIF
IFtg.PV==1THEN//推钢
/*mtg.PV=1;*/gp0.PV=0;gp1=gp1+5;mtgb=mtgb+50;//推钢棒辅助动画动作
IFgp1==100THEN
gp1=100;
ENDIF
IFmtgb==100THEN
mtgb=100;
ENDIF
ELSE
/*mtg.PV=0;*/mtgb=0;
ENDIF
IFcg.PV==1THEN//出钢
/*mcg.PV=1;*/gp1=0;gp10=gp10+18;
IFgp10>100;THEN
gp10=100;
ENDIF
ELSE
/*mcg.PV=0;*/gp10=0;
ENDIF
/*IFrq.PV==1THEN
mrq.PV=1;//燃气泵开
ELSE
mrq.PV=0;
ENDIF
IFkq.PV==1THEN
mkq.PV=1;//空气泵开
ELSE
mkq.PV=0;
ENDIF*/
ENDIF//手动运行结束
IF(manual.PV==1||autorun.PV==1)THEN
qkq.PV=Rand(5)-Rand(5)+skq.PV;//空气流量显示
ELSE
qkq.PV=0;
ENDIF
IF(manual.PV==1||autorun.PV==1)THEN
qrq.PV=Rand(5)-Rand(5)+srq.PV;//燃气流量显示
ELSE
qrq.PV=0;
ENDIF
IF(manual.PV==1||autorun.PV==1)THEN
wd.PV=Rand(5)-Rand(5)+swd.PV;//温度显示
ELSE
wd.PV=0;
ENDIF/*由于实验现场条件并无真正传感器,所以流量与温度模拟量由随即函数+设置量代替*/
2.4.2 热电厂煤运输系统子程序
进入窗口
ym.PV=0;ymflag.PV=0;t1=1;/*运煤控制按钮ym,运煤电机ymflag,计数标志cnt1,煤块m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11*/
程序运行周期执行
IFym.PV==1&&ymflag.PV==1THEN
cnt1=cnt1+1;//cnt1初值为1;
IFt1==3THEN
cnt1=1;
ENDIF
SWITCH(cnt1)
CASE1:
m1=1;m2=0;m3=1;m4=0;m5=1;m6=0;m7=1;m8=0;m9=1;m10=0;m11=1;//煤块间隔显示与隐藏
CASE2:
m1=0;m2=1;m3=0;m4=1;m5=0;m6=1;m7=0;m8=1;m9=0;m10=1;m11=0;//煤块间隔隐藏与显示
ENDSWITCH
ENDIF
2.5下位机PLC程序与其说明
2.6上位机与下位机通讯设置
通讯串中设置的正确与否直接关系到上位机与下位机数据传输的成败,因此这一个步骤很关键。
以下列出通讯设置的步骤:
1在力控软件界面左侧导航栏点击实时数据库的I/O设备驱动;
2选择PLC→SIEMENS→S7-200(PPI);
3输入设备名称(例如PLC1),设备地址为2,其它默认,点“下一步”;
4选择串口“COM1”,点击“端口设置”;
5设置波特率为9600,数据位为8,奇偶校验为偶校验,停止位为1;
3.总结
本次课程设计产品硬件部分主要由S7-200系列PLC组成,处理器型号为CPU226,包含了程序所需的输入输出以与存变量等所有类型变量。
软件部分由监控组态软件力控5.0和PLC程序开发软件STEP7MicroWIN构成,分别实现了上位机的操作界面,程序代码和下位机的梯形图程序。
上、下位机通过主机串口COM1进行正确的设置后实现成功通讯。
整个系统可以实现手动与自动切换,可以用上位机监控下位机,也可以下位机独立运行。
监控界面的同步动画,功能按钮,各类曲线报表,窗口切换等功能使操作更合理化,达到了系统操作简单,使用方便的用户要求。
4.课程设计心得体会
俗话说“站着说话不腰疼”,通过这次为期两周的监控组态课程设计确实亲身体会到了。
很多事情看起来简单,或者想当然认为很容易,但实际操作起来并不是那样,会时不时地出现很多意想不到让人烦恼的问题。
比如我们的上位机编程,最初很快把上位机的监控界面和程序设计完了,当时感觉得意洋洋,以为大功告成了。
但是当我们把这个不受下位机联系的“裸程序”带到实验室验证时就傻眼了,整个程序几乎瘫痪,任何按钮一动不动,按下后立即复原,好像故意气我们似的。
当时很是拿它没办法,后来问了问同学,请教了一下老师,得到了一些关键答案:
“下位机的输出可以传给上位机,但是不可以再由上位机去给下位机的输出置位或复位,否则造成逻辑混乱”,“程序一旦出现不可思议的现象多半是因为编程有矛盾,不要去怪电脑是否出了问题”,“数据库变量定义和I/O接口一定要正确,存变量可以用来输入或输出”,“数字I/O点不好用,最好用模拟I/O点”,“变量一旦定义成为数据库变量并且与下位机相连时就不会像以前那样独立运行了”。
等等。
这些都是后来自己在不断地摸索和与同学探讨中或者从老师那里问来的宝贵解决办法。
在整个编程中我们最初克服了通讯接口协议问题,当时我们无论怎么调试程序似乎都不能与下位机正常联络,经过分步排查,花了好长时间,最终发现是奇偶校验出了问题。
还有,通过观察运行结果,不断调试程序,也发现了原来编程的很多错误或者不足。
这些问题也都是在一次又一次地修改程序中完善了。
编程看似很简单,但是一次性保证没有逻辑错误还是很难的。
调试程序是一件痛苦并快乐的事,有时因为一个小小的毛病花去几个小时都没有结果,有时想出聪明的办法,用标志信息验证程序某一处的执行情况,也可以作为一种辅助手段,有助于正确找到问题的根结。
当我们突然得出正确答案时互相拍手叫好,激动得无法形容,那时真是欣慰呀!
这时如果能跟同学一起合作就会稍微容易得出正确办法。
一个人的思维有时会僵固,试着换一个角度去解决问题才是可取的。
认识一个事物都是有一个过程的。
起初我们压根就不知道钢厂加热炉长得什么样,更不了解它的工作原理,网络为我们提供了很大便利,使我们对它有了初步认识。
其次根据任务书规划设计方案,手工画原理图,在组态界面上想象它的动态效果图,经过更改和简化,最终由开始的空窗口变成了五个窗口、40多个数据点(还不包括中间变量在)构成的复杂的大系统。
如果当初就知道我们的系统会这么庞大,很难想象会有人有勇气做下去。
这就告诉我们一个道理,复杂的问题可以拆成若干个简单的问题来处理,大问题更是可以拆成若干个小问题来处理。
有困难不要怕,只要有信心去做就会有满意的甚至意想不到的奇迹!
课程设计是一个很好的实践,很锻炼人,我想这种能力也是以后步入岗位的重要能力。
没有付诸实践的理论是死的,而人是活的,人的大脑和双手是无敌的,人可以改变一切,只要想得到就能做得到。
工作是需要经验的,而经验从哪里来,我觉得这类的实践课就是最好的解释。
5.参考文献
[1]曾庆波,周卫宏,华.监控组态软件与其应用技术[M].:
工业大学,2005,2:
109-140.
[2]严盈富,罗海平,吴海勤.监控组态软件与PLC入门[M].:
人民邮电,2006,11:
45-65.
6.指导教师评语
课程设计
评语
课程设计
成绩
指导教师
(签字)
年月日