由于plc是由人来进行安装、组态和编程的,所以可能会发生很多人为的使用过程中的错误。PLC制造商通常都提供了很多工具来找出这些错误。这些错误可以分为以下几类:
致命错误
这些错误将导致PLC离开运行模式而进入故障模式(类似于硬件故障所导致的情形)。致命错误通常发生在PLC开机自检时或程序执行时的部件失败。有的编程和组态问题(如看门狗定时器超时,试图运行一个不存在的程序,等)也会导致致命错误。
当PLC进入故障模式时,它将故障LED打开,并将所有的输出关闭为OFF(或者冻结在它们的上一个状态),PLC也会在内存中保存一个故障代码,编程人员可以读取该故障代码确定故障的原因,解决问题后,清除故障状态,将PLC电源关掉再打开,重新进入运行模式。
现在的PLC通常都会保存对几个最近的故障的详细描述,并允许编程人员编写在致命故障发生时可以运行的故障程序,我们在第九章曾经描述过故障进程,本章我们主要讨论如何找到和使用故障代码。
非致命故障
非致命故障是PLC可以探测到,但不至于使PLC离开运行模式的故障。有些可探测的硬件问题,如内存的后备电池电压低,只导致非致命故障。非致命故障也可以由组态和编程错误引起,如一个定时中断程序的执行被一个更高优先级的程序的运行而延迟,或者一个算术操作产生了一个太大以致无法存入指定目标内存的数,等等。
非致命故障导致PLC设定相关的状态位或者将相关的错误代码写到内存中。当结果太大或太小以致无法保存时,数据字处理指令将把内存中的算术标志位设置为1。用户程序应当检查这些状态位或代码,并作出响应,因为PLC将像没有错误发生一样继续执行程序,有些非致命错误状态位在前面的章节已经讨论过,本章我们将讨论另外一些。
编程或组态逻辑错误
这些错误是PLC不能自动检查出来的,但可以用程序中的故障检测指令或者编程单元的程序监视功能来检查。
逻辑错误的例子包括一个用户将一位设为OFF而不是ON,两段用户程序试图控制同一个输出,或者结构化编程旁路了一段需要的程序等等。
早期的PLC设计为不允许逻辑错误,如两个横档控制一个输出,或者跳转指令向程序前面进行跳转,等,但用户需要更大的灵活性,因此,即使这些安全措施都取消了。有些编程单元在编程人员写出上述具有潜在错误的逻辑语句时,会提供警示信息,但编程者可以忽略它们。
编程语言都包括简单的调试工具:提前终止扫描循环的指令,这样程序可以一段一段来检查;导致致命或非致命的错误,使PLC在某些情况下立即停止;以及其它特别为调试程序中的某一个问题的指令。标准指令比如,计数器,可以临时插入程序中,记录事件发生的次数。编程软件也包括调试工具,如在用户程序执行时,监视和改变数据内存,强迫I/O映射位开或者关,以观察程序如何响应;记录某个特别位或特别字的短时间的变化,然后用历史趋势图显示这些变化;当某个特别位在使用时,生成一个程序中所有地方的交叉参考清单;还有搜索工具,可以找到程序中某个特别地址或指令在程序中的位置。 |