本發(fā)明涉及混凝土攪拌站質(zhì)量監(jiān)控技術(shù)領(lǐng)域,尤其是一種用于實(shí)時(shí)監(jiān)控混凝土攪拌機(jī)工作時(shí)間的嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)及其監(jiān)控方法。
背景技術(shù):混凝土生產(chǎn)企業(yè)在加工混凝土?xí)r,通常需要將如水泥、水及骨料等原材料按照設(shè)計(jì)的配比投入到攪拌機(jī)中進(jìn)行攪拌,原材料只有在攪拌機(jī)中攪拌達(dá)到設(shè)定的攪拌時(shí)間,才能夠獲得混合均勻、強(qiáng)度和工作性都能滿足設(shè)計(jì)要求的混凝土。一般設(shè)定的攪拌時(shí)間為該型原材料和配比的混凝土所需的最低限度的攪拌時(shí)間,也稱為最短攪拌時(shí)間,若原材料在攪拌機(jī)中攪拌的時(shí)間沒有達(dá)到其相應(yīng)的最短攪拌時(shí)間就將混凝土卸出投入使用,則該批未達(dá)到最短攪拌時(shí)間的混凝土的質(zhì)量勢必達(dá)不到設(shè)計(jì)要求,其投入到建筑施工中使用,將必然給建筑施工帶來安全隱患。目前,混凝土生產(chǎn)相關(guān)監(jiān)管部門對混凝土生產(chǎn)質(zhì)量也實(shí)施監(jiān)控,通常督促混凝土生產(chǎn)廠家建立混凝土質(zhì)量監(jiān)控系統(tǒng),例如公開號(hào)CN202420637U、名稱為“混凝土攪拌站及其質(zhì)量監(jiān)控系統(tǒng)”的中國專利文獻(xiàn)所公開的混凝土質(zhì)量監(jiān)控系統(tǒng),其通常監(jiān)控的重點(diǎn)在于原材料的重量、配比等信息;混凝土生產(chǎn)監(jiān)管部門監(jiān)管時(shí),通過實(shí)地或遠(yuǎn)程通信調(diào)取生產(chǎn)廠家的混凝土質(zhì)量監(jiān)控系統(tǒng)的相關(guān)數(shù)據(jù)庫內(nèi)包括攪拌機(jī)攪拌時(shí)間等數(shù)據(jù)信息進(jìn)行抽查核實(shí)以達(dá)到監(jiān)管目的。在傳統(tǒng)PC監(jiān)控中,可能會(huì)因?yàn)樾枰O(jiān)控的地方與PC間隔較遠(yuǎn)引起串口數(shù)據(jù)傳輸不穩(wěn)定的問題?;蛞?yàn)镻C的串口數(shù)量不夠而需要花大價(jià)錢去購買串口板卡的高消費(fèi)監(jiān)控模式。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明要解決的技術(shù)問題是:為了提供一種結(jié)構(gòu)簡單、使用方便、低成本、低功耗、高穩(wěn)定性的嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)及其監(jiān)控方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng),包括上位機(jī)、遠(yuǎn)程服務(wù)器、電流表及嵌入式監(jiān)控模塊,所述上位機(jī)與遠(yuǎn)程服務(wù)器連接實(shí)現(xiàn)數(shù)據(jù)傳輸,所述嵌入式監(jiān)控模塊包括MCU、NANDFLASH存儲(chǔ)模塊、SRAM靜態(tài)內(nèi)存、以太網(wǎng)模塊,所述NANDFLASH存儲(chǔ)模塊、SRAM靜態(tài)內(nèi)存、以太網(wǎng)模塊設(shè)置在MCU內(nèi),嵌入式監(jiān)控模塊通過RS232串口模塊與電流表連接,所述以太網(wǎng)模塊與上位機(jī)連接。作為優(yōu)選,所述MCU為STM32F103ZET6型號(hào)的微控制器芯片,MCU內(nèi)設(shè)置有實(shí)時(shí)時(shí)鐘模塊。作為優(yōu)選,所述MCU通過SPI總線與以太網(wǎng)模塊連接。作為優(yōu)選,所述以太網(wǎng)模塊通過RJ45接口與上位機(jī)連接。本發(fā)明還提供一種嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)的監(jiān)控方法,包括如下步驟:(1)初始化上位機(jī)的通信模塊,獲取DHCP分配的地址,并發(fā)送命令到上位機(jī),使上位機(jī)與以太網(wǎng)建立聯(lián)系;(2)創(chuàng)建通信主進(jìn)程,用于連接上位機(jī),收到命令后,將設(shè)備記錄的數(shù)據(jù)上傳,并創(chuàng)建副進(jìn)程;(3)上位機(jī)檢測副進(jìn)程是否創(chuàng)建成功:若否,自動(dòng)進(jìn)入步驟(4);若是,自動(dòng)進(jìn)入步驟(6);(4)接收到上位機(jī)發(fā)出的Enter命令,終止副進(jìn)程運(yùn)行,等待副進(jìn)程完全退出后,MCU進(jìn)入命令行模式;(5)在命令樹樹根收到上位機(jī)的Exit命令后,退出命令行模式,并重新創(chuàng)建副進(jìn)程,返回步驟(3);(6)副進(jìn)程運(yùn)行觸發(fā)Start事件,初始化需要偵聽的電流表數(shù)據(jù)的責(zé)任鏈,并利用繼電器給電流表上電,開啟MCU的RS232串口,將open節(jié)點(diǎn)寫入record文件并通過SOCKET發(fā)送出去。此時(shí),MCU檢測電流表是否打開,如果電流表已打開,則不做處理,如果未打開,MCU讀取數(shù)據(jù)庫中的節(jié)點(diǎn)配置數(shù)據(jù),并以此數(shù)據(jù)作為參數(shù),實(shí)例化責(zé)任鏈節(jié)點(diǎn),如果數(shù)據(jù)讀取失敗,則電流表異常指示燈點(diǎn)亮,如果讀取數(shù)據(jù)成功,MCU綁定每一個(gè)被初始化的節(jié)點(diǎn)觸發(fā)事件,給繼電器上電,將open節(jié)點(diǎn)寫入到record文件里,置位電流表標(biāo)記為打開,打開RS232串口,并延時(shí)一段時(shí)間等待電流表啟動(dòng)完成。(7)在Start事件結(jié)束后進(jìn)入LOOPING事件,MCU無限次讀取電流表示數(shù)并將讀取的數(shù)據(jù)傳入偵聽數(shù)據(jù)的責(zé)任鏈,當(dāng)責(zé)任鏈的節(jié)點(diǎn)條件被觸發(fā)時(shí),MCU將責(zé)任鏈的節(jié)點(diǎn)寫入record文件中。在讀取電流表示數(shù)時(shí),如果讀取異常,則MCU將readex節(jié)點(diǎn)寫入record文件中,觸發(fā)Stop事件,延時(shí)一段時(shí)間,重新觸發(fā)Start事件,如果讀取正常,則MCU將讀取到的值送入各節(jié)點(diǎn)中處理,當(dāng)節(jié)點(diǎn)被觸發(fā)時(shí),將被觸發(fā)的節(jié)點(diǎn)寫入record文件中,并通過SOCKET發(fā)送出去。當(dāng)LOOPING事件中出現(xiàn)異常時(shí),副進(jìn)程將readex節(jié)點(diǎn)寫入record文件,并依次觸發(fā)Stop、Start事件使設(shè)備重新進(jìn)入正常的工作模式;(8)當(dāng)主進(jìn)程接收到Enter命令后,將使副進(jìn)程觸發(fā)Stop事件,在該事件中處理釋放責(zé)任鏈,斷開RS232,斷開繼電器,并將Close節(jié)點(diǎn)寫入record文件中。MCU檢測電流表是否打開,如果電流表未打開,則不做處理,如果電流表已打開,則關(guān)閉RS232串口,將open節(jié)點(diǎn)寫入到record文件里,并清除電流表標(biāo)志位,釋放責(zé)任鏈各節(jié)點(diǎn)。本發(fā)明的有益效果是:本發(fā)明嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)及其監(jiān)控方法通過嵌入式監(jiān)控模塊遠(yuǎn)程控制,實(shí)時(shí)監(jiān)控混凝土攪拌站攪拌機(jī)的電流表的工作電流,并與正常攪拌狀態(tài)下的工作電流相比較,讓監(jiān)控人員對混凝土攪拌可以實(shí)現(xiàn)遠(yuǎn)距離的監(jiān)控,從而保證了產(chǎn)品的質(zhì)量。附圖說明下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)一步說明。圖1是本發(fā)明嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)的結(jié)構(gòu)示意圖;圖2是本發(fā)明嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)的嵌入式監(jiān)控模塊的結(jié)構(gòu)示意圖;圖3是本發(fā)明嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)的流程圖;圖4是本發(fā)明嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)的Start事件的流程圖;圖5是本發(fā)明嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)的Stop事件的流程圖;圖6是本發(fā)明嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)的LOOPING事件的流程圖;圖7是本發(fā)明嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng)的處理電流表讀數(shù)的流程圖。具體實(shí)施方式現(xiàn)在結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)的說明。這些附圖均為簡化的示意圖,僅以示意方式說明本發(fā)明的基本結(jié)構(gòu),因此其僅顯示與本發(fā)明有關(guān)的構(gòu)成。如圖1、圖2所示,一種嵌入式混凝土遠(yuǎn)程監(jiān)控系統(tǒng),包括上位機(jī)、遠(yuǎn)程服務(wù)器、電流表及嵌入式監(jiān)控模塊,所述上位機(jī)與遠(yuǎn)程服務(wù)器連接實(shí)現(xiàn)數(shù)據(jù)傳輸,所述嵌入式監(jiān)控模塊包括MCU、NANDFLASH存儲(chǔ)模塊、SRAM靜態(tài)內(nèi)存、以太網(wǎng)模塊,所述NANDFLASH存儲(chǔ)模塊、SRAM靜態(tài)內(nèi)存、以太網(wǎng)模塊設(shè)置在MCU內(nèi),嵌入式監(jiān)控模塊通過RS232串口模塊與電流表連接,所述以太網(wǎng)模塊與上位機(jī)連接。嵌入式監(jiān)控模塊主要是通過和電流表的實(shí)時(shí)交互,從儀表中讀取的數(shù)據(jù)進(jìn)行處理,將有效的數(shù)據(jù)實(shí)時(shí)的記錄下來,保存在NANDFlash存儲(chǔ)模塊中,待需要檢查或數(shù)據(jù)上傳時(shí),再通過上位機(jī)進(jìn)入設(shè)備命令行模式將數(shù)據(jù)讀取出來。而上位機(jī)處于輔助監(jiān)控狀態(tài),并能通過以太網(wǎng)對設(shè)備進(jìn)行控制,讓監(jiān)控人員對混凝土攪拌可以實(shí)現(xiàn)遠(yuǎn)距離的監(jiān)控。系統(tǒng)的設(shè)計(jì)初衷是為了分布式管理所需要監(jiān)控的部分,利用嵌入式設(shè)備的低成本,低功耗,高穩(wěn)定性,取代傳統(tǒng)PC監(jiān)控的不足,在傳統(tǒng)PC監(jiān)控中,可能會(huì)因?yàn)樾枰O(jiān)控的地方與PC間隔較遠(yuǎn)引起串口數(shù)據(jù)傳輸不穩(wěn)定的問題,或因?yàn)镻C的串口數(shù)量不夠而需要花大價(jià)錢去購買串口板卡的高消費(fèi)監(jiān)控模式。運(yùn)用本設(shè)備可以完全避免這些傳統(tǒng)的問題,設(shè)備可直接通過ENC28J60連接到互聯(lián)網(wǎng)中。其中,通過對主控單片機(jī)(MCU)的編程,實(shí)現(xiàn)對其他幾個(gè)外圍設(shè)備的控制。系統(tǒng)的工作主要是由MCU先通過RS232串口和電流表通訊,從而將電流表反饋的數(shù)據(jù)讀回MCU進(jìn)行處理,然后MCU將處理得到的有效的數(shù)據(jù)寫入系統(tǒng)的存儲(chǔ)設(shè)備中(record文件中,并通過SOCKET發(fā)送出去),方便以后查詢。需要存儲(chǔ)的信息有:節(jié)點(diǎn)名稱,節(jié)點(diǎn)的觸發(fā)方式,觸發(fā)閥值,閥值持續(xù)時(shí)間,日期,時(shí)間,六個(gè)基本信息。鑒于系統(tǒng)的MCU對內(nèi)存、功耗、性能等各方面有較高的要求,本系統(tǒng)使用的MCU主控芯片是經(jīng)過精心選擇的,我們最終將芯片定位STM32F103ZET6這款芯片。該款芯片是基于ARM公司Cortex-M3核的最新一代的嵌入式微控制器,鑒于它的低功耗、低成本、高性能且中斷系統(tǒng)響應(yīng)快(實(shí)時(shí)性),被廣泛的用于工控領(lǐng)域。ARM的Cortex-M3是32位的RISC處理器,提供額外的代碼效率,在通常8和16位系統(tǒng)的存儲(chǔ)空間上發(fā)揮了ARM內(nèi)核的高性能。STM32F103xE增強(qiáng)型系列擁有內(nèi)置的ARM核心,因此它與所有的ARM工具和軟件兼容。內(nèi)部SRAM有64KB,存儲(chǔ)器有512KB,并能通過FSMC靈活的訪問外部SRAM,與外部NANDFLASH,此外,該芯片內(nèi)核為ARM系列的CORTEX-M3,最高72MHz工作頻率,在存儲(chǔ)器的0等待周期訪時(shí)可達(dá)1.25DMips/MHz(Dhrystone2.1),單周期乘法和硬件除法,自帶RTC實(shí)時(shí)時(shí)鐘模塊,可以避免購買DS1302實(shí)時(shí)芯片的開支。需要一節(jié)紐扣電池供電,為STM32F103ZE的RTC提供后備電源。由于在系統(tǒng)中需要運(yùn)行SQLITE數(shù)據(jù)庫與FAT32文件系統(tǒng),在芯片原有SRAM的基礎(chǔ)上市不能運(yùn)行同時(shí)這個(gè)數(shù)據(jù)庫與FAT32文件系統(tǒng)的,所以外接了一塊1M的SRAM內(nèi)存。由于在系統(tǒng)中需要將記錄永久保存,而不是實(shí)時(shí)的回傳記錄,所以需要一塊閃存(NANDFLASH)來存儲(chǔ)運(yùn)行時(shí)產(chǎn)生的記錄。系統(tǒng)的通訊部分主要是由RS232電路接口轉(zhuǎn)換模塊來實(shí)現(xiàn)的,通過該接口系統(tǒng)可以與智能儀表實(shí)現(xiàn)數(shù)據(jù)交互。介于系統(tǒng)運(yùn)行的環(huán)境可能會(huì)比較的惡劣,本系統(tǒng)采用了全托管代碼的運(yùn)行方式,因?yàn)镃LR經(jīng)過了長時(shí)間微軟的更新與漏洞修復(fù),所以在本地代碼部分受環(huán)境的影響比較小。當(dāng)CLR受到環(huán)境影響時(shí),也會(huì)觸發(fā)硬件異常,并重啟CPU。這使得上層的托管代碼不需要考慮程序“跑飛”的問題。為了使系統(tǒng)保存的數(shù)據(jù)能被導(dǎo)出,通過SPI方式連接了一塊ENC28J60以太網(wǎng)模塊。本系統(tǒng)總體運(yùn)行在CLR框架中,所以開發(fā)語言為托管語言C#,由于CLR原生態(tài)支撐多線程,所以為本系統(tǒng)的多線程工作提供了可能,并能忽略掉C語言與C++中繁瑣的內(nèi)存管理。這也為本系統(tǒng)中采用的責(zé)任鏈模式減少了開發(fā)難度。也使得傳統(tǒng)的設(shè)計(jì)模式能運(yùn)用到嵌入式開發(fā)中。由于系統(tǒng)的RTC是芯片內(nèi)部提供的,需要有C語言進(jìn)行配置,而在CLR中沒有RTC的,這就需要使用ChpaterRom中的Calendar類與本地C語言代碼建立聯(lián)系,以便于上層調(diào)用。如圖3所示,本發(fā)明的監(jiān)控流程如下:(1)初始化上位機(jī)的通信模塊,實(shí)體化transmission類(獲取DHCP分配的地址,并發(fā)送Hello命令到主機(jī),提示設(shè)備上線),用于通過以太網(wǎng)與上位機(jī)建立聯(lián)系。(2)加載ChapterRom框架用于創(chuàng)建通信主進(jìn)程,主進(jìn)程用于以太網(wǎng)通信,連接上位機(jī),收到命令后,將設(shè)備記錄的數(shù)據(jù)上傳,并創(chuàng)建副進(jìn)程。(3)上位機(jī)檢測副進(jìn)程是否創(chuàng)建成功:若否,自動(dòng)進(jìn)入步驟(4);若是,自動(dòng)進(jìn)入步驟(6)。(4)如果創(chuàng)建副進(jìn)程發(fā)生阻塞,此時(shí)等待上位機(jī)命令,接收到上位機(jī)發(fā)出的Enter命令,終止副進(jìn)程運(yùn)行,等待副進(jìn)程完全退出后,MCU進(jìn)入命令行模式;(5)在命令樹樹根收到上位機(jī)的Exit命令后,退出命令行模式,并重新創(chuàng)建副進(jìn)程,返回步驟(3)。(6)副進(jìn)程運(yùn)行觸發(fā)Start事件,用以初始化需要偵聽電流表數(shù)據(jù)的責(zé)任鏈,并利用繼電器給電流表上電,開啟RS232,最后將open節(jié)點(diǎn)寫入record文件中并通過SOCKET發(fā)送出去。如圖4所示,當(dāng)副進(jìn)程運(yùn)行觸發(fā)Start事件時(shí),MCU檢測電流表是否打開,如果電流表已打開,則不做處理,如果未打開,MCU讀取數(shù)據(jù)庫中的節(jié)點(diǎn)配置數(shù)據(jù),并以此數(shù)據(jù)作為參數(shù),實(shí)例化責(zé)任鏈節(jié)點(diǎn),如果數(shù)據(jù)讀取失敗,則電流表異常指示燈點(diǎn)亮,如果讀取數(shù)據(jù)成功,MCU綁定每一個(gè)被初始化的節(jié)點(diǎn)觸發(fā)事件,給繼電器上電,并寫入open節(jié)點(diǎn)到record文件里,置位電流表標(biāo)記為打開,打開RS232串口,并延時(shí)一段時(shí)間等待電流表啟動(dòng)完成。(7)在Start事件結(jié)束后進(jìn)入LOOPING事件,MCU無限次讀取電流表示數(shù)并將讀取的數(shù)據(jù)傳入偵聽數(shù)據(jù)的責(zé)任鏈,當(dāng)責(zé)任鏈的節(jié)點(diǎn)條件被觸發(fā)時(shí),節(jié)點(diǎn)會(huì)將自己寫入record文件中。如圖6所示,在讀取電流表示數(shù)時(shí),如果讀取異常,則MCU將readex節(jié)點(diǎn)寫入record文件中,觸發(fā)Stop事件,延時(shí)一段時(shí)間,重新觸發(fā)Start事件,如果讀取正常,則MCU將讀取到的值送入各節(jié)點(diǎn)中處理,當(dāng)節(jié)點(diǎn)被觸發(fā)時(shí),將被觸發(fā)的節(jié)點(diǎn)寫入record文件中,并通過SOCKET發(fā)送出去。當(dāng)LOOPING事件中出現(xiàn)異常時(shí),副進(jìn)程將readex節(jié)點(diǎn)寫入record文件,并依次觸發(fā)Stop、Start事件使設(shè)備重新進(jìn)入正常的工作模式。如圖7所示,MCU將讀取到的值送入各節(jié)點(diǎn)中處理時(shí),判斷觸發(fā)方式,大于閾值時(shí)觸發(fā)如下命令:1.當(dāng)輸入的數(shù)據(jù)小于閥值,將標(biāo)志字節(jié)清零,并返回;2.當(dāng)輸入的數(shù)據(jù)大于等于閥值進(jìn)行數(shù)據(jù)分析。小于閾值時(shí)觸發(fā)如下命令:1.當(dāng)輸入的數(shù)據(jù)大于閥值,將標(biāo)志字節(jié)清零,并返回;2.當(dāng)輸入的數(shù)據(jù)小于等于閥值進(jìn)行數(shù)據(jù)分析。進(jìn)行數(shù)據(jù)分析時(shí),判斷標(biāo)志字節(jié)是否為0。如果標(biāo)志字節(jié)為0,則判斷持續(xù)時(shí)間是否小于等于0,如果小于等于0,則滿足觸發(fā)條件觸發(fā)事件,將標(biāo)志字節(jié)置位0x01,如果大于0,則標(biāo)記當(dāng)前時(shí)間,將標(biāo)志字節(jié)置位0x01。如果標(biāo)志字節(jié)不為0,則判斷標(biāo)志字節(jié)是否為0x01。如果標(biāo)志字節(jié)不為0x01,返回。如果標(biāo)志字節(jié)為0x01,則判斷持續(xù)時(shí)間是否大于0,并且當(dāng)前時(shí)間減掉標(biāo)記時(shí)間是否大于等于持續(xù)時(shí)間,并且標(biāo)記字節(jié)不為0x03,如果不是,直接返回,如果是,將標(biāo)志字節(jié)置位為0x03,滿足觸發(fā)條件并觸發(fā)事件。(8)當(dāng)主進(jìn)程接收到Enter命令后,將使副進(jìn)程觸發(fā)Stop事件,在該事件中處理釋放責(zé)任鏈,斷開RS232,斷開繼電器,并將Close節(jié)點(diǎn)寫入record文件中。如圖5所示,MCU檢測電流表是否打開,如果電流表未打開,則不做處理,如果電流表已打開,則關(guān)閉RS232串口,寫入open節(jié)點(diǎn)到record文件里,并清除電流表標(biāo)志位,釋放責(zé)任鏈各節(jié)點(diǎn)。以上述依據(jù)本發(fā)明的理想實(shí)施例為啟示,通過上述的說明內(nèi)容,相關(guān)工作人員完全可以在不偏離本項(xiàng)發(fā)明技術(shù)思想的范圍內(nèi),進(jìn)行多樣的變更以及修改。本項(xiàng)發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利要求范圍來確定其技術(shù)性范圍。