《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于iCAN協(xié)議的嵌入式從站模塊設(shè)計
基于iCAN協(xié)議的嵌入式從站模塊設(shè)計
來源:電子技術(shù)應(yīng)用2014年第3期
勾 璇, 尹 崗
(內(nèi)蒙古工業(yè)大學 電力學院, 內(nèi)蒙古 呼和浩特010080)
摘要: 對我國自行研發(fā)的iCAN總線協(xié)議作了簡單介紹,給出了一種基于iCAN協(xié)議的嵌入式從站模塊的設(shè)計方法,對軟硬件進行了相應(yīng)的說明。從站模塊為嵌入式核心模塊,內(nèi)部嵌入32位ARM微處理器LPC11C14,并帶有標準的CAN-bus通信電路接口及通用的I/O接口,使用者只需根據(jù)自己的需要設(shè)計好不同底板,就可拋開CAN-bus 產(chǎn)品復(fù)雜的設(shè)計過程,制造出適用于不同工業(yè)控制環(huán)境的產(chǎn)品。
中圖分類號:TH865
文獻標識碼:A
文章編號: 0258-7998(2014)03-0071-04
The design of embedded slave module based on iCAN protocol
Gou Xuan, Yin Gang
College of Electric Power, Inner Mongolia University of Technology, Hohhot 010080, China
Abstract: This paper introduces the iCAN bus protocol simply, which is developed by our country. A method of embedded slave module that based on iCAN protocol is proposed. The hardware and software are explained in this paper. As the core of the embedded module, it has a 32-bit ARM microprocessor inside. The standard CAN bus communication interface circuit and the general I/O interface is designed. Without using the complex design process of CAN-bus, the users can create different industrial control products simply according to their needs.
Key words : CAN bus; iCAN protocol; LPC11C14; embedded

    在工業(yè)控制系統(tǒng)網(wǎng)絡(luò)化趨勢下,工業(yè)控制系統(tǒng)逐漸采用更加徹底的分布式結(jié)構(gòu),而在這個發(fā)展過程中,現(xiàn)場總線的應(yīng)用起到了主導作用[1]。作為市場上占有率很高的現(xiàn)場總線之一,CAN-bus總線憑借其良好的開放性、可靠性和實時性以及較低的成本,在工業(yè)控制、遠程數(shù)據(jù)傳輸?shù)阮I(lǐng)域中獲得了廣泛應(yīng)用[2]。
    iCAN(Industrial CAN)協(xié)議即“工業(yè)CAN應(yīng)用層協(xié)議”是我國自行研發(fā)的現(xiàn)場總線技術(shù)標準,它的物理層和數(shù)據(jù)鏈路層完全兼容CAN2.0B協(xié)議規(guī)范。iCAN協(xié)議優(yōu)先保障通信數(shù)據(jù)的可靠性與實時性,以相對簡單的方式進行數(shù)據(jù)通信,有效降低了硬件實現(xiàn)成本。它的出現(xiàn)為中國中小型CAN-bus應(yīng)用網(wǎng)絡(luò)提供出一種簡單、可靠、穩(wěn)定的應(yīng)用層協(xié)議,更為可貴的是iCAN協(xié)議是我國具有完全自主知識產(chǎn)權(quán)的總線協(xié)議,它為我國開發(fā)具有自主知識產(chǎn)權(quán)的現(xiàn)場總線技術(shù)標準提供了寶貴的經(jīng)驗[3]。
    本設(shè)計采用NXP公司的LPC11C14微處理器作為模塊核心,這是一種內(nèi)嵌CAN控制器的32位ARM芯片。初始化后,LPC11C14將進行數(shù)據(jù)信號的采集,基于iCAN協(xié)議的報文解析與打包,并完成于主站的通信功能。
1 總體方案設(shè)計
1.1 基本結(jié)構(gòu)及功能

    基于iCAN協(xié)議的嵌入式從站模塊(以下簡稱iCAN從站模塊)由三部分組成:微處理器系統(tǒng)模塊、CAN總線通信模塊、本地應(yīng)用電路。從站模塊功能結(jié)構(gòu)圖如圖1所示。

    iCAN從站模塊中選用的微處理器LPC11C14內(nèi)部嵌入CAN控制器,因此微處理器系統(tǒng)包括微處理器及CAN控制器兩部分。iCAN從站模塊主要完成三部分功能: (1)通過本地應(yīng)用電路將不同的應(yīng)用對象的各功能單元連入iCAN總線,應(yīng)用對象包括4路模擬量輸入、4路模擬量輸出、8路數(shù)字量輸入和8路數(shù)字量輸出;(2)通過CAN收發(fā)器與iCAN主站相連,將采集到的數(shù)據(jù)上傳至主站或執(zhí)行主站下達的命令; (3)通過串行接口與上位PC機相連,完成對模塊用戶參數(shù)的配置。
