攝像機在煤礦監控系統中使用廣泛,尤其對一些重要場所更需要在集控室遠程操控攝像機實現移動、調焦等功能。對攝像機的控制使用RS一485總線的較多,文獻[1]以AT89C52單片機為控制器設計了構建于RS.485總線基礎上的礦用攝像機工作臺控制系統。在現場使用這種方法進行控制的過程中,筆者發現:當控制距離較遠(超出1 km)以及掛接控制器較 (在某礦發電廠實測大于36臺)時會出現部分攝像機失控、誤動現象,其中頻繁地誤動還會導致工作臺的故障,給工作帶來不便。為解決以上問題,本文以嵌入式處理器LPC2129為主控芯片設計了礦用攝像機控制器,并通過CAN(contoller area network)總線實現了遠程控制。CAN總線屬于現場總線的一種,它具有可靠性 高、通信距離遠、連線簡單、性價比高等特點。
CAN采用非破壞總線仲裁技術,從而大大節省了總線沖突仲裁時間。尤其是在網絡負載很重的情況下,也不會出 現網絡癱瘓情況(以太網則可能)。CAN的通信距離最遠可達10 km(速率5 kbit/s以下時) ,因此煤礦 遠程控制很適合采用CAN總線。另外CAN總線可以使用雙絞線作為通信介質,這使得原有RS-485網絡 的控制系統不用重新布線就可以升級為CAN總線控制系統,可大大節約成本。
當前嵌入式系統技術成熟、應用廣泛。這主要得益于它的處理器將通用CPU中許多由板卡完成的任務精簡到芯片內部,在保證特定功能的前提下使系統設計趨于小型化,便于系統集成。LPC2129是飛利浦公司生產的基于16/32位ARM7TDMI—S內核的嵌入式處理器。其內部具有256 KB的Flash、16 KB的 RAM、2路CAN控制器。其他外圍接口也很豐富,這樣無需外擴存儲器就可以移植實時操作系統。因此,本文選用LPC2129作為主控芯片,另外使用嵌入式系統所設計的控制器尺寸小,從而使其可方便地嵌入到防爆工作臺。
1 控制系統工作原理
控制系統如圖1所示,監控上位機通過RS-232串口與1/S.232-CAN轉接器相連,轉接器與控制器構成CAN總線網絡,控制器直接控制攝像機和工作臺。系統控制原理如下:上位機通過鼠標及鍵盤接收特定攝像機控制動作命令,通過軟件轉換為攝像機控制器地址及控制命令,然后打包為控制字,再通過串口發送給轉接器。轉接器按協議將控制字轉換為CAN總線幀格式并將幀發送到總線上。地址相符的控制器接收該幀數據,根據控制命令產生控制信號,控制攝像機及工作臺完成相關動作。
圖1 控制系統
2 控制系統電路設計
控制系統的電路設計按功能分為3個部分:控制器電路、CAN總線電路、轉接器電路。
2.1 控制器電路
考慮到本系統的被控對象是攝像機和工作臺,而攝像機選用索尼FCB系列的攝像模塊,該模塊支持RS-232串M通信,所以控制器電路設計如圖2上部所示。圖中利用LPC2129的串口0(P0.0、P0.1)經電平轉換芯片ST3232構成控制器串口,外接攝像機模塊,完成對攝像機的控制。由于本設計沒有采用傳統的撥碼開關設定控制器地址,地址的設定要通過上位機來完成,因此通過LPC2129的串口1(P0.8、P0.9)完成與上位機的通信,實現地址的寫入。對工作臺的控制實際上是控制工作臺的兩個驅動電機,使用LPC2129的PWM接口P0.7、P0.21以及通用I/O接口P1.17、P1.19經光電隔離后進行驅動,控制電機的轉動,從而帶動工作臺的轉動。
圖2 電路原理圖
2.2 CAN總線電路
LPC2129內部集成了CAN控制器,使用它無需外接單獨的CAN芯片就可以方便地構成CAN總線。電路如圖2下部所示,由LPC2129的CAN引腳P0.23、P0.24外掛收發器模塊CTM8250接入CAN總線系統。CTM8250是周立功公司生產的一款帶隔離的通用CAN收發器芯片,該芯片內部集成了所有必需的CAN隔離及CAN收發器件,芯片的主要功能是將CAN控制器的邏輯電平轉換為CAN總線的差分電平并且具有DC 2500 V的隔離功能。此處使用該模塊是為了保證在煤礦現場總線工作的穩定性和可靠性。與RS-485總線類似,在總線的最遠端要串接120Ω電阻R20a為防止掉電后控制器CAN地址丟失,系統外擴了一片I2C總線的非易失性存儲器24C04,I2C總線上的電阻R4、R5的作用是進行電位上拉。
2.3 轉接器電路
轉接器的作用是連接上位機與CAN總線。由圖2可以看出,只需將對攝像機和工作臺的控制部分去掉就可以完成此功能。為簡化沒計,本文沒有使用其他處理器,轉接器仍然利用LPC2129的串口1完成與上位機的通信,并通過CAN引腳外掛收發器模塊CTM8250完成CAN總線通信。在轉接器里也外擴了24C04,主要用于存儲控制器的地址映射表。
3 控制協議
控制系統中上位機要首先與轉接器通信,傳送控制命令,這部分需要一個串口通信協議。通信時采用兩次握手的方法,地址使用邏輯地址(詳見控制器地址配置部分),數據的格式直接采用后面的CAN數據格式,在數據之后加一個字節的校驗和作為通信校驗。鑒于串口通信的文獻較多,此處不再贅述。
由于轉接器里的控制命令要通過CAN總線遠距離傳輸,而CAN V2.0B規范只規定了底層協議標準,并沒有對高層協議做統一規定,因此高層的控制協議需要單獨開發。CAN的報文由4個不同的幀類型表示和控制,即數據幀、遠程幀、錯誤幀、過載幀。鑒于攝像機控制系統中控制命令不多,故本文采用數據幀的標準格式發送控制命令,這樣做的優點是可以減少網絡傳輸的數據量,提高控制系統響應的實時性。協議具體設置如圖3所示,數據幀包括幀起始、仲裁域、控制域、數據域、CRC域、應答域以及幀結束共7個部分。其中幀起始、CRC域、應答域、幀結束4個部分在文獻[5]中已經詳細規定,此處從略。
圖3 CAN控制數據報文幀格式圖
本協議以標準格式的11位標識符(ID10一ID0)為控制器、轉接器地址,由于CAN協議規定IDIO—ID4必須不能全為隱性1,因此有效地地址數為2032個。根據CAN規定RTR位在數據幀格式里必須為顯性0,標識符和RTR位構成數據幀的仲裁域。需要指出的是由于仲裁域決定數據在總線上傳輸時的優先級,因此在設置時應將重要場所的攝像機配置為高優先級地址。控制域的r位是兩位保留位,后面的DLC3一DLC0用于確定數據域的長度,本協議所需數據域為8字節,故控制域取值為:DLC3一DLC0=1000。
所有控制命令全部在數據域的8個字節中設置,其中最后1個字節Byte0用于決定發送的是控制器更新地址還是控制字節,當其取值O*O1時表示發送的是更新地址,且其前面的Bytel~Byte2的高1 1位表示邏輯地址,Byte3-Byte4的高11位表示原地址,Byte5-Byte6的高11位表示要更新的地址;當字節Byte0取值0x02時表示其前面的6個字節Bytel—Byte6是控制字節,控制字節的詳細設置如圖3下部所示。
① 字節Bytel。第7位控制攝像機電源開關,取值0控制電源開,取值1控制電源關閉;第6位控制攝像機縮放,取值0控制攝像機進行縮放,取值1維持原狀不縮放且第0~5位的取值無意義;第5位表示在進行縮放時是縮還是放,0則縮,1則放;第4位取值0表示按標準格式縮放,取值1表示按可變格式縮放,且前面的第0~3位表示可變格式的控制,取值范圍由低到高分8級,以二進制數0~7表示,等于8時表示按步進格式縮放,取其他值無意義。
②字節Byte2。用來控制攝像機的調焦,設置與Bytel相似,從略。
③字節Byte3。第7位是控制工作臺移動的開關,取值0為開即進行移動,取值1則關閉工作臺移動;第6—3位表示工作臺移動的方向,取值0表示移動方向有效,1表示無效。
④字節Byte4的第7~4共4位控制工作臺左右移動速度,第3—0共4位控制工作臺上下移動速度,分9個等級,以二進制數0—8表示,取其他值無意義。需要說明的是:控制字節的Byte2第7位、Byte3低3位以及Byte5、Byte6在協議中沒有使用,編程時全部取值1,Byte5、Byte6留作協議進行下一步拓展時使用。雖然CRC域可以實現校驗,但是為了確保通信的可靠性,本協議仍以Byte7作校驗碼,校驗碼的計算方法為取Byte0~Byte6累加和的低8位。另外需要說明的是:由于工作臺的控制采用PWM調速,所以分了4個方向、9個速度等級,由Byte4控制,上下、左右的速度等級可以取不同值對應不同的速度。
在本文中攝像模塊的控制要使用SONY的VISCA協議,因此還要在控制器中設計CAN控制協議到VIS—CA協議的轉換。VISCA協議是公開的,此處只需將控制命令轉換為VISCA協議的控制碼通過串口發送即可。
4 軟件設計
控制系統軟件包括上位機軟件、轉接器軟件以及控制器軟件。其中,上位機軟件主要是設計控制界面,以及與轉接器的串口通信。在此可基于微軟的VS2008平臺用C#語言開發上位機軟件,該平臺提供了串口的控件,程序編寫相對簡單,文獻也較多,限于篇幅不再詳述。以下重點說明控制器地址配置與修改方法以及控制器軟件設計。
4.1 控制器地址配置與修改
當前市場上的監控攝像機控制器(解碼器)地址設定都是采用DIP開關來完成的。這在實際煤礦現場使用時很不方便,若要改變地址就必須到現場去手動沒定,而煤礦中有許多地方人員由于會帶來安全問題不便出入。基于此,本文設計了地址可實時在上位機直接修改的方案,徹底拋掉了DIP開關。
方案采用了地址映射的方法。將攝像機地理位置與監控界面對應的地址稱為邏輯地址,攝像機控制器的CAN標識符對應的地址稱為物理地址。在上位機程序中建立一張邏輯地址與物理地址的對應表,并將其映射到轉接器的程序地址表里,轉接器根據表的狀態變化實時修改控制器的物理地址。這樣控制命令采用物理地址進行傳輸就不會影響上位機對攝像機地理位置的判斷,只是控制器使用前必須在上位機設定一次邏輯地址與物理地址,修改時使用圖3所示的控制器更新地址命令即可完成。這種方案的另一個優點就是不會引起手動設定時的地址沖突(可編寫程序在設定地址前檢查有無沖突)。
4.2 控制器軟件設計
控制器軟件由主程序、子程序和中斷程序組成。主程序主要完成處理器的初始化。初始化內容主要包括:將P0.0、P0.1、P0.8、P0.9設置為串口功能,串口0工作為查詢模式,串口1工作為中斷模式,并設置其中斷優先級及通信波特率,使能相應中斷位;設置P0.2、P0.3為I C總線功能,禁止其中斷功能;設置P0.7、P0.21為PWM功能,置P1.17、P1.19為通用I/O口功能;設置P0.23、P0.24為CAN控制器功能,工作為中斷方式,讀取存儲在24C04中的控制器物理地址,根據該地址設置CAN控制器的濾波寄存器,使能CAN中斷控制位;開全局中斷控制;初始化完畢后主程序即進入循環等待過程。
子程序主要有:24C04讀寫子程序、攝像機模塊控制命令發送子程序(該程序同時完成CAN控制命令到VISCA協議的轉換)、工作臺控制子程序、控制器地址修改子程序。
中斷程序只有串口1中斷和CAN中斷。串口1開始通信進入中斷后要先進行兩次握手,然后接收4字節的地址值,前2個字節的高11位是邏輯地址,后2個字節的高11位是物理地址。再接收1字節的校驗碼,然后按接收的數據計算校驗碼是否正確,若正確則調用24C04讀寫子程序寫入地址信息,若不正確返回發送錯誤信息,寫入24C04時,若發生錯誤,返回寫入錯誤信息,否則,返回寫入正確信息。通信過程中若發生超時,則返回超時信息。CAN通信進入中斷后先讀取接收緩沖區的CAN報文,計算校驗碼。若校驗碼不正確則發送錯誤幀后返回;若正確則先調用攝像機模塊控制命令發送子程序控制攝像機動作,再調用工作臺控制子程序完成工作臺控制,然后返回。
5 結束語
本文設計的礦用攝像機CAN總線遠程控制系統經試驗測試運行穩定可靠,無攝像機和工作臺失控、誤動現象,適合在煤礦現場使用。雖然是控制的SONY攝像模塊,但電路在后端改造后也可控制其他攝像模塊。系統還可以在錯誤檢測及操作系統移植方面進一步改進。該控制系統是煤礦現場總線遠程控制的典型應用。
評論
查看更多