如何设计基于DSP的分析仪器CAN网络通信系统?
扫描二维码
随时随地手机看文章
0 引言
现代流程工业中,多组分分析仪器成为必不可少的环节。常用的在线分析仪器有工业色谱仪、光谱分析仪等。工业色谱仪在流程工业生产和环保领域得到广泛应用,但是其分析周期长,不易实现直接质量控制;拉曼光谱分析仪分析周期短精度高,但是成本太高,所以尚未被推广。因此,实验室研制开发了基于80C196和DSP的多组分气体分析平台,通过不同传感器的组合对样品中不同组分进行检测,实现了分析周期短、精度高,成本低等目标的统一。由于每台组合式分析仪器一般只能分析2-4个组分,为了实现更多组分的测量,同时实现各个分析仪器之间或分析仪器与上位机之间信息的交互,这就有必要构建基于多组分气体分析平台的CAN总线网络。
CAN(Controll Area Network)是国际上应用最广泛的现场总线之一,使用了一种串行多控制方通信协议,可以有效地支持分布式实时控制,并且具有很高的安全性和高达1Mbps的通信速率。由于CAN具有多主站控制、无破坏性总线仲裁、可靠的检错和重发机制以及故障节点的判断和自动脱离等等显著优点,在富含噪声和其他要求苛刻的环境中得到越来越广泛的应用,而且其应用领域也在不断的扩大[1]。
1分析仪器网络结构
多组分气体分析平台基于过程分析仪器系统的物流和信息两通道所需的基本共性功能,系统采用模块化设计。各硬件模块具有独立结构,可适应不同分析传感器及其组合以及预处理装置的选择要求;软件系统则为检测信号的数据处理、仪器的自动诊断、自动标定的操作控制以及为与DCS间的信息通信提供支持[2]。
分析平台采用TMS320F2812作为处理器。TMS320F2812是TI公司推出的一款用于控制领域的高性能32位数字信号处理器,适用于实时数据处理,并集成了丰富的外设,如片上12位模数转换器(ADC)、SPI、eCAN等功能模块,可以方便地进行功能扩展。平台由数据采集模块、控制模块、开关量输入输出模块、人机交互模块以及通讯接口组成。
根据现场情况,通过不同传感器的组合对样品中不同组分进行检测,配合相应的软件实现不同的数据处理方法,构成组合式分析仪器,每台分析仪器可检测2-4个组分。此处我们以两台分析仪器为例,每台能检测两个组分,一台检测CO2和O2,另一台检测SO2和CO,与上位机一起构建CAN通信网络。
CAN网络系统一般由上位机、CAN适配卡、若干节点以及CAN总线构成。由于PC机上有多条扩展槽,利用局域网络通信卡,使得该系统很容易与其他生产管理部门联网,便于统一调度和管理;另外,选用PC机还可以充分利用现有的软件工具和开发环境,方便快捷地设计功能丰富的计算机软件,所以此处上位机我们选用通用PC机。
CAN适配卡我们选用的是北京科日新工控的KPCI-8110光隔非智能CAN总线通讯卡,符合ISO/ISO11898国际标准,满足2.0B(PeliCAN)兼容CAN2.0A通信协议,通讯距离最长达10km,传输速率最高达1Mbps。基于多组分气体分析平台的组合式分析仪器做为CAN智能节点。总线上的信息传输遵守CAN通信协议,通信介质采用双绞线即可。
系统总体结构图如下所示:
图1 基于分析仪器的CAN网络结构图
2 CAN总线通信协议
CAN技术规范版本2.0包括两部分内容:版本2.0A描述CAN技术规范1.2中定义的CAN报文格式;版本2.0B描述标准和扩展格式两种报文格式。为了同CAN技术规范2.0兼容,要求CAN执行既同版本2.0A,也同版本2.0B兼容。
鉴于我们目前所要传输的内容仅限于检测结果,同时考虑到现场需要网络中可能连接的智能节点的个数,采用标准报文格式完全能够满足我们的要求。
CAN技术规范版本2.0B中,数据帧由7个不同的位场组成:即帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结束。数据帧格式如下所示[3]:
图2 CAN2.0B数据帧格式
分析仪器主控制器F2812 DSP片上共有32个邮箱,在SCC模式下0-15邮箱可用,在eCAN模式下,32个邮箱全部可用,而且与2407不同的是,F2812可以发送和存储包括报文ID在内的所有帧信息。所以我们只需对标准标识符的位进行分配,而不用定义数据字节,即可满足上位机和主节点识别帧来源和帧意义的要求。对标准标识符的分配如下表所示:
表1 标识符分配
3 通信程序设计
若想实现CAN网络的正常通信,必须保证各通信节点的波特率和标识符都定义得一致。由于KPCI-8110使用独立的CAN控制器SJA1000,而智能节点多组分气体分析平台中使用微处理器DSP中内置的CAN控制器,各自寄存器的定义和分配不尽相同,所以数据帧格式的定义方法也不一样,在编写初始化和通信程序时要特别注意寄存器的定义和分配。
3.1智能节点端
为了实现各个节点信息的同步,考虑把智能节点中的一个做为主节点,其他节点做为从节点。主节点先收集所有从节点的数据,再把所有的数据一起发送给上位机。
做为CAN网络的智能节点,组合式分析仪器采用内置了CAN模块的F2812做为微处理器,从硬件上来讲,外接一个CAN收发器就可以方便地挂接到CAN总线上,从软件设计上来讲,由于F2812强大的寄存器功能,也可以很容易地实现CAN模块的初始化以及信息的发送和接收。
智能节点的编程采用C语言与汇编语言相结合的方式,采用结构化程序设计方案,可读可移植性好。流程如图3所示。程序设计的重点在于CAN模块的初始化和中断程序的调用。
图3 智能节点程序流程图
智能节点端CAN模块初始化(流程图如图4所示[4])主要包括三个方面的内容:波特率的配置、邮箱分配(包括邮箱方向、标识符分配等)、中断寄存器初始化。波特率和标识符的分配非常重要,是CAN网络通信成功的关键所在。F2812内置CAN控制器使用位时序配置寄存器CANBTC中的BRP、TSEG1和TSEG2来设置波特率,计算公式为:SYSCLK/(BRP+1)×[(TSEG1reg+1)+(TSEG2reg+1)+1],此处我们采用的晶振频率为30MHZ,系统倍频为1/2,BRP=9,TSEG1=10,TSEG2=2,因此波特率为100Kbps。标识符就根据表1的描述来确定。
图4 智能节点CAN模块初始化流程图
中断程序中主要对从节点传送的数据进行处理,然后转存到主节点的发送邮箱中,等待发送给上位机。在进行数据处理的时候要把接收邮箱中的数据赋给中间变量,处理完后再把中间变量的值赋给发送邮箱,这个过程中要注意借助指针来完成。如下所示:
Mailbox = &ECanaMboxes.MBOX0 + n; // n为邮箱号
receiveboxl = Mailbox->MDRL.all;
receiveboxh = Mailbox->MDRH.all;
3.2上位机端
PC机端主要完成对各分析平台分析结果的采集、处理,采用适合快速开发的面向对象高级语言VB来编写。KPCI-8110CAN适配卡提供.dll驱动和.lib库函数,通过在VB程序中调用相关的驱动函数就可以实现CAN适配卡的配置和数据的读写。数据的处理主要完成对各组分检测结果中干扰背景气的去除以及单位换算等工作。
上位机在接收主节点传送过来的数据时,在SJA1000 CAN控制器采用单滤波器模式,只接收在界面中输入的组分的数据。滤波规则为:验收代码位(ACR.7-ACR.0)和信息识别码(标识符)的高8位(ID.10-ID.3)相等,且与验收屏蔽位(AMR.7-AMR.0)的相应位相或为1[5]。例如,在上位机接收界面中输入组分名“co2”,运行程序时就会把“co2”对应的一组验收代码值和验收屏蔽值初始化为验收滤波器的预设值。为了具有通用性,把验收屏蔽码设为ACR xor &HFF。
由于SJA1000CAN控制器每个地址存储8位的数据,而F2812内置CAN控制器每个地址存储16位的数据而且标准数据帧的标识符也不是从字节的起始位开始的,所以定义标识符的时候要按照不同控制器的要求来定义。例如F2812内置CAN控制器定义数据帧标识符为1144 0000(bit28-bit18为标识符位),SJA1000独立控制器对应的标识符应为8A20(bit15-bit5为标识符位)。.
下图为自己开发的接收界面成功接收到数据:
图5 上位机接收界面
4 结论
该通信系统在试验中得到了良好的效果,满足了多组分分析仪器的设计要求。数字化在线分析仪器作为网络神经元,有机地融入网络系统,实现信息实时传输、远程故障诊断是分析仪器的发展趋势,也是工业化和信息化的发展趋势。