恵德荣

(新疆安控科技有限公司,新疆克拉玛依,834000)

0 引言

RockE50控制器是基于SafeRTOS实时操作系统设计的一款安全产品,两个CPU模块采用双机热备冗余模式。本系统采用主控制器容错架构,该产品有冗余的主控制器模块、一个输入模块(DI/AI)、一 个输出模块(DO)和一个通讯模块组成。主要用于对信号、工业设备的检测与控制。其中通讯模块(FSC5301)负责485通讯,包括现场485设备数据读取、监控小屏数据交互等;模拟量输入模块(FSC5101)主要负责采集现场仪表模拟量信号采集;数字量输入模块(FSC5112)主要负责现场设备开关量信号的采集;数字量输出模块(FSC5133)主要负责对现场设备进行开关控制。这套控制器基于以太网进行数据传输,通过MODBUS RTU协议与SCADA系统进行数据交互,从而实现对现场设备与仪表远程监控的功能。

1 FSC5501CPU模块(主控模块)的主要功能

1.1 FSC5501CPU模块(主控模块)工作逻辑

对于FSC5501CPU模块(主控模块)来讲,主要工作流程分四步走,四个步骤按顺序执行。第一步:设备上电后进行硬件初始化操作;第二步:初始化调度器;第三步:创建应用程序任务;第四步:启动任务协调器执行应用程序任务。最终CPU工作在第四步持续执行创建的应用程序,直到异常发生跳出循环进入Safe state(安全)状态。Safe state 状态是安全仪表系统发生故障时,使被控制过程转入预定安全状态。此状态还可以根据现场生产环境设备运行的安全要求做进一步订制。

1.2 主控模块与AI模块数据交互的处理

CPU模块 对AI模块采集数据的处理是利用创建应用程序任务来完成的,主控模块通过CAN总线读取AI模块各通道的原始值(4~20mA)与AI模块的故障码。为了让最终用户或系统集成商来开发应用程序和配置安全控制站(SCS),我们使用FlexiSafe Workbench开发工具进行应用程序程序编写。它支持IEC 61131-3语言 (SFC、FBD、LD、ST、IL) ,使开发人员能使用合适的语言来满足应用的要求。由于现场仪表的量程有多种,我们需要量程转化公式(1)对读取的数据进行处理,从而得到我们想要的值。AI故障的获取方式有两种:一种是通过主控模块进行程序编写计算获取(图3);一种是主控模块从AI模块直接读取故障状态码(FSC5101_AI_006_ERR.5),其中“006”代表的是第0机架06号槽位,“ERR.5”代表的是AI模块的第6个通道的故障状态;为了系统的健壮性,以上两种方式均采用。以PT10101A为例,讲述具体做法。

PT10101A ,量程0~50MPa,低报10MPa 高报21MPa,经过代码优化、增加系统故障自诊断功能具体实现如图3所示。值表1中修改电流的对应值,要通过修改AI模块底层程序来完成,其修改的目的有两点:一是与安控科技开发的其他系列产品的电流对应值保持一致,来适应最终用户的使用习惯;二是提高采集数据的分辨率。

表1 AI通道接线故障的判断标准

图3 AI数据处理程序实现

AI模块采集现场仪表的的电流信号需要实时地传输到主控模块中,为了提高数据传输的效率,当AI模块采集到的电流信号发生改变时,才将数据通过冗余的CAN总线(图

1中CAN1、CAN2总线)传输至主控模块,这里以千分之一精度指标进行处理,即电流对应值大于50时进行数据传送,这块的实现仍需要修改AI模块的底层程序来实现。其中FSC5301_AI_RG功能块的实现代码如图4所示。

图4

1.3 主控模块 与DI模块数据交互的处理

以现场阀门(ESDV10101A_ZIO)开到位状态为例,讲述对数字量输入信号处理方法。FSC5112_DI_008_ERR.0其中“008”代表的是第0机架08号槽位,“ERR.0”代表的是DI模块的第1个通道的故障状态。图4为具体的代码,实现如图5所示。

