汪昕隆,許萬彬,王梓行,陳鐵輝,陳耀忠,管立偉,2,3,盧 宇,2,3,何志杰,2,3
1(福建師范大學 物理與能源學院 福建省量子調控與新能源材料重點實驗室,福州 350117)
2(福建省半導體光電材料及其高效轉換器件協同創新中心,廈門 361005)
3(福建省太陽能轉換與儲能工程技術研究中心,福州 350117)
高大空間建筑如體育館、倉庫、影劇院等場所具有易燃物品多、火災危險性大等特點,必須有效控制此類場所的初期火災,防止火災的蔓延.自動跟蹤定位消防系統是控制建筑初期火災的重要自動滅火設施,已經得到廣泛應用[1,2].CAN(Controller Area Network)是ISO國際標準化的串行通信協議,可作為連接現場設備(傳感器、控制器等)、面向廣播的串行系統的總線結構框架,CAN總線具有網絡結構簡單、數據通信穩定可靠和良好的錯誤檢測等特點,在智能檢測與控制領域備受青睞,被廣泛應用在環境惡劣、電磁輻射干擾性強和振動大的工業環境中[3–5].CAN總線為分布式測控系統實現各節點之間實時、可靠的數據通信提供了強有力的技術支持.由于CAN標準及協議規范給出了物理層和數據鏈路層的定義,而對上層協議未作規范,因此,用戶在采用CAN總線構建系統時可以靈活地設計CAN上層協議,從而進一步提高CAN總線在應用層上的通信性能[6,7].
本文以自動跟蹤定位消防系統為例,通過解析報文標識符幀ID和數據幀含義,研究基于CAN總線應用層協議的制定原則和方法,應用結果表明,該協議能夠保證較高的通信可靠性,適用于自動跟蹤定位消防系統等可靠性要求較高的場合.
自動跟蹤定位消防系統是基于CAN總線技術搭建的模塊化的信息管理與控制平臺.消防系統整體架構如圖1所示,由3個子系統構成,分別為中央監控器子系統、區域控制器子系統和水炮控制器子系統.在基于CAN總線的自動跟蹤定位消防系統中,各子系統之間和子系統內各模塊間均通過總線進行信息交換,包括水炮的啟動、停止、開關水泵、開關電磁閥、火警以及紫外傳感器脈沖數等.

圖1 系統結構框圖
中央監控器子系統置于監控室內,是整個消防系統的核心,監控器不僅可以接收底層各CAN節點發來的參數信息和工作狀態信息,并且通過CAN總線向各控制節點發送命令和數據信息.區域控制器子系統負責管理本區域內的水炮,通過CAN總線來設置總線上水炮的地址、設置通訊模式和通訊速率以及對水炮進行單獨操作.水炮控制器子系統通過CAN總線發送傳感器信息和火源信息,同時接收區域控制器子系統和中央監控器子系統的命令信息.
自動跟蹤定位消防系統通信信息分為命令和數據兩類.命令信息,比如設置總線上水炮的地址、設置通訊模式等,其優先級比數據信息高.數據信息,比如紫外傳感器脈沖數、環境溫度等,其優先級相應低一些.不同的子系統發送的數據信息也有優先級之分,如水炮本身的參數信息和工作狀態報警信息比紫外傳感器脈沖數信息優先級高;中央監控器子系統的優先級最高,而底層的區域控制器子系統優先級低.
自動跟蹤定位消防系統中有的信息要求周期性傳送,如紫外傳感器脈沖數、環境溫度等參數信息.有的信息屬于事件觸發發送,如報警信息、遠程操作水炮等控制命令信息.各子系統發送指令和數據信息的字節數都比較少,大部分都不超過8個字節,很適合CAN總線短幀快速的傳送方式.
CAN總線通信電路如圖2所示,主要由CAN總線收發器82C250Y、雙通道數字隔離器1201ARZ、電源隔離模塊B0505S和信號繼電器HFD4組成.STM32自帶CAN控制器,其CAN模塊的引腳通過雙通道數字隔離器1201ARZ后與82C250Y相連,可以很好實現總線上各節點的電氣隔離,增強CAN總線節點的抗干擾能力.需要注意的是,雙通道數字隔離器1201ARZ所采用的兩個電源要完全隔離,這里引入了電源隔離模塊B0505S.如果CAN節點出現嚴重錯誤,可以通過STM32控制信號繼電器HFD4將本節點從CAN總線上分離,從而增強CAN總線的穩定性和安全性.
自動跟蹤定位消防系統采用模塊化、無主從總線化設計,層次清晰,便于維護和升級,具有良好的互換性.消防系統中的子系統數量多,通信數據傳送量大,需要清晰定義CAN總線應用層協議,以確保系統中各子系統之間正確、實時通信.
本系統協議采用CAN2.0B支持29位標識符的擴展幀,如圖3所示,29位擴展幀包括11位基本ID(即標準幀)和18位擴展ID[8,9].基本11位ID發送順序為ID28到ID18,它定義了擴展幀的基本優先級,其值越大代表優先級越低;18位擴展ID按照ID17到ID0的順序發送.替代遠程請求位SRR位為隱性,遠程發送請求位RTR在數據幀中為顯性來區分數據幀和遠程幀,保留位r1和r0發送為顯性,DLC為數據長度碼.通信速率可由區域控制器設置成10、100、200 kb/s等多種總線波特率,本系統采用10 kb/s進行通信.各節點之間通信使用數據幀,遠程幀不用于數據請求.

