PLC和PLC周边设备和环境故障诊断方法
时间:2023-03-16来源:佚名
在plc实际应用过程中,一旦系统出现故障,往往用户以为出问题出自PLC里,实际有90%都不是PLC的问题。而是由于用户不熟悉而造成的以为是故障、而其实不是故障的现象。用户的接线错误、编程错误、开关位置的错误、仪表故障、传感器故障等,都常常会使人误以为是PLC的错误。 当发现PLC没有按照自己的期望来进行工作时,要对PLC和PLC周边的设备和环境进行诊断。 一、从PLC外部的情况来进行的故障诊断。 在PLC没有像期望的那样开始工作的时候,应该先从PLC的外部来进行判断,这样,可以比较轻易地排除那些不是故障的误会。 所有的PLC在CPU模块、I/O模块或电源模块上都有LED指示灯。通常,红灯表示问题,绿灯表示OK。如果一个LED在闪烁,通常表示功能正在执行或者这个模块在等待什么。对LED灯状态的正确诠释可以节省你很多故障诊断的时间。所以在故障诊断之前,你应该把制造商的故障诊断指南看一遍并放在手边。 1. 如果PLC不能进入运行(RUN)模式,你可以用下面的方法来看看问题是在硬件还是软件: (1) 临时将终止循环指令放在你的用户程序的第一行。如果现在PLC可以进入运行模式了,表示问题在你的软件中;而不是PLC的硬件问题。(有些PLC需要你在进入运行模式之前,先清除所有的错误状态,即使原来的问题已经更正了)。 (2) 将PLC的内存复位(注意!首先,你要将PLC的内存的内容做一份拷贝,或者,你确信你愿意丢失内存中所有的程序、数据和组态)。如果PLC现在可以进入运行模式,问题就出在组态或者冲突使用的内存上。 2. 如果在检测一个传感器时,你发现PLC不能从一个传感器得到信号,首先检查该传感器的输出是否正常,接线是否正确。如果传感器经检查没有问题,则更换一个同型号的输入模块,如果PLC能够识别该模块的改变,就表示输入模块故障了(或者你刚才传感器连线错误了),那么,可以按照如下的方法观察PLC输入模块的LED灯是否与传感器的状态变化一致: (1) 如果输入LED没有动静,用万用表检查PLC输入模块的端子看看信号是否变化。如果没有,将传感器与PLC的连接断开,单独对传感器进行测试。看看外接电源是否正常,检查直流电源的极性是否接反。有些PLC是漏电流型(SINK)的,所以对应的传感器电路必须是正端子接到PLC的输入接点上,其它的DC输入模块是电流源型(SOURCE)的,则传感器电路要通过电源的地线接到输入接点上。 (2) 如果LED状态是发生变化了,可能是你的程序有问题。在你的用户程序中的第一行加一条终止循环的指令,然后运行程序,观察输入映射表,如果该位现在改变了,问题就在你的程序,很可能是你的程序中有一条指令对输入映射表进行了改写,从而改变了它的值。 3. 如果输入映射表依然不随着输入模块的LED的状态而改变,那么,可能是传感器电路有故障。传感器电路的电流能力可能不足以驱动输入状态,虽然它可能足以改变LED的状态。检查输入触点有没有不正常的小的电压变化。 如果一个执行器看来无法得到PLC试图写给它的信号,观察输出模块的LED,确信它们是否随着PLC改变输出状态而一起改变: (1) 如果LED确实改变,用万用表检查输出模块的端子,是否提供了足以驱动外部电路的信号,同时也检查极性是否正确。如果是,则将执行器从PLC上断开,对执行器单独进行测试。(有些输出模块有保险丝,检查一下是否保险丝断了?) (2) 如果LED 不变化,检查输出电路的电源,和它与输出模块的接线,(DC 输出可以是源型或漏型的),如果接线正确,将执行器从PLC的输出模块断开,看看现在LED在不带执行器时是否改变。 更换一个同型号的输出模块,如果PLC可以改变仿真的输出状态,那么刚才的模块或接线就有问题。 二、PLC系统的硬件、组态和编程的故障分类和诊断方法。 如果按照上面的方法,发现连接到传感器或执行机构都可以工作,那么你就可以应该检查PLC内部状态或PLC程序的问题了。 由于PLC是由人来进行安装、组态和编程的,所以可能会发生很多人为的使用过程中的错误。PLC制造商(如德维森)通常都提供了很多工具来找出这些错误。这些错误可以分为以下几类: 1. 致命错误 这些错误将导致PLC离开运行模式而进入故障模式(类似于硬件故障所导致的情形)。致命错误通常发生在PLC开机自检时或程序执行时的部件失败。有的编程和组态问题(如看门狗定时器超时,试图运行一个不存在的程序,等)也会导致致命错误。 当PLC进入故障模式时,它将故障LED打开,并将所有的输出关闭为OFF(或者冻结在它们的上一个状态),PLC也会在内存中保存一个故障代码,编程人员可以读取该故障代码确定故障的原因,解决问题后,清除故障状态,将PLC电源关掉再打开,重新进入运行模式。 现在的PLC通常都会保存对几个最近的故障的详细描述,并允许编程人员编写在致命故障发生时可以运行的故障程序,我们在第九章曾经描述过故障进程,本章我们主要讨论如何找到和使用故障代码。 2. 非致命故障 非致命故障是PLC可以探测到,但不至于使PLC离开运行模式的故障。有些可探测的硬件问题,如内存的后备电池电压低,只导致非致命故障。非致命故障也可以由组态和编程错误引起,如一个定时中断程序的执行被一个更高优先级的程序的运行而延迟,或者一个算术操作产生了一个太大以致无法存入指定目标内存的数,等等。 非致命故障导致PLC设定相关的状态位或者将相关的错误代码写到内存中。当结果太大或太小以致无法保存时,数据字处理指令将把内存中的算术标志位设置为1。用户程序应当检查这些状态位或代码,并作出响应,因为PLC将像没有错误发生一样继续执行程序,有些非致命错误状态位在前面的章节已经讨论过,本章我们将讨论另外一些。 3. 编程或组态逻辑错误 这些错误是PLC不能自动检查出来的,但可以用程序中的故障检测指令或者编程单元的程序监视功能来检查。 逻辑错误的例子包括一个用户将一位设为OFF而不是ON,两段用户程序试图控制同一个输出,或者结构化编程旁路了一段需要的程序等等。 早期的PLC设计为不允许逻辑错误,如两个横档控制一个输出,或者跳转指令向程序前面进行跳转,等,但用户需要更大的灵活性,因此,即使这些安全措施都取消了。有些编程单元在编程人员写出上述具有潜在错误的逻辑语句时,会提供警示信息,但编程者可以忽略它们。 编程语言都包括简单的调试工具:提前终止扫描循环的指令,这样程序可以一段一段来检查;导致致命或非致命的错误,使PLC在某些情况下立即停止;以及其它特别为调试程序中的某一个问题的指令。标准指令比如,计数器,可以临时插入程序中,记录事件发生的次数。编程软件也包括调试工具,如在用户程序执行时,监视和改变数据内存,强迫I/O映射位开或者关,以观察程序如何响应;记录某个特别位或特别字的短时间的变化,然后用历史趋势图显示这些变化;当某个特别位在使用时,生成一个程序中所有地方的交叉参考清单;还有搜索工具,可以找到程序中某个特别地址或指令在程序中的位置。 |