隨著電子技術(shù)的發(fā)展和運動控制技術(shù)的成熟,人們開始將運動控制技術(shù)應(yīng)用于測量設(shè)備,產(chǎn)生了數(shù)控工作臺。數(shù)控工作臺是利用運動控制系統(tǒng)控制工作臺的運動機構(gòu)動作,以運動到需要的位置,大大提高了工件測量的效率。
 UML[1]是一種可用于大型系統(tǒng)建模的統(tǒng)一建模語言, 它不僅支持面向?qū)ο蟮姆治龊驮O(shè)計, 還支持軟件開發(fā)過程,利用不同的模型來描述一個應(yīng)用系統(tǒng)在不同生命周期中的各種靜態(tài)結(jié)構(gòu)方面和動態(tài)行為方面的特征, 為任何具有靜態(tài)結(jié)構(gòu)和動態(tài)行為的系統(tǒng)建模,同時提供模型擴展和管理等方面的支持。
 本文針對數(shù)控工作臺的功能特點,以自主開發(fā)的基于HCS08運動控制系統(tǒng)為平臺,并以UML為工具,設(shè)計相應(yīng)的軟件,滿足實際生產(chǎn)需要。
1 數(shù)控工作臺控制原理
 工作臺運動系統(tǒng)主要由手柄、載物臺等運動機構(gòu)組成。系統(tǒng)以Freescale HCS08型單片機為核心的運動控制器作為下位機,通過控制伺服電機驅(qū)動器來實現(xiàn)對載物臺上下、左右、前后運動的控制,以PC作為上位機來實現(xiàn)調(diào)速、自動校零、自動找零、位置顯示等。
 上下位機通過串口進行數(shù)據(jù)傳輸。工作臺工作時,用戶將測量工件(如絲桿)放在載物臺上,通過操作手柄讓載物臺走到測量范圍內(nèi),通過手柄的高低速按鍵控制電機的高速或低速運動,方便測量時的粗調(diào)和微調(diào)。
2 數(shù)控工作臺功能分析
 本文的主要任務(wù)是根據(jù)用戶對系統(tǒng)功能需求進行分析,通過對整個系統(tǒng)框架進行構(gòu)造和實現(xiàn)下位機軟件設(shè)計與建模。下位機是整個系統(tǒng)的中間層,主要功能是根據(jù)接收的數(shù)據(jù)和指令控制工作臺運動。通過上位機界面可以設(shè)定各軸的速度和電機轉(zhuǎn)動方向,以及實時位置顯示、零點位置顯示等,具體可為自動找零、校零、手動操作、伺服報警信號等。
 對于下位機,參與者包括用戶、上位機、限位開關(guān)、手柄、伺服電機。用戶除了可以通過上位機軟件顯示零點位置、實時位置之外,還可以通過調(diào)速界面調(diào)整伺服電機轉(zhuǎn)速和方向,故下位機的用戶用例為手柄控制。上位機和下位機的連接是系統(tǒng)的關(guān)鍵部分,是整個系統(tǒng)正常運轉(zhuǎn)的通道。伺服電機是動作的執(zhí)行者,根據(jù)下位機的指令進行動作,其用例主要是高低速度控制。限位開關(guān)的用例主要包括I/O信號、限位、故障報警。
 根據(jù)上面的用例分析,使用UML構(gòu)造下位機的用例圖[6],如圖1所示。

點擊看大圖

3 下位機軟件結(jié)構(gòu)
3.1下位機軟件狀態(tài)模型
 通過對數(shù)控工作臺下位機用例圖的分析可以將下位機軟件按狀態(tài)分為幾個模塊:自動找零點狀態(tài)、手動控制狀態(tài)、校零狀態(tài)、故障狀態(tài)等。采用UML狀態(tài)圖可以將參與交互的模塊及模塊之間的消息交互表示清楚,可以比較直觀、高效地建立軟件的狀態(tài)模型。建模如圖2所示。


點擊看大圖

 系統(tǒng)進入工作狀態(tài)時首先進入自動找零狀態(tài)。在自動找零狀態(tài)下,下位機主程序讀取Flash存儲[3]的信息,對3個軸的電機按照先Z軸找零,再X軸、Y軸同時找零的順序發(fā)脈沖,使工作臺運動到工作起點位置。
 一旦自動找零完成之后,系統(tǒng)狀態(tài)就會自動轉(zhuǎn)移到手動控制狀態(tài)中去。例如通過手柄控制讓電機走到某個位置,同時通過手柄上的高低速切換按鍵讓工作臺實現(xiàn)高或低速運動。

 校零是設(shè)定當(dāng)前的位置為零點位置,通過上位機操作將數(shù)據(jù)寫入Flash中,在下次上電工作時工作臺會在自動找零時,自動運行到這個設(shè)定的零點位置。由圖2可以清楚地看到,整個狀態(tài)模型可以分為4個部分:自動找零狀態(tài)、手動控制狀態(tài)(包括高低速轉(zhuǎn)換、三軸電機運動的方向)、校零狀態(tài)和故障狀態(tài)。其中故障狀態(tài)可以與其他的狀態(tài)根據(jù)轉(zhuǎn)移條件發(fā)生狀態(tài)轉(zhuǎn)移,而手動控制狀態(tài)只能與校零狀態(tài)和故障狀態(tài)根據(jù)轉(zhuǎn)移條件發(fā)生狀態(tài)轉(zhuǎn)移,其內(nèi)部各個狀態(tài)之間不能發(fā)生狀態(tài)轉(zhuǎn)移,這是由工作臺的工作特性所決定的。從上電開始工作,在同一時間內(nèi)只允許進行一種活動,只有在當(dāng)前活動結(jié)束后才允許進行其他的活動,這種工作臺的工作特性就可以用UML狀態(tài)圖[6]清晰地表現(xiàn)出來,使得任何人都能對系統(tǒng)軟件模型有比較直觀的認(rèn)識。
根據(jù)狀態(tài)來劃分整個系統(tǒng)軟件結(jié)構(gòu)[2],可以有效地對系統(tǒng)工作進行掌控,防止軟件功能互相耦合而引起邏輯混亂。簡單來說,當(dāng)系統(tǒng)正處在手動控制中,如果此時收到校零指令,系統(tǒng)就可以根據(jù)當(dāng)前狀態(tài)轉(zhuǎn)移條件轉(zhuǎn)移到校零狀態(tài),工作臺會按順序依次走到各軸的兩端限位位置,將兩端限位之間的距離保存到Flash中以便下次讀取,這樣就提高了系統(tǒng)的穩(wěn)定性和可靠性。
3.2 下位機軟件算法活動模型
鑒于數(shù)控工作臺在日常生產(chǎn)中對于控制的要求,