基于单片机(80C196)或微处理器(DSP、ARM 等)的多组分气体分析仪采用功能强大的CPU,可实时快速测定各种燃烧设备的各项热工参数。根据测量数据,通过自动调节装置调整风量,保持适当的空气/燃料比,使燃料系统达到最佳运行状态,以获得最高的燃烧效率和最低的燃料消耗。仪器还可以测定CO、SO2、NO、NO2、烟气黑度等参数,并配有液晶屏、键盘等外设。
CAN(CONtroll Area Network)是国际上应用最广泛的现场总线之一,使用了一种串行多控制方通信协议,可以有效地支持分布式实时控制,并且具有很高的安全性和高达1Mbps的通信速率。
一个包含PC 机和n-1(n≤110)个智能节点的CAN 总线网络结构图如图1 所示。
图1 n 个节点的CAN 网络结构图
信息的传输采用CAN 通信协议,传输介质采用双绞线,如果需要进一步提高系统的抗干扰能力,还可以在控制器和传输介质之间加接光电隔离,电源采用DC-DC 变换器等措施。
1 分析仪器CAN 网络应用层协议的制定
CAN 的国际标准中只定义了物理层和数据链路层的规范,由于本项目构建的CAN 总线网络节点数目不多,所有节点都由项目组自行设计,不需要与国际标准设备进行接口,所以,这里根据本项目的具体情况,制定了一个简易的CAN 应用层协议。
根据厂方要求,网络初步规划应至少可容纳16 个节点。上位机收集各分析仪器的信息,包括气体组分分析含量、出错信息和被测气体的一些参数,如温度、压力、流量等,也返回一些控制信息给智能节点。在每个分析周期从节点的气体组分分析结果送往主节点,主节点待收到所有待测组分含量后,将所有信息一并送往上位机。网络中的任一台分析仪器均可做为主节点或从节点,甚至在没有上位机的情况下也可以做为上位机。
在CAN 系统中,以11 位(标准帧)或29 位(扩展帧)的标识符来标识数据的含义,标识符决定了信息的优先权和等待时间,同时也影响信息滤波的适用性。因而,合理、高效的信息标识符ID 分配方案是充分发挥CAN 总线性能的前提条件。
分析仪器主控制器之一F2812 DSP 片上共有32 个邮箱,在SCC 模式下0-15 邮箱可用,在eCAN 模式下,32 个邮箱全部可用,可以很方便地实现主节点对从节点信息的接收和存储。故推荐采用主控制器为F2812 的分析仪器作为该网络中的主节点,选择eCAN 模式,使用标准标识符(11 位),对其进行如表1 所示的静态分配策略,即可满足上位机和主节点识别帧来源和帧意义的要求。[page]
2 网络通信程序
2.1 上位机端初始化
上位机端主要完成对各分析平台分析结果的采集、显示,使用PC 机加CAN 通讯卡KPCI-8110。KPCI-8110 上集成了独立的CAN 控制器SJA1000。SJA1000 用于移动目标和一般工业环境中的区域网络控制(CAN),在使用前要先对其进行初始化。
上位机显示界面采用适合快速开发的可视化面向对象高级语言VB 来编写。KPCI-8110CAN 适配卡提供.dll 驱动和.lib 库函数,通过在VB 程序中调用相关的驱动函数就可以实现CAN 适配卡的配置和数据的读写。
上位机端接收数据的流程如图2 所示。
图2 上位机接口函数使用流程图
数据接收到上位机之后保存在一个大容量的内存缓冲池内,用户只需实时通过函数CAN_ReadDataNum(mindex) 查询缓冲池内的数据量, 再通过函数CAN_ReadBlockData(mindex,num,obyte)及时读走保存即可。其中obyte 为接收数据起始指针。
CAN_ClearBlock(mindex,num,obyte)为清空从obyte 指针开始的缓冲池空间。
注意:由于SJA1000 CAN 控制器每个地址存储8 位数据,而F2812 内置CAN 控制器每个地址存储16 位数据,而且标准数据帧的标识符也不是从字节的起始位开始的,所以定义标识符的时候要按照不同控制器的要求来定义。例如F2812 内置CAN 控制器定义数据帧标识符为344 0000(bit28-bit18 为标识符位),SJA1000 独立控制器对应的标识符应为1A20(bit15-bit5 为标识符位)。
2.2 分析仪器CAN 网络通信程序设计
智能节点分析仪器端的编程采用 C 语言与汇编语言相结合的方式,采用结构化程序设计方案,可读可移植性好。流程如图3 和4 所示。
图3 分析仪器主节点程序流程图
主节点在接收到从节点传送过来的数据后,在接收成功引起的中断处理程序中对数据进行处理,然后转存到主节点的发送邮箱中,等待发送给上位机。在进行数据处理的时候要把接收邮箱中的数据赋给中间变量,处理完后再把中间变量的值赋给发送邮箱,这个过程中要注意借助指针来完成。如下所示:[page]
Mailbox = &ECanaMboxes.MBOX0 + n; // n 为邮箱号
receiveboxl = Mailbox->MDRL.all;
receiveboxh = Mailbox->MDRH.all;
图4 分析仪器从节点程序流程图
3 实验结果及分析
使用 KPCI-8110 的测试程序向分析仪器周期发送一帧数据时,查看测试程序和分析仪器存储器可以看出,分析仪器端正确地接收到PC 发送来的数据,CAN 网络运行良好。图5为自己开发的接收界面试验状态下成功接收到数据,分析仪器网络分析周期为20s,发送速率为100Kbps。
图5 上位机接收界面
在对节点和上位机的通信进行试验的时候发现,在单独使用eCAN 模块发送和接收数据时,通信情况良好,发送和接收的帧数相同。
需要注意的是,在运行DSP 多组分气体分析平台的整个软件程序时,在较短时间内要以较大速率发送大批量数据,故将A/D 采样之后的数据滤波和处理部分放在主程序中执行,尽可能减少A/D 中断服务子程序的处理时间,这样就可以减少对CAN 发送中断程序的影响。
经实验证明,以上分析和判断是正确的,网络通信状况良好,无丢帧现象。
4 总结
该网络通信系统在试验中得到了良好的效果,满足了多组分分析仪器的设计要求。
上一篇:基于MR16单片机的UPS设计
下一篇:实数FFT算法的设计及其C语言实现
推荐阅读最新更新时间:2024-03-16 13:37
设计资源 培训 开发板 精华推荐
- “泰”想开车 智能篇:智能网联汽车,实现无忧驾驶
- 硬核拆解|看看千元智能电表内部如何连接
- 有奖直播|基于TI最新低功耗60GHz毫米波雷达传感器的工业应用
- 降碳行动:寻找身边8位单片机,抢楼赢ST最新M0开发板!
- 【EEWORLD中秋国庆专辑】你身边的电子牛人秀
- 【分享成长,10月有奖】EEWORLD优秀主题/回复第15期活动开始啦!!!
- 年末福利!2019 TI 工业应用精选课程汇总,抢楼赢好礼
- 电机小课堂 | 单相无刷电机无感控制,小功率电机驱动应用中的最佳解决方案
- EEworld新春感恩回馈之ST新出道“高富帅”STM32F746G-DISCO 199元包邮
- 新年芯币竞价第二期——开发板竞价