微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP的分析仪器CAN网络通信系统

基于DSP的分析仪器CAN网络通信系统

时间:12-29 来源:互联网 点击:

一致。由于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 结论

  该通信系统在试验中得到了良好的效果,满足了多组分分析仪器的设计要求。数字化在线分析仪器作为网络神经元,有机地融入网络系统,实现信息实时传输、远程故障诊断是分析仪器的发展趋势,也是工业化和信息化的发展趋势。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top