1.2 模塊硬件電路設(shè)計
    iCAN從站模塊的硬件結(jié)構(gòu)框圖如圖2所示,主要包括微處理器、通用輸入輸出模塊、CAN通信模塊、UART通信模塊、存儲器擴展模塊及各基礎(chǔ)電路模塊。微處理器采用基于Cortex內(nèi)核的ARM芯片LPC11C14,其內(nèi)置1路CAN控制器,通過外接 CAN 收發(fā)器可方便地進行 CAN 數(shù)據(jù)收發(fā)。通用輸入輸出模塊設(shè)計了8路數(shù)字量輸入端口、8路數(shù)字量輸出端口、4路模擬量輸入端口、4路PWM輸出端口,這樣即可滿足在不同工業(yè)環(huán)境下對接口的要求。LPC11C14芯片擁有8通道10位AD轉(zhuǎn)換器,它們可在8個引腳中實現(xiàn)輸入多路復(fù)用,利用該芯片這一優(yōu)勢,本模塊設(shè)計了4路模擬量輸入。模塊初次上電時,用戶可在PC上通過串口調(diào)試助手對模塊基本參數(shù)進行設(shè)置,這些參數(shù)包括:節(jié)點MACID、CAN通信波特率、A/D采樣次數(shù)、PWM周期。模塊的用戶參數(shù)設(shè)置數(shù)據(jù)通過存儲器擴展模塊進行保存,當模塊再次上電時將從片外存儲器中讀取已保存數(shù)據(jù)進行初始化。

1.2.1器件選型
 為提高模塊的實時性和可靠性,iCAN從站模塊選用NXP公司推出的Cortex-M0內(nèi)核微處理器LPC11C14,工作頻率高達50 MHz,運算控制能力較強,每秒可以執(zhí)行超過4 500萬條指令,并且配有SWD調(diào)試功能;同時這款芯片擁有4個通用定時器,16位和32位各兩個,均帶有PWM輸出/匹配/捕捉功能;另外芯片擁有8通道10位ADC,它們可在8個引腳中實現(xiàn)輸入多路復(fù)用,并且10位轉(zhuǎn)換時間最小僅為2.44 ?滋s;芯片的這些特點輕松滿足了模塊對通用接口上的要求[4]。除此之外,LPC11C14這款芯片是針對控制局域網(wǎng)(CAN)2.0B標準研制的,集成了C_CAN控制器,是業(yè)界首款在片上直接支持CAN控制器的Cortex-M0微控制器,是目前市場上性價比最高的一款微處理器,從而解決了使用ARM微處理器所造成的成本提高的問題。
1.2.2 CAN總線通信模塊硬件設(shè)計
    通過CAN總線通信模塊可使iCAN從站模塊和iCAN總站完成通信,實現(xiàn)將采集數(shù)據(jù)上傳或執(zhí)行主站下達的命令的任務(wù)。CAN總線接口硬件電路如圖3所示。

    LPC11C14內(nèi)部集成有一個兼容CAN2.0B的CAN控制器,只需增加一個 CAN 總線收發(fā)器就能滿足設(shè)計要求。ISO1050是TI公司的電氣隔離式CAN收發(fā)器,此器件有一個被硅二極管絕緣隔柵分開的邏輯輸入和輸出緩沖器,具有DC 2500V的隔離功能。ISO1050DUB的輸入電源與輸出電源之間必須用電源隔離模塊隔開,但由于本模塊硬件部分需要做到盡量小,因此電源隔離這部分需要用戶在底板上實現(xiàn)。為實現(xiàn)有效的瞬態(tài)保護,在CAN信號輸出部分加了低電容瞬態(tài)電壓抑制器PSM712。PSM712可以保護收發(fā)器在瞬時高電壓情況下不受損壞。
2 軟件設(shè)計
2.1 主程序設(shè)計

    iCAN從站模塊的主要功能是對外部數(shù)字/模擬輸入信號進行循環(huán)采集,在接收到主站的命令幀時,向主站發(fā)送響應(yīng)幀并執(zhí)行命令。所有的功能都在一個主循環(huán)里實現(xiàn)。首先進行各功能模塊的初始化,初始化完畢后判斷是否已進行用戶參數(shù)配置,配置好參數(shù)后,檢測是否接收到有效CAN報文,若接收到則進行報文處理。當有中斷發(fā)生時,執(zhí)行中斷程序。主流程圖如圖4所示。
