基于CAN总线的嵌入式设备状态监测平台设计
用“LENS”指令告诉主节点,本次采样长度是多少,便于主节点在接收数据的时候统计,是否接收到了数量正确的数据。从节点开始发送数据,最后发送“ENDD”指令,告诉主节点数据传送结束。主节点的数据标识清空,回到初始状态。这样完成了一轮数据采样、发送过程。
2.4 μC/OS嵌入式操作系统
首先,已经将板级支持包编写完毕,而嵌入式系统首先是单板运行,其次是将底层软件用任务的方式重新编写。在单板运行嵌入式系统就是移植的过程,主要有:
①定义常量的值,声明数据类型、堆栈参数;
②编写堆栈初始化参数;
③编写任务切换的函数,还有在中断函数中提供时钟中断,即给操作系统时钟使用。
移植完成之后,进行任务的编写。分配给7个任务不同的优先级、堆栈资源和运行方式。其中,App_TaskStart是全部任务的起始点,优先级最高,由这个任务来建立其他任务,并且启动统计任务。App_TaskCreate建立了其他所有的任务。AppTaskUSerIF任务实现用户界面,Task_CAN任务实现CAN报文接收,Task_FatFileWR任务实现FatFs文件读写,AppTaskKbd任务实现触摸驱动,Clock_Update任务实现秒更新。
任务的周期性启动在建立任务时确定,例如AppTaskUserIF任务始终在运行,采用WM_Exec函数做界面更新。AppTaskKbd是10 ms周期读取触摸坐标,实现绘制鼠标箭头和触控功能。
信号量是在所有任务建立之前建立。CAN_MBOX是采用OSMboxCreate建立的邮箱信号量,能够传送CAN接收中断的消息以启动CAN任务,FLAGRECORD是OSFlagCreate建立的多值信号量,能置位4位,启动文件读写任务。ClocK_SEM是OSSemCreate建立的二值信号量,专门用于秒更新中断的信号量。
CAN_MBOX=OSMboxCreate((void*)0);
//建立CAN接收任务的消息邮箱
FLAGRECORD=OSFlagCreate(0,err);
//建立记录文件的开关量
Clock_SEM=OSSemCreate(1);
//建立秒更新中断的信号量
在运行μC/OS之后,还可以在os_cfg.h函数中关闭OS不需要的功能模块,以达到裁减系统、节约内存空间的目的。
2.5 μC/GUI显示界面
需要先移植,再设计界面。移植过程可以参考其他文献。设计界面分成两步:第一步是写软件框架,第二步是设计具体界面。每一个对话框都是用创建函数建立,创建函数会调用事先定义的资源,包括控件的形式、位置、大小、初始化值等,对话框还指定了相应的回调函数,通过回调函数操作对话框的行为,完成初始化、绘制、按钮响应等。代码如下:
值得注意的是,建立对话框有两种函数,即阻塞型和非阻塞型。采用非阻塞型的对话框才能在多对话框的操作中实现同步更新。不然,当前对话框使能就会阻塞显示其他对话框。
GUI_CreateDialogBox(); //非阻塞型
GUI_ExecDialogBox(); //阻塞型
界面设计的细化绘制工作集中在:①初始化时,控件资源决定了界面的布置和美观;②在回调函数中,按钮响应函数决定了对话框完成任务的流程。图8所示是主节点运行界面的主对话框。
2.6 适配从节点
按照主节点的界面和状态机,修改程序以适配从节点监控设备运行状态的任务需求。目前设计了3种从节点:一是采集温度和湿度;二是采集压力;三是标准数据采集及传输。从节点的程序结构和主节点是一致的,需要修改的地方有:
①CAN总线通信协议采用的是从节点的应答指令和状态机;
②显示界面的资源与布置需修改。对不需要的任务做屏蔽,节省资源和空间。
图9所示为第三个从节点的界面。
3 系统应用
通过总线方式将一个主节点和三个从节点连接。主节点选择500 kbps的波特率,收到从节点发来的状态确认良好的消息,主节点的当前状态显示块从黄色变成绿色。从节点1和节点2选择数据发送间隔,按下传输按钮,将温度、湿度及压力数值传送给主节点显示。
采样测试中,在需要采集的时刻单击主节点按钮,从节点开始采样,进度条运行。点击“Transfer”按钮后,从节点和主节点的传输进度条走动一致,完成传输后又恢复
了初值。说明正常完成数据采集、传输的过程,发送的数据被完整接收。
接收完数据,主节点通过USB线连接电脑,就显示为一个U盘,其中txt文件是接收的采样数据,文件名为记录的实时日期和时间。
结语
本文设计的基于总线的嵌入式设备状态监控平台具有主、从节点的分层次结构。总线结构可靠性高,使用数量多。从节点多种模式能够适应丰富的设备健康状态监控,且每个节点的界面具有交互性。嵌入式系统提供了很好的平台,便于拓展任务,本监控平台具有很强的实用价值。
- 对TTCAN的分析(05-26)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- μC/OS-II的多任务信息流与CAN总线驱动(07-11)
- 采用CAN总线实现DSP芯片程序的受控加载(11-08)
- 基于DSP的电动汽车CAN总线通讯技术设计(10-08)
- 基于DSP的CANopen通讯协议的实现(01-18)