从图3中能够清楚地看到下位机程序就是一直循环采集和事件处理的过程。系统一上电首先对硬件模块和软件功能进行初始化设置,保证程序处在可运行状态。然后程序进入主循环,先进行事件采集,包括读写Flash、串口数据接收、限位传感器输入信号以及伺服报警信号采集。如果没有事件发生,则程序一直处于事件采集状态;如果有事件发生,则对采集到的事件进行分析决策。事件决策则是对当前系统状态进行判断和转移,决定哪些事件可以被执行。最后事件分配和事件处理则是将被允许执行的事件分配给相关的执行函数,调用相关函数来对事件进行处理,完成后返回到主循环开始,而程序也因此周而复始地一直执行下去。
由此可以看出,在程序中事件按从总体到个别的顺序被执行,每一步都有明确的目的性和层次性,条理清晰,逻辑清楚,这样就使得程序在编制和维护时简单易行。
由于下位机采用的Freescale HCS08型单片机作为控制系统核心,其运算处理速度能达到每秒20 M条指令,这样就使得下位机程序对外部事件有了较高的响应速度和处理速度,其实时性可以比较好地满足数控工作台的应用需求。
3.3 下位机软件通信模块设计
Freescale HCS08单片机采用异步通信RS-232作为串行通信协议,其适用于设备之间的通信距离不大于15 m、传输速度最大为20 KB/s的数据传输领域。本系统采用标准不归零NRZ(Non Return to Zero)的数据格式进行数据交互。
本文介绍了数控工作台下位机程序设计与建模,分析和构建了下位机软件的主要功能、实现方式和软件算法,并通过UML图分别展示了下位机供需用例图、软件状态模型和主循环活动模型。使用UML图进行软件设计使得软件层次更加清晰,结构严谨,可维护性强,充分体现出UML图[7]在面向对象的软件编程中起到的重要作用。同时,本文所叙述的软件设计与建模的方法, 对其他下位机的软件开发也有很好的借鉴作用。