咨詢電話
ENGLISH0755-88840386發(fā)布時(shí)間:2021-06-25 14:57:00 |來源:網(wǎng)絡(luò)轉(zhuǎn)載
—、前言
現(xiàn)代電子衡器是由專用稱重儀表、稱重傳感器、秤體三部分組成的。通常,這三部分都藕影響整個(gè)電子秤系統(tǒng)的準(zhǔn)確性、穩(wěn)定性和可靠性。然而,除去硬件的因素,依靠軟頌來確保系統(tǒng)高精度高計(jì)量功能,則完全是由專用稱重儀表來提供的,這就是電子衡器為專用稱重功能。
電子衡器的專用稱事功能,是以軟件形式表現(xiàn)出新的。在研制過程也盡可能空發(fā)揮微處理機(jī)的優(yōu)點(diǎn),力親硬件功能模塊化的同時(shí)實(shí)現(xiàn)矗功能模塊化,能夠用軟件賣現(xiàn)的功能都盡量采用軟件去實(shí)現(xiàn),做到一次開發(fā),長(zhǎng)期受益,有利于功能鏟展和降低成本。如圖1所示為該稱重儀表的系統(tǒng)程序流程圖。為了提髙實(shí)時(shí)能方,縮短軟件的處理時(shí)間,該軟件全部采用Z80匯編語言設(shè)計(jì)而成。
二、系統(tǒng)軟件的變體實(shí)現(xiàn)及特點(diǎn)
和硬件研制相比,軟件設(shè)計(jì)具有更多的靈活性。但是,研制軟件所需的時(shí)間和費(fèi)用,往往是一個(gè)不易估計(jì)的問題。對(duì)于一個(gè)比較簡(jiǎn)單,規(guī)模較小的應(yīng)用程序,通常只須用程序流程圖就足以說明所有的問題。如果程序比較復(fù)雜、規(guī)模很大,則程序設(shè)計(jì)將面臨一些其它問題。例如,如何把整個(gè)程序劃分成模塊,如何把程序編得清楚明了,便于査錯(cuò)和測(cè)試等。實(shí)踐證明,一個(gè)好的應(yīng)用軟件,不僅要能夠執(zhí)行規(guī)定的任務(wù),而且在開始獲計(jì)時(shí),就應(yīng)該考慮到維護(hù)和再設(shè)計(jì)的方便,使它具有足夠的靈活性、可擴(kuò)充性和可移植性。
由于系統(tǒng)軟件比較復(fù)雜,規(guī)模較大。因此,在具體程序設(shè)計(jì)中采用了程序流程圖、模決化程序設(shè)計(jì)、結(jié)構(gòu)化程片設(shè)計(jì)這三種方法同時(shí)并川的方式,比較好地解決了以上兩個(gè)問題,滿足了用戶提出的性能指標(biāo)及功能要求,從而得到-•個(gè)可靠性高,可讀性強(qiáng)且效率較優(yōu)的系統(tǒng)程序。
1,系統(tǒng)軟件的總體布局及功能
從整個(gè)軟件系統(tǒng)來說,采用的方法是繪制流程圖并配以詳盡的文件編制。從圖1可以看出,它以直觀、易于理解的方式對(duì)所要求的任務(wù)作出了詳細(xì)描述.這樣,一方面有利于在程序設(shè)計(jì)時(shí)很容易地從流程圖轉(zhuǎn)變成程序;另一方面,若有較大的問題出現(xiàn),也便于以此作為依據(jù),重新進(jìn)行軟、硬件的協(xié)調(diào)工作。同時(shí),為今后的軟件維護(hù)和再設(shè)計(jì)提供了很大方便。
適當(dāng)?shù)奈募幹剖擒浖O(shè)計(jì)的重要內(nèi)容。它以對(duì)用戶和維護(hù)人員最為合適的形式來描述程序,不僅有助于進(jìn)行査錯(cuò)和測(cè)試,而且對(duì)程序的使用和擴(kuò)充,也是必不可少的。
該系統(tǒng)軟件的完整文件,涉及如下一些內(nèi)容'
•總流程圖及各功能鍵、各模塊流程圖
•程序的功能說明
•所有參量的定義清單
•存貯單元的分配圖 /
•完整的程序清單和注釋
•測(cè)試計(jì)劃和測(cè)試結(jié)果說明
在整個(gè)系統(tǒng)設(shè)汁中,由軟件來實(shí)現(xiàn)的功能主要有以下幾點(diǎn):
①開機(jī)自動(dòng)進(jìn)入檢査筆劃程序,檢査4個(gè)指示燈,顯示出儀器型號(hào)并自動(dòng)清零。
②多種貨物設(shè)定功能。
③重量顯示功能。校驗(yàn)狀態(tài)為30000碼,使用狀態(tài)下為3000碼。
④量程及功能自動(dòng)選擇。由三組8位微型撥動(dòng)開關(guān)來改變最程及功能選擇。
⑤自動(dòng)追零功能,具有長(zhǎng)期的穩(wěn)定性。
⑥去皮功能(重新校零)。
⑦可作金額、體積、含水率、固定皮重差這四種附加運(yùn)算。
⑧具有日?qǐng)?bào)、月報(bào)的累計(jì)打印功能,并可進(jìn)行日?qǐng)?bào)統(tǒng)計(jì)。
⑨制作車輛登記一覽表。
⑩次數(shù)累計(jì)。將一天或一個(gè)月貨物的次數(shù)累計(jì)。
?互鎖禁止功能。如日?qǐng)?bào)、月報(bào)統(tǒng)計(jì)鍵與消除開關(guān)的連鎖,并有蜂鳴器報(bào)警,從而避免了因操作錯(cuò)誤將統(tǒng)計(jì)數(shù)據(jù)沖掉。
?操作錯(cuò)誤自診斷功能。具有Errl?Errl3顯示。
?超載顯示報(bào)警功能。
?蜂鳴器用于指示鍵接觸是否良好。
此外,還有打印票據(jù)的修正,累計(jì)值的修正等功能。
2,系統(tǒng)軟件的模塊化設(shè)計(jì)
由于模塊比程序小,采用模塊化程序設(shè)計(jì)便于設(shè)計(jì)、測(cè)試,從而大大提高了軟件的可靠性。如果模塊間的耦合強(qiáng)度大,那么,盡管單個(gè)模塊的可靠性高,但所組成的程序的可靠性仍然很低。而耦合強(qiáng)度的強(qiáng)弱取決于模塊間共享與互相引用(或調(diào)用)數(shù)據(jù)的多少與頻率。因此,應(yīng)盡量減少使用公共數(shù)據(jù),減少模塊間的相互作用,從而提高軟件的可靠性。實(shí)際中,模塊是按以下兩種原則進(jìn)行分割的,即按功能分割與,以數(shù)據(jù)為中心分割,前者把功能相似或相關(guān)的操作集中于一個(gè)模塊中,后者把對(duì)一個(gè)或一類數(shù)據(jù)所作
的操作集中在同一模塊中。
本系統(tǒng)軟件中,大量采用模塊化程序設(shè)計(jì)方法,冇以下優(yōu)點(diǎn):
①作為一個(gè)具有某種功能、相對(duì)獨(dú)立的模塊比起一個(gè)完整的程序要相對(duì)容易編寫、査錯(cuò)、修改和測(cè)試。
②模塊可以共享,一個(gè)模塊可能被多個(gè)任務(wù)在不同的條件下調(diào)用。這樣,一方面減少了不必要的程序段,提高軟件的可靠性,另一方面,增強(qiáng)了程序的可讀性,為程序的維護(hù)和再設(shè)計(jì)提供了方便,使它具有足夠的靈活性、可擴(kuò)充性和可移植性。
③模塊化程序設(shè)計(jì)方法允許將任務(wù)進(jìn)行分割,并為利用一些已有的程序提供了很大的方便,從而進(jìn)一步加快了軟件研制速度,縮短了硏制周期。
3.A/D中斷實(shí)時(shí)數(shù)據(jù)處理程序
如上所述,采用模塊化程序設(shè)計(jì)方法的優(yōu)點(diǎn)是很突出的。但是在該稱重儀表應(yīng)用軟件的編制過程中,某些程序(如A/D中斷數(shù)據(jù)處理程序及其它功能鍵程序)難以模塊化,因此采用了結(jié)構(gòu)化程序設(shè)計(jì)方法。釆用這種方法的優(yōu)點(diǎn)主要在于能夠編寫出操作順序分明、便于査錯(cuò)和糾正錯(cuò)誤的程序,使其保持簡(jiǎn)明性,盡可能提高軟件的可維護(hù)性及可舞性。
如圖2所示為非結(jié)構(gòu)化程序流程圖??梢钥闯?,如果在模塊B中發(fā)生一個(gè)錯(cuò)誤,則該錯(cuò)誤可能有5個(gè)來源。為了糾正這一錯(cuò)誤,不僅要檢査每個(gè)可能的序列,而且還必須保證所作的任何變更,不會(huì)對(duì)其它的序列產(chǎn)生影響。這就往往使測(cè)試工作顧此失彼,給閱讀和査錯(cuò)帶來了很大困難。
解決這一問題的方法就是采用結(jié)構(gòu)化的程序設(shè)計(jì)。如圖3所示。顯然,它具有以下幾個(gè)優(yōu)點(diǎn),
①由于每個(gè)結(jié)構(gòu)只有一個(gè)入口和一個(gè)出口,因此,操作順序易于跟蹤,便于査錯(cuò)和測(cè)試。
②每個(gè)模塊的錯(cuò)誤來源是單一的。
③程序本身容易用程序框圖來描述。結(jié)構(gòu)化的程序已經(jīng)接近文件編制,因而閱讀比較容易。
④理論上已經(jīng)證明,利用上述基本結(jié)構(gòu),可以構(gòu)成所有的程序。實(shí)踐也證明,這種設(shè)計(jì)方法對(duì)于提高軟件設(shè)計(jì)的工作效率是有益的。
基于上述優(yōu)點(diǎn),在A/D中斷數(shù)據(jù)處理程序中采用了結(jié)構(gòu)化程序設(shè)計(jì)方法。其它功能健的具體程序中也廣泛采用了這種方法。
在軟件設(shè)計(jì)過程中,本文不僅要考慮系統(tǒng)程序的可靠性、可讀性,還要考慮到它的效率問題。一般來說,服務(wù)于不同目標(biāo)的程序有不同的效率要求。一些使用頻繁的軟件,在不犧牲可靠性的情況下,效率成為主要目標(biāo)。在本系統(tǒng)軟件中,A./D中斷數(shù)據(jù)處理程序是使用最為頻繁的。但是,即使對(duì)程序的時(shí)間或空間要求很嚴(yán)格,也不應(yīng)在程序設(shè)計(jì)技巧上下太大功夫,而應(yīng)在選擇設(shè)計(jì)算普時(shí)就應(yīng)該選擇能滿足或接近于滿足給定時(shí)空要求的算法。一個(gè)好的算法所節(jié)省的時(shí)間或空間往往是無法通過對(duì)程序進(jìn)合優(yōu)化所能節(jié)省出來的。
在這里,量程轉(zhuǎn)換倍率X1,x2,x5,X10,x20,X50就是通過加法來實(shí)現(xiàn)的,也就是把速度慢的運(yùn)算用速度快的算法代替。舉例如下:
而在A/D中斷數(shù)據(jù)處理程序中R*10,R/10是由左移、右移指令來實(shí)現(xiàn)的。它們都是以枷牲可讀性及空間為代價(jià)來提高軟件的效率的,這比調(diào)用一個(gè)乘法子程序和除法子程序其執(zhí)行速度相對(duì)地要快得多。
A/D中斷處理程序還包括自動(dòng)零點(diǎn)追蹤功能。自動(dòng)零點(diǎn)追蹤是指每次采樣零跟蹤范圍,太大將影響計(jì)量準(zhǔn)確性,太小將不能保證儀表的零點(diǎn)。本系統(tǒng)軟件中控制在l/4d左右。
稱重儀表的零點(diǎn)值是隨環(huán)境因素、工作條件的變化而變化的。過去,儀器用硬件來消除零漂,但精度一高,時(shí)間一長(zhǎng),零點(diǎn)值就很難穩(wěn)定在零。使用微處理機(jī)以后,即使采樣到視為零的基數(shù)值,也可能是隨機(jī)的。為解決這個(gè)問題,在微處理機(jī)每次處理A/D數(shù)據(jù)的過程中,測(cè)試零點(diǎn)值,以修正原存儲(chǔ)的零點(diǎn)值(取而代之)。需注意兩個(gè)問題:①正在測(cè)量時(shí)不能將測(cè)量值誤認(rèn)為零點(diǎn)值(即只對(duì)寫點(diǎn)進(jìn)行自動(dòng)追蹤),此時(shí)要保存原有的零點(diǎn)值,只有在測(cè)量間隙才繼續(xù)自動(dòng)校正,②零點(diǎn)值的自動(dòng)校正,可能要影響分辨力,但儀表的分辨力不應(yīng)降低。釆用的方法是將每次測(cè)得的數(shù)據(jù)與原存零點(diǎn)值求相對(duì)差,當(dāng)差值大于n即認(rèn)為非零點(diǎn)并建立標(biāo)志;反之則取代原存零點(diǎn)值,儲(chǔ)存該次測(cè)試結(jié)果。n必須根據(jù)精度要求來確定。選n=3。如圖4所示為自動(dòng)零點(diǎn)追蹤的框圖。由于采用了軟件調(diào)蓼,因而零點(diǎn)具有長(zhǎng)期的穩(wěn)定性。不僅克服了由于電路自身,傳感器及現(xiàn)場(chǎng)等引起的漂移,而且為保證系統(tǒng)的穩(wěn)定可靠創(chuàng)造了很好的條件。
4.打印程序的設(shè)計(jì)
在汽車衡等智能儀表及單機(jī)自動(dòng)控制系統(tǒng)中,越來越迫切需要具有較為理想的漢字打印機(jī)作為外部輸出設(shè)備。
從1986年開始汽車衡的研制工作,就對(duì)打印輸出的格式提出了要求,即為要打印成表格式的清單。格式如下:
1987年10月23日11時(shí)25分
序號(hào):157車號(hào):51928
貨號(hào):105皮重:6720kg
代號(hào):24凈重:14880kg
潔單要以漢字的形式輸出,而漢字的筆劃很復(fù)雜。因此,字符輪式的打印機(jī)不能采用?,F(xiàn)有的各種點(diǎn)陣式微型打印機(jī)有些只能與單一型號(hào)的單板機(jī)配套,有些雖然通用,但硬件結(jié)構(gòu)過于復(fù)雜而且要占用主機(jī)的I/。通道作為數(shù)據(jù)通訊線;有些價(jià)格很昂貴,不利于今后民品的開發(fā)。它們最大的弱點(diǎn)就是不能方便地打印出較為理想的漢字,因?yàn)槠渥址M成一般均為5x7點(diǎn)陣,而能用5x7點(diǎn)陣組成的漢字為數(shù)極少。
本文在TP801P打印機(jī)的基礎(chǔ)上,在其硬件線路基本不改的情況下,對(duì)其軟件進(jìn)行了重新設(shè)計(jì)(TP801P打印機(jī)最大的弱點(diǎn)就是無法象打印字母及ASCII代碼那樣實(shí)現(xiàn)復(fù)雜漢字的打印輸出)。提出在微型針式打印機(jī)中釆用9X16點(diǎn)陣(漢字采用該點(diǎn)陣)來組成字庫的設(shè)想,并于1987年2月調(diào)試完畢。由于本文對(duì)軟件進(jìn)行了重新編制,使釆用TP801P硬件線路的可能得以實(shí)現(xiàn),從而大大縮短了整個(gè)系統(tǒng)的研制周期,降低了整個(gè)系統(tǒng)的研制成本,提高了可靠性(TP801P的硬件線路極少,只有必要的接口和打印驅(qū)動(dòng)電路,打印功能兒乎完全靠軟件來實(shí)現(xiàn))。該打印程序具有以下幾個(gè)特點(diǎn):
①點(diǎn)陣大,字跡清晰美觀,用戶可根據(jù)實(shí)際需要任意定義。
②整個(gè)字庫分為漢字庫和非漢字庫。漢字點(diǎn)陣為9x16,非漢字(英文字母、ASCII代碼及字符等)的點(diǎn)陣為5X16。這樣既有利于調(diào)用,又節(jié)省了內(nèi)存空間。
③打印功能分三種方式實(shí)現(xiàn),全部采用子程序調(diào)用方式。分為漢字打印、非漢字打印及漢字非漢字混合打印這三種方式,從而方便了各種不同需求的打印完成,增強(qiáng)了通用性,使它可以廣泛地應(yīng)用于各種智能儀器儀表的漢字打印輸出。
④由于打印工作幾乎完全依靠軟件來實(shí)現(xiàn),因此硬件線路極少,降低了研制成本,且整個(gè)打印機(jī)系統(tǒng)的可靠性得以大大提高;又由于打印軟件采用的是調(diào)子程序方式,從而使系統(tǒng)軟件的靈活性、可移植性大大增強(qiáng)。
本程序只需改動(dòng)兩個(gè)位置的參數(shù),就可實(shí)現(xiàn)更為復(fù)雜的漢字輸出(字的高度為16點(diǎn)陣,寬度不限)。
結(jié)論
本文從提高系統(tǒng)軟件的可靠性、可維護(hù)性及效率的考慮出發(fā),結(jié)合實(shí)際靂要采用了程序流程圖等三種方法同時(shí)并用的方式,完成了該稱重儀表應(yīng)用軟件的研制。XK3101型稱重顯示控制器主要用于SCS-30/50型電子汽車衡,對(duì)各種車輛裝載的整車物資進(jìn)行計(jì)量。還可根據(jù)不同需要組合成電子料斗秤、配料秤、起重吊秤等,作精密計(jì)量及控制使用。該稱量?jī)x表自1987年完成設(shè)計(jì)后,已大批量交付用戶使用。
本文源于網(wǎng)絡(luò)轉(zhuǎn)載,如有侵權(quán),請(qǐng)聯(lián)系刪除