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

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


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


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


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


4 TinyARM CANopen API函數編程
  如圖5所示為CANopen協議棧工作流程圖,其中CopInit為初始化CANopen協議棧,CopBootUp發送CANopen啟動信息并且進入預操作狀態,CopThread 為CANopen協議棧線程函數,需要應用程序循環調用。開發者可以通過CopODRead和CopODWrite對對象字典進行讀寫操作。


      實現實例:圖6展示了如何啟動CANopen協議棧并使之處于運行狀態。


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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 99高清视频有精品视频| 日韩欧美视频第二区| 国产一区二区在线播放| 国产精品久久精品国产| 白嫩少妇丰满一区二区| 久久久久久欧美| 日韩在线视频二区| 91精品国产综合久久香蕉922| 免费91麻豆精品国产自产在线观看| 亚洲精品无码久久久久久| 99精彩视频在线观看免费| 国产精品视频久久久| 国产精品入口免费视| 国产精品一区在线免费观看 | 久久精品国产v日韩v亚洲| 日本久久久久亚洲中字幕| 亚洲色欲综合一区二区三区| www.久久色.com| 国产美女精品久久久v| 国产日韩亚洲欧美在线| 国产一区二区三区高清视频| 国产一区香蕉久久| 国产精品久久久久久久久久ktv| 国产精品中文字幕久久久| 久久久99国产精品免费| 国产中文字幕免费观看| 国产狼人综合免费视频| 国产精品日日做人人爱| 国产成人av在线播放| av日韩中文字幕| 亚洲自拍中文字幕| 日韩av不卡播放| 久久久久国色av免费观看性色| 欧美精品性视频| 久久精品国产精品亚洲| 国产日韩欧美视频| www高清在线视频日韩欧美| 亚洲欧洲免费无码| 色天天综合狠狠色| 欧美专区国产专区| 久久久久久草|