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