摘 要:介绍了一种基于单片机系统的起重机“黑匣子”设计方法。详细阐述了“黑匣子”软硬件设计方法及其基于VB6.0的上位机通讯软件的设计方法,并解决了软件设计中容易遇到的问题。
关键字:黑匣子,力矩限制器,串行通讯,上位机
引言
“黑匣子”是飞机专用的电子记录设备之一,即航空飞行记录器。它能够把飞行相关技术数据和状态信息等记录下来,必要时取出来,供实验、事故分析用。如今,“黑匣子”已经成功“着陆”,被更多的民用交通工具使用,比如汽车黑匣子、机车黑匣子、船舶黑匣子等。“黑匣子”技术在起重机上也大有作为。自动记录式力矩限制器能够自动记录起重机非正常状态和某些参数,在功能和结构上,都与传统的“黑匣子”相似,亦可称为起重机“黑匣子”,主要功能有:
(1)分析故障:起重机调试和维护中,可以利用其记录的故障数据,帮助分析调试时的状态和维修重点。
(2)超载记录:自动记录超载相应信息,便于车主或主管部门翻查分析。
(3)状态监视:“黑匣子”与安全警告装置联系紧密,发生故障或超载的时候,向操作人员报警。
(4)修改参数:将起重机一些参数存储到“黑匣子”里,通过通讯手段就可以方便的进行修改,使得力限器能够适应不同的起重机的要求。
1.硬件设计
起重机“黑匣子”除具有传统的事后事故分析功能外,还能在发生故障和超载的时候,利用液晶字段显示、指示灯和蜂鸣器等一些声光手段提醒操作人员采取相应的措施。此外还采用了一系列防潮、防水、防腐蚀、抗干扰、抗撞击的技术,比如采用铁质外壳来屏蔽系统,使用防水隔潮橡胶圈等。
1.1 芯片的选择
片外存储芯片选用AT28C64B,它具有8K寻址空间,软硬件数据保护措施,写入的同时自动擦除,写入周期短(10ms),掉电数据不丢失,断电后数据保存10年,功耗低,而且它不需要其他部件、能够像普通的静态RAM那样进行读写操作。时钟芯片选用DS1302串行实时时钟,它可对秒、分、时、日、周、月以及带闰年补偿的年进行计数,功耗低。串行通讯芯片选用MAXIM公司的MAX232CPA,其功耗低,波特率高,使用普遍,与PC机通讯很方便。单片机采用WINBOD公司的W78E58,52系列单片机,32K片内EPROM,256字节片内RAM,64K片外寻址空间,1个全双工串口。
1.2 工作原理
系统框图如图一所示。单片机将采集到的传感器信号代入计算程序进行分析处理,根据键盘扫描信号所决定的显示对象,将处理后要显示的数据传输过去。如果在工作中出现故障或超载,单片机会将当时的时间、相关起重数据和状态等信息存放到AT28C64B的固定地址中,完成“黑匣子”的数据采集工作。需要向上位机(如笔记本电脑)传输故障区数据、超载数据以及更改起重机某些参数的时候,需要从AT28C64B中读取出相应的数据,利用MAX232CPA按字节发送到上位机上,完成数据通讯工作。这些参数变量要代入力矩计算公式进行计算的,它们的改变将直接影响力限器的计算结果。力矩计算公式具有一定的代表性和适用性,实际上改变参数的值意味着满足不同起重机对力限器的要求。 (图片) 1.3 AT28C64的存储方法
“黑匣子”记录的数据存储到EEPROM需要统筹规划,不仅考虑寻址方便,而且尽量压缩空间的使用便于今后扩展,这三种记录的数据按类型分片管理。
起重机参数变量分成两种:单字节数据,如工况,调零调满值等;双字节数据,如基本臂臂长,二节臂臂长等。故障分为10种,分别放在10个故障区,每区占用250个字节。超载区最多存放100条超载记录,每条包括超载发生的相关时间信息、峰值、当时的工况、幅度等,根据这些参数就能知道超载发生时起重机的状况,这是起重机“黑匣子”的主要功能。涉及到记录浮点数的,一律将其转变为整数进行存储。上位机接收后,再把它们转换回相应的浮点数进行处理和显示。这样不仅节省了空间,而且便于上位机处理。
2.软件设计
2.1串行通讯原理简介
串行通讯分为同步和异步两种模式,异步使用较多。串行通讯双方只有遵守一定的通信规则才能正常工作,该规则就是通信端口的初始化,包括设置数据传输速度、发送单位、起始位或停止位以及校验码。
2.2 串行通讯的步骤
单片机上电自检后,液晶屏上会出现“————”,表示当前处于串行通讯状态。如果此时接收到握手信号,系统将处于串行通讯状态并向上位机发送反馈信号,否则进入正常工作状态。进入串行通讯状态,单片机会按上位机发出的指令与其进行通讯。通讯流程图见图二所示。指令分为两大类:松手指令和正常通讯指令。松手指令双方可以相互约定不易混淆的代码充当。正常通讯指令由三部分组成的:指令代码(读/写)、操作对象地址、操作对象数量范围,以此指导单片机寻址、操作。指令设定八位一个字节,作为最小的通讯单位,单片机一次最多发送256个字节(单片机本身所限)。指令代码的设置应具有一定的安全性,稳定性,可靠性。(图片) 3.上位机软件
3.1 VB6.0串行通讯控件及其界面简介
起重机“黑匣子”如实地将起重机非正常状态记录下来以后,还需要在上位机上通过专用软件再现出来才算完成完整的功能。系统利用VB6.0有效地完成我们完成串行通讯的任务。VB6.0自带的MSComm控件提供了事件响应功能开发串行通讯工程,另外还可以利用定时器或是DO…Loop,以轮询来达到自动化的目的。为了节省系统资源,上位机对串行数据的读取采用事件触发方式。接收缓冲区接收到数据便会触发OnComm事件,根据CommEvent属性值的当时值,建立一个事件驱动的通讯程序进行处理。
上位机通讯软件界面如图三所示。该界面能够完成多种功能。开始运行时,软件按选择的端口不断发出握手信号,直到接收到单片机正确的反馈信号。这时便处于连通状态,可进行多种操作:选择故障区并读取和保存、读取超载区并保存、选择读或写起重机参数变量、松手退出等。写入参数时,会有提示框弹出防止误操作,输入数据超过指定范围,软件拒绝写入。(图片) 3.2 上位机软件内部处理
上位机从单片机得到的是二进制代码,但是显示的对象有单、双字节之分,这就要将其转变成相应的10进制数据。单字节数据转变为10进制数据相对简单,调用VB6.0相应函数即可。双字节数据需要两个字节连在一起转换,涉及到数据正负的问题:转换后的数据最高位是1的话,VB6.0认为是符号位,自动将其变成负数。遇到这种情况,只要将最高位的1以0代替,将得出的10进制数加上32768就能解决。时间数据按单字节数据的转换、显示方法处理。
5.结论
随着“黑匣子”技术的民用化的普及,起重机安装“黑匣子”已是大势所趋。文章基于单片机系统开发出一种适应范围广泛的起重机“黑匣子”,并已完成现场调试。实践证明,起重机“黑匣子”具有反应灵敏、操作方便、性能稳定、成本低廉,深受客户好评。
参考文献:
[1] 范逸之,陈立元;Visual Basic 与RS-232串行通讯控制;清华大学出版社;2002
[2] 张培仁;基于C语言编程MCS-51单片机原理与应用;清华大学出版社;2003
[3] 刘欣;大屏幕液晶显示在力矩限制器中的应用;现代电子技术;2004.10
作者简介:刘欣,男,生于1956年,大连理工大学副教授,主要从事自动控制及智能仪表方面的研究。
1/24/2006
|