紧急报文,当设备内部发生错误时触发该对象,即发送设备内部错误代码。
在canopen内部维持一个错误表,对发生的错误进行记录。当错误发生后从表中查看该错误是否已经发生并未被解决时,则报告主站;如果错误被解决则从表中清除,当所有错都被解决,则报告主站。
canopen记录了所有错误的历史记录,当前是否有错误发生,所有错误掩码,目前为止发生过的错误种数。
/* 紧急报文初始化 */
void emergencyInit(CO_Data *d)
{
/* 按索引号0x1003和子索引号0x00注册字典入口的回调函数 */
RegisterSetODentryCallBack(d, 0x1003, 0x00, &OnNumberOfErrorsUpdate);
/* 错误个数 */
*d->error_number = 0;
}
/* 紧急报文停止 */
void emergencyStop(CO_Data* d)
{
}
/* 发送紧急报文 */
UNS8 sendEMCY(CO_Data *d, UNS16 errCode, UNS8 errRegister, const void *Specific, UNS8 SpecificLength)
{
Message m;
MSG_WAR(0x3051, "sendEMCY", 0);
/* cob_