DCS系统中提高数字量输入信号采集分辨率的方法
DCS(Distributed Control System)系统广泛应用于火电、石油化工、造纸、建材和冶金等工业生产制造环境中。该系统继承了常规仪表分散控制和计算机集中控制的优点,克服了常规仪表功能单一、人机交互差和单台计算机控制系统危险性高度集中的缺点,同时,它实现了管理、操作和显示三方面的集中,以及功能、负荷和危险性三方面的分散。典型DCS硬件系统由工程师站、操作员站、服务器、控制器、I/O从站、控制网络及设备、系统网络及设备、电源、机柜和操作台组成[1],如图1所示。在I/O从站中有一种开关输入信号(DI),普通项目对DI信号的分辨率要求不高,大约为200~300 ms。在实施某重大项目数字化数据采集和集中处理系统(KIT/KPS)改造时,要求DI信号采集分辨率达到50 ms,并且能够同时记录现场开关动作的时间。在DCS控制系统中,高分辨率和时间信息记录是为了能够依次分辨该高速DI信号之间的联锁关系(如汽轮机轴承油压低联锁主汽阀门关闭),判断各信号是否符合一定的动作顺序。目前DCS系统普通型DI模块性能,无法满足对这些信号的采集要求,因此需要对DCS系统DI信号处理方法进行升级改进。
1 问题描述
目前,采用PROFIBUS现场总线协议实现DCS控制系统控制器和I/O模块之间通信的产品,市场占有率在全国已经达到30%~40%,甚至更高[2]。PROFIBUS协议规定控制器和从站之间数据交换方式为主从轮询方式[3]。DCS系统在实际应用配置中,一般由多个控制站组成,一个控制器构成一个控制站,为了保证各控制站运行时基相同,采用以太网进行网络校时,可以确保任意控制站之间时间差值小于10 ms。同时,控制器周期性地通过PROFIBUS-DP主站以广播的形式给从站模块发软校时数据包,负责对从站I/O模块进行校时。普通DI模块设计为:当DP主站轮询到该模块请求发送数据时,DI模块就将当前周期采集的数据传送给控制器。在通信速率为500 kb/s时,每轮询一个从站实际所需要的时间大约为0.7 ms(该时间也和传输的数据量相关,所以不同厂家设计的产品该时间有差异)。考虑到控制器主站负荷、系统风险等因素,一般在实际工程中,推荐配置40~50个从站。但在实施KIT/KPS系统改造项目时,系统要求控制站加入的从站数量达到80个,协议规定一个PROFIBUS系统最大连接126个从站,如此主站轮询一圈从站所用的时间大约为56 ms,现场DI信号最快以50 ms跳变,就会出现采集的DI信号不能及时传送给控制器,新采集数据覆盖上周期数据的情况,导致现场采集的DI信号丢失。
2 理论论证
DI模块工作机制有两个明显的特征:(1)DI数据采样周期短,从站的信号采样周期比控制器运行周期短;(2)通信无应答,控制器是否收到DI数据,DI模块并不知道。在这两个特征下,为满足DI采集分辨率达到50 ms要求,要么缩短控制器与DP主站交换数据周期,要么DI模块采用"滑动窗口"机制,形成两种解决方案。
(1)缩短控制器与DP主站交换数据周期。从站模块最慢50 ms周期采样一次,该时间包括DP轮询周期和DP主站与控制器交换数据的时间。同时,为保证控制器能可靠获取DI模块的上报数据,要求主站能在50 ms的DI采样周期内获取两次从站模块上报数据,所以需要控制器最慢25 ms能和DP主站交换一次数据。但是,缩短控制器的运行调度周期,会导致控制器负荷增加,系统容易死机,降低了系统的可靠性。
(2)采用"滑动窗口"机制。DI模块中开设固定数据存储区的"滑动窗口",固定上报最近4个采样周期的DI数据,这样可以将每个采样周期的数据在DI模块中保持4个采样周期。此时以50 ms分辨率周期采集数据,每个采样周期的数据最多可以在DI模块中保留200 ms,这样DI从站有足够的时间将采集的数据传送给DP主站,保证DI数据无丢失。相比较而言,第2种方案对系统的影响小,可行性高。KIT/KPS项目改进实施就采用方案(2)。
在确定DI模块采样周期时,不考虑硬件时钟的差异,则采集误差最大值等于模块的采样周期,图2给出了一个示例分析。根据高速DI 50 ms分辨率要求,设计DI信号允许控制站间误差为40 ms。以太网可以确保控制器之间误差10 ms,控制器和从站模块之间时间最大误差1 ms,因此模块的扫描周期可以确定为29 ms,取整后确定为30 ms。4周期的数据保持时间达到120 ms,可以保证56 ms的DP轮询周期有2次将数据传送给控制器。
3实现方法
3.1 从站模块处理方法
为了能将现场高速跳变的DI信号全部传送给控制器,在现有产品硬件平台下,通过修改DI模块的信号固件采集机制,延长采集信号在从站模块中保持的时间,可确保满足DP轮询周期(DP主站逐个轮询各从站所需要的时间)的时间需要。具体方法是:采用"滑动窗口"机制,即在DI模块中开辟一片固定大小的数据存储区,将每周期采集的DI数据都存储在该存储区中。该存储区采用滑动机制,类似于FIFO,每个周期的采集数据都放在存储区的起始位置,然后各采样周期数据依次向后滑动,符合先入先出队列。具体项目实施过程中,将4个连续采样周期的数据(存储区的大小)作为一包数据传送给控制器。4个采样周期的存储时间大于现场DP轮询时间,模块每新采集一周期数据就放在存储区的第一周期采集数据处,原有数据依次向后滑动,将滑动溢出的第4周期采集数据丢弃,自动生成从站模块每DP轮询周期发送给DP主站的一包数据。这样采用"滑动窗口"机制原来只能在DI模块中保持一个采样周期的DI数据,而在现有处理机制下就能保持4个采样周期,延长了DI采集数据在模块中保持的时间,保证有足够的时间将DI采集数据传送给控制器。
按上述机制形成的每一包数据结构包括当前所有通道的信号状态、数据包流水号、4个采样周期的DI数据(每周期采集数据包括时间戳、当前所有通道状态及发生跳变的通道),如图3所示。
模块初始上电时,数据存储区初始化为0。每个采样周期内,当有DI通道发生状态变化时,上报数据包流水号自动加1。如果无通道跳变,则上报数据流水号不变。控制器周期性地从DP主站读取数据,并将本周期的数据包流水号与保存的上一周期数据包流水号进行对比。按流水号的差值,控制器处理相应周期次数的DI采集数据,如果差值等于0,则直接丢弃。以6通道DI信号为例,假设模块每30 ms采集一次数据,在开始工作60 ms后所有通道状态的当前值为000000(二进制),发生跳变的通道值为000000(有通道发生跳变则将该通道置为1),该周期的采集数据为60、000000、000000;90 ms采集时通道0跳变为状态1,则所有通道状态的当前值为000001,发生跳变的通道值为000001;120 ms采集时通道1、2、3跳变为状态1,则所有通道状态的当前值为001111,发生跳变的通道值为001110;150 ms采集时通道4、5跳变为状态1,则所有通道状态的当前值为111111,发生跳变的通道值为110000;之后信号无变化(图4)。在150 ms时刻形成的数据包(十进制)如表1所示。
3.2 控制器处理方法
为确保DI模块采集数据上报的开关动作时间有效,确保系统内所有的DI模块工作在一个时间系统下,可通过系统校时实现DI模块的同一时间系统。对控制器增加校时功能,校时机制为控制器每分钟周期性地发送校时命令,DP主站收到控制器的校时命令之后立即向I/O从站发送校时广播,总线上I/O从站都可基本同时收到校时命令。在500 kb/s通信速率时,校时命令可以在1 ms内完成,即主控和I/O模块之间的时间误差为1 ms。由于控制器使用单任务,采用发送校时命令的方式对从站进行校时,不能确保在整分时刻发送校时命令。可以通过两种途径解决这个矛盾:(1)使用专用的校时信号对从站进行校时,比如GPS校时产品;(2)缩短控制器发送校时命令的周期,通过控制器记录校时时间,在控制器接收到模块上传的DI数据之后,对时间进行修正。
控制器在处理接收到的DI数据时,通过对比保存的上一周期数据包流水号与本周期的数据包流水号,流水号差值如果大于等于4,则控制器处理从站模块4个采样周期的通道数据;如果小于4,则处理相应差值周期数据;如果等于0则直接丢弃。同时控制器分析每采样周期DI数据,确定该采样周期是否有通道跳变,如果没有,则直接丢弃该采样周期DI数据。
3.3 控制器与DI从站模块边界的处理方法
对于DI从站模块,数据包流水号初始值为0,控制器DI数据包流水号初始值也为0;模块的数据包流水号一直累加,溢出后继续累加。当模块上报数据丢失时,例如模块上报的数据包流水号为1001、1002、1003,而控制器只收到1001和1003时,控制器根据1003-1001=2,自动处理两个周期的DI采集数据。如果模块重新插拔(断电操作),DI模块上报数据包流水号被初始化为0,但是控制器保存了模块以前的数据包流水号,控制器发现流水号不相等,就根据流水号差值最大处理4个采样周期的DI数据,然后控制器对4个采样周期的DI数据逐个分析,如果相邻两采样周期DI数据相同,则直接丢弃后一周期DI数据。控制器重新启动时处理方法相同。
本文介绍了一种在DCS系统中如何消除因数据传输延迟而引起的信号采集误差的方法。通过修改DI从站模块的数据采集机制和相应的控制器数据解析机制,可以使DI模块的采集分辨率提高到50 ms。通过项目实测,既能满足站间DI信号分辨率50 ms的要求,也能满足站内不同模块间DI信号分辨率50 ms的要求,同时增加了数据采集时间信息功能,对控制过程各信号的动作顺序分析有很大帮助,极大地丰富了DI模块的功能。采用PROFIBUS-DP协议或控制网络为轮询访问机制的系统可以借鉴使用该方法,采用其他协议的控制系统应在认真分析系统结构之后有针对性地进行开发设计。
- 基于AD7705的在线激光功率检测系统设计(05-01)
- 基于PIC单片机和AD7705的高精度信号采集系统设计(02-22)
- CCD信号采集系统的USB接口设计(03-12)
- 基于MPC5634的汽车控制器多路AD采样的设计(07-11)
- 时序、精确度和可重复性以外的东西(03-07)
- 铁路检测仪中陀螺仪的信号采集电路设计(05-16)