过程分析仪器CAN网络通信设计介绍

  仪器网 ·  2012-08-07 11:23  ·  14576 次点击
为了解决在工业生产中遇到的现场检测信息的采集、处理和同步等问题,提出了实现过程分析仪器CAN总线网络通信的方法。根据项目的设计要求,制定了适用的CAN应用层协议,编写了各个节点的通信程序,在试验中取得了良好的效果。分析仪器的网络化能够满足多组分分析仪器在分析周期、仪器成本等方面的要求,减少分析仪器对DCS端口的占用。现代流程工业的过程控制中,分析检测具有在线、多组分、实时检测的特点,对分析仪器在稳定、可靠、快速、准确等方面有着严格的要求。而广泛使用的工业色谱仪采用色谱分离原理,分析周期长达数分钟至数十分钟,难以实现过程的直接质量控制。过程拉曼光谱仪和激光调制光谱仪等新技术目前价格昂贵,关键技术尚在研究阶段,难以普及。利用技术成熟的单检测器单组分过程分析仪器,通过分析传感器组合技术和嵌入式计算机技术,实现多组分实时检测和建立简便快捷的分析仪器通信网络系统已成为近期国内外分析仪器研发的热点之一。
基于单片机(80C196)或微处理器(DSP、ARM等)的多组分气体分析仪采用功能强大的CPU,可实时快速测定各种燃烧设备的各项热工参数。根据测量数据,通过自动调节装置调整风量,保持适当的空气/燃料比,使燃料系统达到最佳运行状态,以获得最高的燃烧效率和最低的燃料消耗。仪器还可以测定CO、SO2、NO、NO2、烟气黑度等参数,并配有液晶屏、键盘等外设。
CAN(ControllAreaNetwork)是国际上应用最广泛的现场总线之一,使用了一种串行多控制方通信协议,可以有效地支持分布式实时控制,并且具有很高的安全性和高达1Mbps的通信速率。信息的传输采用CAN通信协议,传输介质采用双绞线,如果需要进一步提高系统的抗干扰能力,还可以在控制器和传输介质之间加接光电隔离,电源采用DC-DC变换器等措施。
1、分析仪器CAN网络应用层协议的制定
CAN的国际标准中只定义了物理层和数据链路层的规范,由于本项目构建的CAN总线网络节点数目不多,所有节点都由项目组自行设计,不需要与国际标准设备进行接口,所以,这里根据本项目的具体情况,制定了一个简易的CAN应用层协议。根据厂方要求,网络初步规划应至少可容纳16个节点。上位机收集各分析仪器的信息,包括气体组分分析含量、出错信息和被测气体的一些参数,如温度、压力、流量等,也返回一些控制信息给智能节点。在每个分析周期从节点的气体组分分析结果送往主节点,主节点待收到所有待测组分含量后,将所有信息一并送往上位机。网络中的任一台分析仪器均可做为主节点或从节点,甚至在没有上位机的情况下也可以做为上位机。
在CAN系统中,以11位(标准帧)或29位(扩展帧)的标识符来标识数据的含义,标识符决定了信息的优先权和等待时间,同时也影响信息滤波的适用性。因而,合理、高效的信息标识符ID分配方案是充分发挥CAN总线性能的前提条件。
分析仪器主控制器之一F2812DSP片上共有32个邮箱,在SCC模式下0-15邮箱可用,在eCAN模式下,32个邮箱全部可用,可以很方便地实现主节点对从节点信息的接收和存储。故推荐采用主控制器为F2812的分析仪器作为该网络中的主节点,选择eCAN模式,使用标准标识符(11位),对其进行如表1所示的静态分配策略,即可满足上位机和主节点识别帧来源和帧意义的要求。
2、网络通信程序
2.1上位机端初始化
上位机端主要完成对各分析平台分析结果的采集、显示,使用PC机加CAN通讯卡KPCI-8110。KPCI-8110上集成了独立的CAN控制器SJA1000。SJA1000用于移动目标和一般工业环境中的区域网络控制(CAN),在使用前要先对其进行初始化。
上位机显示界面采用适合快速开发的可视化面向对象高级语言VB来编写。KPCI-8110CAN适配卡提供.dll驱动和.lib库函数,通过在VB程序中调用相关的驱动函数就可以实现CAN适配卡的配置和数据的读写。
上位机端接收数据的流程如图1所示。
[attach]52075[/attach]
图2上位机接口函数使用流程图
数据接收到上位机之后保存在一个大容量的内存缓冲池内,用户只需实时通过函数CAN_ReadDataNum(mindex)查询缓冲池内的数据量,再通过函数CAN_ReadBlockData(mindex,num,obyte)及时读走保存即可。其中obyte为接收数据起始指针。CAN_ClearBlock(mindex,num,obyte)为清空从obyte指针开始的缓冲池空间。
注意:由于SJA1000CAN控制器每个地址存储8位数据,而F2812内置CAN控制器每个地址存储16位数据,而且标准数据帧的标识符也不是从字节的起始位开始的,所以定义标识符的时候要按照不同控制器的要求来定义。例如F2812内置CAN控制器定义数据帧标识符为3440000(bit28-bit18为标识符位),SJA1000独立控制器对应的标识符应为1A20(bit15-bit5为标识符位)。

0 条回复

暂无讨论,说说你的看法吧!

 回复

你需要  登录  或  注册  后参与讨论!