基于iPlature和iXCom的过程控制系统通信接口的开发

2023-11-15 01:51尉,王
宝钢技术 2023年4期
关键词:源文件回线电文

沈 尉,王 欣

(宝山钢铁股份有限公司设备部,上海 201999)

钢铁行业的生产过程是典型的流程型工业生产过程,为了实现企业全流程综合经济指标优化,企业通常会采用覆盖全流程的综合自动化系统,国内外大型钢铁企业的综合自动化系统一般采用的是五层架构:决策支持系统,企业级或离线批处理为主的产销系统,分厂级或在线实时处理为主的生产控制系统,过程控制系统及基础自动化系统[1]。

与其他行业相比,钢铁行业通信的应用环境更为复杂多样,对通信接口的开发提出了更加个性化的要求。伴随着国内钢铁企业规模日益扩大的趋势,以及更多新的生产系统的加入,如何实现新老系统间的通信兼容,如何在安全高效的前提下降低系统改造费用,如何确保生产系统运行与通信的连续性,如何向生产运维提供更为可靠的支撑,成为了当前钢铁行业通信接口开发的共同课题。

1 开发平台介绍

iPlature 是上海宝信软件股份有限公司研制的面向各种过程控制系统的软件开发平台,适用各种操作系统。该软件具有功能完备、可扩充能力强、效率高、支持多种操作系统、全面支持多线程、稳定可靠、服务程序运行状态自动检测和易用性好等优点,在国内工业生产及其他过程控制系统中得到广泛应用[2]。该软件的平台任务开发为构建面向对象的客户—服务器应用提供了工具、API和库支持。iPlature::Component及iPlature::P99Component作为应用组件开发模板,解决了进程间的通信问题,大大减少了应用开发的复杂性,提高了开发效率和扩展能力。

iXCom是一款面向开发人员的外部通信中间件平台,由上海宝信软件股份有限公司研制,通过它可以实现计算机之间的数据通信。平台内置了多种常用的通信规约。它起源于大型钢铁制造企业,专业解决不同供应商提供的平台上的连通性问题,实现分布式应用中的信息交换[3]。iXCom作为通信中间件,对上层的应用程序提供了统一的编程界面(图1)。平台主要实现了发送和接收应用电文、支持多种通信协议、日志管理、分布式修改配置信息、分布式管理回线状态、分布式模拟收发电文等功能。

图1 基于iPlature和iXCom的系统间通信实现方式

2 基于iXCom的配置方法

在iXCom平台上实现电文收发主要是通过客户端来实现信息交互。首先需要在两台设备的iXCom客户端上分别新建回线,保证两台设备回线号和协议相同,并填写回线属性,包括本方机器代码、监听端口、对方机器代码、对方IP、对方端口,其中端口和机器代码自行设置,两台交互的机器信息匹配即可,配置完成后便可以在客户端进行收发电文的操作(图2)。

图2 回线属性配置

iXCom平台配置发送电文有两种模式:高速模式和高可靠模式。高速模式发送表示对发送的电文不进行缓存,发送失败则丢弃电文,不重发,一般在与PLC等高速设备进行通信时使用。高可靠模式发送表示会将发送的数据进行缓存,可查询历史数据,发送失败会根据配置的重发次数进行重发,一般用于与生产管理系统进行通信。电文接收上,iXCom主要提供了4种电文接收方式:PCS_Receive方式、iPlature方式、外部数据库方式、XMLRPC方式。其中,以iPlature方式接收电文能很好地将电文抛给进程,更利于后续的电文解析工作,因此更加适合应用于钢铁行业过程控制计算机系统。

3 基于iPlature的配置方法

开发中常用的基于iPlature 的电文收发主要包括两部分内容,分别是电文处理及进程间的数据传递。

3.1 电文处理方法

3.1.1 发送电文

使用进程发送电文(图3)主要通过调用iXCom中的PCS_Send方法来实现。

图3 发送电文程序框架与功能介绍

为了在进程中使用这个方法,至少在进程的基本结构中包括两个头文件app*.h(进程启动头文件)、*ICEI.h(电文收发功能头文件),两个源文件app*.cpp(进程启动源文件)、*ICEI.cpp(电文收发功能源文件)。

app*.h和app*.cpp的作用主要是通过继承iPlature平台中定义的Component类,并实现start等方法,构建并启动进程。

*ICEI.h和*ICEI.cpp的主要功能是通过继承iPlature平台中定义的MessageICE类,实现诸如SendDataShort(短电文发送),SendDataLong(长电文发送),TimeNotify(时间通知)等方法,并通过这些方法,向其他进程提供数据接收的接口;收到数据后,程序通过实现Autotele类中的Rebuild方法,根据在数据库中定义的eventNo和电文结构,构建电文;最后调用PCS_Send,通过iXCom发送电文。

