摘 要:以自主开发的基于FreescaleHCS08的运动控制嵌入式系统为平台,以用户对数控工作台的需求为基础,采用统一建模语言UML建立数控工作台下位机用例图,根据对用例图的分析建立系统下位机状态模型,明确各个状态模型之间相互转移的条件和约束关系,并对软件总体流程做较为严谨的设计,使设计出来的下位机程序不仅能够满足用户对系统功能的需要,而且具有较高的可靠性和可维护性。
关键词:HCS08; 数控工作台; 统一建模语言;用例; 状态模型
随着电子技术的发展和运动控制技术的成熟,人们开始将运动控制技术应用于测量设备,产生了数控工作台。数控工作台是利用运动控制系统控制工作台的运动机构动作,以运动到需要的位置,大大提高了工件测量的效率。
UML[1]是一种可用于大型系统建模的统一建模语言, 它不仅支持面向对象的分析和设计, 还支持软件开发过程,利用不同的模型来描述一个应用系统在不同生命周期中的各种静态结构方面和动态行为方面的特征, 为任何具有静态结构和动态行为的系统建模,同时提供模型扩展和管理等方面的支持。
本文针对数控工作台的功能特点,以自主开发的基于HCS08运动控制系统为平台,并以UML为工具,设计相应的软件,满足实际生产需要。
1 数控工作台控制原理
工作台运动系统主要由手柄、载物台等运动机构组成。系统以Freescale HCS08型单片机为核心的运动控制器作为下位机,通过控制伺服电机驱动器来实现对载物台上下、左右、前后运动的控制,以PC作为上位机来实现调速、自动校零、自动找零、位置显示等。
上下位机通过串口进行数据传输。工作台工作时,用户将测量工件(如丝杆)放在载物台上,通过操作手柄让载物台走到测量范围内,通过手柄的高低速按键控制电机的高速或低速运动,方便测量时的粗调和微调。
2 数控工作台功能分析
本文的主要任务是根据用户对系统功能需求进行分析,通过对整个系统框架进行构造和实现下位机软件设计与建模。下位机是整个系统的中间层,主要功能是根据接收的数据和指令控制工作台运动。通过上位机界面可以设定各轴的速度和电机转动方向,以及实时位置显示、零点位置显示等,具体可为自动找零、校零、手动操作、伺服报警信号等。
对于下位机,参与者包括用户、上位机、限位开关、手柄、伺服电机。用户除了可以通过上位机软件显示零点位置、实时位置之外,还可以通过调速界面调整伺服电机转速和方向,故下位机的用户用例为手柄控制。上位机和下位机的连接是系统的关键部分,是整个系统正常运转的通道。伺服电机是动作的执行者,根据下位机的指令进行动作,其用例主要是高低速度控制。限位开关的用例主要包括I/O信号、限位、故障报警。
根据上面的用例分析,使用UML构造下位机的用例图[6],如图1所示。
3 下位机软件结构
3.1下位机软件状态模型
通过对数控工作台下位机用例图的分析可以将下位机软件按状态分为几个模块:自动找零点状态、手动控制状态、校零状态、故障状态等。采用UML状态图可以将参与交互的模块及模块之间的消息交互表示清楚,可以比较直观、高效地建立软件的状态模型。建模如图2所示。
系统进入工作状态时首先进入自动找零状态。在自动找零状态下,下位机主程序读取Flash存储[3]的信息,对3个轴的电机按照先Z轴找零,再X轴、Y轴同时找零的顺序发脉冲,使工作台运动到工作起点位置。
一旦自动找零完成之后,系统状态就会自动转移到手动控制状态中去。例如通过手柄控制让电机走到某个位置,同时通过手柄上的高低速切换按键让工作台实现高或低速运动。
校零是设定当前的位置为零点位置,通过上位机操作将数据写入Flash中,在下次上电工作时工作台会在自动找零时,自动运行到这个设定的零点位置。由图2可以清楚地看到,整个状态模型可以分为4个部分:自动找零状态、手动控制状态(包括高低速转换、三轴电机运动的方向)、校零状态和故障状态。其中故障状态可以与其他的状态根据转移条件发生状态转移,而手动控制状态只能与校零状态和故障状态根据转移条件发生状态转移,其内部各个状态之间不能发生状态转移,这是由工作台的工作特性所决定的。从上电开始工作,在同一时间内只允许进行一种活动,只有在当前活动结束后才允许进行其他的活动,这种工作台的工作特性就可以用UML状态图[6]清晰地表现出来,使得任何人都能对系统软件模型有比较直观的认识。
根据状态来划分整个系统软件结构[2],可以有效地对系统工作进行掌控,防止软件功能互相耦合而引起逻辑混乱。简单来说,当系统正处在手动控制中,如果此时收到校零指令,系统就可以根据当前状态转移条件转移到校零状态,工作台会按顺序依次走到各轴的两端限位位置,将两端限位之间的距离保存到Flash中以便下次读取,这样就提高了系统的稳定性和可靠性。
3.2 下位机软件算法活动模型
鉴于数控工作台在日常生产中对于控制的要求,以及Freescale HCS08的特点,在设计软件算法程序时,对电机发脉冲采用PWM重载中断的方式,这样极大地发挥了芯片的性能,并且提高了程序的可靠性。下面采用UML活动图将主循环流程按照时间的顺序展开,如图3所示。
从图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]在面向对象的软件编程中起到的重要作用。同时,本文所叙述的软件设计与建模的方法, 对其他下位机的软件开发也有很好的借鉴作用。
参考文献
[1] BERGENTI F, POGGI A. Supporting agent-oriented modelling with UML [J]. International Journal of Software Engineer and Knowledge Engineering,2002,12(6):605-618.
[2] LUCKHAM D C, VERA J. An event-based architecture definition language[J]. IEEE Transactions on Software Engineering, 1996,21(9):717-734.
[3] 余永权.89系列Flash单片机原理及应用[M].北京:电子工业出版社,1997.
[4] 叶旺胜,王宜怀,刘晓升. HCS08 MCU背景调试技术的研究与底层设计[J].军民两用技术与产品,2007(4):39-40,46.
[5] 余翔, 吴友宇.基于89S51单片机的微型热敏打印机软件设计[J]. 微计算机信息,2007,1(2):12-2.
[6] Hans-Erik Eriksson, Magnus Penker著.UML工具箱[M]. 俞俊平,余安萍,徐敏,等,译. 北京:电子工业出版社, 2004.
[7] GOMAA H著. 用UML设计并发、分布式、实时应用[M].吕庆中,李烨,罗方斌,译.北京:北京航空航天大
学出版社,2004.