CAN通信技术在半实物主机燃油粘度控制系统上的应用

2016-09-07 01:35陈林中国船舶重工集团公司第七一研究所湖北宜昌443003
自动化博览 2016年7期
关键词:实物报文嵌入式

陈林(中国船舶重工集团公司第七一○研究所,湖北 宜昌 443003)

CAN通信技术在半实物主机燃油粘度控制系统上的应用

陈林(中国船舶重工集团公司第七一○研究所,湖北宜昌443003)

本文内容为CAN通信技术在半实物主机燃油粘度控制系统上的一种应用。包括CAN通信工具、嵌入式开发平台和开发环境、硬件接口设计原理、软件设计方法和通信协议等。

CAN通信;控制;软件;通信协议

1 引言

CAN 通信技术在性能和可靠性方面表现异常突出,在船舶、工业自动化、工业设备、医疗设备等行业有着非常多的应用。本半实物主机燃油粘度控制系统,上位机(主控计算机)和下位机(燃油粘度控制器)之间的通信方式选用的是CAN通信,本文介绍了CAN通信技术在半实物粘度控制系统上的一种应用。

2 技术背景介绍

2.1CAN通信技术介绍

CAN 通信技术从最开始就被各个应用行业所看重,归功于其特别的设计思想、性能和可靠性方面的突出表现。其国际标准更加促进了它的发展,基于该技术的应用如雨后春笋般出现。在大型仪器设备、工业数据采集和监控系统等方面都有其广泛的应用。目前,国际上百余家公司的产品支持CAN 通信,比如 Intel、NEC、Philips、Honeywell 、Siemens、Silioni等等。目前CAN 总线的应用研究在众多技术人员的努力下继续发展,它的应用范围也将越来越大,前途非常广阔。

2.2半实物控制系统介绍

半实物主机燃油粘度控制系统采用由真实控制仪器/仪表与仿真计算机组成的半实物仿真系统,设备的主要功能包括:过程控制训练、正常操作训练及系统动态特性分析、PID等参数的工程整定训练、故障分析和排除训练、新型控制技术的研究等。

半实物控制系统硬件组成如图1所示,仿真系统主要参数如表1所示。

图1 半实物主机燃油粘度控制系统

表1 仿真系统主要参数名称

3 开发工具介绍

本半实物控制系统设计,控制器要实现“操作模式”、“控制方式”、“开关量”、“数据量”等方面数据的显示和控制,也要能够实现对报警复位操作。与上位机(主控计算机)的通信选择具有CAN接口的开发工具。

3.1嵌入式网路模块“EM9260”(如图2所示)

图2 嵌入式网络模块“EM9260”

我们以英创公司的“EM9260”嵌入式网络产品为基础完成控制器的开发。“EM9260”是英创公司推出的在工业自动化行业大有用途的性价比比较高的嵌入式网络产品,AT91SAM9260作为其CPU内核,完全能满足工业级的应用,该产品预装Windows CE5.0嵌入式操作系统,Microsoft提供的eVC(+SP4)可以用来作为开发工具,在“EM9260”上开发自己的应用程序。英创针对“EM9260”提供了整套的低层驱动程序和全面的应用程序示例,用户可以在学习示例的基础上方便快速地开发自己需要的应用程序和产品。

CAN接口:“EM9260”产品的CAN通信功能属于选配,“EM9260”仅仅包含了CAN控制器,CAN接口的物理较简单,在“EM9260”产品的评估底板配置,用户自己在设计应用底板时可参考。应当注意到CAN接口收发信号和一个USB信号复用的管脚,如果不使用CAN通信,管脚配置为USB。该CAN接口能支持CAN2.0B。把该CAN口与CAN接口卡信号线连接,即可实现节点间的通信。

图3 CAN接口定义

“EM9260”产品安装了操作系统WinCE,WinCE是微软公司嵌入式平台系统的基础系统,它是一个可升级的操作系统,且是开放的,为32位系统。WinCE是有多任务优先级的嵌入式操作系统,它能够支持多重任务和进程,在相同时间系统中WinCE能够支持32 位的同步进程。

