[發明專利]一種實現CANopen主站的方法無效
| 申請號: | 200810056824.5 | 申請日: | 2008-01-25 |
| 公開(公告)號: | CN101222510A | 公開(公告)日: | 2008-07-16 |
| 發明(設計)人: | 徐喆;閆士珍;宋威;余春暄;段建民;張明杰 | 申請(專利權)人: | 北京工業大學 |
| 主分類號: | H04L29/06 | 分類號: | H04L29/06;H04L12/28 |
| 代理公司: | 北京思海天達知識產權代理有限公司 | 代理人: | 劉萍 |
| 地址: | 100022*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 實現 canopen 方法 | ||
技術領域
本發明屬于現場總線領域,特別是一種實現CANopen主站的方法。
背景技術
作為一種真正開放的CAN總線高層協議,CANopen協議允許不同的CAN設備以標準化的方式進行通訊,使得CAN設備具有互操作性。隨著CANopen協議的日益完善,它在國內外已經有很多方面的應用,受到了廣泛的重視。CANopen目前正在從汽車工業向更多領域輻射,已經廣泛應用到公共交通運輸系統、醫療設備、海運電子設備和建筑自動化系統中。在歐洲,CANopen協議已被廣泛的應用于醫療裝置中,并進一步擴展應用到保安控制系統中;在美國,CANopen協議已經成為裝載機械和公共運輸設備的協議標準,同時也應用于嵌入式系統的控制。但是據了解,國內在CANopen的研究還處于起步階段,除了中國單片機公共實驗室(BOL)外,目前鮮有研究院所在進行相關工作,而中國在該領域的標準制定工作也仍處于摸索階段。因此CANopen協議在我國的進一步推廣仍需大量的研發工作。CANopen主站的實現方法在國外也無相關技術的公開文獻報道。
發明內容
本發明的目的在于提供一種實現CANopen主站的方法。
本發明提供一種實現CANopen主站的方法,如圖1和圖2所示,其特征在于,包括以下步驟:
1)主站開始運行時,首先初始化全局變量,對本協議棧中需要的所有全局變量進行初始化;
2)初始化系統時間,該系統時間是通過定時器獲得的微秒級時間;
3)初始化基本任務,包括給它們分配存儲空間,賦初始值;
4)初始化對象字典,建立基本的對象字典項;
5)添加節點,向主站的對象字典中添加從節點的信息;
6)建立發送PDO,在對象字典中添加發送PDO對應的所有信息;
7)建立接收PDO,在對象字典中添加接收PDO的所有信息;
8)啟動網絡;
9)初始化操作系統;
10)創建線程,這里只創建一個開始線程;
11)啟動操作系統,操作系統開始調度線程:第一個被操作系統調度的線程是開始線程,在這個線程中完成的工作包括硬件的初始化、調度機線程的創建和寫報文線程的創建,該線程運行一次之后就將自己銷毀。之后寫報文線程被調度運行,但是此時沒有報文要發送,所以該線程退出運行狀態并觸發調度機線程。調度機線程完成CANopen內部各任務的調度。在沒有更高優先級線程處于就緒態或者出現中斷時該線程將會一直處于循環運行狀態。
當調度機中的任務需要發送報文時觸發寫報文發送線程,該線程將需要發送的報文寫進CAN控制器相應的寄存器中并將其發送到CAN總線上。當CAN控制器收到報文時將產生報文接收中斷,讀報文中斷服務程序開始執行,將報文從CAN控制器中讀出,當調度機線程再次獲運行時將調度其管理的相應任務處理該報文。
對象字典是CANopen協議的核心,是一個有序的對象組,其中定義了CANopen網絡中設備的所有信息。在CANopen網絡中主站要行使網絡管理、配置從站的功能。主站對象字典的構建必須考慮網絡的靈活擴展能力,即,靈活的增減節點。網絡中節點的增減必然要求修改主站對象字典,甚至大量添加、刪除對象字典中的對象。所以主站的對象字典必須具有可快速查找、添加、刪除對象的特性。
本發明采用散列表的方式構建對象字典。具有可動態更新、搜索效率高和存儲空間利用率高等優點。
具體采用散列表的方式構建對象字典如下:
使用一個數組來存儲對象,設計一個哈希函數,使得每個對象的索引和子索引都與數組的一個下標相對應;數組定義如下:
ODIndex?iOD[HS_index_range]
其中,HS_index_range為散列地址的范圍常量;
對象的索引和子索引通過哈希函數轉化為散列地址。采用如下哈希函數:
HS_index=mod(((index*ran_num)>>shift_num+sub_index),HS_index_range)
式中,HS_index為散列地址,mod()為取模運算,index為對象索引,ran_num為隨即因子,shift_num為位移因子,sub_index為對象子索引,HS_index_range為散列地址的范圍常量。
當出現對于不同的對象,卻計算出了相同的函數值,這樣就產生了沖突,即從index和sub_index到HS_index的映射會重疊;采用鏈地址法處理沖突,將映射到同一個散列地址處多于一個的對象組成鏈表,即形成該散列地址對應的溢出表。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京工業大學,未經北京工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200810056824.5/2.html,轉載請聲明來源鉆瓜專利網。





