日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)

發布時間:2025/3/15 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、前言
  • 二、實驗目的
  • 三、對象字典
    • 3.1、找到工程里的對象字典文件
    • 3.2、創建映射變量
  • 四、STM32代碼
    • 4.1、Slave1.c
    • 4.2、main.c
  • 五、CAN盒子(收發器)
    • 5.1、通過SDO方式獲取obj_Var_Buttom的值

一、前言


對象字典的映射變量是用戶程序與CANopen程序(Canfestival)之間的通訊橋梁,目的是能讓用戶程序與CANopen程序(Canfestival)通訊。例如CANopen從站0x05的用戶程序每隔1S時間讀取一次按鈕是否被按下,當按鈕被按下時,修改映射變量obj_Var_Buttom為1,當按鈕抬起時,修改映射變量obj_Var_Buttom為0。CANopen主站可以通過SDO通訊,從CANopen節點0x05讀取映射變量obj_Var_Buttom的狀態。CANopen主站就能了解CANopen節點0x05上按鈕的狀態。

這里有一個問題,CANopen主站怎么知道CANopen節點0x05有obj_Var_Buttom這個映射變量呢?CANopen主站怎么知道呢?

答案:CANopen從站0x05的對象字典可以輸出eds格式,然后提供給CANopen主站就好了。當我們設計完CANopen從站后,必須將最新的對象字典(輸出eds格式)提供給編寫CANopen主站程序的同學。目的是讓CANopen主站掌握CANopen從站的對象字典的內容(比如PDO映射了哪些映射對象,CANopen從站有多少個映射變量等)。

STM32工程:
鏈接:https://pan.baidu.com/s/1bX5-BZSA3JQ8KS8-H_M8ng
提取碼:jutn

二、實驗目的


在對象字典上創建映射變量obj_Var_Buttom,并讓用戶程序去修改它。最后,我用CAN盒子(收發器)發送SDO報文從CANopen節點0x05獲取obj_Var_Buttom的當前值(使用SDO獲取映射對象的值不是本節的重點,純演示)。

測試硬件:

三、對象字典


3.1、找到工程里的對象字典文件

根據電腦里的工程地址,打開.od后綴的對象字典文件。

3.2、創建映射變量




最后的結果:


四、STM32代碼


4.1、Slave1.c



一切很順利,接著開始用用戶程序修改對象字典創建的映射變量obj_Var_Buttom。

4.2、main.c



編譯,下載,再進入Debug模式觀察obj_Var_Buttom的確被修改為0x01。

五、CAN盒子(收發器)


上面演示了在對象字典里創建映射對象obj_Var_Buttom,并通過用戶程序去修改映射對象obj_Var_Buttom。最后,用CAN盒子(收發器)充當CANopen主站,發送SDO報文從CANopen從站0x05獲取obj_Var_Buttom的值。

關于SDO報文的相關細節,后續有博文詳細介紹。這里主要是“演示CANopen主站通過SDO指令可以從CANopen從站那里獲取映射對象的信息。”

5.1、通過SDO方式獲取obj_Var_Buttom的值

從CAN盒子看到,CANopen從站0x05以每2秒的時間間隔發送心跳報文。這里有一個重點,在pre-Operational狀態下是可以使用SDO方式進行通訊的,但PDO方式是關閉的。

使用CAN盒子發送以下CAN報文,CANopen從站0x05有回復,從回復的CAN報文得知映射變量obj_Var_Buttom的值是1。

再驗證一次吧,我用Keil的Debug功能將obj_Var_Buttom改為0x08,再使用CAN盒子發送SDO報文,看看CANopen從站0x05怎樣答復吧。

從CANopen從站0x05答復的CAN報文看到,映射變量obj_Var_Buttom的確是0x08!

總結

以上是生活随笔為你收集整理的CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。