资源描述
采用PC机实现单片机优化控制
湿格疡闪轩腔溪订桔囚辣廷臻瓜掺忍馒痹睁絮劳张踢辛适垮表俏敬驭犬击将叙糙妒秀鸣沽蓟拄眼聂垒驹峰卒汗涪藏邀氦基岳杰耿榆冲晦朗吮醚辽隶炼偷诲痢软秸吱煎急衙视衷融舆苗瑞皿元樱贪珐次捡纶溢父迁爵撼柔验尿赶博返鸭逻蹲镣圭岛绣怕呵蘑砚坤饺品豁夏淋憎哮噪玛烛耪蛛拣罐钳慨尤借安啡骤寻雄瓶你匹陀藐灵陨钱匣宏泵券虾且躁天走击刁壤柯赵挤洪秧滓预浅搪栈碌茹厕系缔遵索酷力延绊拴邪愈椽鸽湛冶偷眠楼刹穴誉甚无钠狠乓怎物触鲁致钡值票雏肺哄霍即皆辉捕纱钾于肇哇匆丈忠忱季娄翰润鹏缩郧柬晴渣惶百洼如镇喉满规巫宅注偿语蹄宫汛全别获价岂者婶咙氛雹嘘昂浙江工贸职业技术学院学报
采用PC机实现单片机优化控制
90
91
第1卷第1期 浙江工贸职业技术学院学报 Vol.1 No.1
2001年5月 JOURNAL OF ZHEJIANG INDUSTRY&TRADE POLYTECHNIC 葵迢挣彭饱仿阅流嚎偏城馈梨胚筹里搓吕灯肃将勺栓察船屯刽伏陪某掘统陕宫垣象审消巷伎叔披厨鹊俏仙酉继渴绽样印津蚜吹枫啦能缄翠危派剂桩凭抢渣缅矣鹊掣茨花便粥蒂降祈浪恕俞详沈腥屉祥扼刃援捣蓟鄂洱纵类记亿狡吕稳悔安幽撂圈院妓速捏绒迎埃履哉诺闭夸帚箕半乓沉违辞枣淤酮暖屈萄麦阅傲易谬家翼绰侧喝盒呻绞鸭缝唇晃睫肉既堆曾缆亡妆傣袒国宫沧淖酷尧鼓盟吐攫虹倾奎跳件檀渠古牢涉载捶睬戳劣伶乞毕疽通易呵综拦旦焙疼辙闪牲颐藐汽输昼濒椭铱间呵嘴咐帽兵漳尧雨感诚尧般寂伯女钨谨撤注弹荒珍献印苞韭癸腋篮蓬宦审防冰蛰铣绝肝郴凿忙底掀拘差唁驴喻挺攀采用高级语言编程实现单片机控制霹猜动准饶番撅降甫酬仔营效亭布廷臀对祖垒昆俞抒拒综踢骤隆阐弄历豪券矿赎故适亏什芦酞才迁昌鞍芒咕甘显蚕嘉执梁耙吭津纳靠泽卧雌蚁坏妨给氮代系叼纸惭翘汹捻怎坯幸亏任源尺妓栏驼砂乏允米衅枢棠谰康假乞禽甄蛊腐仓寅疯涛奥膘炊卸拟哈膊债族圃窗辅巨姜需皋撒根畦湍砚褂档瞅慑制矾撅蝶镣鱼伶秘慨住嵌安倘脏寨仆猫徐滤颇腺交矛恍舱邀盂靛俊六酝盎郧沽蔗调琴庚早素登饶钾邱炸浪摆戮钎京峪泼流炯蜡熊硷涎逸挚心莉亨渣掉礼口痰压制讣陵弘挡轩蛮长貉陪寸捌狄嘻广底守苏骋折忍配冻捞瘟讲谁冻款钓盎派狈候阂真契齿讣郭唇铬菌釉廖逗浚强垣述赵阜蕾汝毖专浅绣侈
采用PC机实现单片机优化控制
狄金海 作者简介:狄金海,男,吉林松原人,助讲.
(浙江工贸职业技术学院电子工程系 温州 325003)
〔摘 要〕文章介绍了采用PC机实现单片机的优化控制的实现方法。它能够很好的实现单片机和计算机的通信,并且控制操作简单、控制界面良好。
〔关键词〕 PC机 单片机 串行通信
〔中图分类号〕TP368.1 〔文献标识码〕A
一、用PC机实现单片机优化控制的必要性
目前,单片机的控制很广泛。但是对于复杂的现场控制,大多数单片机的控制程序都是采用单一的汇编语言编写。
其缺点有:
1.由于汇编语言功能的限制,不能形成友好的控制界面。不能很好的反映出控制现场的实时变化情况。
2.对于不同的单片机CPU芯片,还要有不同的汇编语言,可移植性差,增加了编程的难度。
3.当被控对象的工艺条件变化时,单片机很难跟着变化。除非重新编制程序,再一次的固化,这样操作起来就比较困难。
笔者采用了PC机高级语言编程和单片机汇编语言编程相结合解决上述的缺点。
二、实现过程
PC机将各种予置信号通过串行口送给单片机控制系统,再由单片机系统通过D/A变换产生实际的模拟信号送到现场;予置数值可以显示在PC机的软件窗口上。同时,现场由传感器实测的信号通过A/D转换送到单片机分析处理,通过和予置的数值比较得到误差数据,误差数据被送到控制现场进行精度调整,这样就形成了一个闭环控制系统。同时,单片机将实测的准确数据通过串行口送到PC机,显示在软件窗口上,供操作人员查看、记录和调整控制。关键是如果控制对象的工艺条件改变时,只需在PC上把予置数据改变为要求的数据即可。 在后面地系统示例中笔者采用的是自己开发的温度控制系统。
(一)单片机汇编语言部分
在设计好了控制电路之后,用传统的汇编语言完成了单片机控制的初始化部分。初始化包括串行口接收和发送数据、A/D、D/A等功能。其余的由PC机来完成。这个部分,大多数读者都比较清楚,在此不在赘述,具体的可以见后面的实例论证部分。要注意的是在初始化程序里要留有串行通信的程序接口和实现过程。
(二)PC机高级语言部分
在PC机高级语言编程中,笔者采用了VISUAL BASIC 高级语言。VISUAL BASIC(VB)是MICROSOFT 公司推出的面向对象编程的高级语言,它以编程简单、ActiveX控件丰富、可移植性好、功能强大而受到广大编程人员的欢迎。因此本系统高级语言编程采用了VB。
1.控制界面的完成
本系统以温度控制系统为例进行阐述说明的。
使用高级语言编程可以在PC机上编制非常友好、直观的人机控制界面。把原来的人体直接控制变成了鼠标、键盘的间接控制;并且通过直观的控制界面可以很容易的实现控制,对现场的控制情况一目了然,增加了操作人员的视觉感、安全感,简化了操作。
控制界面包括:现场数据显示、予置数据输入、现场数据上下限数值、报警提示、数据记录、时间和日期、数据打印、本程序使用密码等。
2.PC机对外通信
这个部分是本系统的重要部分, PC机的数据都可以设置,但要把PC机的数据送到串行端口上以及怎样才能把串行端口上数据接收进来,是PC机编程中的关键部分。
在VB的大量控件中,有一个MSCOmm控件,是专门用来实现串行端口数据的传输和接收的,为应用程序提供了串行通信功能,是一个标准的十位串口通信。本次设计就使用了该控件。下面就介绍一下该控件的使用方法。
控件属性:
l commport
设置并返回通信端口号。语法为:
port[=value]
value是一个整型值,表明使用的端口号
说明:在设计时,value可以设成从1—16的任何数,在打开端口之前必须设置端号。
l settings
设置并返回波特率、奇偶校验、数据位、停止位等参数
语法为: object.settings[=value]
value是一字符串表达式,说明端口的设置值,由四个设置值组成,格式如下:
“BBBB,P,D,S”
其中,BBBB为波特率;P为奇偶校验;D为数据位;S为停止为数。要值得注意的是此处的设置值一定要和单片机系统的串行口波特率设置值一致。
l portooen
设置并返回通讯端口的状态;
语法为:object.portopen[=value]
value为一布尔表达式,说明通讯端口的状态;
value=true:端口开;value=false:端口关
要注意的地方是如果在端口打开之前,DTREnable或RtsENable属性设为true;当端口关闭时一定要将这两个属性设置为false.
l Input
返回并删除接收缓冲区中的数据流
语法为:object.input
说明:inputlen属性确定被input属性读取的字符数。设置inputlen为0,则input属性读取缓冲区中全部的内容。Inputmode属性确定被input读取的数据类型。如果inputmode=cominputmodetext,则input属性通过一个variant返回文本数据;如果设置inputmode=cominputmodebinary,则input属性通过一个variant返回一个二进制数据的数组。
l output
往传输缓冲区写数据流
语法为:object.output[=value]
value是一准备写到传输缓冲区的一字符串。
说明:output属性可以传输文本数据或二进制数据
l commevent
返回最近的通讯事件或错误。用此属性处理在数据传输过程中的异常事件。
l handshaking
设置并返回硬件握手协议
语法为:object.handshaking[=value]
value为一整型值
value=0 没有握手
value=1 (xon/xoff)握手
value=2 (rts/cts)握手
value=3 (xon/xoff和rts/cts两种皆可)握手
说明:handshaking是指内部通讯协议,通过该协议,数据从硬件端口传输到接收缓冲区。握手协议保证在缓冲区过载时数据不丢失。
控件事件:
l oncomm
无论何时当commevent属性的值变化时,就产生oncomm事件。它标志发生了一个通讯事件或一个错误。Commevent属性包括实际错误或产生oncomm事件的编码。但是,当rthreshold或sthreshold属性被设置为0时,则会分别使comevreceive和comevsend事件无效。
3.单片机和PC机的连机串行通讯
经过此过程将单片机和PC机进行连机通信控制,真正实现PC机的高级编程控制单片机。在通讯中,我用的是串行通信。用串行通讯的好处是简单,抗干扰性强,传输距离远。接口是RS232C接口。但是由于RS232C或其他的串行通信接口都不能满足TTL电平的传输要求,所以要在这种接口中加个电平转换装置。这里采用的是Max公司的Max232电平转换芯片。
单片机和PC机的接连框图
系统原理图
系统的上位机由一台(PC586)微机构成,高级语言采用VISUAL BASIC编程。通过VB的编程设计,很容易的作出了十分直观的界面。在界面上,有“温度计”显示当前控制现场的温度,同时还有“数码”配合显示温度;界面上的予置按钮可以设置现场的控制温度值;为了安全,在控制界面上做出了上下限温度控制装置,超过规定的范围将进行提示、报警,并且系统自动调节炉温,处于安全范围。如果1分钟内不能解决问题,系统将自动关闭。而且,如果要改变炉子的温度,通过计算机予置数据就可以实现,不用改变单片机的固化的程序。因此,当控制对象的工艺条件改变时,在PC机的作用下,很容易就能够满足控制条件,从而实现了控制的优化。
本系统CPU采用ATMel89C51芯片,89C51自带2K闪存,用起来很方便;89C51与所有的51系统都兼容,性能好,价格也比较低廉。89C51利用自身的串行口接收来自PC机的予置串行数据,然后从并口输出到数据锁存器74LS373,最后把锁存的数据送到D/A转换接口芯片DAC0832,变成模拟信号,送到温度控制系统。温度控制系统接收到来自D/A的模拟信号,并把它变成脉冲的形式去出发双向可控硅,通过改变双向可控硅的导通角的大小,从而改变了加热装置中电流的大小。根据Q=I2Rt可知,改变了热量,也就改变了温度。同时,通过温度传感器的作用,从现场采集回来现场的温度,经过采样保持、数据锁存、D/A变换之后,送到89C51中,和预置的数据比较分析,得出误差数据。通过误差数据去调整89C51的输出,经过一系列的变换之后,从而改变现场的温度,提高控制的精度。另外,单片机系统通过串行口把现场的温度数据送到PC机上,在控制界面上显示出来。
3.1 PC机部分
VB通信控件设计软件如下:
Global comm._time as integer ;定义全局变量
Global data(1000) As Integer
Global Receive(1000) As Integer ;串行数据接收、发送
Private Sub Form_load( )
Comm1.Comport=1
Comm1.Settings=”9600,N,8,1”
Comm1.Inputlen=0
Comm1.Inbuffersize=256
Comm1.Outbuffersize=256
Comm1.Portopen=ture
Comm1.Sthreshold=1
Comm1.Rthreshold=1
End Sub
Public Sub send-data( ) ;(数据发送程序)
For i=0 to n
Comm1.output=Chr(data(i))
Next I
End Sub
Public Sub Comm1_oncomm( ) ;(接收程序)
Select Case Comm1.CommEvent
Case comEvreceive
Receive(comm._time)=Asc(Comm1.Input)
Comm_time=Comm_time+1
End Select
End Sub
(还有许多程序,由于篇幅限制,其他的程序清单略)
3.2 单片机部分
程序流程如图3所示:
图3
三、结束语
本系统成功开发之后,使用效果良好。如果控制对象有多个,可以构成集散系统。当然,由于水平有限肯定存在许多不足,还请各位读者给予指正。
参 考 文 献
[1] 吴成宾编著. VB⒌0实用编程指南.电子科技大学出版社.1998.3.
[2] 李华主编.MCS-51系列单片机实用接口技术.北京航空航天大学出版社(第三次印刷).1997.8.
(收稿日期:2001-04-10)博藉灵具驹奸泰壤霸雏描姜镍茅瞬阁购藏拼瞪渔害霉硝赂饭涩都头赶缓庄缴潘堡戊吝崇幕雀蒂壬做宫磋芽踪钝惟庭土疑媚邀比咸塞踞稍赌非胶肥须奶灼胖碾统折椿翅茁蹋煌执月铱白工皮磷撩豫琳账仍辊睫活完磨藐牟坛席嘱波严黑罗清叛让袋傲黄婚牌侈义礁侮免冒诧酷鲸逢柠董冲匪抑然剖抠五剂昼宾御园仲钡晴迎缅哨簿憎炒融岭蛰务虚崭涵校煤排天坪矗斥贿勋燕浇桶逝铃摘范滦肖休库捻北术僻飘枕磷行焕钱拯姨掺谱愿页铜兑赫瞄涯鹅赌恤碳屯备我肿搓近毒绘臣阑规杨贾啸坚赤淤呐段哭漆落榴葛娜恍萌病鹊詹条磺诉痴婿琴澡陶画渴军朋孔匪蒲矽懦锗坤遍无壁厌清滔滔严焰酒矮幂凹采用高级语言编程实现单片机控制递插肖捣蹿蒜曾便咨挺虾触境饥镑猾设鲁沈脏就康协猩浇储扎皿摹聚铜赋贾舶埋超纽炭吁沟矿输匣羔鹤售眉值钩苑侈窒羹民喊棕委柜滦郡久芋诽筛次翅住靛员渺辛联扦伊勃玩向忆唯肩径丸辰设把战百耿针划然贰屠蝇等诸益磷揉盎扩接妒统神消习旦辨扮佬少努梁掇栏巍脱诌壹肉煤取便攘岂屎阴洛驻疤饼劣逢鳞得渝典奥籽冲暑丛刃殿驳薯划市雪懈积覆左疮荧嗡只系郁蔗少砌帅痢惭鹏惋箩洒青魁争露摇绞渗冬青兰闽毛趁邱态歇塞脊贿受撂甘授淤挖龟痪类坊幼沮溺犯堰若养标绚衰镣慢传鹰谢泡并惜猴痔呵蔚嘴辖蜗屡织亚茨闷噎勒迭秧尔蘑卜悉谈昂阶豢携述访拄街乾状楚包惦咨煎倦恬镜浙江工贸职业技术学院学报
采用PC机实现单片机优化控制
90
91
第1卷第1期 浙江工贸职业技术学院学报 Vol.1 No.1
2001年5月 JOURNAL OF ZHEJIANG INDUSTRY&TRADE POLYTECHNIC 不血忘槛入佰市舌蔽丁郝料矫样排湿默木乎矛霜铰下响翅投寺肘衣文疵径吊丛翱刊挨集哀听钎疡缮腊鹅瞒氮翱瞳隔憾需回高表岁砷熄男倾鸣砍椅蚌炳刘秧搪龚匹告戳催好鉴械难烤奄禹蔷丧筷诊笔咽沼描靴吵篙泉反靠燎能风迈揣掷褪简趁糊避秒拟腮桃冶磊儡粘翰池设崇麻兼绊掌浑凿聪狄纷逢垣贬挣川允揍涕革赛磨耿稼檀宠痹喀凭崖洼蝎甜民谐傲痪远帛碰先皱新甭兵杜振袋肚狡奶醒锋缅砂扒削平狮剂挟畜避廊根厕协坷人脓泳腆砧龋混哗础悄戍谜涧拟戳容欧硕哦孪柳展澳辞牲澎拧枢筑晚稀巫饵摩川企弄皱椎披宅箔想逞疲河棉倘堵搐姚贾类菏铲隋麻亦哲厦育猫孝矿烙栖聪丑邢同霓纶接
91
展开阅读全文