硬汉嵌入式论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: eric2013
收起左侧

[BSP视频教程] BSP视频教程第28期:CANopen协议栈专题,CANopen主从机组网实战,CAN词典工具使用方法以及吃透PDO玩法(2023-11-01)

  [复制链接]

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2025-6-3 07:52:25 | 显示全部楼层
MingChao 发表于 2025-5-30 13:35
硬汉哥,请求发送PDO有了,怎么停止发送呢

可以通过SDO配置

1234.png
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-8-14 11:09:17 | 显示全部楼层
硬汉哥,s32k144移植canopennode好搞不,没啥思路能给个思路不.
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2025-8-16 08:58:13 | 显示全部楼层
mlkiop 发表于 2025-8-14 11:09
硬汉哥,s32k144移植canopennode好搞不,没啥思路能给个思路不.

把接口函数,也就是CAN收发函数实现了就可以使用了
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-8-16 09:51:14 | 显示全部楼层
eric2013 发表于 2025-8-16 08:58
把接口函数,也就是CAN收发函数实现了就可以使用了

硬汉哥,谢谢你的回复,我在研究下
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-10-7 09:06:32 | 显示全部楼层
中断的接收和发送,处理我没有看到入口,在程序里面
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2025-10-7 12:26:32 | 显示全部楼层
feihongkld 发表于 2025-10-7 09:06
中断的接收和发送,处理我没有看到入口,在程序里面

有的,有个专门的接口文件。
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-10-8 08:03:46 | 显示全部楼层
硬汉哥有个问题想找你指导下,我的s32k单片机是做从站的,怎么才能让他循环发pdo数据到总线上呀?现在只发一次就不发了
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2025-10-8 11:33:17 | 显示全部楼层
mlkiop 发表于 2025-10-8 08:03
硬汉哥有个问题想找你指导下,我的s32k单片机是做从站的,怎么才能让他循环发pdo数据到总线上呀?现在只 ...

可以使用PDO同步周期模式,如果不正常的话,找个比较软件,比较你的工程和我的工程CANopen协议栈宏定义配置,你那边应该有配置项有问题。
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-10-9 08:33:01 | 显示全部楼层
eric2013 发表于 2025-10-8 11:33
可以使用PDO同步周期模式,如果不正常的话,找个比较软件,比较你的工程和我的工程CANopen协议栈宏定义配 ...

好的谢谢硬汉哥指导
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-10-21 15:20:51 | 显示全部楼层
eric2013 发表于 2025-10-8 11:33
可以使用PDO同步周期模式,如果不正常的话,找个比较软件,比较你的工程和我的工程CANopen协议栈宏定义配 ...

硬汉哥,鼓捣了一个多月终于可以了,原来是主站那边心跳监督太快了
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-10-21 15:25:54 | 显示全部楼层
这一个月,还有好几个项目一直穿插,基本都是每天抽个半小时看下,效率很低,上周日放了假抽空看了下,是这个问题
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-10-21 15:26:20 | 显示全部楼层
感谢硬汉哥的指导与支持
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-10-21 15:27:33 | 显示全部楼层
目前再把led的协议搞好,canopen从机就完美了
回复

使用道具 举报

6

主题

51

回帖

69

积分

初级会员

积分
69
发表于 2025-10-21 17:13:16 | 显示全部楼层
硬汉哥,想请教一个问题,我想通过普通的SDO协议接受文件,我怎么才能开启回调函数呢,比如当一帧数据传输完成后,我把它转移到flash空间的操作,目前我好像只找到一个SDO server 的回调函数,但他每次获取到的SDO中字典索引都是上一帧的
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2025-10-22 11:14:58 | 显示全部楼层
咿呀 发表于 2025-10-21 17:13
硬汉哥,想请教一个问题,我想通过普通的SDO协议接受文件,我怎么才能开启回调函数呢,比如当一帧数据传输 ...

这个我没有研究过,只用过他的快速SDO协议。

