CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)
文章目錄
- 一、前言
- 二、實(shí)驗(yàn)?zāi)康?/li>
- 三、對(duì)象字典
- 3.1、找到工程里的對(duì)象字典文件
- 3.2、創(chuàng)建映射變量
- 四、STM32代碼
- 4.1、Slave1.c
- 4.2、main.c
- 五、CAN盒子(收發(fā)器)
- 5.1、通過SDO方式獲取obj_Var_Buttom的值
一、前言
對(duì)象字典的映射變量是用戶程序與CANopen程序(Canfestival)之間的通訊橋梁,目的是能讓用戶程序與CANopen程序(Canfestival)通訊。例如CANopen從站0x05的用戶程序每隔1S時(shí)間讀取一次按鈕是否被按下,當(dāng)按鈕被按下時(shí),修改映射變量obj_Var_Buttom為1,當(dāng)按鈕抬起時(shí),修改映射變量obj_Var_Buttom為0。CANopen主站可以通過SDO通訊,從CANopen節(jié)點(diǎn)0x05讀取映射變量obj_Var_Buttom的狀態(tài)。CANopen主站就能了解CANopen節(jié)點(diǎn)0x05上按鈕的狀態(tài)。
這里有一個(gè)問題,CANopen主站怎么知道CANopen節(jié)點(diǎn)0x05有obj_Var_Buttom這個(gè)映射變量呢?CANopen主站怎么知道呢?
答案:CANopen從站0x05的對(duì)象字典可以輸出eds格式,然后提供給CANopen主站就好了。當(dāng)我們?cè)O(shè)計(jì)完CANopen從站后,必須將最新的對(duì)象字典(輸出eds格式)提供給編寫CANopen主站程序的同學(xué)。目的是讓CANopen主站掌握CANopen從站的對(duì)象字典的內(nèi)容(比如PDO映射了哪些映射對(duì)象,CANopen從站有多少個(gè)映射變量等)。
STM32工程:
鏈接:https://pan.baidu.com/s/1bX5-BZSA3JQ8KS8-H_M8ng
提取碼:jutn
二、實(shí)驗(yàn)?zāi)康?/h1>
在對(duì)象字典上創(chuàng)建映射變量obj_Var_Buttom,并讓用戶程序去修改它。最后,我用CAN盒子(收發(fā)器)發(fā)送SDO報(bào)文從CANopen節(jié)點(diǎn)0x05獲取obj_Var_Buttom的當(dāng)前值(使用SDO獲取映射對(duì)象的值不是本節(jié)的重點(diǎn),純演示)。
測(cè)試硬件:
三、對(duì)象字典
3.1、找到工程里的對(duì)象字典文件
根據(jù)電腦里的工程地址,打開.od后綴的對(duì)象字典文件。
3.2、創(chuàng)建映射變量
最后的結(jié)果:
四、STM32代碼
4.1、Slave1.c
一切很順利,接著開始用用戶程序修改對(duì)象字典創(chuàng)建的映射變量obj_Var_Buttom。
4.2、main.c
編譯,下載,再進(jìn)入Debug模式觀察obj_Var_Buttom的確被修改為0x01。
五、CAN盒子(收發(fā)器)
上面演示了在對(duì)象字典里創(chuàng)建映射對(duì)象obj_Var_Buttom,并通過用戶程序去修改映射對(duì)象obj_Var_Buttom。最后,用CAN盒子(收發(fā)器)充當(dāng)CANopen主站,發(fā)送SDO報(bào)文從CANopen從站0x05獲取obj_Var_Buttom的值。
關(guān)于SDO報(bào)文的相關(guān)細(xì)節(jié),后續(xù)有博文詳細(xì)介紹。這里主要是“演示CANopen主站通過SDO指令可以從CANopen從站那里獲取映射對(duì)象的信息?!?/p>
5.1、通過SDO方式獲取obj_Var_Buttom的值
從CAN盒子看到,CANopen從站0x05以每2秒的時(shí)間間隔發(fā)送心跳報(bào)文。這里有一個(gè)重點(diǎn),在pre-Operational狀態(tài)下是可以使用SDO方式進(jìn)行通訊的,但PDO方式是關(guān)閉的。
使用CAN盒子發(fā)送以下CAN報(bào)文,CANopen從站0x05有回復(fù),從回復(fù)的CAN報(bào)文得知映射變量obj_Var_Buttom的值是1。
再驗(yàn)證一次吧,我用Keil的Debug功能將obj_Var_Buttom改為0x08,再使用CAN盒子發(fā)送SDO報(bào)文,看看CANopen從站0x05怎樣答復(fù)吧。
從CANopen從站0x05答復(fù)的CAN報(bào)文看到,映射變量obj_Var_Buttom的確是0x08!
總結(jié)
以上是生活随笔為你收集整理的CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.8 编程基础之多维数组 04 错误探
- 下一篇: 两个构件的重合点_GTJ2018软件中如