3 软件系统设计
整个监控器的软件设计建立于嵌入式Linux操作系统的基础之上,因此软件设计分为系统软件设计和应用软件设计两大部分。系统软件主要为对应设备的驱动程序设备,CS8900A为常用的典型网络扩展设备,已经有既成的驱动程序;而CAN总线扩展则需要根据应用中所需要的网络协议来自定义实现。应用软件设计部分主要包括CAN服务器端的开发和WEB Server的移植。
3.1 系统软件设计
本设计采用外部中断EINT3连接MCP2510的总中断,配置控制器始终处于唤醒模式,发送器处于正常模式,并使能接收、发送、错误中断,以中断方式处理CAN总线数据收发。具体流程如图3所示。
对中断的处理主要包括以下三种模式:
(1)发送处理。在满足下述两种条件时会启动发送处理:其一发送中断响应中,如果当前有发送任务,通过发送缓冲区记录标志确定空的发生缓冲区并向其中填发送帧,然后启动发送;其二在接收中断响应中,在接收处理完后如果有发送任务且有发送缓冲区空闲,同样会处理发送任务。采用两种发送处理方式可充分利用MCP2510的多个发送、接收缓冲区,以提高通信效率。
(2)接收处理。首先需根据ICOD的值来确定当前准备好数据的接收缓冲区。接收帧处理过程中首先读取帧的ID值,确定当前帧的数据是哪个节点发送来的,并据此把帧中数据字段的数据存放在相应的位置。
(3)错误处理。由于引起错误处理的原因很多,在产生错误中断之后,需访问错误标志寄存器确定具体错误类型,并据此做相应的处理。
最后在所有的处理中都需更新发送缓冲区使用记录,以便于发送和接收中断响应中据此判断发送缓冲区的使用情况,从而确定当前是否可以做发送处理。
3.2 应用软件设计
3.2.1 CAN服务器端设计
CAN服务器端需要完成两大部分的工作。一是和底层控制器交互,二是处理并存储好相应的数据,以提供给人机界面和WEB服务器使用。
CAN总线默认的调度方式为CAMA/CD协议,该协议原理比较简单,技术上易实现,网络中各节点处于平等地位,不需集中控制,不提供优先级控制。但在网络负载增大时,发送时间增长,发送效率急剧下降,即会永远优先发送优先级高的节点而阻塞优先级低的节点,因此考虑到对该协议进行改进。为了自定义协议,因此我们的CAN数据采用了扩展帧。
针对橡塑机械需要的通信数据类型设计了如下的通信协议。主要具备以下几点特点:
(1)下位机根据仲裁段优先级来确定该段数据的优先级;
(2)优先级的分配由服务器端进行,读取初始化配置文件(包括节点编号和优先级码两个部分)+页面设定;
(3)优先级根据传输数据的截止时间决定(DM)。要求的时间越短,其优先级越高。
(4)通信数据的命令格式如图4所示,其中所有字节均为ASCII字符。
开始位必须放@,以示命令的开始。标题码为命令的代码;用”*”和回车(ASCII码为13)作为命令结束。