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值。

四、源碼分享
主機檢測從機丟失源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章