组态软件环境下的CAN总线通信适配卡驱动程序的开发

(整期优先)网络出版时间:2018-12-22
/ 2

组态软件环境下的CAN总线通信适配卡驱动程序的开发

耿庆州

(江苏徐工工程机械研究院有限公司江苏省徐州市221004)

摘要:CAN总线是控制局域网络(ControlAreaNetwork)的简称,最早用于汽车内部测量和执行部件之间的数据通讯,由德国BOSCH公司提出,是一种具有高可靠性、支持分布式控制和实时控制的串行通讯网络。CAN总线的速率可达1Mbps/40m,其最大传输距离可达5Kbps/10Km,这些卓越性能使CAN总线得以在全球范围内一直保持高速发展,公认为极具发展前途的现场总线之一。本文描述了CAN总线的特点和通讯适配卡的工作原理,以及基本的通讯协议,然后详细阐述了通过DDE通讯在组态软件环境下对CAN适配卡的驱动编程,最后说明了上位机与CAN节点通讯的组态实现。

关键词:CAN总线;适配卡;组态软件

一、前言

目前国内外CAN总线设备开发厂商设计的CAN总线适配器大多采用ISA和PCI接口。组态王没有提供CAN通信适配卡的驱动程序,但它提供了DDE(动态数据链接)接口,因此我们可以用VB编制一个起桥梁作用的程序来和硬件设备打交道,用VB完成与CAN通信适配卡的数据通信,然后通过DDE与组态王进行数据交换,而组态王主要实现上位机监控界面的组态。

二、基本通信协议

当上位机需要与子节点进行通信时,可向CAN网络节点发送信息帧,CAN网络中的节点接收到信息帧后,通过判别标识符的低3位来区别信息帧的类别后,再将节点所需要的数据发送出去。当网络节点发生突发事件时,可随时向上位机报告,上位机同样也是通过标识符的低3位来识别数据类型。上位机发给CAN节点的命令根据信息帧的第3字节的内术容分为四种:

(1)请求数据(01H);

(2)发送数据(02H);

(3)发控制参数(03H);这条命令是在上位机程序对网络进行配置时用来向网络的各个节点发送控制参数的,发送时控制参数的放置顺序依次是:模块号参数、节点号参数、波特率参数、输出方式参数、屏蔽控制参数。

(4)请求控制参数(04H);这条命令是上位机程序查看整个网络的配置时用来向网络的各个节点请求其控制参数的,在收到各个节点发来的控制参数后,整个网络的配置情况就一目了然了.

三、设置及编程

3.1动态数据交换的特点

MicrosoftDDE是Windows系统下应用程序之间最为可靠的数据传递方式。需要进行数据传输的两个应用程序之间就必须建立Server一Client模式的通讯关系,也就是DDE连接关系。其缺点是,当数据交换的数据量比较大时,比如500个DDE项目进行工作时,就须需要在两个应用程序间建立500个“热链路”(一个特定项目),这将消耗更多的资源,500个项目的数据值同时变化后,需要进行500次DDE通讯,在数据量大、变化频繁的实时工业控制应用中,速度会变得很慢。BlockDDE可以很好地解决这一“瓶颈”问题。通过BlockDDE,在Server程序与Client程序之间只需要建立一个“热链接”,Server端程序的多个数据同时发生变化之后,只需要一次DDE通讯,就可以传递给Client程序,它将使得整个系统行速度快捷无比,而且开发一般的DDE数据交换程序非常繁琐,而使用BlockDDE,将使得开发过程十分简单。它以动态链接库的形式,向用户提供了10个函数用来完成初始化、建库、收发数据等功能。在本应用中数据流向如图1所示。

图1BlockDDE建立的热链路

3.2设置

建立DDE之前,客户程序必须填写服务器程序的三个标识名。定义DDE设备的设置是通过应用程序名(application)、主题(topic)、项目(item)这3个标识名来预定的。DDE接口设置步骤如下:

(1)在工程浏览器中新建DDE设备,DDE设备连接对象名为DDECANI;(2)服务程序名为HK-CAN10S,对应于VB中的Application的Title;(3)话题名为VBFrmCard,对应于VB中的窗体名称;(4)数据交换方式为标准Windows项目交换;(5)对数据字典中的I/O变量的设置,每个变量的连接设备选择DDECANI;(6)每个变量的项目名设定为VB中的控件名;(7)在画面中建立数据连接。

VB的DDE接口设置步骤如下:

(1)建立一个VB项目,打开VB的DDE项目属性,将Ap-plication的Title设HK-CAN10S;(2)设定DDE运行的窗体名称:FrmCard;(3)打开DDE运行的窗体属性,设置LinkMode=1,Link-Topic=VBFrmCard;(4)将需要交换的数据变量绑定到窗体中的控件上,记住控件名称。

3.3VB程序设计

建立的VB项目能够实现窗体加载、卸载,针对CAN适配卡完成发送数据和接收数据的功能,下面对它们分别进行介绍。

3.3.1加载、卸载程序

VB窗体中将文本框Text1的Name属性设置为send_txt,Text2的Name属性设置为rev_txt,Text3的Name属性设置为view_ready,visible属性设置为False。在窗体的加载程序中加入指令。

初始化通信适配卡是利用通信适配卡所提供的函数对适配卡的基地址、中断号、波特率、站地址和接收屏蔽字进行设置。这里通信适配卡的基地址为280H,中断号为7,波特率为变量bps_CAN的值,站地址设为00H,接收屏蔽字设为FFH,即接收网上的所有信息包。

3.3.2发送数据程序

VB中编程采用事件驱动机制。本程序只有在文本框控件send_txt的内容发生变化,即组态王有数据需要适配卡向网络上发送时才会启动。

3.3.3接收数据程序

本程序是由适配卡提供的控件的一个事件驱动的。在将转化完毕的数据传送给组态网之前,要判断组态网是否已将上次的数据处理完毕,然后再做相应的处理。若不进行这样的判断,就会产生丢失中间接收到的数据帧的情况。因为如果组态网还未将上次的数据取走,再次向它传送数据会将上次的数据覆盖,从而使得未处理的数据丢失。

四、程序应用

组态王软件运行于WINDOWS中文平台,可快速地开发出监控软件。在CAN控制网络状态监测的界面中,组态王程序主要实现的功能有:(1)实现对CAN网络节点的节点号、波特率及输出方式等参数的设置;(2)实现对测控装置节点的多通道数据(包括破岩力、钻杆数量等)的显示;(3)实现对报警值的设置。

五、结束语

组态王软件与VB通过DDE通讯协同工作,可完成对CAN控制网络的监控。实践证明这种系统不但可靠、实用,而且便于设计,易于扩充,具有较高的推广价值。

参考文献

[1]邬宽明CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.

[2]范逸之等.利用VisualBasic实现串并行通信技术[M].北京:清华大学出版社,2001.

[3]北京亚控科技发展有限公司组态王6.0使用手册北京:亚控公司,2001.

[4]计小军网东兴基于CAN总线的智能馈线终端的研究[J]微计算机信息2006,2-2:111-113.

[5]胡锦晖胡大斌齐文娟采用VB实现组态软件与下位机的串行通信方法研究[J]微计算机信息2005,11-1.