为了让各个分布式模块之间能协同高效工作,对数据传输之间的格式和意义做一个规定,这就是应用层协议。
2.1 CAN总线的应用层协议
控制系统之间需要一定的协议支持,本系统采用一主多从的控制模式,主控模块作为传感信号的接受者、处理者和驱动信号的发布者;信号输入模块作为信息的采集者和过滤者;而伺服控制模块和阀驱动模块作为动作的执行者(如图4)。
在信息控制面,主控模块要向其他控制模块发送“建立连接”请求,在收到所有模块的“连接应答”之后才开始工作,否则发出连接错误信息,并指出没有连接的模块。主控模块可以通过“数据上报”命令和“数据停止上报”命令打开和关闭主控模块与信号输入模块之间的链路。“执行器开始”命令和“执行器停止”命令用于开始或停止驱动器,这里可以指直流电机或者气动阀。
2.2 CAN总线的数据帧结构
CAN接受一帧最多为8字节,本文规定了应用层协议,如表1。
源地址是指命令的发起者;数据/命令表示本帧是命令面信息还是数据面信息;功能则表示本帧的作用,比如“建议连接”请求;数据位数表示数据的字节数,最多四位,对于命令帧则忽略该位。
3 软件开发平台
根据不同机械系统的要求,设计人员可以选择不同的硬件组合。为了方便软件设计,本控制器采用了笔者开发的CSOS操作系统,该操作系统基于时间片轮换算法,支持多任务操作,各任务之间的数据通过全局变量传递,占用系统资源少、易学、易用,适合本控制系统的要求。
3.1 控制器的多任务操作
信息接受任务,包括外部传感器的信号,或者总线上的命令信息和数据信息,将信息解包之后获得有用的数据(如CAN协议帧中的有用信息段)扔向数据通道,提供其他任务调用。
算法处理任务,从数据通道获取信息字段,经过计算将结果扔向数据通道。
信息输出任务,对算法任务数据结果进行打包向驱动器或者CAN总线发送,用于驱动控制器或者向CAN总线投放数据包。
LCD显示任务和键盘输入任务,这两个任务分别负责数据显示和键盘的输入。