2.2 CAN模塊通信程序設(shè)計
    基于LPC11Cxx系列的微控制器的ZLG_CAN通用驅(qū)動庫提供了完整、可靠的CAN操作API,調(diào)用API既可以完成對CAN控制器和報文對象的配置,并實現(xiàn)CAN中斷的管理、CAN通信等工作。但是,通過ZLG_CAN通用驅(qū)動庫來進行應(yīng)用編程,仍然涉及到十幾個底層接口函數(shù),不便于移植和維護。因此本設(shè)計中的CAN模塊編程部分采用了對通用驅(qū)動的函數(shù)進行了進一步封裝的zlg_can程序模塊,圖5為CAN模塊編程流程框圖。

2.3 基于iCAN協(xié)議的報文處理程序設(shè)計
    iCAN 協(xié)議為CAN總線的應(yīng)用層協(xié)議,iCAN協(xié)議定義的通信方式是“面向節(jié)點,基于連接的通信方式。面向節(jié)點是指源節(jié)點地址及目的節(jié)點地址均已給定,即對于任何一個報文參與通信的雙方是確定的,基于連接是指在網(wǎng)絡(luò)中任何一個參與通信的從站設(shè)備都必須和主站設(shè)備建立一個獨立的通信連接。這樣也為對任何一個設(shè)備的通信進行監(jiān)控提供可能[5]。
    此外,iCAN協(xié)議也是一種主從方式的協(xié)議。iCAN協(xié)議中規(guī)定了三種通信模式: (1)主從通信模式,主站對從站發(fā)送命令幀,從站模塊回發(fā)響應(yīng)幀來應(yīng)答。這種通信模式為本模塊的常態(tài)通信模式。(2)事件觸發(fā)通信模式,用于在從站模塊輸入端口狀態(tài)發(fā)生改變時,主動向主站傳送數(shù)據(jù)。這種通信模式彌補了主從通信模式下總線利用率低的問題。(3)定式循環(huán)傳送模式,用于從站模塊在固定的時間間隔(由主站設(shè)置)向主站傳送數(shù)據(jù)。
    iCAN 協(xié)議使用了擴展幀格式CAN報文,對CAN報文的29位標識符和報文數(shù)據(jù)都做了詳細規(guī)定。報文標識符制定了數(shù)據(jù)通信中的源節(jié)點MACID和目標節(jié)點 MACID, 并指示了報文的功能以及所要訪問的資源。在iCAN協(xié)議中,使用資源節(jié)點來對設(shè)備進行描述,在iCAN網(wǎng)絡(luò)中,iCAN設(shè)備對iCAN主站而言就是許多資源節(jié)點的集合,通過資源節(jié)點主站和從站來完成數(shù)據(jù)交換[6]。iCAN標識符分配如圖6所示。

 

 

    iCAN協(xié)議規(guī)定了7種功能碼,主要有連續(xù)寫端口、連續(xù)讀端口、事件觸發(fā)傳送、建立連接等,這部分軟件就基于這幾種功能碼進行模塊化編寫。
    iCAN協(xié)議通信方式是基于連接的,任何通信都是在連接的基礎(chǔ)上進行建立連接是iCAN協(xié)議通信第一步,也是最重要的一步。這里介紹一下建立連接的程序流程,當從站模塊接收到主站發(fā)來的建立連接命令幀時,首先判斷報文是否合法且從站模塊尚未與其他模塊建立連接,若報文非法或已處于連接狀態(tài),則向主站回發(fā)異常響應(yīng)報文;若通過判斷,則繼續(xù)判斷連接定時參數(shù)是否為零,若為零,則從站模塊直接與主站建立連接并回發(fā)正常響應(yīng)幀,若不為零,則先啟動連接定時器,再與主站建立連接回發(fā)報文。建立連接的程序流程圖如圖7所示。

    本設(shè)計中的iCAN從站模塊收發(fā)的數(shù)據(jù)均符合 iCAN 協(xié)議報文的格式,當收到一幀CAN報文時,首先對其進行報文解析,翻譯成iCAN協(xié)議規(guī)定的報文格式,再做處理;同樣,當從站模塊要發(fā)送一幀報文時,首先需將iCAN報文翻譯成CAN報文,然后再經(jīng)過CAN通信程序進行發(fā)送。
2.4 用戶參數(shù)配置軟件設(shè)計
 從站模塊初次上電后,用戶需要對其基本參數(shù)進行設(shè)置,可設(shè)置的參數(shù)包括:節(jié)點MACID、CAN通信波特率、A/D采樣次數(shù)、PWM周期。因此,進行了“iCAN模塊用戶參數(shù)配置軟件”設(shè)計,如圖8所示。點擊“恢復(fù)出廠設(shè)置”按鈕即將參數(shù)設(shè)置為:模塊節(jié)點編號01,CAN波特率設(shè)置為500 kb/s,A/D采樣次數(shù)設(shè)置為64,PWM周期設(shè)置為3(1 ms)。

