一个CANopen网络中,
(1)只有一个站点发送SYNC
(2)发送SYNC的为生产者,接收SYNC的为消费者,就是说符合生产/消费模型
(3) 不一定让主站发送SYNC,从站也可以。
(4)對象字典中Index 1005 & 1006是指的主站發送SYNC的COD-ID和時間, 1007指的是窗口,(博主接触的资料是SYNC的50%或75%作为窗口)
----------------明天继续---------------------
(5)SYNC同步什么情况下用到?[本博主答道]答案:至少伺服驱动器用到。据说伺服对实时性要求较高。
(6)[学无止境2013
第一种方法是不管有没有从机接入,我主机都一直发送SYNC报文,这两种哪一个思路是正确的?
[YUANFANG] 上一个贴子里已经讨论过了,你可以考虑,主站在上电时加载从站配置的时候,如果发现有从站使用同步PDO,就开始发,当然,你也可以等到有同步PDO的从站连接正常后再发,就是稍麻烦一点,所有的做法都可以,只要保证需要SYNC信号的时候有,就行
(7)学无止境2013,如果有的从机有,有的从机没有,那主机发SYNC报文好呢还是不发呢?
遇到这种情况一般都怎么处理,采取什么办法和对策,请远方指点。
远方,如果有些从站的PDO是配置成同步模式,你就一定要发SYNC,不然PDO没法启动啊,就算目前的配置,所以PDO都没有使用SYNC模式,你也可以发SYNC,不影响数据交换,因为SYNC报文只是提供一个同步信号而已,需要的时候用,不需要就不用
(8)远方说不要用远程帧,协议不推荐
(9)ODD_SYNC_COB_ID 0x00000080L /*index 0x1005*/ //if bit30=0, node produces SYNC 只接受,不发送
(10)
---------------------------------question----------
对CANopen使用有一段时间了,有一个问题,请问高手或者版主,不知道如何实现SYNC同步,即通过周期发送SYNC消息后触发,同步得到PDO数据。
同步(通过接收SYNC对象实现同步)
--------------answer----------
简单的来说,CANOPEN里的同步实现方法,就是使用PDO把控制数据发送给每一个从站,但因为是同步模式,每个收到PDO控制命令的从站,都只是把命令暂时保存起来,当所有的从站命令都发送完毕后,主站才会送出SYNC广播报文,所有支持同步传输模式的从站,在收到SYNC报文后,大家一起开始执行之前保存好的控制命令,这就是同步机制
(11)------------question-------------
另外加上一个问题 就是SYNC同步,比如我让两个驱动器同步,给两个驱动顺序赋值完,主动的发一个SYNC信号,这样可以吧?SYNC不需要是周期性的吧?就是每次我对所有从节点赋值完 就发一个SYNC。这样应该没有问题吧?
---------anser------------
SYNC周期永远都不会变,速度的变化与SYNC周期没有关系,速度曲线是由你的上位控制器算出来的,按SYNC周期取点送给伺服即可
如果你要做这方便的开发,就要潜心研究一下,没有那么简单
(12):SYNC一定要通过对象字典设置成固定周期的吗?答案:是。
问:
|
|
(13)--------------
请问如果在402插补模式下,如果遇到其他紧急报文的发送,延迟了SYNC的发送,怎么处理?谢谢
----------------answer-----------------------
可以在通讯周期上为紧急报文设计一个发送时间窗,避开SYNC.不光紧急报文,其它的SDO PDO也都可能会使SYNC延迟,即这些帧已经先产生了并且已经放到CAN控制器的发送队列,甚至可能已经开始上载到总线上,你不可能把它拉下来吧,这种情况可能会带来百微秒级的延时,更坏的情况,先产生的低优先级的比如SDO一直竞争不到总线的控制权,将高优先级的SYNC堵在后面,这样SYNC的发送延迟可能会更久。这样看来你的SYNC要么忍受,要么避开。选择避开的话,就需要规规划你的通信周期,在一个通信周期上分时段,哪一段留给实时通信,哪一段留给非实时通信,更详细的,那一段分给SYNC,哪一段分给EMCY,哪一段分给PDO。可以看看DS301协议,有一段这方面介绍。
(14)在从站可配置为SYNC producer时,如果把该从站配置为SYNC producer,在整个can网络处于Operational状态时,如果主站检测到该从站异常,主站应该采取哪些异常处理措施???
答案:winshton-这个是你的错误处理程序需要关心的问题,跟协议栈无关,协议栈只负责提供错误检测机制,由你的上层错误处理程序查询到这个异常,然后是应该停掉整个网络的通讯还是忽略这个错误,继续指定一个节点作为sync producer,这些都由你来决定,如果这个节点很重要,出现异常后整个系统瘫痪(例如作为整个系统闭环控制的反馈),不能正常工作,那么就可能要把网络切换到停止状态,更换板卡维修...
问:如果从站Object 1005h Default value 为80000080h
Object 1006h设为0,是不是从站也是一个SYNC对象的消费者。?
答案:
|