唐 勇,張 冰,黃巧亮
(江蘇科技大學(xué) 電子信息學(xué)院,江蘇 鎮(zhèn)江 212003)
隨著我國船舶工業(yè)技術(shù)的發(fā)展,船舶機(jī)艙監(jiān)測和報(bào)警系統(tǒng)技術(shù)飛速提升。延伸報(bào)警系統(tǒng)是監(jiān)測報(bào)警系統(tǒng)的重要組成部分,是實(shí)現(xiàn)船舶自動化和智能化的關(guān)鍵系統(tǒng)[1]。船舶是一個特殊的應(yīng)用環(huán)境,對系統(tǒng)的性能要求很高。目前應(yīng)用在延伸報(bào)警系統(tǒng)領(lǐng)域的技術(shù)主要是圍繞RS485構(gòu)成的環(huán)形結(jié)構(gòu)。隨著技術(shù)的不斷提高,現(xiàn)場總線和以太網(wǎng)技術(shù)在船舶領(lǐng)域的應(yīng)用也越來越廣泛,各類延伸報(bào)警裝置也層出不窮,但現(xiàn)有的延伸報(bào)警裝置通用性較差,有些整合在機(jī)艙監(jiān)測報(bào)警系統(tǒng)中;有些整合了輪機(jī)員呼叫主機(jī)功能,不適合所有船舶;有些報(bào)警信號輸入方式、總線方式單一。筆者介紹的是一種基于RS485、CAN總線、以太網(wǎng)等多種通信方式的設(shè)計(jì)方法,大大提升了該延伸報(bào)警裝置的通用性。
船用延伸報(bào)警系統(tǒng)一般由多個延伸報(bào)警裝置組成。其主要作用是,船舶機(jī)艙集控臺上的延伸報(bào)警裝置(主單元)及時地將船舶機(jī)艙發(fā)生的報(bào)警情況傳送至駕駛室、公共場所、值班員住所等處的延伸報(bào)警裝置(從單元)[2]。整個系統(tǒng)的構(gòu)成如圖1所示。
圖1 延伸報(bào)警系統(tǒng)的構(gòu)成Fig.1 Structure of the extend alarm system
延伸報(bào)警裝置主單元通過通信模塊與各延伸報(bào)警裝置從單元一起組成整個延伸報(bào)警系統(tǒng),并通過多種方式和上位機(jī)進(jìn)行通信。上位機(jī)將得到的報(bào)警信息發(fā)送到延伸報(bào)警裝置主單元,主單元根據(jù)自身的設(shè)置將報(bào)警信息及時有效地傳遞到各終端。在延伸報(bào)警裝置主單元上可以通過旋鈕開關(guān)或人機(jī)交互進(jìn)行值班設(shè)置和報(bào)警信息輸入方式的設(shè)置,通過按鍵可以進(jìn)行消音、確認(rèn)等本地報(bào)警操作,并及時將報(bào)警和值班設(shè)置信息形成數(shù)據(jù)包,發(fā)送到整個網(wǎng)絡(luò)上。各延伸報(bào)警裝置從單元通常安裝在輪機(jī)長室、二管輪、三管輪、電機(jī)員以及餐廳,駕控臺等公共區(qū)域。當(dāng)報(bào)警發(fā)生時,主單元和系統(tǒng)設(shè)置的當(dāng)前值班的從單元發(fā)出聲光報(bào)警信號。如果在報(bào)警信號發(fā)出后,在設(shè)定時間內(nèi)相關(guān)值班人員不在或未能對報(bào)警信號進(jìn)行應(yīng)答消音處理,系統(tǒng)將自動在每個從單元發(fā)出報(bào)警信號,進(jìn)行全局呼叫。在延伸報(bào)警裝置從單元上可以通過旋鈕開關(guān)或人機(jī)交互設(shè)置值班轉(zhuǎn)移,通過按鍵進(jìn)行消音和確認(rèn)操作。
當(dāng)報(bào)警發(fā)生后,系統(tǒng)將記錄該報(bào)警的相關(guān)信息,值班人員可以在每個終端上通過人機(jī)交互進(jìn)行查詢相關(guān)信息、日歷時鐘設(shè)置、報(bào)警編號及名稱的修改或添加等操作。
延伸報(bào)警裝置主從單元的硬件構(gòu)成如圖2所示。主要包括微控制器、存儲單元、開關(guān)量輸入模塊、通信模塊、LCD模塊,鍵盤、撥碼開關(guān)等部分。筆者著重介紹微處理器、通信模塊的設(shè)計(jì)方法。
圖2 延伸報(bào)警單元硬件組成框圖Fig.2 Structure diagram of hardware system of the extend alarm unit
系統(tǒng)中的微控制器主要作用是對輸入輸出口進(jìn)行控制,實(shí)現(xiàn)LCD顯示,并且能夠完成RS485、CAN、以太網(wǎng)通信功能,實(shí)現(xiàn)接收和傳送相關(guān)數(shù)據(jù),因此在選用芯片時要選用具有較多通用I/O口的,外圍資源豐富的微處理器。本系統(tǒng)采用性能優(yōu)越的C8051F430單片機(jī),該單片機(jī)是一款完全集成的混合信號片上系統(tǒng)型的微處理器,具有片內(nèi)上電復(fù)位、電壓調(diào)整器、看門狗定時器和時鐘振蕩器;FLASH存儲器還具有系統(tǒng)重新編程能力,可用于非易失性數(shù)據(jù)存儲,并允許現(xiàn)場更新8051固件[3]。
本延伸報(bào)警系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)就是實(shí)現(xiàn)數(shù)據(jù)的可靠通信。由于現(xiàn)階段船舶自動化領(lǐng)域主要采用的是RS485和CAN通信技術(shù),所以在設(shè)計(jì)通信模塊時都加以考慮,在實(shí)際應(yīng)用時可根據(jù)需要選擇RS485、CAN總線、以太網(wǎng)三種通信方式中的一種??紤]到使用的方便性,在設(shè)計(jì)是通過撥碼開關(guān)進(jìn)行選擇通信方式。下面分別介紹3種通信方式的接口方式。
2.2.1 RS485接口部分
船用報(bào)警系統(tǒng)大多采用RS485通信方式。本延伸報(bào)警裝置在每個通信模塊都設(shè)計(jì)了485接口,具體的連接方式如圖3所示。芯片選用MAX485,由于工程環(huán)境比較復(fù)雜,現(xiàn)場常有各種形式的干擾源,所以485總線的傳輸端一定要加有保護(hù)措施。在電路設(shè)計(jì)中采用穩(wěn)壓管D1、D2組成吸收回路。為防止信號之間的干擾,采用光耦TIL117進(jìn)行隔離,保證通信的可靠性[4]。
圖3 通信模塊RS485接口連接圖Fig.3 Diagram of the RS485 communication module interface connection
2.2.2 CAN接口部分
CAN控制器局域網(wǎng)是一種廣泛應(yīng)用于工業(yè)領(lǐng)域的通信網(wǎng)絡(luò)。CAN為串行通信協(xié)議,能夠有效地支持具有很高安全等級的分布實(shí)時控制,在船舶自動化領(lǐng)域有著廣泛的應(yīng)用。本延伸報(bào)警裝置通信模塊采用SJA1000來實(shí)現(xiàn)這一功能。SJA1000是Philips公司生產(chǎn)的一種獨(dú)立控制器,它在BasicCAN的基礎(chǔ)上增加了一種新的工作模式PeliCAN,支持CAN2.0B協(xié)議[5]。SJA1000和CAN總線收發(fā)器PCA82C251的連接圖如圖4所示。SJA1000的串行數(shù)據(jù)輸出線(TX)和串行數(shù)據(jù) 輸 入線 (RS)接到 收發(fā) 器 PCA82C251。 收 發(fā)器PCA82C251通過有差動發(fā)送和接收功能的兩個總線終端CANH和CANL連接到總線電纜。
2.2.3 以太網(wǎng)接口部分
1)以太網(wǎng)接口連接方式
以太網(wǎng)控制芯片選用CP2200。目前在嵌入式系統(tǒng)開發(fā)中,比較常用的獨(dú)立的以太網(wǎng)控制器如RTL8019AS、CS8900A等這些芯片體積大,引腳多,操作復(fù)雜,系統(tǒng)開銷也很大。CP2200是集成了IEEE 802.3以太網(wǎng)媒體訪問控制器(MAC)、10Base-T 物理層(PHY)和 8 kB 非易失性 FLASH 存儲器的單芯片以太網(wǎng)控制器,采用 28腳 QFN(5×5mm)或48腳TQFP封裝。CP2200可以為具有11個以上端口 I/O引腳的任何微控制器或主處理器增加以太網(wǎng)通信功能。8位并行總線接口支持Intel和Motorola總線方式,可以使用復(fù)用或非復(fù)用方式尋址。在非復(fù)用方式下,數(shù)據(jù)傳輸速度可超過30Mbps[6]。本系統(tǒng)采用非復(fù)用的方式,CP2200外圍硬件連接圖如圖5所示。地址總線端口A[0~7]和數(shù)據(jù)總線端口D[0~7]通過 74HC573接單片機(jī) F340的管腳端 P4.0~P4.7,F(xiàn)340通過這兩條總線對CP2200進(jìn)行尋址和接收發(fā)送數(shù)據(jù)。F340通過譯碼器接CP2200的CS引腳,INT接F340的管腳P0.0;單片機(jī)通過譯碼器控制 CP2200的工作使能,而CP2200通過管腳INT給單片機(jī)發(fā)出中斷請求信號。
圖4 通信模塊CAN總線接口連接圖Fig.4 Diagram of the CAN bus communication module interface connection
圖5 CP2200外圍硬件連接圖Fig.5 Diagram of the CP2200 hardware connection
2)CP2200的配置方法
單片機(jī)與CP2200連接好后,需要對CP2200進(jìn)行配置。配置窗口如圖6所示。程序編譯環(huán)境使用Silicon Laboratories,利用TCP/IP Configuration Wizard環(huán)境配置網(wǎng)絡(luò)的IP地址、MAC地址等參數(shù),然后運(yùn)行Silicon Laboratories IDE會自動生成所需的單片機(jī)程序架構(gòu),然后在按照實(shí)際需要對其中的子函數(shù)指令內(nèi)容進(jìn)行具體編寫,從而實(shí)現(xiàn)以太網(wǎng)功能。
本延伸報(bào)警系統(tǒng)的軟件部分主要包括主機(jī)模塊和從機(jī)模塊。它們又主要涉及主程序、通信模塊程序,中斷服務(wù)程序等。通信模塊程序主要包括CAN通信程序和以太網(wǎng)通信程序。限于篇幅,筆者主要介紹系統(tǒng)的主程序流程。本系統(tǒng)采用C語言編寫程序,可移植性強(qiáng),便于調(diào)試和維護(hù)。根據(jù)系統(tǒng)所要達(dá)到的功能,其主要流程圖如圖7所示。
圖6 TCP/IP配置窗口Fig.6 TCP/IP configuration window
系統(tǒng)在程序開始后,首先進(jìn)行裝置初始化,初始化主要包括微處理器初始化、LCD模塊初始化以及根據(jù)撥碼開關(guān)的狀態(tài)初始化相應(yīng)的通信模塊。初始化完成后,系統(tǒng)判斷延伸報(bào)警裝置是主單元還是從單元。
主單元部分的主要流程如圖左側(cè)所示。系統(tǒng)進(jìn)入主單元后,首先根據(jù)撥碼開關(guān)的狀態(tài)確定值班轉(zhuǎn)移的設(shè)置方式,開啟通信中斷,然后判斷是否有未處理的報(bào)警信號,如果有發(fā)出聲光報(bào)警,如果沒有,開啟定時器1中斷;隨后判斷是否人機(jī)交互,人機(jī)交互處理主要包括報(bào)警歷史情況查詢、日歷時鐘設(shè)置、報(bào)警編號及名稱的修改或添加、值班設(shè)置等,若報(bào)警編號/名稱發(fā)生變化,則將相應(yīng)的信息發(fā)送到通信總線上。隨后判斷是否值班轉(zhuǎn)移,若是,則進(jìn)行值班轉(zhuǎn)移處理。值班轉(zhuǎn)移處理主要包括讀取值班狀態(tài),判斷是否有值班要求,若有則將值班要求信息發(fā)送到通信總線上。最后是判斷是否按鍵處理,按鍵處理部分主要包括讀取按鍵值,判斷是哪個按鍵按下,若是“試燈”鍵按下,則所有指示燈亮、蜂鳴器響;若是“LCD測試”鍵按下,則顯示LCD測試用顯示內(nèi)容;若是“通信測試”鍵按下,則向所有延伸報(bào)警裝置從單元發(fā)出通信測試指令。
圖7 系統(tǒng)程序流程圖Fig.7 Flow chart of the system
當(dāng)系統(tǒng)判斷為從單元時,首先根據(jù)撥碼開關(guān)狀態(tài)設(shè)置報(bào)警信號輸入方式和值班轉(zhuǎn)移設(shè)置方式。隨后判斷FLASH中是否有報(bào)警信號和名稱,若有,發(fā)出聲光報(bào)警并LCD顯示輸入報(bào)警信號和名稱。若沒有,開啟通信中斷,啟動定時器,判斷是否人機(jī)交互處理,包括報(bào)警歷史記錄查詢、日歷時鐘設(shè)置、值班轉(zhuǎn)移設(shè)置等;隨后判斷是否值班轉(zhuǎn)移處理[7],若有,則作出相應(yīng)處理并將值班轉(zhuǎn)移信息發(fā)送到通信總線上。最后判斷按鍵處理,包括讀取按鍵值,判斷是哪個鍵按下,若是“試燈”鍵按下,則所有指示燈亮、蜂鳴器響;若是“LCD測試”鍵按下,則顯示LCD測試用顯示內(nèi)容;若是“通信測試”鍵按下,則向所有延伸報(bào)警裝置從單元發(fā)出通信測試指令并啟動定時器;若是“消音”鍵按下,則使蜂鳴器不響、閃爍的燈變?yōu)槠焦?;若是“確認(rèn)”鍵按下,則將值班應(yīng)答信息或值班轉(zhuǎn)移應(yīng)答信息發(fā)送到通信總線上。
基于單片機(jī)的船舶通用型延伸報(bào)警系統(tǒng)結(jié)構(gòu)簡單,功能齊全,交互性好。用戶在使用時可以選擇不同的通信方式,可以有選擇的設(shè)定延伸報(bào)警從機(jī)的數(shù)量,也可以增加一些非常規(guī)的功能。本系統(tǒng)已經(jīng)在多艘油輪上使用,結(jié)果表明,該系統(tǒng)運(yùn)行穩(wěn)定、可靠性高、誤報(bào)警率低、使用簡單、成本低廉,不僅及時有效地傳遞了報(bào)警信息,還整合了輪機(jī)員值班等功能,能夠提高船舶報(bào)警的可靠性,具有很高的應(yīng)用價值。
[1]王偉,郭慶祝.船舶機(jī)艙CAN總線技術(shù)的分布式監(jiān)控系統(tǒng)研究[J].中國水運(yùn):學(xué)術(shù)版,2006,6(4):64-66.
WANG Wei,GUO Qing-zhu.Research of distributing monitor system used in marine engine room based CAN[J].China Water Transport:Academic Version,2006,6(4):64-66.
[2]鄭鳳閣.輪機(jī)自動化[M].大連:大連海事大學(xué)出版社,1998.
[3]Cygnal Integrated Products,Inc.C8051F340-Full Speed USB Flash MCU Datasheet[R].Cygnal Integrated Products,Inc(2006.01.).[2011-03-10].http://pdf1.alldatasheet.com/datasheet-pdf/view/142602/ETC1/C8051F340.html.
[4]王幸之,王雷,鐘愛琴,等.單片機(jī)應(yīng)用系統(tǒng)電磁干擾與抗干擾技術(shù)[M].北京:北京航空航天大學(xué)出版社,2006.
[5]李正軍.現(xiàn)場總線與工業(yè)以太網(wǎng)及其應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:人民郵電出版社,2006.
[6]Silicon Laboratories.CP2200/1 Single-chip ethernet controller datasheet [EB/OL]. (2006-06)[2011-3 -10].http://221.231.148.195/forward.html?url =http://pdf1.alldatasheet.com/datasheet-pdf/view/201083/SILABS/CP2200.html.
[7]甘本鑫,徐少明,蘇紅艷.基于單片機(jī)的LED路燈模擬控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2011(03):205-207.
GAN Ben-xin,XU Shao-ming.LED street lamps analog control system based on MCU [J].Modern Electronics Technique,2011(03):205-207.