3 系統(tǒng)調(diào)試與運行
3.1模塊硬件

    iCAN從站模塊為核心模塊,用戶可根據(jù)自己的需求設(shè)計合適的底板,配合使用。這就要求本模塊體積要足夠小,因此本模塊按32 mm×32 mm的尺寸設(shè)計,把數(shù)字量輸入輸出、模擬量輸入輸出都通過排針引出。由于面積小,器件較多,因此采用雙面貼片。
3.2 模塊軟件通信調(diào)試
 將iCAN從站模塊插到測試底板上,將測試底板的CAN接口和USBCAN分析儀相連接,USBCAN分析儀的另一端連接PC(這里用PC模擬iCAN主站)。
    打開iCAN模塊用戶參數(shù)配置軟件,設(shè)置好端口號,點擊“連接”按鈕,紅燈亮,表示串口已連接正常;然后填寫各參數(shù)預(yù)設(shè)置的數(shù)值,填好后點擊“寫入”按鈕,觀察“返回狀態(tài)顯示窗口”,若出現(xiàn)“WRITEOK”字樣即說明設(shè)置成功。
    打開CANPro通信軟件,點擊“啟動”按鈕,彈出打開設(shè)備對話框,設(shè)備索引號設(shè)置為“0”,將波特率設(shè)置為500 Mb/s,與iCAN模塊波特率設(shè)置一致選中iCAN窗口,進行下面的測試。
3.2.1 MAC ID檢測
    硬件連接正常時,iCAN從站模塊上電后,主動向主站發(fā)送MAC ID檢測命令,以檢測iCAN從站模塊的節(jié)點號在網(wǎng)絡(luò)中是否唯一。若1 s內(nèi)未收到MAC ID檢測響應(yīng)幀,則iCAN模塊進入可操作狀態(tài)。
3.2.2 建立連接
    MAC ID檢測通過后,編號為“0”的主站節(jié)點發(fā)送“建立連接”命令幀,CyclicMaster這里設(shè)置為0,表示不裝載連接定時器;從站收到正確的命令幀,返回響應(yīng)幀,數(shù)據(jù)部分分別為DI、DO、AI、PWM的數(shù)目,單位為B;此時編號為2的節(jié)點又向iCAN從站模塊發(fā)送建立連接命令幀,iCAN從站模塊收到后,返回異常響應(yīng)幀,告知本節(jié)點已與其他節(jié)點建立連接。
3.2.3 采集模擬量輸入端口
    iCAN從站模塊與主站建立連接后,就可與主站進行通信,響應(yīng)主站命令。這里以采集模擬量輸入端口為例,介紹iCAN從站模塊的通信功能。
 主站發(fā)送命令幀,讀取4路模擬量端口的輸入數(shù)據(jù),每路模擬量16 bit,用2 B表示,因此命令幀數(shù)據(jù)部分08表示讀取8 B數(shù)據(jù);iCAN從站模塊接收命令幀,在極短時間內(nèi)回發(fā)響應(yīng)幀, 返回4路模擬量輸入端口的數(shù)值。
    本設(shè)計在對iCAN總線協(xié)議深入研究的基礎(chǔ)上,結(jié)合經(jīng)濟性和實用性的原則,設(shè)計了一種基于iCAN協(xié)議的嵌入式從站模塊,使更多的研究者可拋開CAN-bus 產(chǎn)品復(fù)雜的設(shè)計和漫長的測試過程,制造出適用于不同工業(yè)控制環(huán)境的產(chǎn)品,為進一步開發(fā)設(shè)計基于CAN-bus產(chǎn)品提供了便利。
參考文獻
[1] 周立功單片機發(fā)展有限公司. 基于iCAN協(xié)議的CAN bus分布式控制系統(tǒng)[J].產(chǎn)業(yè)技術(shù)與信息, 2006(4):84-85.
[2] 陽憲惠.現(xiàn)場總線技術(shù)及其應(yīng)用[M].北京:清華大學出版社, 2008.
[3] 張健,蔣新華,陳興武.CAN總線在基于ARM嵌入式數(shù)控系統(tǒng)中的應(yīng)用[J].自動化與儀表,2008(7):25-27.
[4] 廣州周立功單片機發(fā)展有限公司.深入淺出Cortex-M0—LPC1100系列[Z]. 2013.
[5] 周立功.iCAN 現(xiàn)場總線原理與應(yīng)用[M].北京:北京航空航天大學出版社,2007.
[6] 馮江濤.基MCGS和iCAN的分布式監(jiān)控系統(tǒng)[J].工業(yè)控制計算機,2008(2):18-19.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。