圖2 CAN總線接口電路

圖3 數據幀擴展格式中的仲裁場結構
CAN總線協議將數據信息分為廣播信息和專有信息.任意節點可以發出廣播信息,總線上所有其他節點都接收或局部多個指定節點選擇性地接收;專有信息是由某一節點發送且只針對某一指定節點接收的點對點信息.廣播信息的優先級比專有信息高,且優先級是基于節點的,不同的節點可以有不同的優先級.同樣,節點的專有信息可以基于信息內容的重要程度來分為不同的優先級[6].
CAN應用層協議可以由用戶自行制定,有較大的靈活性.本協議在CAN 2.0B基礎上對29位標識符進行定義,采用了預定義分配方式來分配標識符,見表1.

表1 報文格式
(1)優先級:由ID28–ID24組成,優先級分配如表2所示.將00000、00001兩個優先級作備用.中控與消防炮之間的火警數據通信優先級定義為00010為最高優先級,中控與消防炮之間的正常數據通信優先級定義為00011為次優先級,中控需要對消防炮進行注冊編碼和單臺操作,在緊急情況下由相關人員進行遠程控制消防炮時必須得到及時響應.區域集控器與消防炮之間的通信設置為00100,為次優先級,有火情時可以強制消防炮進行掃描尋找火源.中控需要對區域集控器進行注冊編碼和相關操作,通信優先級設置為00101.末端試水裝置需要將自身工作狀態在中控和區域集控器上進行顯示,所以與中控通信優先級設置為00110,與區域集控器通信優先級最低,設置成00111.

表2 優先級分配
(2)目標節點與源節點:ID15–ID8為目標節點地址,ID7–ID0定義為源節點地址.在本系統中,中控的節點地址為A0,第N個區域控制器的節點地址為BF,第N個消防炮的節點地址為CF且前兩位表示區號、后兩位表示炮號,均為十六進制地址.
中控與水炮之間正常數據通信與報警數據通信有所不同,現舉例說明如下:
(1)中控與水炮的正常數據通信:以水炮B1節點為例,解釋說明各位含義.表3所示的數據幀1、2為水炮正常工作時向中控發送的數據幀,源節點地址為B1,目標節點地址為A0,其優先級為00110,點對點式通信將幀類型設置為01,因此幀ID為0x0601A0B1.該表示方法采用右對齊的模式,可以清晰分辨是源節點B1向目標節點A0發送數據.數據幀1表示水炮向中控發送紫外傳感器的脈沖數,數據幀的第1位表示數據幀編號,第2位表示功能碼,第3位表示紫外傳感器的脈沖數為10個,第四位用0xFF填充,第5至第8位是該數據幀時間戳,采用UTC時間表示.

表3 數據幀示例
(2)中控與水炮的報警數據通信:以水炮B1節點向中控A0 發送報警信息為例,表3所示的數據幀3、4為水炮向中控發送的報警數據幀,源節點地址為B1,目標節點地址為 A0,優先級為00011,幀類型為00(廣播式),故幀 ID為0x0300A0B1.為了使廣播信息能被A0模塊唯一接收,必須通過特殊功能寄存器設置屏蔽碼.因為CAN控制器采用左對齊方式,所以分別設置CANIDT1、CANIDT2、CANIDT3、CANIDT4為0x18、0x05、0x07、0xA8.這樣,A0模塊就僅能接收ID為0x0300A0B1的廣播數據幀.同理,當A0模塊向水炮B1節點發送數據時,源地址為A0,目標地址為B1,優先級為00011,故幀ID為0x0300B1A0.中控可以接收來自任何CAN節點的數據,鑒別出該幀ID,并對相應數據幀進行操作.
將圖1所示的各子系統采用STM32系列單片機分別設計成基于CAN總線的電路模塊,然后通過CAN總線實現中央控制器與各子系統的信息通信.在實驗室內安裝本系統,系統的試驗測試平臺如圖4所示,對系統進行通信測試.采用高精度校準儀表、示波器及本系統分別對紫外傳感器脈沖數、步進電機控制、水泵控制、電磁閥控制等進行現場測試并記錄,其中紫外傳感器脈沖數測試結果如表4所示.從表4可以看出,紫外傳感器脈沖數據平均誤差在5%以內,數據具有較高的一致性,完全滿足系統的需求.試驗結果表明,基于該CAN應用層協議的自動跟蹤定位消防系統可以在10kb/s速率下實現各模塊之間以及各模塊與中央控制器之間的實時無誤通信.利用Visual Studio開發環境和C#自主開發上位機測試軟件,主界面如圖5所示.

圖4 系統實驗測試平臺
基于CAN總線的自動跟蹤定位消防系統采用模塊化設計,完成了各節點設計和系統集成,可靠性高,便于后期維護和升級.其應用層協議制定方便靈活,清晰簡潔,數據幀和擴展幀的定義符合自動跟蹤定位消防系統數據通信的實際狀況.通信協議已在自動跟蹤定位消防系統中得到成功應用,實際應用表明:自行定義的應用層協議不僅能滿足自動跟蹤定位消防系統實時無誤通信要求,而且具有良好的移植性和通用性,便于系統的產品化,可適用于其他領域的智能監控系統.

圖5 上位機測試軟件主界面

表4 系統測試結果