本發(fā)明涉及軟件開發(fā)領(lǐng)域,尤其是涉及一種軟件開發(fā)方法。
背景技術(shù):
隨著嵌入式系統(tǒng)復(fù)雜性的提高,嵌入式軟件的開發(fā)與維護(hù)已經(jīng)成為一項(xiàng)非常重要的工作,這就對軟件開發(fā)人員提出了更高的要求,在嵌入式軟件開發(fā)過程中,項(xiàng)目人員應(yīng)該在軟件設(shè)計(jì)中運(yùn)用現(xiàn)代的軟件工程思想和先進(jìn)的軟件開發(fā)方法。同時(shí),對于實(shí)時(shí)、嵌入式應(yīng)用軟件的開發(fā)還應(yīng)做到在軟件設(shè)計(jì)中支持實(shí)時(shí)、快速的軟件開發(fā)和維護(hù)。
同時(shí)傳統(tǒng)的設(shè)計(jì)流程圖既不能準(zhǔn)確地表達(dá)嵌入式軟件的結(jié)構(gòu),也不能有效地分析嵌入式軟件的結(jié)構(gòu),也不能有效地分析嵌入式系統(tǒng)的邏輯行為。傳統(tǒng)的嵌入式軟件開發(fā)方法是基于labview或者matlab或者simulink的涉及平臺(tái),在平臺(tái)上建立一個(gè)仿真模型,然后通過模擬信號(hào)來控制仿真模型進(jìn)行相應(yīng)的操作,并在此操作過程中將仿真模型生成可執(zhí)行的代碼,并結(jié)合單片機(jī)底層的驅(qū)動(dòng)程序?qū)刹糠殖绦蚯短自谝黄?,并通過上位機(jī)軟件或仿真器燒寫到單片機(jī)中,但是在此軟件測試過程中,項(xiàng)目人員一旦發(fā)現(xiàn)程序錯(cuò)誤或者應(yīng)用此軟件對實(shí)物的控制過程與實(shí)物的實(shí)際運(yùn)行過程不相符,就需要返回單片機(jī)中在成百上千行源代碼中查找原因,既延緩了開發(fā)進(jìn)度,又增加了開發(fā)成本,無法建立有效的軟件文檔,這些問題導(dǎo)致軟件的后期維護(hù)困難。而且在開發(fā)平臺(tái)上通過模擬信號(hào)來模擬實(shí)物的實(shí)際運(yùn)行過程中與實(shí)物實(shí)際的運(yùn)行過程中是存在一定的懸殊差距的,實(shí)物的實(shí)際運(yùn)行可能要考慮部件與部件之間的摩擦等情況,而模擬信號(hào)只是單一的模擬,中間并不存在其他信號(hào)的干擾,所以通過模擬信號(hào)所開發(fā)的軟件在應(yīng)用到真正的實(shí)物控制時(shí),可能就會(huì)存在一定的誤差。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中嵌入式軟件開發(fā)周期長,維護(hù)困難,誤差大的問題,提供一種維護(hù)方便,開發(fā)周期短,有效減小軟件開發(fā)過程中的誤差的嵌入式軟件開發(fā)方法。
為了達(dá)到上述目的,本發(fā)明通過以下技術(shù)方案來實(shí)現(xiàn)的:
一種軟件開發(fā)方法,按照以下步驟進(jìn)行:
(1)設(shè)置一控制對象和一被控對象,控制對象可控制被控對象進(jìn)行動(dòng)作;
(2)在軟件設(shè)計(jì)平臺(tái)中根據(jù)被控對象搭建仿真模型;
(3)根據(jù)控制對象的當(dāng)前動(dòng)作狀態(tài)信號(hào)控制仿真模型運(yùn)行、輸出可執(zhí)行代碼并反饋到被控對象以控制被控對象動(dòng)作;
(4)根據(jù)被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)實(shí)時(shí)修改仿真模型自身的算法直到被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)一致。
上述步驟(1)還包括以下步驟:
1)采集控制對象的當(dāng)前狀態(tài)信號(hào);
2)將所述當(dāng)前狀態(tài)信號(hào)作為輸入量輸入給所述仿真模型;
3)仿真模型根據(jù)當(dāng)前狀態(tài)信號(hào)并按照其自身算法進(jìn)行動(dòng)作仿真并生成可執(zhí)行代碼;
4)將可執(zhí)行代碼燒錄到單片機(jī)中;
5)通過單片機(jī)控制被控制對象進(jìn)行動(dòng)作。
進(jìn)一步地,在步驟4)中將所述可執(zhí)行代碼與所述單片機(jī)的底層驅(qū)動(dòng)程序相結(jié)合并燒錄到所述單片機(jī)中。
優(yōu)選地,所述軟件開發(fā)平臺(tái)為基于matlab和labview的開發(fā)平臺(tái)。
進(jìn)一步地,所述采集的控制對象的當(dāng)前狀態(tài)信號(hào)存儲(chǔ)在所述matlab的工作空間內(nèi)。
進(jìn)一步地,通過所述labview中編寫的上位機(jī)采集軟件采集控制對象的當(dāng)前狀態(tài)信號(hào),并將此信號(hào)存儲(chǔ)到所述matlab的工作空間內(nèi)。
進(jìn)一步地,通過上述上位機(jī)標(biāo)定軟件實(shí)時(shí)修改模型中的標(biāo)定參數(shù)以改變模型自身的算法。
進(jìn)一步地,所述仿真模型通過rtw實(shí)時(shí)生成工具生成可執(zhí)行代碼。
本發(fā)明具有如下的有益效果:通過軟件設(shè)計(jì)平臺(tái)與實(shí)物相結(jié)合的方式,在軟件設(shè)計(jì)平臺(tái)上根據(jù)被控對象搭建仿真模型后,將被控對象的實(shí)際控制信號(hào)作為輸入量來控制模型的運(yùn)行,并將模型生成的可執(zhí)行代碼反饋到被控對象中,且通過比較被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)實(shí)時(shí)修改仿真模型自身的算法達(dá)到對所開發(fā)的軟件進(jìn)行實(shí)時(shí)糾錯(cuò)和維護(hù),使所開發(fā)的軟件更加精確;同時(shí)通過結(jié)合實(shí)物的方式進(jìn)行嵌入式軟件開發(fā),有效縮短了其開發(fā)周期,并且有效節(jié)省了開發(fā)時(shí)間。
具體實(shí)施方式
下面結(jié)合實(shí)施例對本發(fā)明作進(jìn)一步說明。
本發(fā)明的一種軟件開發(fā)方法,首先設(shè)置一控制對象和一被控對象,控制對象可控制被控對象進(jìn)行動(dòng)作,在進(jìn)行軟件開發(fā)前,需要在相應(yīng)的軟件開發(fā)平臺(tái)中根據(jù)被控對象建立仿真模型,然后將此軟件平臺(tái)與控制對象相連,并通過此平臺(tái)采集控制對象的動(dòng)作,即采集控制對象的當(dāng)前狀態(tài),將所述采集到的控制對象的當(dāng)前狀態(tài)信號(hào)作為輸入量輸入到仿真模型中,仿真模型接收到此狀態(tài)信號(hào)后就會(huì)根據(jù)此狀態(tài)信號(hào)進(jìn)行相應(yīng)的運(yùn)行動(dòng)作生成可執(zhí)行的代碼;然后通過將此代碼燒錄到單片機(jī)中并反饋到被控對象上以控制被控對象進(jìn)行動(dòng)作。在這期間,通過被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)實(shí)時(shí)修改仿真模型自身的算法直到被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)一致。
之后,將被控對象的動(dòng)作與實(shí)際預(yù)設(shè)的動(dòng)作進(jìn)行實(shí)時(shí)比較,如果被控對象的動(dòng)作與實(shí)際預(yù)設(shè)的動(dòng)作不一致,那么對仿真模型自身的算法進(jìn)行實(shí)時(shí)修改直到被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)一致,通過這種方式所開發(fā)出來的軟件具有高精度的優(yōu)點(diǎn)。而傳統(tǒng)的軟件設(shè)計(jì)方法是通過在設(shè)計(jì)平臺(tái)中建立模擬信號(hào),通過模擬信號(hào)控制模型運(yùn)行并輸出代碼,然后將代碼燒錄到單片機(jī)中,完成相應(yīng)軟件的開發(fā)。然后再將開發(fā)的軟件單片機(jī)應(yīng)用的實(shí)物中去試驗(yàn),如果發(fā)現(xiàn)所開發(fā)的軟件與實(shí)物的實(shí)際控制過程存在出入就再返回來再去尋找誤差并消除誤差,整個(gè)開發(fā)過程用時(shí)比較長,嚴(yán)重浪費(fèi)了科研人員的時(shí)間。本實(shí)施例中軟件設(shè)計(jì)平臺(tái)優(yōu)選為基于matlab和labview的開發(fā)平臺(tái);也可以選用其他軟件設(shè)計(jì)平臺(tái),其基本的設(shè)計(jì)思路是一樣的。
首先,在所述設(shè)計(jì)平臺(tái)中根據(jù)被控對象建立仿真模型;所述仿真模型需要基于控制對象的當(dāng)前狀態(tài)信號(hào)作為其自身的輸入信號(hào),并通過仿真模型自身的算法進(jìn)行相應(yīng)的動(dòng)作運(yùn)算并執(zhí)行相應(yīng)的運(yùn)行。
其中,所述仿真模型的算法可以根據(jù)其自身的標(biāo)定參數(shù)做相應(yīng)修改,只要能夠改變其仿真模型的標(biāo)定參數(shù),其模型內(nèi)部相應(yīng)的算法就會(huì)發(fā)生變化;而對仿真模型相應(yīng)參數(shù)的修改方式有很多種,這里優(yōu)選采用通過上位機(jī)標(biāo)定軟件對仿真模型的標(biāo)定參數(shù)進(jìn)行修改。所述設(shè)計(jì)平臺(tái)可通過具有采集信號(hào)功能的采集卡對控制對象的當(dāng)前狀態(tài)信號(hào)進(jìn)行采集,為了節(jié)約成本,這里優(yōu)選采用labview采集軟件對控制對象的當(dāng)前狀態(tài)信號(hào)進(jìn)行采集,并將采集到的狀態(tài)信號(hào)輸入到設(shè)計(jì)平臺(tái)中的仿真模型中。為了提高軟件設(shè)計(jì)平臺(tái)的信息處理速度及擴(kuò)大其內(nèi)部存儲(chǔ)量,優(yōu)選地,將labview采集到的控制對象的當(dāng)前狀態(tài)信號(hào)輸入到matlab工作空間內(nèi)。matlab工作空間作為該軟件設(shè)計(jì)平臺(tái)的儲(chǔ)存空間,將存儲(chǔ)所采集的控制對象的當(dāng)前狀態(tài)信號(hào),并將該當(dāng)前狀態(tài)信號(hào)作為仿真模型的輸入量發(fā)送給所述仿真控制模型。
仿真模型整個(gè)運(yùn)行過程可以通過平臺(tái)中的rtw實(shí)時(shí)生成工具生成可執(zhí)行代碼,然后將所生成的代碼燒錄到單片機(jī)中并通過此單片機(jī)控制被控對象的動(dòng)作。期間,通過比較被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)實(shí)時(shí)反復(fù)修改仿真模型自身的算法直到被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)一致。
為了能夠使方案具有通用性,本實(shí)施例中,作為一種優(yōu)選的技術(shù)方案,可將仿真控制模型生成的可執(zhí)行代碼結(jié)合單片機(jī)的底層驅(qū)動(dòng)程序相結(jié)合燒錄到單片機(jī)中,在實(shí)際應(yīng)用中,針對不同廠家,不同型號(hào)的單片機(jī),只要修改底層驅(qū)動(dòng)程序的驅(qū)動(dòng)代碼,就可以順利移植到任何一款單片機(jī)上,在一定程度上解決了代碼跨平臺(tái)移植的問題。
接下來,詳細(xì)描述一下本發(fā)明一種實(shí)施例軟件設(shè)計(jì)流程。
第一步,在軟件設(shè)計(jì)平臺(tái)中根據(jù)被控對象搭建仿真模型;
第二步,采集控制對象的當(dāng)前狀態(tài)信號(hào);這里優(yōu)選采用labview采集軟件采集控制對象的當(dāng)前狀態(tài)信號(hào);
第三步,將所述當(dāng)前狀態(tài)信號(hào)作為輸入量輸入給所述仿真模型。優(yōu)選地,所述labview采集軟件采集的控制對象的當(dāng)前狀態(tài)信號(hào)首先發(fā)送到matlab工作空間進(jìn)行存儲(chǔ),然后在matlab工作空間中調(diào)取此狀態(tài)信號(hào)作為輸入量輸入給所述仿真模型。;
第四步,仿真模型根據(jù)當(dāng)前狀態(tài)信號(hào)并按照自身算法進(jìn)行動(dòng)作仿真并生成可執(zhí)行代碼。生成代碼的方式可以為手工生成代碼,也可以為自動(dòng)生成代碼,此處優(yōu)選采用自動(dòng)生成代碼,即通過rtw實(shí)時(shí)生成工具生成可執(zhí)行代碼。而且通過自動(dòng)生成代碼的方式可以有效避免手工生成代碼中出現(xiàn)的認(rèn)為錯(cuò)誤,有效提高軟件的開發(fā)精度;
第五步,將所生成的可執(zhí)行代碼燒錄到單片機(jī)中。這里作為一種優(yōu)選的方案,可將所生成的代碼與所述單片機(jī)的底層驅(qū)動(dòng)程序相結(jié)合并燒錄到所述單片機(jī)中。
第六步,通過單片機(jī)控制被控對象進(jìn)行動(dòng)作,并比較被控對象的動(dòng)作狀態(tài)與被控對象實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)。
其中,當(dāng)被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)一致時(shí),完成軟件開發(fā)進(jìn)入結(jié)束狀態(tài);當(dāng)被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)不一致時(shí),修改仿真模型自身的算法直到被控對象的動(dòng)作狀態(tài)與實(shí)際預(yù)設(shè)的動(dòng)作狀態(tài)一致。這里優(yōu)選采用通過上位機(jī)標(biāo)定軟件對仿真模型的標(biāo)定參數(shù)進(jìn)行修改從而實(shí)現(xiàn)對仿真模型的算法的修改。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,對于本領(lǐng)域的技術(shù)人員來說,其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。