APP下载

SQL查询在Intergraph Smart P&ID复杂报表中的应用

2021-10-14华陆工程科技有限责任公司孙东锋

中国勘察设计 2021年9期
关键词:分界报表阀门

■ 华陆工程科技有限责任公司 孙东锋

Intergraph Smart P&ID软件是海克斯康SmartPlant Enterprise体系软件之一,是一款以数据库为核心、以规则为驱动的智能工艺及仪表流程图设计软件。其智能性主要体现在对PID图形文件中的数据进行存储管理,从而实现数据的检索、传递、比较和复用,以提高项目的整体设计效率,实现图形和数据在设计中的结合。Smart P&ID提供了丰富的接口,支持Oracle、SQL Server数据库,支持VisulBasic、C#等高级语言,结合各种编程技术灵活应用,可以最大限度地扩展Smart P&ID功能。

结构化查询语言(Structured Query Language,简称SQL),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL语言具有四类操作数据库的能力,包括操作数据库和表结构、查询数据、修改数据和授权,本文主要使用数据查询功能,这也是最常用的数据库日常操作。SQL语句在Oracel和SQL Server数据库中的语法基本相同,但是有个别语法存在差别,需要判断Smart P&ID数据库类型后再调整SQL语句。

本文通过SQL查询在Smart P&ID数据库中的应用,基于Smart P&ID的模型数据和图形数据结构,生成满足项目要求的阀门选用条件表和材料等级分界汇总表两种不同类型的复杂报表。该二次开发旨在实现软件默认报表模块无法实现的功能,发挥智能PID的结构化数据优势。

Smart P&ID数据模型结构

Smart P&ID有一个庞大且严谨的后台数据模型架构在运行,此数据模型定义了众多数据对象类别和它们之间的关系,这可以用UML(统一建模语言)通过类图表示出来。这些数据对象可概括为所有与工艺管道仪表流程图和工程设计相关的工程数据(模型数据)以及所有与图形信息相关的数据(图形数据)两大方面。数据模型包含多种类别的对象,这些对象拥有各自的属性和相关操作,每个数据对象类别与其他类别之间存在继承、共存、从属或者相关等不同形式关系,包括一对一、一对多、多对多等多种关系。比如,管嘴与设备之间存在从属关系且一个设备可以有多个管嘴,属于一对多;阀门与管线之间存在相关的关系,它们相互独立存在,但是通过管线可以查找到阀门。

在所有模型数据对象中,ModleItem是最高级别的,它的子类包括ItemNote(注释)、Piping Point(管道连接点)、PlantItem(工厂对象)、Signal Point(信号线连接点)、OPC(图纸连接符号)等。PlantItem又包括Equipment(设备)、Nozzle(管口)、 PipingComp(管件)、Instrument(仪表)、PipeRun(管道)、SignalRun(信号线)、PlantitemGroup(工厂对象分组)。Equipment分为Mechanical、Exchanger、Vessel、GeneralEquipment、 Equipment Component等几大类,而每一大类设备又分为若干小类(Subclass), 每一小类又分为不同的具体类型(Type)。这是一种继承关系,子类可以继承上一级别的所有属性。而Drawing Data主 要 由Drawing和Representation组成,Drawing包 含History、Status、Note等信息,Representation可以理解为放置图纸上各个对象时所存在的关联关系。这个严谨庞大的数据模型在日常的软件运行中无法看到,然而正因为它的存在,数据架构支撑起了软件的核心数据库,使软件中的数据管理有条不紊地进行。这也是我们进行Smart P&ID自动化开发的核心所在。

软件默认报表与SQL查询报表功能比较

Smart P&ID默认具有报表功能,可以利用该功能以及EXCEL报表实现项目运行中的多种需要,软件默认的API具有封装完整、运行稳定等优势,但是对于较为复杂的报表要求,其难以实现,需要利用SQL语句在数据库中查询,将查询结果以EXCEL报表形式导出。

本文以阀门选用条件表和材料等级分界汇总表为例,就Smart P&ID默认报表功能无法满足项目需求时,如何利用SQL语句在Smart P&ID数据库中按照项目要求进行查询并生成EXCEL报表的二次开发进行探讨。

SQL查询生成EXCEL报表

定制报表模板

此次开发参考了Smart P&ID默认报表功能的做法,如图1所示,在项目共享服务器的Report Files文件夹目录下定制报表模板,以便将SQL查询结果输入到该模板中,保存至用户指定位置。模板定制不仅有利于保证项目文件格式的统一,而且也便于管理员利用外部程序操作EXCEL。

图1 定制报表模板

构造Smart P&ID的SQL查询功能函数

