4、基于 LABVIEW的协议实现
硬件采用 MC9S12DP51216单片机[7]。MC9S12DP51216单片机总线采用双绞线和台式上位机。
4.1定义数据结构
在 LABVIEW中,Virtual CAN Interface(VCI) 函数库是专门为 ZLGCAN设备在 PC上使用而提供的应用程序接口,可以从 LABVIEW中直接使用这些库函数。首先创建 VCI函数库德数据结构,定义数据类型为簇,并同时调用库函数[8]。
本系统的程序实现了数据的发送与接受,并通过 CAN总线将收发的数据在前面板上的列表中显示出来。该程序中含有3个主要的 While循环:主循环、发送数据循环和接受数据循环。这三个循环是并行运行的,互相独立。主循环处理处理与用户交互的界面,它使用了事件驱动机制来处理用户在前面板的操作,并通过用户事件与发送数据循环和接受数据循环通信。它包含以下功能:打开/关闭设备、超时、启动 CAN、复位 CAN、读取设备信息、读取 CAN状态、读取错误信息和清空缓冲区。
4.2数据发送和接收函数的实现 接受和发送数据通过控制面板的按钮,调用 VCI函数,并同时把数据实时显示出来。程序框图如图 2和图 3所示。
4.3 驱动模块设计
驱动模块包括超时模块、停止模块、OpenDevice模块的设计、StartCAN模块的设计、 ResetCAN模块的设计、Clear Buffer模块的设计、 GetBoradInfo模块的设计、 GetErrorInfo模块的设计、GetStatus模块的设计和 TREvent模块的设计等。各个模块都是通过在控制面板中设计控制键,并调用子函数,实现需要的功能。
其中 TREvent模块的程序框图如图 4所示。该模块主要用于显示发送和接收的数据。