优酷网站建设视频教程集,网站群cms,温州app开发,大连专业手机自适应网站制作1.Canfestival同步报文sync的设置 在OD表中的配置如下#xff1a; 如果0x1006索引的同步报文循环周期时间设置为0则禁用同步报文#xff0c;这里要注意的就是#xff0c;上面第一张图也提到了#xff0c;时间单位是us。第二张图#xff0c;我的0x1006就设置为0xF4240,也就…1.Canfestival同步报文sync的设置 在OD表中的配置如下 如果0x1006索引的同步报文循环周期时间设置为0则禁用同步报文这里要注意的就是上面第一张图也提到了时间单位是us。第二张图我的0x1006就设置为0xF4240,也就是1s发送一次同步报文。
关于同步桢同步计数器的问题可以参考这篇文章
canfestival同步帧(同步计数器的问题) - 哔哩哔哩关于canopen的SYNC同步帧,有两种方式:一种是sync没有数据,只有id.另一种是sync带有一个数据,这个数据可以循环计数,类似与单片机的计时器.这个计数的周期就存储在字典的1019h里面. 如果1019h里面存入的是4,那么sync数据部分就会依次发送01,02,03,04,---01,02,03,04,---01,02,03,04.......1019h这个参数 与 TPDO的通讯参数06h子索引是有联动的.06h中的参数代表了何时响应这个计数值.如果06h中的参数是3,那么就https://www.bilibili.com/read/cv12706894/
我这里是介绍的sync桢带数据同步计数值的情况
2.同步报文的发送
在struct struct_CO_Data结构体中的同步报文变量定义区域增加下面的成员变量 随后在同一个头文件data.h的下半部分增加下图的初始化语句。 同步桢发送方法的设置 这里的63为循环次数可以根据自己的项目情况自行设置设置好之后同步桢发送的情况就是 3.同步桢接收处理
3.1 TPDO 对象字典设置 将tpdo的SYNC_start_value改为非零值意思是接收到多少个同步信号后上传该tpdo,也就是设置为同步触发模式。 3.2 SYNC处理函数处理 更改_sendPDOevent()函数将接收到的同步桢数据域传过来。 更改_sendPDOevent (CO_Data * d, UNS8 isSyncEvent)对数据部分同步计数值的处理
源码处理
/* check if transmission type is SYNCRONOUS *//* message transmited every n SYNC with nTransmissionType */if (isSyncEvent (*pTransmissionType TRANS_SYNC_MIN) (*pTransmissionType TRANS_SYNC_MAX) (d-PDO_status[pdoNum].transmit_type_parameter *pTransmissionType)){/*Reset count of SYNC */d-PDO_status[pdoNum].transmit_type_parameter 0;MSG_WAR (0x3964, PDO is on SYNCHRO. Trans type : ,*pTransmissionType);memset(pdo, 0, sizeof(pdo));/*{Message msg_init Message_Initializer;pdo msg_init;}*/if (buildPDO (d, pdoNum, pdo)){MSG_ERR (0x1906, Couldnt build TPDO number : ,pdoNum);status state11;break;}status state5;/* If transmission RTR, with data sampled on SYNC */}
更改后为 将接收到的同步计数值数据与tpdo的SYNC_start_value参数做比较如何相同则开启pdo传输
修改后实现的效果展示 如上图每次发送到数据为0x0A的同步桢后就会收到pdo为0x186的数据桢。
当然这样也是可以的