普通SDO应该也有回调的,你找下。可以检索下回调关键词
回复

使用道具 举报

6

主题

51

回帖

69

积分

初级会员

积分
69
发表于 2025-10-22 11:25:42 | 显示全部楼层
eric2013 发表于 2025-10-22 11:14
这个我没有研究过,只用过他的快速SDO协议。

普通SDO应该也有回调的,你找下。可以检索下回调关键词

好的谢谢硬汉哥
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2026-3-7 15:32:49 | 显示全部楼层
第一问:CANOPEN初始化里面:        canOpenNodeSTM32.desiredNodeID = 26;                /* Node-ID */
这个为什么是26呀?是主站id吗?如果是的话,如何修改成0呢?我直接改成0后运行失败。

第二问:od.c文件里头:  
  .x1280_SDOClientParameter = {
        .highestSub_indexSupported = 0x03,
        .COB_IDClientToServerTx = 0x80000000,
        .COB_IDServerToClientRx = 0x80000000,
        .node_IDOfTheSDOServer = 0x01
    },
这个是什么意思,为什么是0x01: .node_IDOfTheSDOServer = 0x01

第三问:如何检测从站发来的心跳报文是否超时或者我们有没有收到?以及超时处理后如何继续检测?

博主大佬能给小的解答一下吗
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2026-3-9 08:14:26 | 显示全部楼层
wenkong 发表于 2026-3-7 15:32
第一问:CANOPEN初始化里面:        canOpenNodeSTM32.desiredNodeID = 26;                /* Node-ID */
这个 ...

这些在视频教程里面都有说,建议看下视频。
回复

使用道具 举报

0

主题

32

回帖

32

积分

新手上路

积分
32
发表于 2026-3-9 13:26:41 | 显示全部楼层
EDSEditor 开源的?
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2026-3-10 09:34:00 | 显示全部楼层
sdyang 发表于 2026-3-9 13:26
EDSEditor 开源的?


开源的。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2026-3-23 11:45:12 | 显示全部楼层
请教一下,canopen 中PDO是单向传输的,位置和控制字打包,通过状态字典可以知道数据是否下发成功,其他加减速一类的配置,如何知道配置成功了呢?PLC 中把各种字典对象都配置成用 pdo 传输,这样没有隐患吗,即使依靠 can 总线本身的 ack 应答,也不能保证是目标从机的应答。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2026-3-24 07:37:20 | 显示全部楼层
我要吃大葱 发表于 2026-3-23 11:45
请教一下,canopen 中PDO是单向传输的,位置和控制字打包,通过状态字典可以知道数据是否下发成功,其他加 ...

可以不应答,可以出现异常了再反馈。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2026-3-24 11:41:43 | 显示全部楼层
eric2013 发表于 2026-3-24 07:37
可以不应答,可以出现异常了再反馈。

谢谢版主的解答,这样的话 感觉有点不严谨啊,多轴情况下,某个轴位置丢失的话,其他轴可能会撞上,这样事故就大了呀
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2026-3-25 09:03:57 | 显示全部楼层
我要吃大葱 发表于 2026-3-24 11:41
谢谢版主的解答,这样的话 感觉有点不严谨啊,多轴情况下,某个轴位置丢失的话,其他轴可能会撞上,这样 ...

简单的可以这样,复杂的应该有更好的机制,得网上搜些资料学习下了。
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 昨天 00:46 | 显示全部楼层
我要吃大葱 发表于 2026-3-23 11:45
请教一下,canopen 中PDO是单向传输的,位置和控制字打包,通过状态字典可以知道数据是否下发成功,其他加 ...

PDO 的用法就是這樣的 每秒鐘 上千筆連續送 其中一兩筆錯了 很快會被後一筆給校正
CAN 的總線 也是有概率會出錯 校正不出來的 只是概率很低很低 我看過篇論文 在講這個
你沒辦法知道結果

你要保證送達 你要用SDO 但是速度慢很多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-4-10 13:20 , Processed in 0.828378 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表