软件开发平台为eVC,eVC是微软公司为嵌入式操作系统提供的开发平台,它的功能完善而且能够免费获取,它与大名鼎鼎的PC 平台普遍应用的开发工具VC有高度的一致性,而且能够考虑C/C++的执行效率问题,所以eVC最适合作为“EM9260”产品的应用程序的开发工具。eVC开发环境和VC非常相像,用户能够通过大量VC资料来进行eVC编程方面知识的学习。但是用eVC和VC开发应用的区别有一些,最明显的是VC开发的应用程序在普通的PC机上运行;eVC所开发的应用程序是要在目标机上运行,而不是在PC机上运行。这一区别是广大VC使用者和刚接触嵌入式操作系统WinCE的用户所不熟悉的。

搭建了英创公司“EM9260”产品所需要的开发环境,包括硬件环境和软件环境,用以太网将开发用的主机和英创“EM9260”产品连接后,用户便能够用eVC开发调试自己的应用程序了。

3.2“USBCAN-2A”智能CAN接口卡(如图4所示)

我公司使用的是ZLG公司生产的“USBCAN-2A”智能CAN接口卡,其是集成了2路CAN-BUS的智能型PC-CAN接口卡,两个CAN接口均集成有电气隔离保护电路,且相互独立。CAN接口卡是通过PC的USB口与CAN网络连接,构成CAN-BUS节点。能够支持5kbps~1Mbps之间波特率。其ZLGCANTest工具可以实现对CAN接口卡的控制和操作。

图4 USBCAN接口卡

为实现“USBCAN-2A”接口卡和 CAN-BUS 总线的连接,将两个 CAN_L 连接,两个CAN_H信号连接便可。对于分支上的连接,其信号线长度应在3米以内。网络节点连接如图5所示。

图5 CAN-BUS 网络

为了增强CAN-BUS通信的可靠性,CAN-BUS结构为直线拓扑结构,总线端点需要匹配120Ω的终端匹配电阻;若节点数多于2,中间的节点不需要匹配120的终端匹配电阻。“USBCAN-2A”接口卡使用的是PCA82C251收发器,若CAN-BUS网络上的其他节点的收发器不同,那么终端电阻要重新计算。“USBCAN-2A”接口卡内未集成 120Ω的终端匹配电阻;在CAN-BUS网络端点上的“USBCAN-2A”接口卡,需要配备120Ω终端匹配电阻,如图6所示在“R-”引脚与“R+”引脚间并联终端匹配电阻。

图6 “USBCAN-2A” 位于网络终端时的连接方法

在许多操作系统下“USBCAN-2A”智能 CAN 接口卡均可使用,比如 Win9x/Me、Win2000/XP 等操作系统,同时Linux2.4、Linux2.6版本的操作系统也支持。“USBCAN-2A”随机资料中有程序编程接口和应用示范代码,在许多比较通用的开发环境均有示范,比如VC、Delphi、VB和 C++Builder 等开发平台均有示范,极大地方便了各种用户进行各自应用程序的开发。随机资料中的ZLGCANTest通用测试工具,方便用户在开发过程中的数据收发调试,有CAN-BUS报文的监测功能,CAN通信调试界面如图7所示。

图7 CAN通信调试界面

4 CAN通信技术软件设计

4.1CAN报文的帧格式

以标识符的长度不同可以将CAN2.0B帧格式分为标准帧和扩展帧,标准帧有11 位标识符,扩展帧有29 位标识符。

4.1.1CAN2.0B 标准帧

CAN标准帧为11个字节,包括信息和数据两部分。前3个字节为信息部分,如表2所示。

表2 CAN2.0B 标准帧格式

4.1.2CAN2.0B扩展帧

CAN扩展帧为13个字节,包括信息和数据两部分。前5个字节为信息部分,如表3所示。

4.2CAN通信应用协议

在了解了CAN通信数据格式后,便需要结合应用对象进行应用协议的制定,以便上位机和下位机按照同一个协议进行数据的操作。由于CAN通信数据量大,使用方式多变,在此仅仅给出一种通信应用协议举例。

表4 CAN通信应用协议表

4.3启动CAN 通信接口

CAN 通信的驱动程序采用了(StreamDevice Driver),另外为客户封装了一套实用性非常强的API函数。can_api.h中有函数的定义,每个API函数均有解释。在使用API函数时,需要调用CreateFile(…)来得到CAN 接口设备的句柄(handle)。例如使用CAN1 ,可使用:m_hCAN=CreateFile(_ T(“CAN1:”),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);对于CAN2通信口,只需将其中的名称换成:_T(“CAN2:”)即可。创建CAN设备,并返回有效的句柄(handle)后,然后便可调用can_api.h中定义的函数来启动CAN接口,BOOL CAN_StartChip(HANDLE hDevice);CAN接口进入工作模式。

