摘 要:采用C++Builder软件平台,硬件从仪表K-line经电平转换器接上位机RS-232C串行口,实现了基于RS-232C标准串行口与汽车仪表的传输波特率及帧格式非标准的软件通讯协议下的通讯控制。
关键词:串口通讯;C++Builder;汽车仪表;RS-232C
1 引 言
在开发汽车仪表检测设备的过程中,非常重要的工作就是实现工控机与汽车仪表的串行通讯。通过串行通讯可以实现对仪表软、硬件版本的检测、仪表里程清零及仪表调校等一系列仪表出厂前重要的检测项目及参数设定。对应于“新捷达”型汽车组合仪表(西门子VDO公司产品),为实现技术安全性CONTROL ENGINEERING China版权所有,故其串行口采用非标准串行通讯协议,是用一般的串口通讯控件所难以实现的,必须由熟悉仪表软件结构的人员从底层编写通讯程序。
本文采用C++Builder开发平台,在Windows 98操作系统下CONTROL ENGINEERING China版权所有,成功实现了与“新捷达”型汽车组合仪表的通讯,并具有美观
2 NewJetta型仪表串行通讯要求简述
2.1 硬件连接
文中工控机与仪表的硬件连接是从仪表的K-line经过电平转换器连接工控机的RS-232串行口CONTROL ENGINEERING China版权所有,采用半双工串行异步通讯方式。
2.2 软件规范
软件规范关于串口数据通讯协议中包括了通信握手、多重校验、出错重发、超时处理等。
2.2.1 通讯初始化
当仪表点火信号端起动约2 s后可以建立通讯响应。首先以5 b通讯速率发送信息,该信息包含1个起始位,7个数据位,1个奇偶校验位和1个停止位(向仪表发送**H)。
仪表收到该信息后大约要等待一个约5 ms的循环时间,然后通讯模块起动。从此时起所有的通讯字节将以10 400 b/s的波特率来收发(此波特率为非标准波特率)。
经过100 ms仪表送出同步字节(1个起始位,8个数据位,1个停止位,为**H),再经过10 ms仪表送出密码的低字节CONTROL ENGINEERING China版权所有,10 ms后仪表送出密码的高字节(1个起始位,7个数据位,1个奇偶校验位,1个停止位,密码值为****H)。
此后,仪表等待工控机送回倒序的密码高字节。这种回送方式是本串行通讯的防错处理机制。如果此字节仪表没有接收到,那么仪表将俅畏⑺屯阶纸诤兔苈胱纸凇?br> 当仪表接收到回送字节后,标准模块通讯以10 400 b/s的波特率起动(每字节包含1个起始位,8个数据位,1个停止位)。此时,仪表开始发送仪表ID在这4个模块的发送过程中,仪表与工控机之间又有很多的信息应答要求,如有差错则通讯中止。
2.2.2 正常通讯过程
经过通讯初始化后,正常通讯以10 400 b/s的波特率开始建立,此时工控机可以发送命令字节流给仪表,来实现对仪表的控制及参数设置。每隔特定的时间间隔,仪表与工控机间仍须互送握手信号,否则通讯中止。
3 软件程序设计
本通讯方式属于零Modem串行异步通讯。在异步通讯中,字符格式和波特率是2个重要指标。本文中通讯过程既有波特率的变化,也有帧格式的变化,对通讯的响应时间也有严格要求。
在C++Builder可视化编程格式下不再支持直接对寄存器操作的函数,故首先用嵌入汇编的办法实现Inporb和Outporb函数。本通讯的数据流是以字节为发送单位的,故编写字节收发函数,为查询方式,如
4 结 语
本文采用C++Builder软件平台成功开发了仪表特殊串行口通讯程序,该系统在西门子VDO(芜湖)公司生产线投入使用一年多控制工程网版权所有,与采用快速通讯方式相比通讯传输性能稳定,并具有了方便美观的用户界面,为实现仪表检测设备奠定了基础,具有重要的应用价值。
参考文献
[1] (美)Charlie Calvert,et al.C++Builder应用开发大全[M].北京:清华大学出版社,2000.
[2] Je