智能节点分析仪器端的编程采用 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 总结
该网络通信系统在试验中得到了良好的效果,满足了多组分分析仪器的设计要求。