CANopen總線是一種架構(gòu)在控制局域網(wǎng)絡(luò)(CAN總線)上的高層通信協(xié)議,包括通信子協(xié)議及設(shè)備子協(xié)議,常在嵌入式系統(tǒng)中使用,也是工業(yè)控制常用到的一種工業(yè)現(xiàn)場總線。前文我們好了CANOPEN協(xié)議詳解,本文我們重點介紹CANopen總線協(xié)議使用指南。
CANopen總線有兩種通訊方式:SDO和PDO。SDO通常由主站發(fā)送用于讀取從站信息或配置從站PDO運行方式,從站接收到消息后需要應(yīng)答,如下圖所示。
PDO為生成者消費者模式,消息發(fā)出后不需要等待回復(fù),一條消息可以有多個消費者。從站進入操作模式后會按照配置的通訊參數(shù)周期發(fā)送PDO消息或事件觸發(fā)發(fā)送PDO。如果配置了SYNC功能,收到指定個數(shù)的同步幀后發(fā)送PDO。當然主站也可發(fā)送PDO消息。如下圖所示。
撥動canopen總線無線IO設(shè)備的撥碼開關(guān),將節(jié)點號設(shè)置為2,波特率設(shè)置為10k。如下圖所示。
設(shè)備上電后會向主站先后發(fā)送兩條幀ID為0x700+NOD_ID,數(shù)據(jù)為00(設(shè)備處于初始化狀態(tài))和7F(設(shè)備處于預(yù)操作狀態(tài))的消息,如下圖所示。
此時設(shè)備處于預(yù)操作狀態(tài),在ECanTools工具選擇canopen選項,點擊添加從站ID為2。選擇NMT功能選項,選擇“start remoteb node”后點擊NMT,如下圖所示。
此時上位機會發(fā)送一條幀ID為000,數(shù)據(jù)為01(運行狀態(tài))02(節(jié)點2,如果廣播則為00)的數(shù)據(jù)。此時節(jié)點2的無線IO設(shè)備會開始通過PDO(生產(chǎn)者消費者模式)發(fā)送幀ID為182,數(shù)據(jù)長度為2字節(jié)的消息,其兩字節(jié)數(shù)據(jù)對應(yīng)16個DI口,若DI有輸入對應(yīng)位置1。注意此功能為廣成自定義,并非標準cia301協(xié)議。效果如下圖所示。
當然使用can工具手動發(fā)送數(shù)據(jù)也是一樣的效果,如下圖所示。
閱讀EDS文件可知索引2000h子索引01h可知設(shè)置其中的值可以改變TPDO1的inhibit time(禁止時間)。禁止時間的作用是設(shè)置pdo發(fā)送的最小間隔。這里使用手動發(fā)送SOD(一問一答模式)進行演示。
手動發(fā)送時將幀ID設(shè)置為602(600代表是SDO功能+節(jié)點號2),第一個數(shù)據(jù)2B代表寫入兩字節(jié)。注意后面的數(shù)據(jù)低字節(jié)在前,所以2000h索引寫做0020h,寫入的數(shù)據(jù)1FF寫做01FF。發(fā)送后從站返回幀ID為582數(shù)據(jù)頭為60的一條消息,代表剛才的寫入成功。重新進入操作狀態(tài)后,觀察此時的從站發(fā)送的PDO數(shù)據(jù)的時間戳,變?yōu)榱?/span>511us即1FF。但是要注意的是標準的cia301協(xié)議中,禁止時間的單位是100us。如何使用SDO讀取和寫入長度超過4字節(jié)的數(shù)據(jù)見詳細文檔。
想要配置DO口的輸出狀態(tài)需要從站在操作狀態(tài)下,主站向從站發(fā)送幀ID為0X200+NOD_ID長度為2字節(jié)的PDO消息。如下圖所示,發(fā)送數(shù)據(jù)為0F 00此時0-3DO口全部打開(低字節(jié)在前)。
由于此產(chǎn)品PDO功能不全,接下來用舉例子的方式解釋如何使用SDO配置PDO功能。剛才說過2000索引01字索引中的數(shù)據(jù)可以改變DI數(shù)據(jù)的PDO發(fā)送最小間隔,現(xiàn)在假設(shè)這個數(shù)據(jù)是可以映射的。下圖是各個TPDO和RPOD的COB-ID、通訊參數(shù)、映射參數(shù)的數(shù)值。
觀察上圖COB-ID,可知RPDO1被用來讀取數(shù)據(jù),配置DO口的輸出狀態(tài)了,因為剛才就是使用主站控制發(fā)送幀ID為202的PDO數(shù)據(jù)來控制DO口狀態(tài)的。現(xiàn)在我們使用從站的RPDO2來讀取主站發(fā)送的的幀ID為302的TPDO數(shù)據(jù),從而控制從站TPDO1數(shù)據(jù)(即DI口輸入情況)的返回速率。
通訊對象的可配置參數(shù)如下圖所示,注意RPDO和TPDO的通訊對象可配置的參數(shù)范圍和意義不完全相同,詳情見詳細文檔和cia301文檔。
這里作為簡單演示,我們只用修改1401索引01字索引中COB-ID數(shù)據(jù),使用SDO的方法將其配置為302。其它子索引中的數(shù)據(jù)假設(shè)合理能正常通訊,其具體含義和作用見詳細文檔和cia301文檔。映射對象1601索引中的數(shù)據(jù)構(gòu)成很簡單,1601索引00子索引中存放的值代表:除了00子索引外還有多少子索引,有多個子索引的00子索引中存放的值都是這個意義。由于要修改的數(shù)據(jù)只有一處,且存放在2000索引01子索引數(shù)據(jù)為16位,所以只需要使用SDO向1601索引01子索引寫入 0x20000110(最后的10代表存放16位數(shù)據(jù),如果是08代表8位數(shù)據(jù),20代表32位數(shù)據(jù))即可,然后向1601 00索引寫入01。如果要存入的數(shù)據(jù)有多個地址繼續(xù)增加1601的子索引個數(shù),并將00子索引的值改為對應(yīng)個數(shù)即可。但是要注意所以映射索引存儲的數(shù)據(jù)加起來不能超過8字節(jié)。
為了系統(tǒng)的穩(wěn)定性,對通訊對象和映射對象進行修改時,要先使能對應(yīng)PDO(01 子索引最高位置1)和清空映射對象00子索引的值。
602 22 01 14 01 02 03 00 80 (將COB-ID設(shè)置為302并失能該PDO)
602 22 01 16 00 00 00 00 00 (情況映射對象個數(shù)數(shù)據(jù))
602 22 01 16 01 10 01 00 20 (10 格式標識16位,01子索引2000索引)
602 22 01 16 00 01 00 00 00 (1個參數(shù))
602 22 01 14 01 02 03 00 00 (使能PDO)
配置完成后使用上位機發(fā)送幀ID為302的PDO信息,從站就會將其存入RPDO2的映射索引2000 01中,從而改變發(fā)送DI狀態(tài)的速率。
打開SYNC功能,主站會按照設(shè)置的時間周期性地發(fā)送幀ID為80沒有數(shù)據(jù)的信號,該信號可觸發(fā)從站發(fā)送PDO信息,由于此設(shè)備PDO功能不全無法演示,具體效果和配置方法見詳細文檔和cia301文檔。
EMCY功能是當從站發(fā)送錯誤時返回的報文,也無法演示。
節(jié)點保護服務(wù)的原理是NMT主站可向相應(yīng)的從站發(fā)送包含CAN-ID 700h +節(jié)點ID的RTR消息。隨后從站必須發(fā)送消息進行響應(yīng);從站回復(fù)的消息結(jié)構(gòu)如下。其中位 7 在每次傳送時都會進行交替,從而能夠確定消息是否丟失。在位 6 到 0 中輸入從站當前的 NMT 狀態(tài)。如下圖所示。
從站等待主站發(fā)送RTR消息的時間為 100Ch:00(守護時間)*100D:00(生存因素),配置完成后在上位機打開節(jié)點保護,效果如下圖所示。
送至 CAN 總線??赏ㄟ^將對象 1017h:00h 中的創(chuàng)建心跳時間設(shè)為非零值,從而激活該服務(wù)。如下圖所示,將1017h:00h設(shè)置為不為0的數(shù)后從站周期性地返回心跳。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號(微信號:cdebyte)進行了解,也可以直接撥打400電話咨詢技術(shù)專員!
相關(guān)閱讀:
1、can總線控制器局域網(wǎng)串行通信協(xié)議詳解
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 南京辦事處葛經(jīng)理:17626012283
成都總部銷售經(jīng)理:
秦 科(無線模塊):18884314654 馮子恒(無線模塊):18884314734
蔡友銀(無線模塊):13882211021 葛宇龍(通信設(shè)備):19138800613
胡兵(外貿(mào)銷售經(jīng)理):18584911141、 [email protected]
業(yè)務(wù)郵箱:[email protected] 全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機:028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號