canOpen学习四之canOpen应用实现主机检测从机丢失

一、从机代码
将从机心跳设置为1S

/* index 0x1017 :   Producer Heartbeat Time. */
 UNS16 slave_objdict_obj1017 = 1000;	/* 0 */
 subindex slave_objdict_Index1017[] = 
  {
    { RW, uint16, sizeof (UNS16), (void*)&slave_objdict_obj1017, NULL }
  };

二、主机代码

/* index 0x1016 :   Consumer Heartbeat Time. */
 UNS8 master_objdict_highestSubIndex_obj1016 = 1; /* number of subindex - 1*/
 UNS32 master_objdict_obj1016[] = 
 {
   0x107D0	/* 67536 */
 };

主机根据0x1016索引内设置的值对从机进行心跳检测,主机一的值为0x107D0,他的类型是32位的,前16位代表从机号,后16位为检查时间。0x107D0的意思是从机一检测时间为0x07d0也就是2S。
三、如何知道从机丢失
主机根据索引0x1016中设置的时间对从机进行检测,当从机丢失后会进入回调函数:

void _heartbeatError(CO_Data* d, UNS8 heartbeatID){heartbeat_error(d,heartbeatID);}

其中d为CO_Data ,heartbeatID为从机ID值。

四、源码分享
主机检测从机丢失源码

猜你喜欢

转载自blog.csdn.net/qq_15181569/article/details/105855756