掃描二維碼
隨時(shí)隨地手機(jī)看文章
3 下位機(jī)軟件結(jié)構(gòu)
3.1下位機(jī)軟件狀態(tài)模型
通過對(duì)數(shù)控工作臺(tái)下位機(jī)用例圖的分析可以將下位機(jī)軟件按狀態(tài)分為幾個(gè)模塊:自動(dòng)找零點(diǎn)狀態(tài)、手動(dòng)控制狀態(tài)、校零狀態(tài)、故障狀態(tài)等。采用UML狀態(tài)圖可以將參與交互的模塊及模塊之間的消息交互表示清楚,可以比較直觀、高效地建立軟件的狀態(tài)模型。建模如圖2所示。
系統(tǒng)進(jìn)入工作狀態(tài)時(shí)首先進(jìn)入自動(dòng)找零狀態(tài)。在自動(dòng)找零狀態(tài)下,下位機(jī)主程序讀取Flash存儲(chǔ)[3]的信息,對(duì)3個(gè)軸的電機(jī)按照先Z軸找零,再X軸、Y軸同時(shí)找零的順序發(fā)脈沖,使工作臺(tái)運(yùn)動(dòng)到工作起點(diǎn)位置。
一旦自動(dòng)找零完成之后,系統(tǒng)狀態(tài)就會(huì)自動(dòng)轉(zhuǎn)移到手動(dòng)控制狀態(tài)中去。例如通過手柄控制讓電機(jī)走到某個(gè)位置,同時(shí)通過手柄上的高低速切換按鍵讓工作臺(tái)實(shí)現(xiàn)高或低速運(yùn)動(dòng)。
校零是設(shè)定當(dāng)前的位置為零點(diǎn)位置,通過上位機(jī)操作將數(shù)據(jù)寫入Flash中,在下次上電工作時(shí)工作臺(tái)會(huì)在自動(dòng)找零時(shí),自動(dòng)運(yùn)行到這個(gè)設(shè)定的零點(diǎn)位置。由圖2可以清楚地看到,整個(gè)狀態(tài)模型可以分為4個(gè)部分:自動(dòng)找零狀態(tài)、手動(dòng)控制狀態(tài)(包括高低速轉(zhuǎn)換、三軸電機(jī)運(yùn)動(dòng)的方向)、校零狀態(tài)和故障狀態(tài)。其中故障狀態(tài)可以與其他的狀態(tài)根據(jù)轉(zhuǎn)移條件發(fā)生狀態(tài)轉(zhuǎn)移,而手動(dòng)控制狀態(tài)只能與校零狀態(tài)和故障狀態(tài)根據(jù)轉(zhuǎn)移條件發(fā)生狀態(tài)轉(zhuǎn)移,其內(nèi)部各個(gè)狀態(tài)之間不能發(fā)生狀態(tài)轉(zhuǎn)移,這是由工作臺(tái)的工作特性所決定的。從上電開始工作,在同一時(shí)間內(nèi)只允許進(jìn)行一種活動(dòng),只有在當(dāng)前活動(dòng)結(jié)束后才允許進(jìn)行其他的活動(dòng),這種工作臺(tái)的工作特性就可以用UML狀態(tài)圖[6]清晰地表現(xiàn)出來,使得任何人都能對(duì)系統(tǒng)軟件模型有比較直觀的認(rèn)識(shí)。
根據(jù)狀態(tài)來劃分整個(gè)系統(tǒng)軟件結(jié)構(gòu)[2],可以有效地對(duì)系統(tǒng)工作進(jìn)行掌控,防止軟件功能互相耦合而引起邏輯混亂。簡單來說,當(dāng)系統(tǒng)正處在手動(dòng)控制中,如果此時(shí)收到校零指令,系統(tǒng)就可以根據(jù)當(dāng)前狀態(tài)轉(zhuǎn)移條件轉(zhuǎn)移到校零狀態(tài),工作臺(tái)會(huì)按順序依次走到各軸的兩端限位位置,將兩端限位之間的距離保存到Flash中以便下次讀取,這樣就提高了系統(tǒng)的穩(wěn)定性和可靠性。
3.2 下位機(jī)軟件算法活動(dòng)模型
鑒于數(shù)控工作臺(tái)在日常生產(chǎn)中對(duì)于控制的要求,以及Freescale HCS08的特點(diǎn),在設(shè)計(jì)軟件算法程序時(shí),對(duì)電機(jī)發(fā)脈沖采用PWM重載中斷的方式,這樣極大地發(fā)揮了芯片的性能,并且提高了程序的可靠性。下面采用UML活動(dòng)圖將主循環(huán)流程按照時(shí)間的順序展開,如圖3所示。
從圖3中能夠清楚地看到下位機(jī)程序就是一直循環(huán)采集和事件處理的過程。系統(tǒng)一上電首先對(duì)硬件模塊和軟件功能進(jìn)行初始化設(shè)置,保證程序處在可運(yùn)行狀態(tài)。然后程序進(jìn)入主循環(huán),先進(jìn)行事件采集,包括讀寫Flash、串口數(shù)據(jù)接收、限位傳感器輸入信號(hào)以及伺服報(bào)警信號(hào)采集。如果沒有事件發(fā)生,則程序一直處于事件采集狀態(tài);如果有事件發(fā)生,則對(duì)采集到的事件進(jìn)行分析決策。事件決策則是對(duì)當(dāng)前系統(tǒng)狀態(tài)進(jìn)行判斷和轉(zhuǎn)移,決定哪些事件可以被執(zhí)行。最后事件分配和事件處理則是將被允許執(zhí)行的事件分配給相關(guān)的執(zhí)行函數(shù),調(diào)用相關(guān)函數(shù)來對(duì)事件進(jìn)行處理,完成后返回到主循環(huán)開始,而程序也因此周而復(fù)始地一直執(zhí)行下去。
由此可以看出,在程序中事件按從總體到個(gè)別的順序被執(zhí)行,每一步都有明確的目的性和層次性,條理清晰,邏輯清楚,這樣就使得程序在編制和維護(hù)時(shí)簡單易行。
由于下位機(jī)采用的Freescale HCS08型單片機(jī)作為控制系統(tǒng)核心,其運(yùn)算處理速度能達(dá)到每秒20 M條指令,這樣就使得下位機(jī)程序?qū)ν獠渴录辛溯^高的響應(yīng)速度和處理速度,其實(shí)時(shí)性可以比較好地滿足數(shù)控工作臺(tái)的應(yīng)用需求。
3.3 下位機(jī)軟件通信模塊設(shè)計(jì)
Freescale HCS08單片機(jī)采用異步通信RS-232作為串行通信協(xié)議,其適用于設(shè)備之間的通信距離不大于15 m、傳輸速度最大為20 KB/s的數(shù)據(jù)傳輸領(lǐng)域。本系統(tǒng)采用標(biāo)準(zhǔn)不歸零NRZ(Non Return to Zero)的數(shù)據(jù)格式進(jìn)行數(shù)據(jù)交互。
本文介紹了數(shù)控工作臺(tái)下位機(jī)程序設(shè)計(jì)與建模,分析和構(gòu)建了下位機(jī)軟件的主要功能、實(shí)現(xiàn)方式和軟件算法,并通過UML圖分別展示了下位機(jī)供需用例圖、軟件狀態(tài)模型和主循環(huán)活動(dòng)模型。使用UML圖進(jìn)行軟件設(shè)計(jì)使得軟件層次更加清晰,結(jié)構(gòu)嚴(yán)謹(jǐn),可維護(hù)性強(qiáng),充分體現(xiàn)出UML圖[7]在面向?qū)ο蟮能浖幊讨衅鸬降闹匾饔?。同時(shí),本文所敘述的軟件設(shè)計(jì)與建模的方法, 對(duì)其他下位機(jī)的軟件開發(fā)也有很好的借鑒作用。
上海2022年7月6日 /美通社/ -- 近日,德國萊茵TUV大中華區(qū)(以下簡稱"TUV萊茵")作為主要參編單位出席了在上海舉辦的"零碳冷鏈園區(qū)...
關(guān)鍵字: 供應(yīng)鏈 定時(shí) 建模 操作系統(tǒng)上海2022年6月2日 /美通社/ -- 日前,國際獨(dú)立第三方檢測、檢驗(yàn)和認(rèn)證機(jī)構(gòu)德國萊茵TUV大中華區(qū)(簡稱"TUV萊茵")與國內(nèi)具有綠色金融與低碳咨詢...
關(guān)鍵字: BSP 可持續(xù)發(fā)展 建模 電池