基于codesys的看门狗操作

循环任务

CODESYS支持多种任务类型,其中最为常见的任务类型是循环任务,循环任务是指任务函数被每隔一段时间调用一次,而且任务应该在任务间隔时间内执行完。

但是如果任务没有在规定的时间内执行完怎么办呢?

看门狗

对于身负打工使命的工控技术来说,永远没有躺平的说法。为了保证任务进度,工控技术“祭出”了看门狗(watchdog)机制的大招。

任务的看门狗会在当周期任务执行超时时,终止超时的IEC任务执行,并提示“异常”的错误状态。

任务看门狗配置

图显示了codesys编程上位机编程软件在任务配置中启用看门狗功能,选择任务类型、任务周期、使能看门狗、看门狗超时和灵敏度。

当触发看门狗报警时,运行时将输出重置为默认值,并且在上位机编程软件的相关设备界面中提示“IO update while in stop”和“set outputs to default values”。

灵敏度

在任务配置中,看门狗的“灵敏度”是一个比较特殊的参数,用于定义监视任务超时的一种容忍程度,有点像足球比赛中的红黄牌,数值表示看门狗会在任务执行超过多少倍时间时才会报警,如下表所示。

灵明度 超过设定时间的倍数
0,1 1
2 2
n n

最终的看门狗触发时间=时间X灵明度,当看门狗时间为100ms,灵敏度为2说明当任务执行超过100*2=200时才会触发看门狗报警,并中止超时的IEC任务。

看门狗操作

看门狗既可以在PLC程序组态时进行配置,也可以PLC程序中通过调用API函数进行启停操作,API函数包含在CmpIecTask.library库中,以下步骤采用ST语言:

  • 函数获得当前的IEC任务,并且声明RTS_IEC_HANDLE类型的变量来标识该IEC任务;

  • IecTaskDisableWatchdog/IecTaskEnableWatchdog接口功能实现看门狗的停用和启用。

    hIecTask = RTS_IEC_HANDLE;

    hIecTask = IecTaskGetCurrent(0);
    IecTaskDisableWatchdog(hIecTask);
    ... // Code that is protected against watchdog
    IecTaskEnableWatchdog(hIecTask);

小结

为了监督PLC周期任务能在正确的时间内执行完,可以在上位机编程软件的任务配置中使能看门狗,这样可以启动任务超时报警处理,同时看门狗机制是可以在程序中动态修改。

posted on 2024-04-13 09:48  MichaelChen-99  阅读(322)  评论(0编辑  收藏  举报

导航