CANopen | 对象字典OD 03 - 启动CANopen节点的服务数据对象SDO
文章目錄
- 一、前言
- 二、實(shí)驗(yàn)的目的
- 三、對(duì)象字典OD
- 3.1、Slave1.od
- 3.2、Slave1.c
- 四、CAN盒子(收發(fā)器)
- 4.1、通過(guò)SDO方式修改CANopen從站的心跳時(shí)間
一、前言
當(dāng)設(shè)計(jì)一個(gè)CANopen節(jié)點(diǎn)(從站)時(shí),必須必須打開(kāi)SDO服務(wù)器功能。只有CANopen從站打開(kāi)SDO服務(wù)器功能后,CANopen主站才能讀寫CANopen從站的對(duì)象字典。
為什么CANopen主站要修改CANopen從站的對(duì)象字典?以前我調(diào)試過(guò)一個(gè)CANopen伺服驅(qū)動(dòng)器,品牌是德國(guó)ELMO。伺服驅(qū)動(dòng)器上電后只發(fā)出一個(gè)上線報(bào)文,接著并沒(méi)有定期發(fā)送心跳報(bào)文。此時(shí),就需要使用SDO指令去修改ELMO伺服驅(qū)動(dòng)器對(duì)象字典里的0x1017 Producer Heartbeat Time為0x7D0,讓它每隔2S時(shí)間往總線上發(fā)送心跳報(bào)文。有一些CANopen產(chǎn)品需要在它上電之后,CANopen主站通過(guò)SDO指令配置它們的對(duì)象字典,讓它們達(dá)到控制要求。比如心跳報(bào)文的頻率,還有PDO映射對(duì)象,PDO的發(fā)送參數(shù)等(這些知識(shí)后續(xù)會(huì)用實(shí)驗(yàn)講解)。我也調(diào)試過(guò)上海鳴志的CANopen伺服驅(qū)動(dòng)器,上海鳴志的CANopen產(chǎn)品支持對(duì)象字典掉電保存。這樣的好處是CANopen主站不需要每一次在CANopen從站上電后對(duì)它們的對(duì)象字典進(jìn)行設(shè)置(通過(guò)SDO指令),CANopen主站的程序就變得更加簡(jiǎn)單了。總之,CANopen從站一定要開(kāi)啟SDO服務(wù)器。
測(cè)試的硬件如下:
STM32工程:
鏈接:https://pan.baidu.com/s/1dtuJnqIoSHlPIBpWKJmyhw
提取碼:n1se
二、實(shí)驗(yàn)的目的
使用Objdictedit軟件修改.od對(duì)象字典文件,打開(kāi)CANopen節(jié)點(diǎn)的SDO服務(wù)器功能。接著,使用CAN盒子發(fā)送SDO報(bào)文指令修改CANopen從站的0x1017 Producer Heartbeat Time(從0x7D0改為0x3E8)。最后通過(guò)CAN盒子觀察CANopen從站發(fā)送心跳報(bào)文的頻率是不是1秒1次。
三、對(duì)象字典OD
3.1、Slave1.od
使用對(duì)象字典軟件Objdictedit打開(kāi)工程上的對(duì)象字典文件Slave1.od(在我這個(gè)演示工程上的命名)。
從下圖看到,這個(gè)對(duì)象字典已經(jīng)打開(kāi)了SDO服務(wù)器功能。
為了演示如何開(kāi)啟SDO服務(wù)器功能,我將當(dāng)前的SDO服務(wù)器刪除。
開(kāi)始在對(duì)象字典文件上創(chuàng)建SDO服務(wù)器把。首先,在下面的“添加”欄目上選擇“SDO服務(wù)器“。
然后點(diǎn)擊“添加”按鈕,完成SDO服務(wù)器的創(chuàng)建。
最后,生成Slave1.c文件。
3.2、Slave1.c
在Slave1.c里,找到“index 0x1200 :Server SDO Parameter"的備注,表示已經(jīng)打開(kāi)SDO服務(wù)器功能了。
然后編譯代碼,將新的代碼燒錄到STM32里。
四、CAN盒子(收發(fā)器)
4.1、通過(guò)SDO方式修改CANopen從站的心跳時(shí)間
查看心跳時(shí)間在對(duì)象字典里的位置與信息。
接著,使用CAN盒子充當(dāng)CANopen主站,使用SDO報(bào)文修改CANopen從站的心跳間隔時(shí)間。
總結(jié)
以上是生活随笔為你收集整理的CANopen | 对象字典OD 03 - 启动CANopen节点的服务数据对象SDO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python读取matlab文件_pyt
- 下一篇: ajax 实时进度_如何做好项目进度管理