看门狗是什么 程序看门狗想必接触过编程的人都知道,硬件之间通信需要一个类似于心跳的数据来判断通信是否连接正常,于是编程人员利用这一特性,用程序模拟出硬件设备的心跳,这个数据就叫看门狗。看门狗,顾名思义,有数据交互时,狗就给你干活,不停的叫,
想必接触过编程的人都知道,硬件之间通信需要一个类似于心跳的数据来判断通信是否连接正常,于是编程人员利用这一特性,用程序模拟出硬件设备的心跳,这个数据就叫看门狗。
看门狗,顾名思义,有数据交互时,狗就给你干活,不停的叫,所以看门狗数据会不停地变化。反之,通信断了,数据无法继续交互了,狗就饿死了,所以就不叫了,此时,看门狗数据停止变化。
那么问题来了,如何使用看门狗呢?那我我们可以判断上一循环和本次看门狗的值是否发生变化,如果上一次循环,看门狗数值和本次一样,则认为通信出现问题。
但是不能认为两次看门狗数据不一样,就立马认为设备间通信中断了,这样写出来的程序是无法使用的。
所以根据实际情况,一般默认看门狗判定时间为2秒,也就是说,连续2s中,上一循环看门狗数据和当前看门狗数据都是一样的。此时,立马判定设备间通信中断,停止所有输出,清楚所有输入。
下面介绍下西门子PLC用SCL需要写的看门狗。
IF Watchdogpre=Watchdog Then
TonTimer(in:=1,pt:=T# 100ms);
IF TonTimer.Q Then
Counter:=Counter+1;
TonTimer(in:=0,pt:=T#0s);
END_IF;
IF Counter>=20 Then
Counter:=20;
END_IF;
IF Counter=20 Then
Connect:=0;
END_IF;
Else
Counter:=0;
Connect:=1;
END_IF;
当Connect为0的时候,就判断通信已经中断。如果看门狗继续变化,则立马将Counter清0,将Connect置1。当Connect为1时,判定设备间通信正常。
对西门子PLC编程感兴趣的小伙伴,大家可以在评论区讨论哦。