遼寧建筑職業(yè)學(xué)院,遼寧遼陽 111000
工農(nóng)業(yè)生產(chǎn)中,經(jīng)常需要對固體狀料面(如水泥、煤炭、化工、冶金、飼料、糧食等各種粉狀、塊狀、顆粒狀原料)的高度進(jìn)行在線測量與控制,及時準(zhǔn)確地測知物料高度對于生產(chǎn)管理、維持工廠安全高效運(yùn)行具有重要意義。重錘料位計是一直用于監(jiān)測料斗、筒倉和其他類型容器內(nèi)粉末、顆粒料位高度的傳感器。
重錘式智能料位儀主要由執(zhí)行機(jī)構(gòu)和智能控制兩部分組成[1]。傳統(tǒng)重錘料位計使用四位數(shù)碼管顯示料位高度數(shù)值,配合LED光條顯示料位高度相對于料倉高度的比值,人機(jī)接口單一,顯示界面不友好,可設(shè)置功能有限,幾乎不提供菜單,使用過程很不方便。此外,傳統(tǒng)重錘料位計對兩個嚴(yán)重故障“丟錘”和“埋錘”不提供檢測,為安全運(yùn)行留下了隱患。針對傳統(tǒng)儀表的諸多弊端,采用系統(tǒng)狀態(tài)機(jī)和事件驅(qū)動的思想,重新設(shè)計固件程序,同時將顯示界面更換為LCM12864,通過液晶屏可以提供豐富多彩的顯示信息,多層級的菜單設(shè)置等功能,對重錘料位儀表的功能和產(chǎn)品設(shè)計取得了質(zhì)的飛躍。
重錘料位計由一次側(cè)傳感設(shè)備(以下稱一次儀表)和二次側(cè)控制儀表(以下稱二次儀表)構(gòu)成。一次儀表主要由可逆電機(jī)、減速器、靈敏杠桿、行程開關(guān)和霍爾開關(guān)、滑輪(內(nèi)嵌永磁體)、重錘和鋼絲繩等組成。一次儀表安裝在料倉頂部,由二次儀表對其傳感器信號進(jìn)行檢測并對其電機(jī)施加控制。
重錘料位計的探測過程是:二次儀表發(fā)出啟動測量信號,給出電動機(jī)正轉(zhuǎn)信號,經(jīng)減速機(jī)帶動長齒輪和滑動繞線齒輪從倉頂開始放繩,測量單元的單片機(jī)同時記錄磁信號編碼器的轉(zhuǎn)數(shù)脈沖信號經(jīng)減速后帶動繞線筒轉(zhuǎn)動[2]。當(dāng)重錘降至料面時被料面托起而失重,鋼絲繩松馳,靈敏杠桿動作使微動開關(guān)接觸,二次儀表得到該信號立即發(fā)出電機(jī)反轉(zhuǎn)命令,重錘上升返回,直到重錘上升到接近原點(diǎn)處,觸發(fā)霍爾開關(guān),電機(jī)停轉(zhuǎn),重錘回到倉頂原點(diǎn)位置,完成一次探測過程。
料位高度的計算原理參見圖1,公式如下:
其中,H料—料位高度;
H倉—料倉高度;
S—重錘行程;
H安—安裝高度;
H空—空高距離。
圖中a通常不會超過10cm,而待測料位高度通常幾米甚至十幾米,所以a可以忽略不計。此外倉庫底高度也可以忽略不計。
在此測量過程中,重錘下放過程會通過鋼絲繩帶動一次儀表繞線軸轉(zhuǎn)動,繞線軸鑲嵌有永磁體,會觸發(fā)霍爾元件產(chǎn)生脈沖序列,二次儀表通過檢測此脈沖序列個數(shù)計算出重錘從倉底到料面間的距離,經(jīng)過上面公式的轉(zhuǎn)換計算出料位高度,在液晶屏上顯示,并在后面板端子上輸出與料位高度對應(yīng)的標(biāo)準(zhǔn)電流信號。
重錘料位儀由重錘、牽引鋼繩、驅(qū)動電機(jī)、控制驅(qū)動箱、開關(guān)與脈沖發(fā)生器以及儀表箱等部件組成[3]。儀表微處理器采用了51內(nèi)核單片機(jī)(STC89C58),由程序控制傳感器的整個探測過程的動作,并檢測其信號進(jìn)行計算,在面板上通過12864液晶屏顯示料位高度數(shù)值和空高距離數(shù)值,以光柱形式顯示高度比例,并有相應(yīng)的4mA~20mA模擬電流信號輸出,測量可定時自動進(jìn)行,也可手動測量。
(1)單片機(jī)信號采集和處理模塊
單片機(jī)信號采集和處理模塊主要完成對一次儀表所有傳感器信號的采集和處理,并控制電機(jī)的運(yùn)行和停止,驅(qū)動液晶屏顯示等。微控制器芯片采用STC89C58單片機(jī),其內(nèi)部程序存儲器(Flash)可達(dá)32K,E2PROM達(dá)29K,內(nèi)置看門狗電路,可以滿足項目設(shè)計要求。
(2)顯示電路
傳統(tǒng)料位儀表主要是以數(shù)碼管提供顯示功能,顯示內(nèi)容受限制。本儀表采用LCM12864液晶屏模組作為顯示器,以點(diǎn)陣式取模為主要驅(qū)動方式,不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線及漢字,并且可以實(shí)現(xiàn)屏幕上下左右滾動,動畫功能,分區(qū)開窗口,反轉(zhuǎn),閃爍等功能,能夠支持多級菜單的設(shè)計和復(fù)雜控制功能的顯示。
(3)控制策略
如何通過一次儀表內(nèi)的放錘到位行程開關(guān)和收錘到位霍爾開關(guān)這僅有的兩個位置傳感器信號,判斷重錘是否出現(xiàn)丟錘、埋錘等故障狀態(tài),是對控制策略和程序設(shè)計的一個挑戰(zhàn)。通過設(shè)計有限狀態(tài)機(jī)(FSM)程序,解決了對重錘運(yùn)行過程中可能出現(xiàn)的故障狀態(tài)的監(jiān)測、判斷和處理過程。
(4)界面設(shè)計和多級菜單
為了提供良好的用戶體驗(yàn),在主界面中設(shè)計了動畫、圖標(biāo)、公司LOGO、漢字、數(shù)字、光標(biāo)等元素;菜單設(shè)計借鑒以人為本的設(shè)計理念,以多級菜單展現(xiàn)儀表提供的諸多功能,操作方便,簡單易用,使用者甚至可以在不看說明書的情況下直接完成儀表的設(shè)置和測量工作。
系統(tǒng)軟件的設(shè)計主要包括主程序流程、初始化程序、硬件設(shè)備的驅(qū)動程序,信號檢測程序、系統(tǒng)狀態(tài)機(jī)程序等子程序模塊,采用C語言進(jìn)行編程,下面依次介紹各主要子程序模塊的功能和流程。
主程序工作過程:初始化-檢測按鍵-啟動系統(tǒng)狀態(tài)機(jī),流程如圖4所示。
系統(tǒng)上電后即進(jìn)入初始化程序,主要包括:液晶屏的初始化、重錘狀態(tài)檢測、E2PROM初始化、DAC及標(biāo)準(zhǔn)電流輸出、繪制主界面和建立系統(tǒng)狀態(tài)機(jī)。初始化流程如圖5所示。
液晶屏的初始化:主要完成12864的復(fù)位和清屏操作。
重錘狀態(tài)檢測:是指儀表上電后應(yīng)檢測重錘是否在位,如果發(fā)現(xiàn)丟錘,應(yīng)進(jìn)入丟錘故障狀態(tài),禁用手自動測量功能,同時給出報警信息,提示操作人員排除故障。檢測策略為:如果剛上電(還未啟動測量)即檢測到放錘到位信號,意味著鋼絲繩松弛,即可判斷為丟錘。
E2PROM初始化:用來讀取重要配置和參數(shù),例如重錘料位計的安裝高度、料倉高度、手自動測量模式、自動測量的定時時間間隔、高位報警值、低位報警值、開機(jī)顯示上一次最后測量值、管理員密碼、以及一些狀態(tài)信息標(biāo)識位。設(shè)計中采用了STC89C58片內(nèi)E2PROM空間。
DAC和標(biāo)準(zhǔn)電流初始化:指讀取并顯示上一次通電最后一次測量值,同時標(biāo)準(zhǔn)電流給出對應(yīng)輸出信號。程序從E2PROM中讀取到上一次斷電前最后一次料位測量結(jié)果,通過料位高度值和料倉高度比例關(guān)系換算出對應(yīng)的0~255之間的二進(jìn)制數(shù)據(jù),驅(qū)動4mA~20mA標(biāo)準(zhǔn)電流模塊。
繪制主界面:儀表面板主要由一塊液晶屏、四個按鍵和兩個LED組成,系統(tǒng)開機(jī)后將顯示公司LOGO及公司名稱2s,待開機(jī)進(jìn)度條跑完,則繪制圖6所示主界面。該主界面左側(cè)以柱狀圖形式直觀顯示當(dāng)前料位高度及料倉高度關(guān)系,中間顯示料位高度值和空高距離(以米為單位),下邊則分別顯示標(biāo)準(zhǔn)電流值、系統(tǒng)工作狀態(tài)和手自動模式狀態(tài)。
建立系統(tǒng)狀態(tài)機(jī):系統(tǒng)狀態(tài)機(jī)是儀表工作的有限狀態(tài)子集集合以及狀態(tài)之間的觸發(fā)和轉(zhuǎn)換條件,也稱有限狀態(tài)機(jī)(Finite-state machine,F(xiàn)SM)。本部分所占篇幅較長,將在下文詳細(xì)論述。
有限狀態(tài)機(jī)又稱有限狀態(tài)自動機(jī),是表示有限個狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的抽象模型,有限狀態(tài)機(jī)的輸出取決于當(dāng)前狀態(tài)和當(dāng)前輸入。在重錘料位計二次儀表設(shè)計中,可驅(qū)動狀態(tài)機(jī)切換的事件有按鍵和各傳感器信號,以及它們之間的不同組合形式??沙橄蟪鰜淼闹饕獱顟B(tài)有:IDLE狀態(tài)、開始測量狀態(tài)、一級子菜單等待設(shè)置狀態(tài)、二級子菜單等待設(shè)置狀態(tài)、高低位報警狀態(tài)、丟錘故障狀態(tài)、埋錘故障狀態(tài)。
比如,儀表上電初始化后即進(jìn)入IDLE狀態(tài),此時顯示系統(tǒng)主界面。在IDLE狀態(tài)可相應(yīng)按鍵事件,進(jìn)行手動測量從而進(jìn)入測量狀態(tài),或者進(jìn)入一級子菜單設(shè)置狀態(tài)。在測量狀態(tài),如果測量過程順利完成,則回到IDLE狀態(tài),并更新數(shù)據(jù)顯示;如果測量結(jié)果超過上下限報警范圍,則進(jìn)入高低位報警狀態(tài),顯示報警信息;如果測量過程中出現(xiàn)丟錘、埋錘事件,則進(jìn)入故障報警狀態(tài),在此狀態(tài)下測量功能將被禁用。系統(tǒng)狀態(tài)機(jī)如圖7所示。
當(dāng)儀表處于IDLE狀態(tài),即顯示主界面狀態(tài),可通過手動按鍵或者自動測量進(jìn)入測量狀態(tài)。啟動測量后,程序?qū)㈤_啟放錘到位中斷,然后驅(qū)動電機(jī)正轉(zhuǎn)放錘,同時液晶屏顯示“測量中……”;此時如果收到放錘到位中斷信號,即刻停止電機(jī),程序根據(jù)接收到的脈沖步長信號個數(shù),計算出重錘下放行程,再根據(jù)安裝高度、料倉高度等參數(shù),計算出料位高度,并更新顯示。然后開啟收錘到位中斷,進(jìn)入收錘狀態(tài),驅(qū)動電機(jī)反轉(zhuǎn)收錘。在收錘過程中,仍然需要檢測脈沖信號,以判斷是否發(fā)生埋錘;在收錘過程中仍然要保持放錘到位中斷開啟,以判斷是否發(fā)生丟錘。如果沒有故障發(fā)生,在收到收錘到位中斷信號后,停止電機(jī),完成本次測量,系統(tǒng)回到IDLE狀態(tài)。測量過程流程如圖8所示。
丟錘和埋錘是重錘料位計比較常見的嚴(yán)重故障狀態(tài),如何根據(jù)有限的傳感器信號,判斷丟錘與埋錘故障,是系統(tǒng)軟件策略設(shè)計的一個難點(diǎn)。
(1)丟錘故障的判定
根據(jù)已有的一次側(cè)設(shè)備,只有放錘到位行程開關(guān)和收錘到位霍爾開關(guān)兩個傳感器信號用來標(biāo)識重錘位置。其中放錘到位行程開關(guān)的動作,依靠放錘到底后,重錘所連接鋼絲繩即變松弛,引起行程開關(guān)動作從而發(fā)出信號。據(jù)此可推知,在收錘過程中,在未收到霍爾開關(guān)信號前,如果檢測到放錘到位行程開關(guān)信號,即意味著收錘過程中鋼絲繩忽然松弛,可判定為丟錘故障。
(2)埋錘故障的判定
在正常的收錘過程中,當(dāng)單片機(jī)給出收錘信號,電動機(jī)即開始反轉(zhuǎn)收錘,這時通過鋼絲繩纏繞的滑輪(滑輪內(nèi)嵌有永磁體,配合霍爾開關(guān))可檢測到脈沖信號。根據(jù)這個原理,如果在啟動收錘過程后一定時間內(nèi)檢測不到脈沖信號,意味著重錘未被收回,應(yīng)進(jìn)入埋錘故障狀態(tài)。在此狀態(tài)下應(yīng)使電動機(jī)停車,避免電動機(jī)過熱燒毀。
本文針對傳統(tǒng)重錘料位計進(jìn)行技術(shù)改進(jìn),重新設(shè)計并實(shí)現(xiàn)了控制儀表的固件程序。創(chuàng)新性地將有限狀態(tài)機(jī)應(yīng)用于重錘料位計控制儀表的設(shè)計中,并改進(jìn)顯示器件,設(shè)計多級菜單,提高測量精度,增加丟錘、埋錘等故障處理功能,為儀表產(chǎn)品提供了友好的用戶使用體驗(yàn)。該儀表現(xiàn)已投產(chǎn)并在多處生產(chǎn)現(xiàn)場運(yùn)行良好。儀表上電實(shí)物圖如圖9所示。