技术新讯 > 电子通信装置的制造及其应用技术 > 一种基于CANOPEN心跳异常恢复方法与流程  >  正文

一种基于CANOPEN心跳异常恢复方法与流程

  • 国知局
  • 2025-01-10 13:20:33

本发明属于计算机控制,涉及一种基于canopen心跳异常恢复方法。

背景技术:

1、canopen通信是建立在can数据链路层之上的一种通讯形式,此种通信方式对应用层做出了相关的规定。canopen设备模型包括通信部分、对象字典和应用部分。通讯部分包括pdo对象、sdo对象、nmt对象。对象字典包括数据类型、通讯对象、和应用对象。

2、canopen协议的优点包括高效性、精确定位、抗干扰性、多功能性、易于配置、数据传输方式的高效性、灵活的配置和状态查询功能、开放的标准、数据安全性高、以及具有安全通信约束等优点。

技术实现思路

1、(一)要解决的技术问题

2、在canopen协议栈使用过程中,对于总线干扰,硬件错误等原因导致从站心跳主站不能收到而产生错误,canopen标准协议栈只提供了回调函数,此函数中通过消息方式提供错误状态,出现错误后只能由人工进行处理,本发明提供一种基于canopen心跳异常恢复方法,对错误进一步处理。

3、(二)技术方案

4、为了解决上述技术问题,本发明提供一种基于canopen心跳异常恢复方法包括以下步骤:

5、s1:实现主站心跳错误处理函数master_heartbeaterror,将此函数指针赋值到对象字典指针od下的心跳错误heartbeaterror指针下。

6、s2在master_heartbeaterror处理函数中使用rt_thread_create任务创建函数创建心跳错误处理任务,任务创建成功后,使用rt_thread_startup函数启动心跳错误处理任务。

7、s3:使用getnodestate函数获取当前节点状态,函数参数为节点值nodeid,判断获取值,根据不同的返回状态进行不同的处理,处理周期为心跳消耗者时间consumer_heartbeat_time。

8、不同的返回状态进行不同的处理包括以下五种情形:

9、s31:如果节点状态值为不确定状态unknown_state,则使用masterrequestnodestate函数查询节点状态,该函数发送节点守护请求指令进行强制查询,查询结果跟新到系统状态中,下一次调用getnodestate函数即可获取最新状态。

10、s32:如果节点状态值为断链接状态disconnected,则使用masterrequestnodestate函数查询节点状态,该函数发送节点守护请求指令进行强制查询,查询结果跟新到系统状态中,下一次调用getnodestate函数即可获取最新状态

11、s33:如果节点状态为预操作状态pre_operational,则进行恢复生产者心跳处理,过程如下:

12、s33_1使用getstate函数判断主站状态为停止状态,否则退出操作,继续判断生产者心跳时间producerheartbeattime设置不为0,使用定时设置函数setalarm设置定时时间为producerheartbeattime,定时回调函数为心跳产生函数producerheartbeatalarm通过setstate函数将主站状态设置为操作状态operational。

13、s33_2通过调用主站发送nmt状态改变函数mastersendnmtstatechange,将节点设置为启动状态。

14、s33_3对节点进行配置,通过sdo操作写从站索引0x6040,子索引0写入数据0x80将从站故障进行清空操作。使用sdo将节点参数一一进行配置。

15、s34:如果节点状态为初始化状态initialisation,表示节点断电后上电过程,重复步骤s3继续进行判断。

16、s35:如果节点状态为操作状态operational,则重复步骤s3继续判断。

17、(三)有益效果

18、上述技术方案所提供的基于canopen心跳异常恢复方法,通过在标准canopen协议栈回调函数中判断节点状态,根据当前节点状态进行进行节点操作,在不需要人工操作的情况下,完成了节点的重新上线操作。

技术特征:

1.一种基于canopen心跳异常恢复方法,其特征在于,包括以下步骤:

2.如权利要求1所述的基于canopen心跳异常恢复方法,其特征在于,步骤s3中,处理周期为心跳消耗者时间consumer_heartbeat_time。

3.如权利要求2所述的基于canopen心跳异常恢复方法,其特征在于,步骤s3中,不同的返回状态进行不同的处理包括五种情形。

4.如权利要求3所述的基于canopen心跳异常恢复方法,其特征在于,步骤s3中,如果节点状态值为不确定状态unknown_state,则使用masterrequestnodestate函数查询节点状态,该函数发送节点守护请求指令进行强制查询,查询结果跟新到系统状态中,下一次调用getnodestate函数获取最新状态。

5.如权利要求3所述的基于canopen心跳异常恢复方法,其特征在于,步骤s3中,如果节点状态值为断链接状态disconnected,则使用masterrequestnodestate函数查询节点状态,该函数发送节点守护请求指令进行强制查询,查询结果跟新到系统状态中,下一次调用getnodestate函数获取最新状态。

6.如权利要求3所述的基于canopen心跳异常恢复方法,其特征在于,步骤s3中,如果节点状态为预操作状态pre_operational,则进行恢复生产者心跳处理。

7.如权利要求6所述的基于canopen心跳异常恢复方法,其特征在于,步骤s3中,恢复生产者心跳处理过程如下:

8.如权利要求3所述的基于canopen心跳异常恢复方法,其特征在于,步骤s3中,如果节点状态为初始化状态initialisation,表示节点断电后上电过程,重复步骤s3继续进行判断。

9.如权利要求3所述的基于canopen心跳异常恢复方法,其特征在于,步骤s3中,如果节点状态为操作状态operational,则重复步骤s3继续判断。

10.一种基于权利要求1-9中任一项所述的基于canopen心跳异常恢复方法在计算机控制技术领域中的应用。

技术总结本发明公开了一种基于CANOPEN心跳异常恢复方法,步骤:S1:实现主站心跳错误处理函数master_heartbeatError,将此函数指针赋值到对象字典指针OD下的心跳错误heartbeatError指针下;S2在master_heartbeatError处理函数中使用rt_thread_create任务创建函数创建心跳错误处理任务,任务创建成功后,使用rt_thread_startup函数启动心跳错误处理任务;S3:使用getNodeState函数获取当前节点状态,函数参数为节点值nodeId,判断获取值,根据不同的返回状态进行不同的处理。本发明通过在标准canopen协议栈回调函数中判断节点状态,根据当前节点状态进行进行节点操作,在不需要人工操作的情况下,完成了节点的重新上线操作。技术研发人员:王雨龙受保护的技术使用者:天津津航计算技术研究所技术研发日:技术公布日:2025/1/6

本文地址:https://www.jishuxx.com/zhuanli/20250110/352521.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。