《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 设计应用 > 【广州致远】嵌入式CANopen协议栈开发模块——TinyARM
【广州致远】嵌入式CANopen协议栈开发模块——TinyARM
广州致远
摘要: 介绍一种支持二次开发的CANopen从站模块的使用方法。CANopen协议作为CAN总线的应用层协议,拥有复杂的网络管理(Network Management)、实时过程数据对象(Process Data Object)、服务数据对象(Service Data Object)、预定义连接和特殊功能对象等基本功能,另外CANopen协议还定义了指示灯规范、通信安全架构、在线配置、EDS文件规范、标准设备规范等一系列的协议规范。因此开发基于CANopen协议的设备有着非常高的难度以及较长的开发周期。
Abstract:
Key words :

1 引言
  在上期文章中我們了解了一種嵌入式CANopen協(xié)議轉(zhuǎn)換模塊及其使用方法,本期文章將介紹一種支持二次開發(fā)的CANopen從站模塊的使用方法。
  CANopen協(xié)議作為CAN總線的應(yīng)用層協(xié)議,擁有復(fù)雜的網(wǎng)絡(luò)管理(Network Management)、實(shí)時(shí)過程數(shù)據(jù)對(duì)象(Process Data Object)、服務(wù)數(shù)據(jù)對(duì)象(Service Data Object)、預(yù)定義連接和特殊功能對(duì)象等基本功能,另外CANopen協(xié)議還定義了指示燈規(guī)范、通信安全架構(gòu)、在線配置、EDS文件規(guī)范、標(biāo)準(zhǔn)設(shè)備規(guī)范等一系列的協(xié)議規(guī)范。因此開發(fā)基于CANopen協(xié)議的設(shè)備有著非常高的難度以及較長(zhǎng)的開發(fā)周期。
2 TinyARM簡(jiǎn)介
  TinyARM模塊內(nèi)置了CANopen從站協(xié)議,為用戶靈活快速設(shè)計(jì)CANopen從站,構(gòu)建符合國(guó)際標(biāo)準(zhǔn)的工業(yè)現(xiàn)場(chǎng)總線及分布式網(wǎng)絡(luò)提供了更多、更好的選擇。TinyARM模塊外觀如圖1所示。


  TinyARM CANopen從站模塊提供了網(wǎng)絡(luò)管理(NMT)、實(shí)時(shí)數(shù)據(jù)發(fā)送(TPDO)、實(shí)時(shí)數(shù)據(jù)接收(RPDO)、服務(wù)數(shù)據(jù)對(duì)象(SDO/Server)、同步報(bào)文(SYNC)、緊急事件(EMCY)等支持,同時(shí)還能夠根據(jù)需求支持不同的協(xié)議描述規(guī)范。使用Tiny-
ARM CANopen從站模塊可快速開發(fā)基于CANopen協(xié)議的控制設(shè)備、數(shù)據(jù)采集設(shè)備等,配合CANopen系列主站設(shè)備組建CANopen網(wǎng)絡(luò),迅速搭建工業(yè)現(xiàn)場(chǎng)總線分布式監(jiān)控系統(tǒng)。
3 TinyARM CANopen協(xié)議棧配置
  TinyARM是一款可二次開發(fā)的嵌入式模塊,提供API函數(shù)庫。CANopen協(xié)議棧也是以API函數(shù)庫形式提供,使開發(fā)者在開發(fā)CANopen設(shè)備的時(shí)候使用起來非常方便。由于CANopen協(xié)議棧會(huì)使用到相應(yīng)的硬件資源,因此開發(fā)者首先需要配置CANopen協(xié)議棧硬件資源,例如CANopen RUN和ERROR指示燈所對(duì)應(yīng)的I/O端口等,正確的硬件配置可使協(xié)議棧穩(wěn)定可靠地運(yùn)行。
3.1 CANopen協(xié)議棧硬件資源配置
  (1)指示燈端口配置
  按照CANopen協(xié)議DS303-3的定義,CANopen從站需要使用兩種顏色的LED指示燈來指示運(yùn)行和錯(cuò)誤狀態(tài),運(yùn)行指示燈使用綠色,錯(cuò)誤指示燈使用紅色,根據(jù)實(shí)際硬件來設(shè)置LED控制端口。協(xié)議棧通過調(diào)用如表1所示的3個(gè)函數(shù)來實(shí)現(xiàn),配置文件與協(xié)議棧結(jié)構(gòu)如圖2所示。


  (2)參數(shù)存儲(chǔ)函數(shù)
  參數(shù)存儲(chǔ)相對(duì)來說更復(fù)雜一些,需要根據(jù)實(shí)際硬件條件來修改相應(yīng)的實(shí)現(xiàn)函數(shù),其中的_TgtCavInit、_TgtCavOpen、_TgtCavClose、_TgtCavDelete、_TgtCavCreate、_TgtCavShutDown等函數(shù)執(zhí)行對(duì)存儲(chǔ)器進(jìn)行初始化或關(guān)閉存儲(chǔ)器等操作,在協(xié)議棧初始化或關(guān)閉時(shí)被調(diào)用。函數(shù)_TgtCavStore、_TgtCavRestore主要負(fù)責(zé)參數(shù)的存儲(chǔ)與讀取,CANopen協(xié)議棧的參數(shù)存儲(chǔ)以對(duì)象字典為最小單位,每存儲(chǔ)或恢復(fù)一次對(duì)象字典的參數(shù)都會(huì)調(diào)用存儲(chǔ)或恢復(fù)參數(shù)函數(shù),存儲(chǔ)、恢復(fù)函數(shù)與協(xié)議棧的關(guān)系如圖2所示。