3.1.2 接收电文

通过进程接收电文也可以用iPlature的方式来实现(图4)。

图4 接收电文程序框架与执行流程

类似发送电文的进程,用于接收电文的进程,其基本结构包括一个头文件app*.h,两个源文件*Cus.cpp(电文赋值转发功能源文件)和*Base.cpp(其他功能实现源文件)。

首先在app*.h中继承iPlature平台中的P99Component类;然后在*Base.cpp中使用PostInitCall(进程启动)来构建并启动进程,并定义关联的数据处理进程;进程启动后,通过HandleMessage(服务接口)来接收通过iXCom接收到的电文数据,简单解析出电文号后,发送到DispatchData(赋值转发)进行后续电文处理;最后在*Cus.cpp中通过DispatchData,将电文内容和电文号通过关联的数据处理进程的ICEI中定义的SendDataShort等方法进行传送。

3.2 进程间数据传递方法

内部进程收发主要依托于iPlature平台(图5),并不涉及到iXCom平台。因此,可以视作发送电文示例中的SendDataShort实现过程,与接收电文实例中的DispatchData实现过程的结合。

图5 基于iPlature的内部进程收发设计结构

首先需要建立两个进程,分别负责发送数据(进程S)与接收数据(进程R)。两个进程的基本结构包括头文件app*.h/*Func.h/*ICEI.h共3个,对应的3个实现源文件为app*.cpp/*Func.cpp/*ICEI.cpp。

构建负责发送电文的进程(进程S)时,首先要在app*.cpp文件中定义一个app组件类,并定义其对应的构造函数。其中,MessageICEPrx *_proxy定义了进程发送电文的目标进程(进程R),主要的实现内容代码可以通过*Func.cpp(电文发送功能源文件)实现,通过给预先定义的变量或者数据结构赋值,并且通过vector将数据转换为流数据,再调用进程R类中的SendDataShort()函数,将数据发送至进程R。*ICEI.cpp中则定义了进程S用于接收数据的相关方法。

负责接收数据的进程R,结构和进程S类似,在SendDataShort收到数据后,可以根据与进程S共同约定的数据结构,对收到的流数据进行解析,然后发送到Func类中定义的内部方法进行处理(log记录或者其他操作)。

4 实现与应用

在实际的应用中,iXCom往往用以配合iPlature来使用,即通过iXcom上配置的回线来发送电文,然后在另一台机器上以iPlature的方式通过进程来接收并解析电文。相关操作完成之后,接收电文的信息可以通过进程的日志来进行查询。

整体开发流程如图6所示。

4.1 进程管理

通过iPlature平台实现进程管理,首先在$iPlature/conf中的admin.xml文件里为新增的进程进行配置(如表1所示设置,*为新建进程名),其次通过运行$iPlature/bin路径下的iPlatureAdmin脚本启动和关闭全部进程。

表1 Admin文件新增配置内容

4.2 进程监控

iPlature平台可以使用IceGrid工具监视进程状态,控制进程的起停。IceGrid是负责对Ice分布式应用集合中各种服务进行定位和激活的服务,是一个Ice的核心基础服务设施。作为一个进程管理工具,IceGrid同样需要读取admin.xml里的配置,其优点在于可以比较方便地对单个进程进行启动和关闭。在使用IceGrid管理进程前,还需要在IceGridGUI中完成进程的创建。进程创建完成后,需要执行$iPlature/bin/boot_update.bat来实现更新,使服务生效。

4.3 日志系统

iPlature平台提供Log4cplus方法。用户进程可以在代码中继承并使用这个方法,在程序的日志文件里就可以查到日志信息,如图7所示。

图7 接收端日志文件主要内容

5 结语

面对钢铁行业复杂的通信应用环境,基于iPlature与iXCom的过程控制系统通信接口的开发方法能够更加高效地接收与解析电文,与过程控制系统及钢铁生产工艺的适配性更强。

在钢铁企业持续发展的进程中,相关开发平台也需要与时俱进,结合行业特点开发更多个性化的应用,积累更多核心技术,提高平台的可靠性、实时性、易用性,为钢铁行业的智能化、信息化发展做出更多贡献。

猜你喜欢
源文件回线电文
无接地极直流输电线路金属回线选型设计
一种与内部缺陷仪设备通讯的接口模块
ADS-B延迟转发电文检测及干扰台定位方法
网络社区划分在软件质量问题分析中的应用
基于源文件可疑度的软件缺陷定位方法研究
LKJ基础数据源文件自动编制系统的研究
±800 kV特高压直流金属回线断路器保护误动分析
8字形载流方形回线的空间磁场分布
卫星导航系统导航电文编排结构研究
误写C源文件扩展名为CPP的危害