通过构造Smart P&ID的SQL查询功能函数,其他开发人员新增查询时只需要专注工艺逻辑的梳理和构造SQL语句,而不需要再考虑SQL语句如何连接激活项目并在Smart P&ID数据库中运行。该函数的主要功能为连接到当前激活项目,判断数据库类型后运行SQL语句。

SQL查询在阀门选用条件表中的应用

阀门选用条件表的工艺需求主要包括四个方面:一是汇总选定主项下所有管道的材料等级;二是汇总该主项某个管道材料等级下包含的所有介质代号;三是汇总该主项某个管道材料等级下包含的所有阀门类型及阀门管件范围;四是汇总该主项某个材料等级的管道直径范围。

Smart P&ID默认报表功能只能以管道为过滤器导出管道的相关属性,或以阀门为过滤器导出阀门的相关属性及所在管道相关属性。该功能要求在某些状况下以管道为中心,其他状况下以阀门为中心。因此,Smart P&ID默认报表功能无法实现该功能。基于以上要求,本文根据Smart P&ID数据结构梳理出程序逻辑图(图2),利用SQL查询搜索相关内容并生成报表。

图2 阀门选用条件表程序逻辑图

程序运行结果如图3所示,文件格式和数据结果均满足项目要求。该二次开发主要利用了Smart P&ID的模型数据,通过遍历选定主项下的所有管道,重汇总管道的所有材料等级,然后依次以某个材料等级为过滤条件,汇总满足该材料等级下所有管道介质代号以及管道管径,取管道最大和最小直径作为该材料等级下的管道直径范围,同时以该材料等级为过滤条件,汇总该材料等级下管道上的阀门,重汇总阀门类型及阀门尺寸,将最终查询结果输入EXCEL报表模板,保存至用户指定位置。

图3 阀门选用条件表效果图

SQL查询在材料等级分界汇总表中的应用

材料等级分界汇总表的工艺要求如图4所示。该PID图中,绘制了3种类型的材料等级分界:类型1为管道和阀门连接处发生了材料等级变化;类型2为管件和管件连接处发生了材料等级变化;类型3为管道和设备管口连接点发生了材料等级变化。这3种类型为工艺流程图上最常见的材料分界,此次开发以此为输入条件,运用SQL查询,生成工艺条件。

图4 材料等级分界工艺示例图

如图5所示,SQL查询以材料等级打断符类型的symbol为程序逻辑起点,虽然不同项目打断符的文件名称未必一样,但是同一项目的打断符文件名称一般较为固定。为此,该功能在不同项目应用时,需要用户指定所用打断符symbol。通过打断符symbol找到等级分界点,根据分界点两端的工厂对象类型调用软件API读取其工艺属性,如材料等级、管径等,将最终结果写入报表模板,保存至用户指定位置。

图5 材料等级分界汇总表程序逻辑图

程序运行结果如图6所示,文件格式和数据结果均满足项目要求。该二次开发主要利用了Smart P&ID的图形数据,Smart P&ID上的打断符symbol是从工艺数据结构上阻断了两端工厂对象的材料等级属性传递,而不同于非智能PID上的打断符仅仅只是图面显示。另外,Smart P&ID数据库中直接查询出来的某些属性值只是代号,需要和其他表进行耦合才能得到最终工艺数据,这时使用Smart P&ID默认的API,通过SP_ID获取工厂对象,读取其属性更方便。在实际的开发过程中,需要灵活使用SQL查询和软件API,减少代码量。值得说明的是,工艺逻辑的严密性至关重要,如本开发中未考虑到的材料等级分界情形将会影响查询结果的准确性和完整性。

图6 材料等级分界汇总表效果图

结语

上述SQL查询在非智能PID上是无法实现的,只有通过智能PID的绘制,所有的模型数据和图形数据才能以结构化的数据存储在数据库中,同时还需要熟悉Smart P&ID数据结构,具备丰富的工艺设计知识,利用SQL查询和软件API就能得到满足项目需求的工艺数据。

作为Smart P&ID管理员,不仅要能够管理和定制Smart P&ID系统,满足项目的基本需求,同时还应具备扎实的工艺知识,熟悉数据库结构和SQL语句,掌握软件API,灵活运用多种软件工具进行二次开发,满足项目运行需求,充分发挥智能PID结构化数据优势。

猜你喜欢

分界报表阀门
美嘉诺阀门(大连)有限公司
装配式玻璃钢阀门井的研发及应用
肖碧源
LabWindows/CVI中Excel报表技术研究
10kV用户分界开关在定陶电网的应用分析
南北分界话秦岭(下)
从三大报表读懂养猪人的成绩单
省力阀门瓶盖
小小阀门维系安全
分界站运报一上报数据不一致问题的浅析与对策