劉 凌
(公安消防部隊昆明指揮學校訓練部防火教研室,昆明 650231)
閘門開度監測系統是水工閘門啟閉機的必要裝置,其主要作用為監測閘門的起升高度、兩側鋼絲繩的受力情況和記錄閘門的運行情況[1],一般具有開度采集、開度顯示、存儲及傳輸等功能[2]。
閘門開啟的大小直接影響水流量,因此閘門開度的準確性在水資源利用及防汛調度等方面至關重要[3]。隨著時代的發展,特別是閘門高度測量和計算機應用的迅速發展,人們對閘門開度測量精度和自動化程度的要求也越來越高[4]。各種高精度、高自動化的閘門開度監測系統被提出,其中有基于光纖的閘門開度儀[5]、基于MSP430單片機的閘門開度儀[6]和基于GSM的閘門開度儀[7]。
基于S3C6410的閘門開度自動監測系統的工作主要是圍繞開度值/荷重值的采集、顯示、存儲及傳輸等進行。該系統可實時監測閘門的開度狀況,并根據開度狀況及時將異常開度值傳至總控臺,并自動做出報警等反應,具有高度自動化特點。閘門開度自動監測系統通過MODBUS協議與上位機進行通信,通用性強、可靠性強。另外,該裝置支持SPI、RS-232及無線等多種數據出傳輸方式,滿足不同應用下的數據傳輸需求。
閘門開度自動監測系統結構如圖1所示。整個系統的核心是S3C6410,系統的主要輸入由開度編碼器、荷重傳感器、按鍵及上位機等完成;系統的輸出由總控臺、上位機、LCD液晶屏和SD卡完成。

圖1 閘門開度自動監測系統結構示意圖
開度編碼器和和荷重傳感器采集閘門的開度與荷重信息,經過轉換后傳給S3C6410;按鍵操作支持用戶完成系統參數調整及顯示界面菜單選擇等;上位機通過RS-485與S3C6410通信,主要功能為接收S3C6410的數據、修改自動監測系統的系統參數;LCD液晶屏用于完成數據與參數顯示功能(包括顯示編碼器和傳感器采集的開度和荷重數據、整個自動監測裝置的系統參數等);SD卡用于存儲,完成開度數據、荷重數據的本地存儲和系統運行日志的本地存儲。
閘門開度自動監測系統的主控模塊是由三星公司推出的一款低功耗、高性能的RSIC處理器S3C6410。它基于ARM11內核,工作頻率最高可達533MHz,功耗為200MW,共有八級流水線,且帶兩個周期的高度閃存訪問,具有更快的實時響應和更低的中斷延遲,支持矢量化中斷,帶可配置指令和數據高速閃存的存儲器系統,外加專用DMA高速本地存儲,同時內置強大的硬件加速器(包括2D加速、顯示處理等)[8]。
在閘門開度自動監測系統中,S3C6410的主要工作有:接收來自開度編碼器的閘門開度數據和來自荷重傳感器的荷重數據;按照MODBUS協議利用RS485接收來自上位機的參數;讀取時鐘芯片的時間數據,用作系統時間;通過普通I/O,配合正確時序,通過串行方式將開度、荷重數據和參數送至LCD液晶屏顯示;通過SPI,經過D/A轉換后將數據傳至總控臺;遵循SPI協議將數據和系統運行日志送至SD卡存儲;通過RS-485串口按照MODBUS協議格式將開度、荷重數據傳至上位機。
閘門開度自動監測系統開度、荷重數據和系統參數顯示部分采用的是HS12864-15液晶顯示屏。該屏幕是的主要特性由控制器ST7920決定。ST7920同時作為控制器和驅動器,可提供33路com輸出和64路seg輸出。在驅動器ST7921的配合下,最多可以驅動246×64點陣液晶[9]。數據顯示電路如圖2所示。

圖2 數據顯示電路
S3C6410接收到來自開度編碼器的開度值和荷重傳感器的荷重值,然后送到HS12864-15液晶屏實時顯示。此外,用戶可以通過屏幕配合按鍵操作查詢系統時間、設備信息、顯示方式、系統參數、報警閾值以及存儲在片外Flash芯片內的數據、設備運行日志。
閘門開度自動監測系統的開度和荷重數據、設備運行日志以及設備重要參數等存儲在Kingston的SD卡內。SD卡是Secure Digital Card卡的簡稱,由日本松下公司、東芝公司和美國SANDISK公司共同開發研制的全新的存儲卡產品,它是一個完全開放的標準系統,并且兼容MMC卡接口規范。SD卡有9個引腳,目的是通過把傳輸方式由串行變成并行提高傳輸速度。它的讀寫速度比MMC卡快,安全性也更高。SD卡最大的特點就是通過加密功能,可以保證數據資料的安全保密。它還具備版權保護技術,所采用的版權保護技術是DVD中使用的CPRM技術(可刻錄介質內容保護)。閘門開度自動監測系統的數據存儲電路如圖3所示。

