劉寶寶,楊東升,劉蔭忠,尹振宇
(1.中國科學院研究生院,北京 100049;2.中國科學院沈陽計算技術研究所,沈陽 110168)
數控同步現場總線與CAN總線網關的設計*
劉寶寶1,2,楊東升2,劉蔭忠2,尹振宇2
(1.中國科學院研究生院,北京 100049;2.中國科學院沈陽計算技術研究所,沈陽 110168)
眾多總線標準的并存與不兼容制約了現場總線的發(fā)展與應用,使得各現場總線之間的互聯成為當務之急。參考開放式數控系統(tǒng)中有關現場總線的規(guī)范,設計了數控同步現場總線與CAN總線的通信網關,其主要包含數控同步現場總線模塊、CAN總線模塊和數據幀封裝轉換模塊三部分。在對這兩種現場總線深入研究的基礎上,設計了帶優(yōu)先級的CAN數據幀的緩沖隊列,提出了數控同步現場總線應用層封裝CAN數據幀的方法,保障了數控同步現場總線與CAN總線之間速率和周期的協(xié)調。
現場總線;開放式數控系統(tǒng);數控同步現場總線;CAN總線;網關
現場總線控制系統(tǒng)在過去集散控制系統(tǒng)的基礎上順應用戶對控制系統(tǒng)提出的開放性的要求而誕生。開放的具有互操作性的現場總線將網絡現場的控制器及儀表設備互聯,構成現場總線控制系統(tǒng)。由于工業(yè)控制領域現場總線技術的競爭,形成了當今眾多總線標準并存的局面。這一局面限制了用戶對總線產品的選擇,同時也約束了總線技術的發(fā)展,這也使得各現場總線之間的互聯和互操作成為當務之急[1]。
開放式數控系統(tǒng)在結構上具有互換性、伸縮性、可操作性和可移植性,其能夠方便靈活的進行裁剪、擴展和升級。數控系統(tǒng)中的現場總線是數控裝置、執(zhí)行裝置和傳感器件之間通信的系統(tǒng)。數控系統(tǒng)的開放性勢必對現場總線開放性提出一定的要求。
數控同步現場總線(Numerical Control Synchronous Fieldbus,NCSF)是中國科學院沈陽計算技術研究所總線實驗室針對數控系統(tǒng)自主研發(fā)的現場總線。為真正實現數控系統(tǒng)的可裁剪、可擴展和可升級,數控系統(tǒng)的現場總線需要兼容不同的總線產品。CAN總線作為一種可靠的、功能完善的、成本合理的遠程網絡通信方式被廣泛應用于自動化控制領域,是國際上廣泛應用的現場總線之一[2],其應用范圍遍及工業(yè)機器人和傳感器等領域,有必要設計NCSF與CAN的互操作接口設備。設計NCSF和CAN總線的通信網關,有利于增強NCSF與其它現場總線的兼容能力,擴展其應用范圍。同時也為其它現場總線與數控同步現場總線互聯的軟硬件結構提供方案和技術參考。
沈陽計算所牽頭制定的《機械電器設備開放式數控系統(tǒng)第三部分:總線接口與通信協(xié)議》中提出,開放式數控系統(tǒng)總線是用于連接系統(tǒng)裝置間的數字式、雙向、多點的通信系統(tǒng),以ISO/OSI開放系統(tǒng)互連參考模型為基礎,并對其加以改造,由物理層、數據鏈路層、應用層與用戶層行規(guī)組成[3-4]。開放式數控系統(tǒng)由數控裝置、伺服驅動裝置、主軸驅動裝置、傳感器裝置、I/O裝置等組成,裝置間通過總線進行互操作,總線由站點、通信介質與設備組成,如圖1所示。
圖1 開放式數控總線結構
數控總線結構的設計標準只是一個規(guī)范,并未對具體的實現方法做規(guī)定。每個NCSF站點包括兩個網絡接口,它們通過雙絞線依次連成環(huán)形或線形,此種拓撲結構可以有效避免總線式結構的介質沖突,另外在總線的某一處出現異常時總線結構可自動轉變?yōu)閮蓚€線性的總線系統(tǒng)結構,這種冗余的拓撲結構,也進一步確保了通信的確定性和可靠性。
NCSF支持環(huán)形和線性的結構,而CAN是一種多主式的串行通信總線。本文中設計一個特殊的NCSF從站,它具有兩個網口和一個CAN接口。此從站通過兩個網口連接在NCSF總線中,同時通過CAN接口和CAN總線進行相關的交互,其總線結構如圖2。
圖2中NCSF總線的從站3負責NCSF-CAN之間的交互。此從站在普通NCSF從站的基礎上,實現CAN總線的軟硬件支持。它把需要轉發(fā)到NCSF主站的CAN總線數據幀封裝到NCSF的應用層數據包通過NCSF的鏈路發(fā)送到主站,在NCSF的應用層中把還原CAN的數據幀交給上層協(xié)議;另外當主站需要發(fā)送CAN數據幀時,主站把這個CAN數據幀封裝在NCSF數據幀中轉發(fā)到此從站,然后還原為CAN數據幀發(fā)送到CAN總線上,這樣的能夠實現NCSFCAN之間數據交互的從站被稱為NCSF-CAN網關。
整個NCSF-CAN網關分為三部分:NCSF總線模塊、CAN總線模塊、NCSF-CAN數據幀封裝轉換模塊。NCSF-CAN數據幀封裝轉換模塊的主要工作是,在NCSF應用層的數據包中封裝或還原CAN數據幀;使得CAN數據幀能夠通過NCSF鏈路發(fā)往從站,同時也使得主站發(fā)往CAN總線的數據包能夠正確解析。
NCSF-CAN網關硬件由NCSF接口和CAN接口構成。協(xié)議網關的主控芯片S3C2440是一款高性能低功耗處理器,其采用ARM920T內核,全靜態(tài)的設計特別適合對成本和功率敏感型的應用[5]。S3C2440有著豐富的片上資源,CAN總線控制芯片選用MCP2515,其通過串行外設接口(Serial Peripheral Interface,SPI)與S3C2440進行通信,NCSF接口選用DM9000。
NCSF使用標準以太網的物理層,其接口電路使用普通的以太網接口芯片,同時為了保證數據傳輸速率應該選用100Mbit/s支持全雙工模式的芯片。
圖3是從站的NCSF接口電路簡圖,圖中僅標出芯片關鍵的引腳的連接。圖中DM9000的片選信號AEN連接在nGCS4上,表明此接口DM9000的起始地址為0x20000000,使用7號外部中斷腳 EINT7,DM9000的內部存儲空間的基地址為300H[6]。
需要特別指出的是DM9000的SD0-SD15引腳是數據和地址的復用引腳。當CMD為低電平時,數據線為地址端口,否則為數據端口。DM9000的地址寄存器端口地址為0x20000000,數據寄存器的端口地址為0x20000004。由此訪問片上特定的寄存器時要先寫地址再讀寫數據,下面是DM9000驅動程序讀其內部寄存器的函數實現。
NCSF數據幀頭部長18字節(jié),圖4為NCSF數據幀的頭部結構。EthAREA六個字節(jié)填充0xFF,使NCSF幀能夠通過以太網交換設備;幀的總長度G_Length;兩個全局控制字G_CTRL1和G_CTRL2;①數據幀標識G_mtype;②幀類型標識G_stype;③從站計數器G_sno。
圖4 NCSF幀頭部結構
在DM9000的設備驅動和NCSF協(xié)議中,為了方便管理每個NCSF數據包及其控制信息,特設計數據結構 ncsf_buff。
在ncsf_buff中next和prev使所有需發(fā)送的數據包構成一個雙向鏈表;cb為數據包狀態(tài)控制字,保存此數據包當前的狀態(tài)和控制信息,ncsf_buff中最重要的幾個成員變量為head、data、tail和end,這四個成員變量指向同一連續(xù)內存區(qū)域的不同位置,其結構和關系如圖5所示。
圖5 ncsf_buff數據結構
在創(chuàng)建ncsf_buff的同時會申請一段足夠容納最大的NCSF數據幀2倍的連續(xù)內存,head指向這一塊內存的首地址,end指向其尾部,data指向head+LEN的位置,在tail和data之間是NCSF有效數據,即在data前預留LEN長空閑空間,以便在此有效數據前擴展數據包頭部和其它數據,tail預留的空閑空間用于在尾部擴展有效數據。有效數據區(qū)前后預留的空閑空間可以避免在數據包擴展時重新分配內存和拷貝相關數據,由此提高了發(fā)送接收數據包的速度。
MPC2515是一款獨立的CAN控制器,完全支持CAN2.0B技術規(guī)范。該器件能夠收發(fā)標準和擴展的數據幀以及遠程幀。MPC2515自帶兩個驗收屏蔽寄存器、六個驗收濾波寄存器,這些寄存器用于過濾不必要接收的報文,它們可以有效降低微控制器的負擔。MPC2515和S3C2440之間的連接通過SPI實現。
圖6中特別畫出CAN模塊的電源電路,為了增強CAN總線的抗干擾能力,MCP2515與總線收發(fā)器TJA1050之間采用高速光電耦合器6N137相連以實現電氣隔離,而為了實現完全的電器隔離,6N137兩端的電源也應該進行完全隔離,B0505S為它們提供了完全隔離的電源[7]。
圖6 CAN模塊電路簡圖
S3C2440通過特定的SPI命令與MPC2515進行交互,命令包含復位、讀、寫、讀RX緩沖器、裝載TX緩沖器、請求發(fā)送報文、讀狀態(tài)和位修改命令等。通過這些命令S3C2440可以讀寫CAN控制器的狀態(tài)、發(fā)送CAN數據幀,以及重置CAN控制器。S3C2440通過SPI向MPC2515發(fā)出每個命令字節(jié)前,CS都需要被置為低電平。在任何操作期間CS都要保持低電平,操作完成后需要把CS置為高電平。
CAN模塊的初始化依次為:軟件復位、設置CAN總線的波特率、關閉中斷、設置驗收屏蔽寄存器和驗收濾波寄存器、切換MPC2515到正常模式、清空接收和發(fā)送寄存器,最后開啟相應的中斷。
can_frame是CAN數據幀發(fā)送隊列的數據結構。為了能夠兼容CAN擴展報文接收,在can_frame中ext_f標志為0表示為正常報文,為1表示為擴展報文;rtr_f對應數據幀仲裁場中的RTR位;pri為報文的優(yōu)先級,為0按照先入先出順序出隊,少數緊急指令為1,此報文優(yōu)先出隊被發(fā)送。
NCSF-CAN協(xié)議轉換模塊把CAN數據幀封裝在NCSF數據包中。NCSF應用層提供四類設備應用服務:計數器、操作站、伺服電機和簡單I/O設備,其中計數器設備服務數據包中可利用的字段比較多,所以選擇把CAN報文封裝在計數器數據包中。
CAN數據幀由七部分構成:幀起始、仲裁場、控制場、數據場、CRC場、應答場和幀結尾。其中,幀起始為一個“顯性”位;仲裁場由11位標識符和遠程發(fā)送請求位(RTR)構成;控制場有六位,最后四位是數據場長度,其余兩位保留;數據場是數據幀中的有效數據,長度為0-8個字節(jié);應答場有兩位分別為應答間隙和應答定界符;最后是7位的幀結尾。CAN遠程幀沒有數據場,RTR位為“隱形”[8]。綜合CAN的各種幀,NCSF-CAN網關需要把標識符、RTR位、數據長度字段、0-8字節(jié)的數據封裝在計數器數據包的計數器字段中,然后通過NCSF的鏈路傳送給主站。
計數器數據包長48個字節(jié),支持5個計數器,按絕對增量方式計數,采用32位計數。由此每個計數器數據包傳輸20字節(jié)的數據,每個CAN幀的數據至多8個字節(jié),再加上標識符等字段也不多于20字節(jié)。表1為計數器數據包與CAN數據幀的封裝轉換。
表1 計數器數據包與CAN數據幀的封裝轉換
(續(xù)表)
為了區(qū)分普通計數器數據包和封裝CAN數據幀的特殊計數器數據包,規(guī)定前兩個字節(jié)為0x0101的計數器數據包為封裝CAN協(xié)議數據的數據包。IOIN和IO-OUT是輸入輸出端子控制字段。CNT0_CNT、CNT1_CNT、CNT2_CNT、CNT3_CNT 和 CNT4_CNT為五個計數器,在主站發(fā)往計數器從站的計數器數據包中這些字段為1表示對應的計數器清零,為0表示正常計數,其它值沒有定義。
為了兼容主站的計數器命令,主站發(fā)往NCSFCAN網關的計數器字段不能為0或1。為了達到此目的規(guī)定:CNT0_CNT、CNT1_CNT、CNT2_CNT、CNT3_CNT和CNT4_CNT最高位為1,即這些字段的最小值為0x80000000。CNT0_CNT的0-15位對應于CAN數據幀的id字段的0-15位;CNT0_CNT的16位是擴展報文標志;17位對應為RTR位;CNT0_CNT的18位表示此數據包是否包含有效數據,為1表示此數據包封裝了一個CAN數據幀,為0表示不含有效數據的計數器報文,直接轉發(fā)此幀即可;CNT0_CNT的19位,標識此數據包中信息是否為主站對NCSFCAN網關的配置控制信息,為1表示配置數據用于配置網關的運行參數,為0表示封裝的是CAN數據幀。CNT1_CNT的0-15位對應其余的CAN數據幀id字段位,這32位足以存儲CAN擴展報文29位長的id字段;CNT1_CNT的16-22位存儲數據長度。
引入NCSF-CAN網關后,NCSF主站的軟件結構如圖7所示。用戶層行規(guī)為用戶提供統(tǒng)一的接口服務,而服務映射管理層用于把用戶層行規(guī)的通用接口映射到具體協(xié)議的應用層服務。主站接收到計數器數據包頭部為0x0101時經過CAN數據幀封裝轉換處理得到CAN數據幀,此幀經過CAN的應用層,通過服務映射管理和用戶層行規(guī)提交給NC系統(tǒng),NC系統(tǒng)由此可以得知CAN總線上的設備狀態(tài)、I/O和傳感器數據等信息。NC系統(tǒng)向CAN總線上發(fā)送命令或數據時,先通過用戶層行規(guī)和服務映射管理層映射到相應的CAN應用層,然后把需要傳送的CAN數據幀封裝到 NCSF計數器數據包中,通過NCSF的物理鏈路發(fā)到NCSF-CAN網關,對數據包解析和轉換后,即可把相應的命令或數據發(fā)送到CAN總線上。
圖7所示軟件結構也是其它現場總線與NCSF互聯的基本結構:用戶層行規(guī)為NC系統(tǒng)提供統(tǒng)一的服務接口,而服務映射管理層先把相應的命令或數據映射到具體的某一種協(xié)議應用層,然后封裝到NCSF應用層,通過NCSF的物理鏈路發(fā)送到NCSF與此協(xié)議的交互網關,最后發(fā)送到特定的總線上。
圖7 引入NCSF-CAN網關后的主站軟件結構
NCSF-CAN網關設備加電后首先初始化NCSF模塊,接著初始化CAN模塊和數據幀封裝轉換模塊。初始化完成后,NCSF-CAN網關等待接收NCSF總線和CAN總線數據。為確保NCSF的實時性,NCSFCAN網關接收到每個數據包后應該在盡量短的時間內把有效數據插入,然后轉發(fā)出去。為此,當收到NCSF數據幀后,并不等待CAN總線的響應,僅僅查看當前NCSF發(fā)送隊列中是否有數據,沒則立即轉發(fā);有則封裝隊頭數據后再轉發(fā)。處理NCSF數據包的過程如圖8所示。
CAN接口接收CAN總線上需要發(fā)給NCSF主站的數據幀,然后封裝轉換為NCSF計數器設備數據包,插入到NCSF發(fā)送隊列,等待NCSF下一個總線周期把有效數據傳遞到NCSF主站中,經過主站的解包處理交給NC系統(tǒng),其工作流程如圖9。
本文設計的NCSF-CAN網關,描述了NCSF總線與CAN交互的系統(tǒng)結構,此方法也是NCSF和其它現場總線交互的基本結構。NCSF-CAN網關使NCSF主站可以與CAN總線上的設備進行交互通信,同時提升了CAN模塊對緊急數據的響應速率,提高了NCSF模塊處理數據包的速度,可以滿足數控系統(tǒng)對現場總線實時性的要求。
圖8 NCSF模塊處理數據包流程圖
圖9 CAN接口接收處理數據流程圖
[1]樊留群.實時以太網及運動控制總線技術[M].上海:同濟大學出版社,2009.
[2]周渡海,何此昂.現場總線控制技術開發(fā)入門與應用實例[M].北京:中國電力出版社,2010.
[3]GB/T 18759.2-2006,開放式數控系統(tǒng)——體系結構[S].
[4]GB/T 18759.3-2009,開放式數控系統(tǒng)——總線接口與通信協(xié)議[S].
[5]S3C2440A 32-BIT CMOS MICROCONTROLLER USER'S MANUAL Revision 1[Z].2004.
[6]DM9000 ISA TO ETHERNET MAC CONTROLLER WITH INTEGRATED 10/100 PHY[Z].2006.
[7]季厭浮.基于USB的CAN總線智能適配卡的軟硬件設計[J].電子技術應用,2008(8):86-88.
[8]王黎明,夏立,邵英,等.CAN現場總線系統(tǒng)的設計與實現[M].北京:電子工業(yè)出版社,2008.
Design a Gateway Linking Numerical Control Synchronous Fieldbus with CAN Bus
LIU Bao-bao1,2,YANG Dong-sheng2,LIU Yin-zhong2,YIN Zhen-yu2
(1.Graduate University of Chinese Academy of Sciences,Beijing 100049,China;2.Shenyang Institute of Computing Technology,Chinese Academy of Science,Shenyang 110168,China)
The coexistence and incompatibility of many fieldbus standards restricts the development and application of fieldbus,so the connectivity of buses becomes more and more important.Reference to specifications of fieldbuses on Open Numerical Control system,a gateway linking NCSF with CAN bus is designed,which mainly consists of three parts,NCSF module,CAN bus module,the module of packaging and conversing data frames.On the basis of deep study of NCSF and CAN bus,a priority queue of CAN data frames is designed,how to package CAN data frames on NCSF application layer is proposed,the coordination of cycle and rate between NCSF and CAN bus is provided.
fieldbus;open numerical control system;NCSF;CAN;gateway
TH16;TG65
A
1001-2265(2012)02-0049-05
2011-07-04
“高檔數控機床與基礎制造裝備”國家科技重大專項-開放式數控系統(tǒng)支撐技術創(chuàng)新平臺建設(2011ZX04016-071)
劉寶寶(1983—),男,河南焦作人,中國科學院研究生院,碩士研究生,研究方向為高檔數控系統(tǒng),(E-mail)liubao568@163.com。
(編輯 李秀敏)