基于8031單片機(jī)的自動計量進(jìn)料系統(tǒng)
1 引言?
某糖果廠于1985年從德國SIMON電子公司引進(jìn)帶微電腦的計量進(jìn)料器116EM型生產(chǎn)線,用于糖果生產(chǎn)。由于引進(jìn)時間較長、圖紙資料不全、外方維護(hù)不便等原因,時有因電腦控制部分發(fā)生故障而影響生產(chǎn)的情況發(fā)生。從提高設(shè)備國產(chǎn)化比重、節(jié)約外匯、方便維護(hù)、保證生產(chǎn)出發(fā),本文應(yīng)廠方要求,在對進(jìn)口裝置的設(shè)備性能和電氣信號時序透徹分析的基礎(chǔ)上,開發(fā)了基于8031的嵌入式的微機(jī)自動計量進(jìn)料系統(tǒng),該系統(tǒng)從性能要求、信號時序到外觀尺寸都與進(jìn)口裝置完全匹配,成功地實(shí)現(xiàn)了進(jìn)口設(shè)備控制系統(tǒng)國產(chǎn)化。?
2 計量進(jìn)料器的稱量和計量進(jìn)料原理?
啟動預(yù)先設(shè)置的計量進(jìn)料程序后,計量系統(tǒng)首先稱量并存儲稱量鍋皮重,然后依次控制各種配料如牛奶、砂糖、水等進(jìn)入稱量鍋,其中干物料用振動盤計量進(jìn)料,粉末料由螺旋進(jìn)料器計量進(jìn)料,液體料則由液壓閥計量進(jìn)料,糊狀物由泵進(jìn)料。每一種配料都先后使用粗料和細(xì)料兩種進(jìn)料方式,以保證稱量精度達(dá)到98%~99%。物料重量由安裝在支撐架上懸置稱量鍋的3個應(yīng)變儀轉(zhuǎn)變?yōu)殡娦盘?,?jīng)A/D轉(zhuǎn)換讀入計算機(jī)進(jìn)行重量計算,去除皮重后與設(shè)定值比較,其結(jié)果作為控制物料切換或粗、細(xì)進(jìn)料轉(zhuǎn)換的依據(jù)。完成稱量的混合物通過活門排放至可加熱的儲藏缸、攪拌,再用泵打入溶解器,進(jìn)入溶解制糖工序。?
3 系統(tǒng)功能要求?
為保證原進(jìn)口裝置性能,要求計量進(jìn)料自動控制系統(tǒng)具有如下功能:?
(1)實(shí)現(xiàn)多達(dá)5種原料的順序自動稱量,定時攪拌、排放;?
(2)在總重量不超過135 kg的范圍內(nèi)任意設(shè)定稱量值;?
(3)累計5種原料的班用量;?
(4)每個稱量循環(huán)完畢對稱重系統(tǒng)進(jìn)行自檢,并能隨時執(zhí)行檢查命令;?
(5)能隨時暫停自動稱量灌裝;?
(6)若某種原料的灌裝系統(tǒng)故障,可跳過該原料的灌裝;?
(7)故障報警功能:?
無壓縮空氣報警,系統(tǒng)停止運(yùn)行;?
電機(jī)聯(lián)接故障報警,系統(tǒng)停止運(yùn)行;?
稱量鍋內(nèi)臟物超過10 kg,系統(tǒng)停止運(yùn)行;?
儲藏缸液位超過設(shè)定值,系統(tǒng)停止運(yùn)行;?
(8)顯示:凈重、毛重,自檢/檢查值等;?
(9)指示:重量上、下限,系統(tǒng)故障等;?
(10)自動/手動切換;?
(11)打印:固定格式的自動打印和單鍋、單一原料數(shù)據(jù)打印。?
4 系統(tǒng)硬件結(jié)構(gòu)?
根據(jù)上述系統(tǒng)功能要求,通過對原裝置傳感器、執(zhí)行部件的電氣信號分析,并考慮到安裝條件,硬件設(shè)計立足于低成本、國產(chǎn)化,采用了以MCS—51系列單片機(jī)8031為CPU,聯(lián)接A/D,鍵盤/顯示,撥碼盤,打印機(jī)等接口電路組成系統(tǒng)的設(shè)計方案。?
整個系統(tǒng)由如圖4—1所示的CPU板、A/D轉(zhuǎn)換板、開關(guān)量I/O板、顯示/鍵盤、打印機(jī)接口板、撥碼盤輸入板以及電源板組成。6塊板以插件形式安裝在兩只抽屜式機(jī)箱內(nèi),嵌入原裝置的控制器部位,實(shí)現(xiàn)與原裝置的電氣銜接。
?
其中8031最小系統(tǒng)由8031單片機(jī)通過總線驅(qū)動器擴(kuò)展一片2764EPROM、一片6264RAM組成 。A/D轉(zhuǎn)換采用雙積分式12位A/D轉(zhuǎn)換芯片ICL7109及相應(yīng)輔助芯片組成。ICL7109具有高精度 、低漂移、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。采用8279作為鍵盤/顯示接口,CPU以中斷方式處理按鍵申請。五組四位BCD撥碼盤通過兩級譯碼,其控制端和8421數(shù)碼端經(jīng)8255與CPU相接。開關(guān)量I/O及打印機(jī)接口也均由8255實(shí)現(xiàn)。系統(tǒng)在保證功能的前提下體現(xiàn)了經(jīng)濟(jì)實(shí)效、立足國內(nèi)的原則。?
5 系統(tǒng)軟件設(shè)計?
系統(tǒng)應(yīng)用軟件在DVCC—52與PC機(jī)聯(lián)合開發(fā)系統(tǒng)下,采用匯編語言與BASIC語言混合編程 、模塊化、結(jié)構(gòu)化的設(shè)計方法。整個程序由系統(tǒng)診斷模塊、自動配料模塊、A/D及數(shù)據(jù)處理模塊、越限報警模塊、按鍵、顯示、打印模塊等組成。各模塊相對獨(dú)立又相輔相成,從而使采樣、運(yùn)算、控制、顯示、參數(shù)設(shè)置等有條不紊,急緩有序的運(yùn)行。在稱量精度、按鍵響應(yīng)速度、故障報警能力等方面都達(dá)到了自動計量進(jìn)料的要求。主程序框圖如圖5—1所示。
? 其中,診斷子程序包括CPU指令系統(tǒng)診斷、RAM診斷、EPROM診斷、A/D、I/O模板診斷以及為達(dá)到系統(tǒng)故障報警功能而進(jìn)行的傳感器信號的檢測。?
自動配料子程序主要框圖如圖5—2所示。考慮到給料裝置的振動和慣性,程序中采用了把兩次采樣時間間隔Δt內(nèi)的重量增量Δg與設(shè)定值和稱量值之差e相比較,根據(jù)比較結(jié)果進(jìn)行粗料、細(xì)料和換料的切換,以提高稱量精度。并用一個單元進(jìn)行配料順序記數(shù),這樣5種配料可公用相同的程序,以達(dá)到優(yōu)化程序結(jié)構(gòu),節(jié)省程序存儲器空間的目的。
CPU以中斷方式處理按鍵請求。在鍵盤中斷服務(wù)子程序中,進(jìn)行按鍵識別,并對相應(yīng)的位標(biāo)志變量進(jìn)行設(shè)置。而其它各功能模塊則根據(jù)標(biāo)志變量狀態(tài)控制程序走向。
6 系統(tǒng)可靠性設(shè)計?
本系統(tǒng)處于干擾較多的復(fù)雜工業(yè)現(xiàn)場,因此在設(shè)計中除采用光電隔離、電源濾波、屏蔽接地及地線處理等硬措施,以及用平均值加中位值復(fù)合濾波方法,克服信號采集中的周期性干擾和尖峰型干擾外,還采用了硬件自診斷技術(shù)和軟件抗干擾技術(shù),以保證系統(tǒng)的稱量控制精度和可靠性。?
6.1 硬件故障自診斷技術(shù)?
本系統(tǒng)對關(guān)鍵的硬件設(shè)備采用了由上電自診斷、定時自檢、鍵控自檢相結(jié)合的自診斷方法,及時發(fā)現(xiàn)系統(tǒng)故障,保證精度,以避免系統(tǒng)帶病運(yùn)行。具體診斷項(xiàng)目有:?
(1)CPU指令系統(tǒng)診斷8031指令系統(tǒng)能被正確地執(zhí)行是系統(tǒng)正常工作的前提,為此設(shè)計了一段涉及各種指令的測試程序,判斷其運(yùn)行結(jié)果是否正確,以排除CPU失靈的可能性。?
(2)RAM診斷采取向關(guān)鍵RAM區(qū)依次進(jìn)行寫入讀出操作,比較讀出與寫入內(nèi)容是否相同來判斷內(nèi)、外RAM芯片的好壞。上電時采用破壞性測試(不保護(hù)原有內(nèi)容),復(fù)位、按鍵診斷采用非破壞性測試(保護(hù)原有內(nèi)容)。
(3)EPROM診斷固化目標(biāo)程序的EPROM在使用時間長,窗口密封不好等情況下,可能出現(xiàn)個別零星單元信息發(fā)生變化的情況,必須主動進(jìn)行檢查。本文采用了“異或和”校驗(yàn)法。在程序固化之前,利用開發(fā)裝置求出所有指令的異或和并把結(jié)果寫入最后一個空單元中,診斷時再求所有指令,包括“結(jié)果”的異或和,若和數(shù)為零,可以認(rèn)為EPROM中的內(nèi)容是正確的 。
(4)采用硬件冗余聯(lián)合診斷技術(shù)進(jìn)行A/D、I/O模板、重要參數(shù)傳感器診斷。?
6.2 軟件抗干擾技術(shù)?
當(dāng)CPU本身受到干擾,程序計數(shù)器PC因干擾而改變內(nèi)容時,CPU將不能按正常狀態(tài)執(zhí)行程序,從而引起混亂,產(chǎn)生所謂程序“跑飛”現(xiàn)象。為此在軟件上采取了指令冗余、軟件陷阱 、純軟件watchdog技術(shù)以控制程序流向。?
(1)指令冗余當(dāng)CPU受干擾后,會把操作數(shù)當(dāng)指令碼引起混亂。分析MCS—51指令系統(tǒng),大多為單字節(jié)指令,最長不超過3字節(jié)。當(dāng)程序彈飛到雙字節(jié)和3字節(jié)指令上時,繼續(xù)出錯的機(jī)會較大,而當(dāng)彈飛到單字節(jié)指令上時,程序?qū)⒆詣蛹{入軌道。因此在程序中對程序流向起決定作用指令之前插入3條空操作指令(如轉(zhuǎn)移、子程序調(diào)用和對系統(tǒng)工作狀態(tài)至關(guān)重要的指令),并將跳轉(zhuǎn)指令冗余一次,以保證被正確執(zhí)行。指令冗余技術(shù)可減少彈飛次數(shù),使程序很快納入軌道。?
(2)軟件陷阱當(dāng)程序彈飛到非程序區(qū)(EPROM未使用區(qū),數(shù)據(jù)區(qū)……)時,冗余指令將無能為力。為此設(shè)計了軟件陷阱,即在程序斷裂點(diǎn)(無條件跳轉(zhuǎn)指令、返回指令之后)和數(shù)據(jù)區(qū)末尾插入NOP NOP LJMP 3條指令。將空白區(qū)充滿LJMP指令,強(qiáng)行將捕獲的程序引向出錯處理程序入口。出錯處理程序的主要功能是實(shí)現(xiàn)系統(tǒng)恢復(fù)。因LJMP指令的操作碼是02H,故若把出錯處理程序入口安排在0202H,則可方便地利用開發(fā)系統(tǒng)中Debug功能把大片程序空白區(qū)固化為020202……,從而大批陷阱處理完畢。?
(3)純軟件Watchdog若指令彈飛在程序區(qū),但在遇到冗余指令之前已形成死循環(huán),則指令冗余和軟件陷阱均失效。為此本系統(tǒng)利用空閑的定時器T2設(shè)計了程序運(yùn)行監(jiān)視系統(tǒng)(Watchdog);設(shè)T2為高優(yōu)先級,根據(jù)主控程序循環(huán)周期確定T2的定時常數(shù)和計數(shù)器的記數(shù)值 ,每次中斷對計數(shù)器加1,并判斷記數(shù)值若大于設(shè)定值,則轉(zhuǎn)出錯處理程序入口。同時在主程序中對計數(shù)器清零。如此,保證及時把程序從死循環(huán)中解放出來。?
7 結(jié)束語?
本文結(jié)合工廠實(shí)際,用經(jīng)濟(jì)的8031及外圍芯片設(shè)計了自動計量進(jìn)料控制系統(tǒng),取代了原進(jìn)口設(shè)備的控制裝置。經(jīng)幾年來運(yùn)行證明,該系統(tǒng)功能完備,運(yùn)行穩(wěn)定可靠,操作簡便,性能價格比高。該技術(shù)延長了設(shè)備使用壽命,創(chuàng)造了很好的經(jīng)濟(jì)效益,不失為進(jìn)口設(shè)備國產(chǎn)化和傳統(tǒng)設(shè)備自動化的有益嘗試,在推進(jìn)食品、飲料行業(yè)的國產(chǎn)化和自動化方面具有積極意義 。