4.4设置CAN参数

为了使用CAN接口进行通信,要进行设置CAN接口的参数,如CAN通信的波特率和接收过滤器。BOOL CAN_ SetBaudRate(HANDLE hDevice,BYTE *index);函数可以用来设置波特率,波特率设置的范围为:10kbps到1Mbps。can_api.h文件中对函数的注释更加具体。用户开发时可调用下列函数来设置接收过滤器:

BOOL CAN_SetGlobalAcceptanceFilter(HANDLE hDevice,BYTE *AcceptanceFilter,BYTE size)

4.5CAN通信接口的数据收发

在CAN通信中,CAN数据的收发均采用中断方式,驱动程序中包含数据的收发,以及CAN接收和发送缓冲区的管理。用户开发应用只要调用英创公司API函数中的收发函数便可以实现数据的收发。

需要说明的是在进行CAN数据收发的开发过程中 ,有两种方式能够实现CAN数据接收:一种是定时查询,即以一定频率调用函数CAN_GetNextReceivedFrame(…);一种是利用系统的消息机制,用事件响应方式,当硬件接收到数据报文,底层驱动接收程序自动读取报文数据,同时发送接收事件。应用程序的接收线程得到该事件便调用CAN_GetNextReceivedFrame(…),进行CAN数据的读取。执行一次CAN_GetNextReceivedFrame,仅仅得到一帧CAN报文,若应用程序要把最新数据全部接收,需要反复调用此函数,直至函数的返回值为FALSE。在读取了一帧CAN 数据后,需要将数据中的值按照预先的协议进行赋值,利用结构体和联合体可以进行该关键部分的数据赋值工作。CAN数据帧结构体和联合体使用代码举例:

发送CAN报文相对容易,应用程序中调用函数CAN_ SendFrame(…)便可以。

5 总结

本文介绍了CAN通信技术的相关知识,以及CAN通信技术在半实物主机燃油粘度控制系统上的应用,并详细介绍了嵌入式模块和“USBCAN-2A”智能CAN接口卡的开发方法,以及CAN数据帧应用层协议举例,对有意使用CAN通信技术的读者有一定的借鉴意义。

[1]张婷婷.基于ARM的智能瓦斯传感器的研究[D].西安:西安科技大学,2010.

[2]赖昊,薛君英,陈星,等.CAN总线技术及其系统实现[J].微处理机,2000,(1):28-30.

[3]郑建彬,杨亚莉.以太网和CAN现场总线网间的嵌入式网关设计[J].信息技术,2002,(11):14-17.

[4]胡在华.实时嵌入式系统的研究与应用[D].湖南大学,2002.

[5]张琪君.基于面向对象的嵌入式系统软件开发方法研究及其应用[D].山东:山东大学,2006.

[6]蔡建平.关于嵌入式应用开发技术[J].单片机与嵌入式系统应用,2001,(03):5-11.

[7]Sung Su Yoon,Jea Chul Lee,Seong Jin Cho,Jae Wook Jeon.Gateway between high-performance Fieldbus and serial communication[D].北京:Control Automation and Systems(ICCAS),2010.

The Application of CAN Communication Technology in the Control System of Semi-physical Engine Oil Viscosity

This paper introduces the application of the CAN communication technology in the control system of semi-physical engine oil viscosity,which includes the CAN communication tools,the embedded development platform and the development environment,the hardware interface design principles,the software design methods and the communication protocols,etc.

CAN;Control;Software;Communication protocol

B

1003-0492(2016)07-0074-04

TP29

陈林(1987-)男,河北人,工程师,硕士研究生,现就职于中国船舶重工第七一〇研究所,主要研究方向为船舶自动化。

猜你喜欢
实物报文嵌入式
基于J1939 协议多包报文的时序研究及应用
以实物为背景的勾股定理问题
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
低轨星座短报文通信中的扩频信号二维快捕优化与实现
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
TS系列红外传感器在嵌入式控制系统中的应用
当手绘遇上实物
搭建基于Qt的嵌入式开发平台
基于Arduino控制的半实物模拟驾驶系统