圖3 數據存儲電路
S3C6410接收到來自開度編碼器的開度值和荷重傳感器的荷重值送到HS12864-15液晶屏實時顯示,會將數據送至SD卡內進行存儲。同時用戶還可以將系統參數等存儲在SD卡內。用戶可以通過自動監測系統和上位機查詢、刪除存儲在SD卡內的數據,還可以通過上位機軟件對存儲數據進行復制和剪切。
閘門開度自動監測系統的軟件系統包括:程序初始化;實時顯示開度/荷重值、系統時間及設備信息等系統參數;報警閾值的設置;數據和設備運行日志的存儲、刪除及查詢等功能。
用戶通過閘門開度自動監測系統的多級菜單實現上述各功能,開機菜單是一次性顯示兩路開度數值;主菜單的作用是為用戶提供在數據顯示方式、預值顯示、系統設置和設備信息查詢四者間做選擇的界面;數據顯示、預值顯示、系統設置和設備信息查詢作為主菜單的二級菜單;二級菜單根據各自需要實現功能下設三級甚至四級菜單。閘門開度自動監測系統的各級菜單關系如圖4所示。

圖4 閘門開度自動監測系統各級菜單關系示意圖
開度自動監測系統的多級菜單通過窗口引擎實現。這種多級菜單實現方式引入Windows系統下的窗口和消息機制,該菜單的核心部分是一個不依賴于具體硬件和菜單內容的通用窗口引擎。這種多級菜單實現方式具有結構簡單、使用方便、占用資算少及易于移植等優點。
從圖4看出軟件設計主要針對開度與荷重數據的顯示、存儲、查詢和系統參數的設置進行的。
為實現閘門開度自動監測系統軟件中開度、荷重數據的實時顯示、查詢、存儲和刪除功能,該軟件的主要工作有I/O讀入、超限判斷、SD卡讀寫、中斷處理、按鍵操作和液晶屏顯示。
閘門開度自動監測系統中數據存儲邏輯流程如圖5所示。S3C6410通過I/O獲得來自開度編碼器的開度值和荷重傳感器的荷重值,并判斷這些值是否超限,若超限控制蜂鳴器報警;然后將數據存入SD卡中;當有用戶按鍵操作時,判斷按鍵操作內容分,如果操作為讀取SD卡存儲數據,則S3C6410讀取SD卡中存儲的數據,并在液晶屏上顯示。

圖5 數據存儲邏輯流程
閘門開度自動監測系統中與系統參數設置有關的操作包括按鍵操作和液晶顯示。開度閾值和荷重閾值在內的報警閾值設置與系統參數設置類似,這里介紹系統參數的設置,其邏輯流程如圖6所示。

圖6 系統參數邏輯流程
閘門開度自動監測系統并不是一個孤立的系統,它需要傳輸數據至總控臺、上位機,并通過無線協議發送消息至閘門值班人員。其中與總控臺的通信是通過RS-232實現;與值班人員的通信通過GSM實現;與上位機通信遵循Modbus協議,通過RS-485實現。由于RS-232比較簡單,GSM相當普遍,筆者重點介紹開度自動監測系統與上位機間的通信。
1979年Modicon公司提出了Modbus協議,該協議成為世界上第一個真正實際用于工業現場的總線協議。Modbus協議定義了一個與基礎通信層無關的簡單協議數據單元,一個通用的Modbus幀由地址域、功能碼、數據和差錯校驗4部分構成。通過Modbus協議,控制器相互之間、控制器經由通信網絡和其他通信設備間均可以相互通信[10]。
無線測溫裝置采用Modbus的RTU傳輸模式,在該模式下數據單元的地址域占1Byte,Modbus尋址有256個不同的地址,其中地址0為廣播地址,所以一個系統中最多支持255個溫度采集模塊。
Modbus協議有3類功能碼,分別是公共用戶功能碼、用戶自定義功能碼和保留功能碼。閘門開度自動監測系統中使用的功能碼均是用戶自定義功能碼。
上位機和閘門開度自動監測系統作為通信雙方,其中上位機為主機,向開度自動監測系統發送請求數據單元,自動監測系統作為從機根據請求數據單元生成響應數據單元返回給上位機。請求數據單元和響應數據單元的生成和發送都是在Modbus協議規則下進行的。
以S3C6410為核心設計的閘門開度自動監測系統集開度、荷重數據采集,數據本地顯示與存儲、數據遠距離傳輸及數據異地顯示與存儲等功能于一體,具有測量誤差小、自動化程度高及穩定可靠等特點。基于S3C6410的閘門開度自動監測系統已在實驗室完成測試,各項功能均能正常實現。