总线通讯中的看门狗 – 心跳检测

熟悉单片机或工控机的朋友,想必都对看门狗有所熟悉。什么是看门狗呢?看门狗一般是主板的一个定时芯片,可以由程序启动,程序正常运行时,不断复位定时器,俗称“喂狗”。一旦程序异常,“喂狗”失败,定时时间到,便会触发超时功能,比如将系统重启。

watchdog_

在工业机器人应用中,常常需要用总线将 PLC 站和机器人控制器相连用于数据交换,典型的应用是在一个 Profibus 网络中,PLC 控制器充当主站,机器人控制器充当从站,那么对于总线通讯的状态,我们就需要监测。对于通讯错误,硬件报错自然可以查看到报警,但是软件我们如何监测呢?思路和看门狗一样的。

在讨论之前,我们设想一种情况:为何不能设置某个信号为1或者0,当监测不到这个信号时,就认为异常。这个是不行的,就如我们用电脑一样有时候死机操作无反应,当系统死机时信号就有可能保持不动了。所以我们需要动态监测。

回想前面的看门狗思路,周期性地“喂狗”,定时器…..嗯,在机器人控制器里,需要设置一个定时器,用 PLC 主站发过来的信号周期性喂狗,一旦喂狗失败,定时器启动,便进行相应的后续处理。对于喂狗信号,需要检测动态特征,最简单的就是检测跳沿,用每次边沿触发来重置定时器(关于边沿检测,参考前面的文章《PLC 边沿检测原理》)。

这个周期性喂狗信号,还被赋予一个称呼“ Live Bit ”,最简单的可以用 PLC 主站发来脉冲信号来实现。机器人控制器收到后,再将其反转后回传给PLC主站,PLC 主站对其回传的反转信号再进行检测,以便判断通讯是否正常,并进行相应的后续处理。后来 LT 在与 雪野苍狼(eaglesky) 交流时,得知这种方法还有个中文名字叫“心跳检测”。

扩展阅读:

  • 心跳检测:http://blog.csdn.net/loveforld/archive/2009/07/06/4325715.aspx
  • 怎么编写程序判断触摸屏与PLC通讯失败与否: http://www.automationit.cn/webpage/forum/201101/2011011916221400001-1.shtml
  • 关于工控机断电后PLC停机的问题: http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=4&a_id=785525&s_id=0&num=6
  • 如何做CPU心跳点: http://www.fa.omron.com.cn/forum/read.jsp?threadId=18776
  • DP看门狗? http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=7&a_id=510516&s_id=0&num=10
  • watchdog/live bit mechanism http://www.copadata.com/forums/showthread.php?t=333
  • direct push技术原理 http://blog.csdn.net/charles1900/article/details/2060001
  • 能否用step7的计数器来判断两个cpu之间通讯是否断开 http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=83604&cid=1029
  • 数据通讯中的心跳检测
    http://tr0217.blog.163.com/blog/static/36066480201221495711437/

关键字:心跳, Live Bit, Livebit, 看门狗

2 thoughts on “总线通讯中的看门狗 – 心跳检测

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.