安全型可编程逻辑控制器(plc)是为特殊用途的机器设备而设计的,用于关键型控制和安全型应用。这些通常是安全系统(sis)的一部分,用在检测具有潜在危险的流程工业环境中。一旦检测出危险,sis的应用程序能自动作用,把流程切换到安全状态。谈到这里,用户可能会有一系列的问题:常规plc已经成功地使用了这么多年了,与安全plc相比有什么不同?为什么在关键型控制和安全型应用中,不能使用常规的plc?
一、综述
一台安全plc采用了特殊的设计,能够实现两个重要目标:
1.系统不会失效(采用冗余的工作方式),即使元件的失效不可避免;
2.失效是在可预测的范围内,一旦失效,系统将进入安全模式。
在设计安全plc时,要考虑到很多因素,需要很多的特殊设计。比如:一台安全plc更强调内部诊断,结合硬件和软件,可以让设备随时检测自身工作状态的不适;一台安全plc具有的软件,要使用一系列的特殊技术,能确保软件的可靠性;一台安全plc具有冗余功能,即使一部分失效,也能够维持系统运行;一台安全plc还具有外加的安全机制,不允许通过数字通信接口随便读写内部的数据。
安全plc与常规plc的不同还在于:安全plc需要得到第三方专业机构的安全认证,满足苛刻的安全性和可靠性国际标准。必须彻底地采用系统方法,来设计和测试安全plc。德国的tuv专家和美国的fm专家会提供对安全plc设计和测试过程的、第三方独立的确认和验证,
特殊的线路,细致的诊断软件分析,再加上对所有可能失效进行测试的完整性设计,确保了安全plc具有测定99%以上的内部元件潜在危险失效的能力。一种失效模式、影响和诊断分析(fmeda)方法一直指导着设计,这种方法会指出每个元件是怎样引起系统失效,并且告诉你系统应该如何检测这个失效。tuv的工程师会亲自执行失效测试,把它作为他们认证过程的一个部分。
严格的国际标准软件应用于安全plc。这些标准需要特殊技术,避免复杂性。更进一步的分析和测试,细致地检查操作系统的任务交互操作。这种测试包括实时的交互操作,比如多任务(当使用时)和中断。还需要进行一种特殊的诊断,被称为“程序流控制”和“数据确认”。程序流检查能确保基本功能能按正确的顺序执行,数据确认使所有的关键数据在存储器里进行冗余存储,并且在使用前进行有效性测试。在软件开发过程中,一个安全plc需要附加的软件测试技术。为了核实数据完整性检查,必须执行一系列“软件失效注入”测试,也就是人为对程序进行故意破坏,来检查plc的响应是否运行在预计的安全方式。软件的设计和测试带有详细的文件资料,这样第三方的检查员就能够明白plc的运行原理,而多数软件开发没有使用这种规范的操作流程,这也正好说明为什么众多的垃圾软件会出现那么多的臭虫而无法发现了。
二、举例
下面试通过某公司的一款安全plc,来更具体地说明安全plc与常规plc的区别。
2.1 安全plc与常规plc的cpu的差别
常规plc内部cpu的数量有一个或多个,它或它们的作用是:执行用户的程序、进行i/o的扫描和系统的诊断。但用户的程序通常就进行一次处理,多个cpu的功能是把程序中的逻辑运算、算数运算、通信功能等分担实现,也就是协作处理。
而安全plc的cpu至少有两个或多个,两个cpu的功能是:分别对同一个用户程序各自执行一次,然后再把两个结果放在一起进行比较,如果比较的结果是一致的,就输出这个结果,如果是不一致的,选择安全的结果输出。由此看出,这才是安全plc与常规plc最大的不同:冗余+比较。
2.2 安全plc内部cpu的结构
安全plc包含2个处理器,每个处理器在自己的存储器区中,执行它们自己的安全逻辑,然后在每个周期的结尾和对方的结果进行比较,每个处理器有它自己独立的停机通道,如果检测到结果的不同或有失效成分,它能够实现系统停机,切到安全状态。这种双处理结构被称为内部的二选一结构。
下图表示了这种安全plc的内部结构:
安全plc通常都有两个处理器,同时进行解码和执行。这种差异性提供了失效检测的下列优点:
·两个可执行码独自生成,编译的差异性使得在代码生成时,容易检测系统失效。
·两个生成码由不同的处理器执行,因此,cpu能够在代码执行时,检测出系统失效和plc的随机失效。
·两个独立的存储器区用于两个处理器,因此,cpu能够检测出ram的随机失效,而这在每个扫描周期的全部ram检查时测不出来。
这里我们接着引出安全plc与常规plc第二个最大的不同:随时+步步进行诊断和检测。这种检测有的是通过自身信息进行的,称为自检;还有的通过对方的信息进行检测,称为互检。后面我们还会提到更多的检测。
[1][2][3] | |
时钟测量:在处理器电路中,有两个不同的振荡器交叉检查它们的行为,每个处理器使用一个时钟检查另外一个是否运行。如果在一个确定的周期里,检测到对方没有运行,cpu就会进入安全状态。固件每秒钟会检查两个振荡器的精度。
监视时钟:一个硬件和一个固件的监视时钟检查plc的活动和执行用户逻辑的执行时间。这和常规的系统是相同的。
序列检查:序列检查监视cpu操作系统不同部分的执行。
存储器检查:所有静态存储器区,包括flash存储器和ram,使用循环冗余码(crc)进行检测,并且双码执行。动态存储器区由双码执行保护,周期性进行检测。在冷启动时,这些检测重新进行初始化。
从上面的分析可以看出,安全plc的诊断和检测比常规的plc的检测要多很多,所以相对来说,硬件和软件的设计更复杂。当然,检测和诊断的范围也更广范,更细致。
2.4 安全plc i/o诊断概述
上面我们对安全plc的cpu的情况进行了一个简单的分析,下面我们再来看看安全输入/输出模块的情况。
所有安全i/o模块都要执行以下两个诊断功能:
·更多的系统层面的诊断,包括了:ram测试、rom测试、以及
·根据模块的类型不同,现场层面的诊断,
下面的表格列出了安全i/o模块的现场诊断情况:
还有,安全plc要对安全cpu和安全i/o之间的通信进行诊断,比如使用crc校验。因此,不仅要检查接收的数据是否等于发送的数据,而且要检查数据变化。为了解决扰动问题,比如emc的影响,它可能瞬间破坏你的数据,所以你需要对每个,配置一个很大的连续crc错误诊断。
上电时诊断:在上电时,执行扩展的自检程序,如果测试出现错误,模块被认为不健康,输入输出全部置为0。
运行时的诊断:在系统运行时,i/o模块执行自检程序,输入模块检验是否能够从读取整个范围的数据,输出模块对它们的执行脉冲测试,周期小于1ms,在数字量输入和数字量输出模块,上电自检失效和模块没有接到外部的24v电源时,模块不工作。
过压诊断:因为元件,从理论上说,电源电压超过了最大值时,它们不应该工作,所以i/o模块必须对来自背板的电源电压进行监视。
下表描述了对电源电压的监视:
2.5 安全plc的安全模拟量输入模块
接地断线检测:安全模拟量输入模块具有监视接地失效(漏电流)的功能。外接线一端通常要连接到中性地,在接地端子与中性地之间可以接入一个分流电阻(比如250欧姆),那么模拟量输入的漏电流就可以通过这个电阻上的电压,检测出来。
内部诊断:现场侧包括了8个隔离独立的输入通道,每个输入具有2个相同的电路构成,每个电路的微处理器通过驱动它的模拟量-数字量转换器、再经过得到输入值。另外,当进行诊断时,微处理器还驱动它的数字量-模拟量转换器并且把它置成高阻抗(非干涉)或者低阻抗,强迫做为模拟量-数字量的输入。
模拟量输入模块执行:
·短期间的自检。使用常规的、周期的差异值检测,判断内部是否失效。
·长期间的自检。使用每个通道的健康状态来核实内部是否失效。
现场电源监督:没有电源监督,这个功能由模拟量-数字量转换器检测期间,对模拟量-数字量转换器和数字量-模拟量转换器提供的根据它们电源电压的值来实现。
内部诊断:为了检查开关是否能够断开与闭合,要在输出(在模块内部电路,插入周期性的诊断循环)进行一个脉冲测试。
诊断序列包括:
·更改命令,这个时间非常短,不会影响执行器,最大不超过1ms;
·核实测试结果,并且
·恢复正确的开关命令。
电源监视:每个输出电路包括两个串联的开关,有两个处理器分别进行控制。 第一个微处理器使用数字量输出还原器(dod)驱动它的开关,而第二个微处理器则在还原器之后驱动它的开关。在每个周期里,两个微处理器系统的中点电压要与一个阀值进行比较,然后还要交换它们的如果,评估中点的状态,诊断开关的状态。如果在一个通道中检查到出错的行为,那么立即停机,并且设置诊断位,通知cpu。
三、小结
通过前面两个章节的介绍,了解了安全和常规plc的基本不同点,实际上还有象:外部传感器接线方式的不同、内部操作系统的不同、软件功能块的设置不同、软件编制的要求不同、以及安全通信协议的规范不同等,有机会再与读者进行交流。
当然,安全plc和常规plc还有很多相似之处,比如说:两者都具有执行逻辑和算数计算的能力;两者都具有典型的输入和输出(i/o)模块,提供解释来自流程信号和执行控制到最终元件的能力;两者都是采用扫描输入,然后进行计算,最后写到输出;两者都具有典型的数字通信接口。但常规plc不是基于容错和失效安全而设计的,这是两者的最基本的不同。
由于很多用户发现常规的plc不能用于关键应用的保护,因此产生了对安全plc的需求。对安全plc的设计、制造和安装的要求标准是非常高的。如果在项目的设施中,忽略这些标准,或者按低于这些高标准的方法执行,从职业和社会的角度来看,都是靠不住的、不负责任的。
楼主最近还看过