漫谈工业过程控制系统常见的工业控制系统有分布式控制系统(DistributedControlSystem,简称DCS)、可编程序逻辑控制器(ProgrammableLogicController,简称PLC)、容错控制器(FailSafeController,简称FSC)、多功能控制器(MultifunctionalController,简称MFC)等。FSC就是特别可靠的PLC,使用起来也特别麻烦;MFC是专用于强电系统(输变电、大功率电机、变频电机等)的PLC;所以粗粗归类,也就是PLC和DCS两大类。在谈PLC和DCS之前,应该指出,还有一类系统通常不作为工业过程控制问题考虑,那就是像导弹控制、汽车发动机控制、洗衣机控制、电热咖啡壶控制等,这些控制问题一般使用专用的控制系统,和被控制对象紧密结合,通常称为嵌入式系统(embededcontrolsystem),不在这篇小文的范围内。控制问题分两大类:连续控制和断续控制(也叫开关控制)。汽车的方向盘就是连续控制的一个例子,司机连续地恰到好处地转动方向盘以控制方向;电饭煲的温度控制就是断续控制的一个例子,只有开和关两个位置,按下开关后,温度上升到一定的时候,自动断电;温度下来了,又自动加电保温。稍微复杂一点的断续控制可以是多位控制,除了全开、全关两个位置外,中间还可以有一个甚至多个渐进的半开位置。一般来说,DCS适合连续过程控制,像化工、发电、冶金、造纸的工艺过程,PLC适合断续过程控制,像各种机电设备。这是由不同的历史背景导致的。在还没有计算机的远古时代,连续控制的PID是用气动或者电动调节器(行话叫单元仪表)实现的,连锁保护则是用继电器实现的。前者控制阀门或者变频电机连续变化,达到精确控制。后者则是自动化的开关控制,用于在某一事件触发下,自动执行一系列动作。复杂一点的继电器控制还有延时,可以执行一系列步骤,每一步可以包含一定的延时,传统上用凸轮实现。复杂继电器控制还可以包含滞环(也叫死区)等比较“反动”的功能。在很长的时间里,单元仪表和继电器之间是井水不犯河水,老死不相往来,直到数字式计算机的出现。冯·诺依曼同学发明二进制计算机的概念,成功地打破了连续变量和离散变量的界限,这是计算机控制可以实现连续的PID控制和离散的继电器控制的基础。PID在本质上是一个数学计算,计算机的计算能力强大,做PID当然不在话下。事实上,即使不太先进的计算机也可以以一当百,一台计算机巡回扫描,把百十个PID回路吃下来不成问题。计算机还可以实现更先进的数学控制方法,如最优控制、自适应控制、模型预估控制等,用软件“连接”串级、前馈、分程、比例、超驰控制回路也比单元仪表时代拖电线容易得太多,很快就在工业界得到极大的欢迎。计算机控制用显示屏代替动辄几十米长的仪表板,也使超大型的控制系统得以实用化。早年的计算机控制系统大多采用大型计算机,如IBM的AIX系统,最不济也是DEC的PDP11,或者后来的VAX。但是集中的大型计算机是计算机控制系统可靠性的薄弱环节,一旦这台大型计算机出故障,整个系统就当掉了。为了提高计算机控制系统的可靠性,人们做了很多努力。冗余计算机是最早的解决方案,但微机的出现,在根本上解决了计算机控制系统的可靠性问题。微机的成本低,体积小,于是分散到很多基本控制单元但又通过网络连接的所谓集散控制系统就应运而生了,这就是今天的DCS。DCS的基本单元具有基本的IO和控制功能,即使和网络断开,也能保证基本的控制功能。但和网络相连,就可以实现更强大的控制和管理功能。这就使所谓“集散”的缘由。二十多年前,Honeywell首先吃DCS的螃蟹,以至于至今TDC(意为TotalDistributedControl,也是Honeywell的DCS系统的商品名)还在某些圈子里作为DCS的代名词。Honeywell在75年用Motorolla6800作为CPU,自己开发了实时操作系统RTOS,采用双重冗余的轮询(polling)总线结构,推出了第一代DCS:TDC2000。80年代初,TDC2000升级到TDC3000,CPU改用Motorolla68000,直到几年前推出的以EitherNet为基础的Experion之前,基本结构一直不变,只是CPU升级到68040了。Honeywell的Experion系统结构示意图,最下层是物理控制曾,往上是人机界面,再往上是高级控制层,最上层和办公网络相连Emerson的DeltaV,大体上意思差不多,当然细节有很大的不同Honeywell之后,很多公司相继开发DCS,但大浪淘沙之后,留存下来的不多。现在主要的有Honeywell的Experion,Emerson的DeltaV,ABB的Symphony,日本横河的Centum等几家。在结构上,DCS可以用两大类通信协议:轮询和中断。轮询由中心控制单元轮流查询所有子系统,不管有没有数据更新,到时候就来问一遍,所以不管什么时候,系统的通信流量都很高,但是恒定。中断方式正好相反,子系统自己先检查一下,如果数据没有变化,就不上网要求更新,直到数据有变化,再上网“打一个招呼”。这个方式的平时通信流量较低,所以网路带宽要求较低。但是生产过程发生异常时,大量警报数据蜂拥而来,如果带宽不够,就会发生通信阻塞的问题。所以,中断和轮询到最后对带宽的要求是一样的,因为谁也不能承担生产过程异常时通信阻塞的后果。在安装上,传统上DCS一般把现场的变送器(传感器)的信号线分别直接拉到中心控制室地下的DCS机房,通过barrier(不能翻译成堡垒吧?用来屏蔽信号的)引进DCS的端子板。输出到调节阀的信号线也是一样处理。这些信号线的工业标准是4-20毫安。对于不大重要的次要信号,或者仅用于监视而不做控制的信号,有时也用多点切换装置(multiplexer,简称MUX),在现场连很多信号线到MUX,但从MUX就拉一根线进DCS,节约施工和维护成本。最新的DCS也可以用现场总线连接,把变送器和调节阀像USB总线装置一样挂上去,plugandplay,大大简化仪表的安装工作。由于信号完全是数字的,也容易引入自检功能。在使用上,DCS一般使用组态(configuration)来编程,指定回路的结构和参数。有的系统的组态参数很全,基本上所有功能都有了,只需要用户选择就可以。有些系统的组态参数比较基本,需要用户自编功能然后调用。两种不同的做法各有好处,前者相当于用MATLAB做计算,比较方便可靠,但系统资源浪费较大,很多组态参数经常用不到,浪费了;后者相当于用C语言写程序,比较灵活经济,但用户的编程工作量大,编程质量全看用户的水平了。DCS最大的优点是模块化,不光可以在系统内部自由增减模块,还可以通过EitherNet和OPC挂上外部模块,或者用于与上级的办公网络连接,或者用于挂上高级功能模块。这个模块化的功能不可小看,最典型的高级模块有海量数据记录系统(datahistorian)、先进控制系统(如DMC、Pavilion、RMPCT等)、控制系统性能监测和自动整定等,当然还包括更常见的网络管理模块如防火墙、文件服务器等。由于网络技术的发展和DCS对网络的连接能力,DCS已经从早年的控制系统发展到工厂管理的重要手段,生产管理(产能和品种)、根据市场和原料情况的实时最优化、仪器仪表甚至机械设备的自检和故障预测、控制系统警报管理、操作记录和日志(logbook)等都成为DCS的职责,DCS也作为生产过程的黑匣子,用于事故分析和过程优化。早年一两个人就可以管理的系统,现在要一个多专业的部门才能管理。计算机控制系统也可以实现继电器控制,用IF……THEN……实现开关控制比用硬件容易多了,硬件的延时继电器更是麻烦。由于早年计算机还是稀罕物件,可靠性又不大高,所以继电器控制得以继续发展。但通过硬接线来改变继电器控制实在麻烦。汽车工业每年要换型,为此不胜其烦,在68年提出对可编程序控制器的要求,第一个吃螃蟹的是Bedford,这就是现在的Modicon。其他主要的PLC厂家还有AllenBradley(现属Rockwell)、GEFanuc、Siemens等。在接线上,PLC和DCS一样,也可以按传统的分别拉线的方法,或者用现场总线。不过DCS的现场总线通常按FoundationFieldbus的标准,PLC的现场总线通常按Profibus的标准,两者并不兼容。PLC通常用直观的ladderlogic编程,也有用专用语言编程的。相比之下,DCS要实现逻辑功能,也是通过组态,但十分不直观,使用别扭,容易出错。早年的PLC主要是用于嵌入式系统,但PLC的吸引力很快为工业界所注意,通用的网络化的PLC应运而生。现代的PLC早已超出开关控制的范围,具有一定的PID和像OPC那样的通信能力,甚至可以进行一些科学计算。另一方面,DCS也在不断增强开关控制的能力。由于计算机技术的趋同和连续开关控制能力界限的模糊,DCS和PLC的界限开始模糊了。从原理或者系统结构上来说,PLC和DCS没有原则性的差别,但两者截然不同的背景使两者有很不同的特点。由于用于连续控制的缘故,DCS的回路功能很强。DCS的很大一部分“力气”用于回路的初始化上,这是连续控制的一个独特问题。试想一个串级回路,副回路需要处于串级状态,主回路才能“指挥”副回路。但很多时候由于种种原因,副回路需要处于自动状态,也就是说,操作工直接设定副回路的设定值,主回路被“架空”了。这也不是问题,问题出在副回路恢复到串级状态的瞬间,主、副回路之间如何协调。副回路脱开时,主回路的输出没有地方去了,只有悬在那里不动。但一段时间后,副回路的设定值已经变了,主回路的输出没有,如果硬性连接,就会造成不必要的扰动,这里面怎么协调就是一个初始化的问题。由于主、副回路的控制算法都是多种多样,协调机制的排列组合很多,这就大大增加了控制算法的复杂性。被悬空的主回路还有积分饱和的问题,由于副回路不再听指挥,主回路实际上处于失控状态,设定值和测量值总也碰不到一起,积分控制作用就只有不断爬升,一直到100%或者0%。这在主、副回路恢复串级状态时也要造成麻烦。这只是冰山一角,还有各种手动超越控制功能、警报处理功能、本地串级远程串级、脱网备份模式(shedmode)等。然而,以开关控制为主的PLC就没有这些问题,开关控制没有初始化的问题,手动超越控制也要简单得多。现代PLC可以做PID,但功能上远不如DCS,互连组态能力也相对有限,更加适于“孤儿”PID,而不是作为大型复杂控制系统一部分的PID。打一个不恰当的比方,DCS和PLC好比CPU里CISC和RISC的差别,不能说谁好谁不好,只是不同而已。或者说像高档PC机和PlayStation3之间的差别,前者通用性强,后者用其所长的话则是非常厉害。由于这些差别,DCS通常远比PLC要复杂。系统复杂性首先在成本上体现出来。DCS虽然是模块化的,可大可小,但基本架子在那里,还是很昂贵的,只有大型装置才用得起,也才有必要用。PLC相对比较便宜,中小工厂或许PLC就足够了。出于成本的原因,大型工厂也常常是DCS和PLC混用,不但用PLC的开关控制能力,也用PLC负责一些次要的工段和装置。系统的复杂性也在采样速度上体现出来,DCS的采样速度一般较慢,1秒是常规的,14秒就是很快的了。这对连续控制来说不是太大的问题,调节阀的反应速度没有那么快,大型过程的温度、压力、液位、流量等参数的变化也没有那么快,1秒足够了。然而,对于设备保护或者安全连锁来说,1秒就太长了,需要降到毫秒级,这就是PLC的用武之地了。DCS适合于随时增减和修改回路。调整参数不需要把回路停下来,增减回路也只需要停下局部的回路,其他回路继续运转。DCS拥有很强大的先进控制算法的支持,包括自带的系统内的支持和第三厂家的支持。很多以先进控制为生的公司的产品基本上支持所有主要的DCS,但罕有支持PLC的。PLC也可以增减回路或者修改参数,但要繁琐得多,有时需要停下整个系统、重新上载整个组态文件才行。这不是PLC的设计缺陷,而是设计思想所致。DCS本