3.2 設(shè)計(jì)對(duì)象字典
  設(shè)計(jì)CANopen的對(duì)象字典主要分為以下兩個(gè)步驟,其與協(xié)議棧結(jié)構(gòu)關(guān)系如圖2所示。
  (1)生成對(duì)象字典
  對(duì)象字典是CANopen的核心,不同的設(shè)備描述規(guī)范或不同的應(yīng)用就有不同的對(duì)象字典,因此對(duì)于一款能支持二次開發(fā)的模塊來說,根據(jù)具體需求生成相應(yīng)的對(duì)象字典也是必不可少。TinyARM 中的CANopen對(duì)象字典可以通過ODBuilder軟件來生成,生成的對(duì)象字典為3個(gè)標(biāo)準(zhǔn)C文件,文件名分別為:obdcfg.h,、objdict.c、objdict.h,把工程中的同名文件覆蓋即可將CANopen的對(duì)象字典項(xiàng)目更改為新設(shè)定的對(duì)象字典項(xiàng)目,CANopen所支持的設(shè)備規(guī)范也可隨之改變。
  (2)對(duì)象字典的變量定義
  對(duì)于對(duì)象字典索引在0x1000~0x1FFF范圍內(nèi)的對(duì)象字典,其變量存儲(chǔ)地址已經(jīng)在協(xié)議棧中預(yù)定義,不需要開發(fā)者再次定義。索引在0x2000~0x9FFF之間的索引,需要重新映射變量地址,否則對(duì)象字典無法正確存儲(chǔ)數(shù)據(jù)。在TinyARM CANopen中,為了使開發(fā)者方便映射對(duì)象字典變量,在文件名為usrcoppardef.c的文件中定義了一個(gè)參數(shù)數(shù)組__VarTabg,將需要定義的對(duì)象字典變量地址添加到該表格中即可,其格式與使用示例如圖3所示。


3.3 預(yù)定義連接設(shè)置
  在CANopen運(yùn)行時(shí)通常采用DS301所建議的預(yù)定義連接COB-ID(通信對(duì)象標(biāo)識(shí)),其中預(yù)定義連接集包括PDO、SDO、NMT、SYNC以及EMCY等服務(wù)。協(xié)議棧在啟動(dòng)時(shí)已經(jīng)將(除RPDO和TPDO以外)一些服務(wù)的COB-ID設(shè)定為預(yù)定義連接,開發(fā)者只需要重新設(shè)定RPDO和TPDO的預(yù)定義連接即可。同樣開發(fā)者只需要在PDO預(yù)定義表格中添加項(xiàng)目即可,實(shí)現(xiàn)示例如圖4所示。


4 TinyARM CANopen API函數(shù)編程
  如圖5所示為CANopen協(xié)議棧工作流程圖,其中CopInit為初始化CANopen協(xié)議棧,CopBootUp發(fā)送CANopen啟動(dòng)信息并且進(jìn)入預(yù)操作狀態(tài),CopThread 為CANopen協(xié)議棧線程函數(shù),需要應(yīng)用程序循環(huán)調(diào)用。開發(fā)者可以通過CopODRead和CopODWrite對(duì)對(duì)象字典進(jìn)行讀寫操作。


      實(shí)現(xiàn)實(shí)例:圖6展示了如何啟動(dòng)CANopen協(xié)議棧并使之處于運(yùn)行狀態(tài)。


  開發(fā)者利用TinyARM CANopen可完全自主進(jìn)行二次開發(fā),方便地實(shí)現(xiàn)各種標(biāo)準(zhǔn)CANopen從站設(shè)備。例如,數(shù)字量輸入輸出設(shè)備、電機(jī)控制設(shè)備、數(shù)字傳感器設(shè)備、織布機(jī)設(shè)備、充電設(shè)備等各種設(shè)備。使開發(fā)者在最短的時(shí)間內(nèi)開發(fā)出CANopen從站設(shè)備,搶占市場(chǎng)先機(jī)。
      廣州致遠(yuǎn)電子有限公司提供各種接口的CANopen接口卡、CANopen終端設(shè)備(包括數(shù)據(jù)采集,電機(jī)控制等)、CANopen分析儀、網(wǎng)關(guān)及網(wǎng)橋、OPC服務(wù)器以及基于CANopen協(xié)議的整套組網(wǎng)方案及應(yīng)用開發(fā)。

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

相關(guān)內(nèi)容