搜索
bottom↓
回复: 15

Canopen如何使用event timer方式触发PDO传输??

[复制链接]

出0入0汤圆

发表于 2016-11-25 22:29:05 | 显示全部楼层 |阅读模式

Canfestival协议移植到STM32,NMT、PDO、EMCY、SDO等各个功能都运行正常。
我现在使用一个主机带15个从机,主机每2秒发送一次SYNC同步报文,15个从机收到主机发送的SYNC报文后,用PDO方式把各自采集的电压数据传给主机,
也就说,主机每发一次SYNC,就会收到15个电压数据,这个自然没问题,目前运行良好。。。。。。。
但是,我现在想换个方式。。。。。我不想主机发SYNC来触发从机发送电压数据,我想从机自己定时触发自动给主机发送电压数据。
CANOPEN资料文档里介绍:PDO传输类型有event timer; inhibit timer; change of state; respond to SYNC等,我想让从机定时触发,是不是该用Event timer方式来触发??
我在Canfestival字典里尝试更改Event timer参数值,但貌似不起作用。。。。
不知哪位有这方面的经验,请指点一二。。。。。
下面截图代码,具体我该如何设置和操作?谢谢!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2016-11-26 10:50:14 | 显示全部楼层
估计CANopen这个,这里应该很少有人能回答上了,加这个扣群:一47九1182八

出0入0汤圆

 楼主| 发表于 2016-11-26 17:21:26 | 显示全部楼层
hyf88 发表于 2016-11-26 10:50
估计CANopen这个,这里应该很少有人能回答上了,加这个扣群:一47九1182八

已经加了群。。。。谢谢!

出0入0汤圆

 楼主| 发表于 2016-11-27 18:51:29 | 显示全部楼层
自己顶一下,今天折腾了一下,搞定了值改变触发PDO传输。。。。。。
但是那个事件触发还没搞明白。。。。。什么样的事件怎么样触发??

出0入0汤圆

发表于 2016-11-28 07:48:34 来自手机 | 显示全部楼层
事件触发就是值改变。

出0入12汤圆

发表于 2016-11-28 13:19:11 | 显示全部楼层
Transmission_Type =255;
Event_Timer = 毫秒

出0入0汤圆

 楼主| 发表于 2016-11-28 13:38:23 | 显示全部楼层
waterx3 发表于 2016-11-28 13:19
Transmission_Type =255;
Event_Timer = 毫秒

如果这样设置:
Transmission_Type =255;
Event_Timer = 100;

我有点想不明白:Transmission_Type =255就是值改变了触发PDO发送,Event_Timer = 100就是每隔100MS发送一次??
感觉有点矛盾,究竟是值改变了触发,还是定时100MS触发??如果再设置一个抑制时间inhibit timer,感觉就乱了。。。。。

出0入12汤圆

发表于 2016-11-28 13:50:40 | 显示全部楼层
定时100ms

出0入0汤圆

发表于 2018-3-9 15:29:02 | 显示全部楼层
想明白了楼主,同问

出0入0汤圆

发表于 2018-3-10 11:12:54 | 显示全部楼层
canopen假设配置PDO0x1800+n 传输
应该首先配置通讯模式 :在索引1800 子索引01 设置 传输的COBID
                                                      子索引02 设置 传输类型 设其值是“T” 当  T = 1到0xf0 时 表示节点接收到多少个同步信号(SYNC) 后 发送一次PDO
                                                                                                           当   T =  0xfd     时 表示节点接收到一个远程帧后发送一次 PDO    ( 0x1800+n)
                                                                                                           当  T =  0xff      时 表示节点是基于事件发送一次PDO ( 0x1800+n)基于事件方
                                                                                                                                       式如时间和值改变
以上内容参见 CANOpen Memento  本站内可以下载。
                                                                             

出20入26汤圆

发表于 2018-4-12 16:30:13 | 显示全部楼层
楼主的值改变触发PDO是怎么做的

出10入95汤圆

发表于 2018-5-20 18:06:51 | 显示全部楼层
oldmen 发表于 2018-3-10 11:12
canopen假设配置PDO0x1800+n 传输
应该首先配置通讯模式 :在索引1800 子索引01 设置 传输的COBID
        ...

多谢科普,请问大侠有没有好的资料推荐?
手上有很多资料,看的一头雾水,现在是了解怎么编写EDS文件,这样就方便定制不同的产品了。
谢谢!

出0入4汤圆

发表于 2018-8-29 17:26:24 | 显示全部楼层
oldmen 发表于 2018-3-10 11:12
canopen假设配置PDO0x1800+n 传输
应该首先配置通讯模式 :在索引1800 子索引01 设置 传输的COBID
        ...

当  T =  0xff      时 表示节点是基于事件发送一次PDO ( 0x1800+n)基于事件方式如时间和值改变 --------是否可以理解为,当时间到了触发传输,或者值改变也触发传输,两个是或的关系????

出0入0汤圆

发表于 2018-8-30 20:41:21 | 显示全部楼层
时间触发和事件触发有分别设置的地方。他们是不是能够同时触发没有试过。

出0入0汤圆

发表于 2018-9-3 11:17:44 | 显示全部楼层
如图定时1000ms配置

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-7-2 10:20:14 | 显示全部楼层
天马行空 发表于 2016-11-27 18:51
自己顶一下,今天折腾了一下,搞定了值改变触发PDO传输。。。。。。
但是那个事件触发还没搞明白。。。。。 ...

楼主,你好,我请教个问题
这个同步报文怎么实现啊,比如我只有一个驱动器,然后想用同步报文实现位置模式的工作;报文机构就是80 加数据啊;有例子吗
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 02:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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