一、从机代码
将从机心跳设置为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位代表从机ID号,后16位为检查时间。0x107D0的意思是从机一检测时间为0x07d0也就是2S。
三、如何知道从机丢失
主机根据索引0x1016中设置的时间对从机进行检测,当从机丢失后会进入回调函数:

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

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

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