表2 DI信号点表

图5 DI数据处理程序实现

图5 中DI_ERR_CODE1 ~ DI_ERR_CODE4,是从主控器定义好的Modbus地址中获的。DI8_Err_Code按照事先定义好的规则将其解析后进行输出。DI8_Channel_Err功能块也是类似操作。

1.4 主控模块与DO模块数据数据交互的处理

以现场阀门(ESDV10101A_ZIO)开命令为例,讲述对数字量输入信号处理方法。FSC5133_DO_009_ERR.0其中“009”代表的是第0机架09号槽位,“ERR.0”代表的是D0模块的第1个通道的故障状态。对于DO的故障处理过程类似与对DI处理过程。

表3 DO信号点表

2 主控制器容错架构的选择

通过图1不难发现我们搭建的这套系统,采用主控制器双机热备用冗余是不错的选择。两个主控模块同时工作,每个主控模块都有两个网卡,因为该系统与其他设备、系统之间通讯是基于TCP传输控制协议的。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,也就意味着Clinet端与Server端需要进行三次握手的过程。当主控模块进行冗余切换时,如果要切换冗余网卡的IP地址,那幺就意味着Clinet端与Server端必定要重新建立链接,系统冗余切换的效率也将受到局域网网络环境的影响。但对于切换时效要求不高的生产环境,这种冗余方式无疑是很好的选择,因为用这种架构搭建的系统,结构简单且容易实现。对于图1中的SCADA系统说,主控模块IP切换与否都不影响系统冗余的可靠性。SCADA读取主控模块数据时先从主IP设备读取数据,超时仍未读取到数据则从备IP设备读取数据。写数据时主、备IP设备均写入。若Clinet端与Server端建立的链接未发生中断,冗余可靠性、时效将大幅提高。由于在网设备中还有其他厂家的产品与其通讯。考虑现场环境实际情况,本次搭建的系统需要进行冗余IP地址切换。更换网卡的地址可以通过向网卡操作寄存器中写值来实现。

图1 RockE50系统冗余架构示意图

3 应用程序程序C语言实现

除了使用FlexiSafe Workbench工具进行应用程序编写外,还可以用C语言代码来实现实际的工况需求。在图2可以看出,主控模块有创建应用程序任务的过程。在此创建用户自定义任务,根据现场需求编写控制逻辑代码。如添加创建用户自定义任务代码(xCreateUserProgramTask),需要在创建Flexisafe任务(xCreateFlexisafeTask)成功之后在进行创建,目的是为了不影响FlexiSafe Workbench工具的正常使用,创建的用户自定义任务的优先级要低于Flexisafe任务的优先级。值得注意的是,对寄存器的操作冲突部分将会被覆盖,需要编程人员多加注意。关于用户自定与任务的创建函数编写可以参考FreeRTOS 任务创建过程。

图2 主控模块工作逻辑图

这种方式实现的好处有以下几点:一、不需要购买FlexiSafe Workbench授权,而是用RockESet工具进行硬件组态;二、可以满足复杂的工况需求;三、可以调用主控模块所有软、硬件资源而不受约束。缺点主要表现在以下几个方面:一、对编程人员的技术要求较高,需要对这款产品所使用的软、硬件有一定的了解;二、没有直观的图形化界面供现场调试时使用。

4 结束语

通过对该款产品的应用,认为RockE50逻辑控制器是一款高可用的安全产品,它使用多重冗余的方式来保证系统的可靠运行,电源、控制器I/O 模块、数据通讯双重冗余使得该产品具有高可用性,能够检测危险故障并快速处理,支持 I/O 断线、 短路监测功能,具有很高的自诊断覆盖率,极大限度的保证生产的安全运行并最高限度的避免事故的发生。

感谢安控科技提供产品与技术支持,感谢呼图壁储气库作业区提供生产实验环境与支持。