基于PC104的电缆检测仪串口通信软件设计与实现精.docx
《基于PC104的电缆检测仪串口通信软件设计与实现精.docx》由会员分享,可在线阅读,更多相关《基于PC104的电缆检测仪串口通信软件设计与实现精.docx(7页珍藏版)》请在冰豆网上搜索。
基于PC104的电缆检测仪串口通信软件设计与实现精
测试与控制·收稿日期:
2010-06-11
作者简介:
冯海星(1972-,工程师。
主要从事飞机修理方面研究;先明乐(1979-
女,讲师。
主要从事无损检测方面研究。
0引言
通过RS232串口实现PC机与外设之间数据传输,作为一种灵活、方便、可靠的通信方式,被广泛应用于各种实时控制系统、测试系统和管理系统
[1]
。
我单位研
制的用于某型直升机电子设备电缆连接故障检查的电缆检测仪,以嵌入式PC机为上位机,以单片机系统为下位机,采用异步通讯方式通过RS232串口传输检测数据,实现了对被测电缆开路和短路两种主要故障的检测。
1结构与原理
电缆检测仪采用对电缆一端施加激励电流的方法来检测电缆的开路和短路状态,其基本原理如图1所示。
短路检查时,检测仪对电缆的A端通过适配器逐一施加激励电流,电缆的B端悬空开路。
检测仪巡检A端各针脚是否有电流。
如果电缆之间没有短路故障,A端某针脚激励的电流无回路存在,其它针脚就检测不到激励电流,相反,其它针脚可检测到电流。
开路检查时,检测仪对电缆的A端通过适配器逐一
施加激励电流,电缆的B端通过适配器全部短接在一起。
如果电缆之间没有开路故障,当开路的电缆线不作为激励线时,由于无回路,该芯线检测不到电流,当开路的电缆线作为激励线时,其他芯线均检
测不到电流,由此可以判断电缆的开路故障。
电缆检测仪由嵌入式PC104工控主机系统和单片机系统两部分组成,硬件结构如图2所示。
嵌入式PC104工控主机系统包括512M内存、8寸液晶显示触摸屏、触摸板驱动器、8G容量的CF卡,主要功能是实现电缆连接数据库管理、检测数据分析与检测结果显示。
单片机系统包括AT89C52单片机、恒流源电路、AD转换电路、数据通道分配选择电路、RS232接口电路,主要实现电缆开路测试和短路测试。
其中恒流源电路用来产生电缆开短路检测时所需的激励电流;数据分配器电路把激励电流循环施加到各个被测电缆上;数据选择电路用
DesignandRealizationofSerialCommunicationSoftwareofCableDetectorBasedonPC104
FENGHai-Xing,XIANMing-Le
(TheFirstAviationInstituteofAirForce,XingyangHenan464000,China
Abstract:
ThispaperanalysesthedemandofdatetransmissionofcabledetectorbasedonPC104,introducesthedesignidea,thecommunicationprotocolandrealizationmethodofserialcommunicationsoftware,andprovidestheproblemswhichshouldbenoticedduringthesoftwareprogramming.
Keywords:
serialcommunication;handshakeprotocol;datebuffer
基于PC104的电缆检测仪串口通信软件设计与实现
冯海星,先明乐
(空军第一航空学院,河南信阳464000
摘要:
在分析基于PC104的电缆检测仪数据传输需求基础上,详细介绍了该检测仪串口通信软件的设计思
路、通讯协议和实现方法,指出了软件编写过程中应注意的问题。
关键词:
串口通讯;握手协议;数据缓存中图分类号:
TP29
文献标识码:
A
doi:
10.3969/j.issn.1002-6673.2010.04.056
机电产品开发与创新
Development&InnovationofMachinery&ElectricalProducts
Vol.23,No.4
July.,2010
2010年7月
文章编号:
1002-6673(201004-140-03
于循环选择被测电缆的电流信号;A/D转换电路用于检测电缆回路电流,以此判断电缆的通断以及电阻阻值。
2通讯协议
由电缆检测仪工作原理可知,要实现电缆开路检测和短路检测,上位机和下位机之间必须实现如下数据传输:
①上位机发送检测代码给下位机,明确下位机将要
进行开路检测还是短路检测;②上位机发送被测电缆针脚号给下位机;③下位机根据上位机发送的针脚号实施检测,并将检测信息实时发送给上位机。
上位机和下位机通讯协议流程见图3。
通信数据采用数据包形式,一次传输一个数据包,数据包格式为“起始位+通信代码+校验位+结束位”。
不同类型数据包通信代码见表1。
3软件实现
3.1上位机通信程序设计
上位机程序在VC++6.0开发平台上利用WindowsAPI通信函数实现[2],以查询串口方式完成异步串行通信。
采用“查询”方式进行串口通信,可以不考虑进程和线程的问题,仅在串口有数据时读串口缓冲区即可,但需要科学确定串口读取时机,制定好握手协议及软件纠错机制,以保证通信可靠、准确。
(1缓存区读取时机。
为提高通信效率,上位机通信程序在读缓存区有数据时即开始读操作,使用函数WaitForSingleObject(等待,直到读操作完成或延时1秒钟,以保证读取数据的完整性。
数据读取完毕后立即清空读写缓存区,防止数据拥堵影响下次通信。
(2握手协议。
为保证通信可靠,握手协议约定:
①通信中,当甲方发送时,乙方必须在甲方发送动作之前进入循环接收状态,直到接收到字符后通过对串口读取函数ReadFile(返回值的判断跳出循环状态;②当甲方发送方发完数据后无应答,隔0.5S后重发,最多重发10次;③为防止程序因循环等待接收而进入“死循环”状态,设置读取串口的循环次数为1000次。
(3软件纠错。
串口通讯过程容易受到干扰,不可避免形成突发错码。
为了确保数据传输的可靠性,必须采用一定方法实现数据传输纠错。
本软件在编写过程中,主要采用和校验和数据重发机制,提高数据传输准确度。
3.2下位机通信程序设计
下位机通信程序采用KeilC51[3]开发平台实现,主要由数据发送和数据接收子程序两部分组成。
由于下位机在进行数据通信的同时,还要实施电缆开路检测和短路检测,因此在设计
表1通信代码
Tab.1Communicationcode
数据包类型通讯代码代码说明数据发送者握手代码DA+F0+DB
串口通信开始
上位机
应答代码DA+F1/F2+DBF1:
收到数据正
确,请发送下组数
据;F2:
收到数
据错误,请重发
下位机
空闲代码DA+F7+DB空闲状态,可接收
数据
上位机
开路检测代码DA+E1+DB开路检测上位机短路检测代码DA+E2+DB短路检测上位机
检测信息数据包DA+D0+D1+
DC+DB
D0:
激励针脚号;
D1:
问题针脚号;
DC:
和校验位
下位机
检测结束代码DA+DD+DB检测结束下位机备注:
DA:
起始位;DB:
结束位
(下转第139页
(上接第141页下位机通信程序时,为尽量减少
数据通信占用的CPU时间,将通信程序分为接收中断处理程序和发送中断处理程序。
主程序首先完成串行口的初始化、设置串口的工作方式、串口波特率,数据位、校验位等。
当接收缓冲区内有数据时,下位机响应中断信号进入接收子程序。
在接收完上位机发送的数据时,判断下位机是否发出中断申请,如果有,则清除中断申请信号。
只有当发送缓冲区内有数据要发送并且置位发送中断允许位时才调用发送子程序。
发送的数据遵守通讯协议的数据格式:
首先发送起始位,然后发送需要传输的数据,最后发送校验和以及结束位。
4结束语
串口通讯方式在计算机控制系统中应用广泛。
实践证明,本文设计的基于PC104的电缆检测仪串口通信软件运行稳定、可靠,保证了单片机与嵌入式PC机之间数据传输的准确率。
参考文献:
[1]李朝青.PC机及单片机数据通信技术[M].北京航空航天大学出版社,2000.
[2]张立科.VisualC++串口通信工程开发实例导航[M].北京:
人民邮电出版社,2003.
[3]赵文博,刘文涛.单片机语言C51程序设计[M].北京:
人民邮电出版社,2005.
是否同步,只有在同步状态下,MSCAN才能正常地接收发送数据帧。
MSCAN的初始化流程如图3所示。
CAN发送和接收模块均采用中断机制。
数据的发送
由MSCAN自动完成,在确定发送缓冲区为空时,将要发送的数据送到发送缓冲数据寄存器并清除发送缓冲区空标志CAN0TFLG,将发送控制寄存器置位,MSCAN开始发送数据,发送流程如图4所示。
在接收数据时,设置接收中断允许寄存器,允许接收缓冲区满中断,在接收缓冲区满时触发一个接收中断请求。
在接收中断服务程序中,为了避免此时再发生中
断,在接收数据帧之前设置中断允许寄存器,不允许接收缓冲区满中断,在接收数据帧之后,清除接收缓冲区满标志CAN0RFLG,并允许接收缓冲区满中断,便于下一次接收中断的处理。
5总结
CAN总线作为汽车专用通讯网络,在实时性和可靠
性方面有很大的优势,国外几大著名汽车生产厂商都采用了CAN总线技术,CAN总线正受到越来越多汽车厂商的关注。
国内汽车网络的研究正处于起步发展阶段,虽也有少数汽车生产厂商采用了CAN总线技术,但大都是引进国外的技术,对CAN总线技术的研究和掌握和国外相比还有很大的差距。
随着CAN总线的广泛应用,对其研究和掌握程度逐渐加深,在不久的将来,国内汽车必将拥有自己的CAN网络系统。
参考文献:
[1]赵星.汽车电子中CAN总线应用[J].南京工业职业技术学院学报,2006,6.
[2]黄涛,周德恒.基于CAN总线的汽车内部网络系统研究[J].单片机与嵌入式系统应用,2005,9.
[3]邬宽明.CAN总线原理和应用系统设计[M].北京:
航空航天大学出版社,1996.
[4]罗峰,孙泽昌.汽车CAN总线系统原理、设计与应用[M].北京:
电子工业出版社,2010.
本刊加入“CNKI中国期刊全文数据库”的声明
为适应我国信息化建设,扩大本刊及作者知识信息交流渠道,本刊已被CNKI中国期刊全文数据库收录。
如作者不同意文章被收录,请来稿时向本刊声明另作处理,同意收录者不再另付稿费。
《机电产品开发与创新》杂志社
2010年1
月