过程分析仪器CAN 网络通信设计
[09-12 16:04:59] 来源:http://www.88dzw.com 单片机学习 阅读:8769次
文章摘要:上位机显示界面采用适合快速开发的可视化面向对象高级语言VB 来编写。KPCI-8110CAN 适配卡提供.dll 驱动和.lib 库函数,通过在VB 程序中调用相关的驱动函数就可以实现CAN 适配卡的配置和数据的读写。上位机端接收数据的流程如图2 所示。图2 上位机接口函数使用流程图数据接收到上位机之后保存在一个大容量的内存缓冲池内,用户只需实时通过函数CAN_ReadDataNum(mindex) 查询缓冲池内的数据量, 再通过函数CAN_ReadBlockData(mindex,num,obyte)及时读走保存即可。其中obyte 为接收数据起始指针。CAN_ClearBlock(mind
过程分析仪器CAN 网络通信设计,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com上位机显示界面采用适合快速开发的可视化面向对象高级语言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 分析仪器主节点程序流程图
主节点在接收到从节点传送过来的数据后,在接收成功引起的中断处理程序中对数据进行处理,然后转存到主节点的发送邮箱中,等待发送给上位机。在进行数据处理的时候要把接收邮箱中的数据赋给中间变量,处理完后再把中间变量的值赋给发送邮箱,这个过程中要注意借助指针来完成。如下所示:
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 总结
该网络通信系统在试验中得到了良好的效果,满足了多组分分析仪器的设计要求。
- 上一篇:基于CAN总线的多用户电能表设计
《过程分析仪器CAN 网络通信设计》相关文章
- › 过程分析仪器CAN 网络通信设计
- › u-boot启动过程分析——基于lpc2210的移植代码
- › 基于嵌入式uCLinux内核启动过程分析与设计
- 在百度中搜索相关文章:过程分析仪器CAN 网络通信设计
- 在谷歌中搜索相关文章:过程分析仪器CAN 网络通信设计
- 在soso中搜索相关文章:过程分析仪器CAN 网络通信设计
- 在搜狗中搜索相关文章:过程分析仪器CAN 网络通信设计