PDMS二次开发语言PML与.NET(C#)的对比
2021-04-09南京金凌石化工程设计有限公司
南京金凌石化工程设计有限公司 魏 恒
PDMS是AVEVA公司的一款三维建模软件,在石油化工装置设计过程中被广泛应用。PDMS支持二次开发,其中二次开发包括.NET及自带的Programmable Macro Language编程语言(简称PML)。通过对比不同环境和需求下.NET和PML的优劣,选择适合自己的编程语言。
PDMS是英国AVEVA公司设计的旗舰产品。本产品自1977年发布第一个商业版本以来,经历AVEVA PDMS 11.5、11.6、12.0、12.1等几个较大版本的更新升级维护。尤其在由11.6到12.0版本升级过程中,AVEVA公司对该软件进行大量升级,界面采用Office风格。同时,增加了对.NET的支持并发布.NET开发使用说明。自PDMS12.0版本发布以来,基于.NET(C#)进行二次开发的软件也越来越多,通过对比PML和.NET(C#)语言在不同需求下的编程难易程度、运行效率、语言自身的优缺点等,给出在不同环境下选择适合的开发语言的合理化建议。
1 PML开发介绍
1.1 PML语言简介
PML语言为PDMS公司开发的可编程宏语言,是一种解释型的脚本语言,其只能在PDMS软件中被解释执行。自PDMS发布以来便应用于PDMS二次开发。PML开发可以使用PDMS大部分资源,对PDMS版本的敏感度不会特别高,无需进行编译即可在PDMS上执行。比如,使用PML基于11.5开发通过简单的匹配即可以在12.1上完美使用。PDMS软件命令功能模块大部分模块基于PML开发,同时伴随PDMS发展,大量的培训资料、开发实例等为开发者提供了大量的学习资料。PML语言仅应用于PDMS软件,初学者无论是否学习过其它开发语言,都可以根据开发说明进行二次开发。
脚本语言的显著优势就是将常用的命令封装出来,这样在测试程序的新功能时,不再需要编译源码,只需编写程序脚本,能有效提高软件开发的效率。
1.2 PML开发环境
PML语言可以直接使用文本编辑器进行编程,或者采用部分人员开发的PML界面设计器进行编程。对于初学者,可以通过在PDMS命令栏中输入常用的PML语句进行设计工作进行简单的PML学习,再通过《Software Customisation Guide》学习窗体(Forms)、功能(Objects)、函数(Function)、工具(Gadgets)。
(1)窗体(Forms)
窗体是创建一个操作窗口,便于用户进行可视化操作。在该窗口下,可以创建列表、文本框、功能性按钮等可视化接口。
(2)功能(Objects)
创建一个功能区,该功能区可以包含多个按钮,每个按钮可以指定一个操作窗口。该功能区可以直接进行调用。
(3)函数(Function)
在软件设计时,通过将所有的函数或者功能进行定制,然后在窗体中进行引用。这样做的目的是,便于设计者进行调试、归类管理等。
(4)工具(Gadgets)
在进行软件设计时,可以设计一个窗体和基于该窗体的若干个工具。为了便于在窗体中进行不同类别的归纳整理,引用该功能。
1.3 PML开发的缺点
因为PML仅仅服务于PDMS的二次开发,所以与其他软件进行数据交互时,只能将数据转化导出为表格(XLS,CSV)、文本(TXT)型式,然后再进行数据转化存储至其他软件。无形中增加了多个使用步骤哦,增加了操作难度。目前在各个设计公司均在大量的使用各种类型的设计软件工作;需要进行大量的数据交互。基于当前PDMS的发展轨迹来说,从12.0开始逐步支持.NET二次开发,逐步使用.NET构架替换PML也可以说明.NET构架也是该软件发展的主流。再者,PML编程目前仍然非常小众,没有比较好用的开发平台。虽然有部分设计人员,基于自身的开发经验创建了部分平台,但仍处于小范围使用阶段;对于扩大PML的影响力毫无用处。再者对于复杂算法,PML执行效率较低,PML命令执行时间过长时,PDMS往往会进入一种假死状态,导致软件崩溃。在小范围内测试,.NET的执行效率约为PML的10倍左右。
2 NET开发介绍
2.1 NET 开发简介
AVEVA .NET是AVEVA推出的一种更方便的开发方式。结合C#丰富的库及相对于PML而言更高的效率,可以使用C#在AVEVA上快速的开发出应用程序。+C#是由C和C++衍生出来的面向对象编程语言。它在继承C和C++强大功能的同时,减少了一些它们的复杂特性。C#是一种面向对象的编程语言,这样就使得设计人员可以快速、高效地开发各种基于MICROSOFT .NET平台的程序软件,同时还可以采用VSTO开放平台。
2.2 NET开发环境
基于.NET(C#)进行PDMS二次开发可以使用Visual Studio Tools for Office开发平台进行软件设计。VSTO是一套用于创建自定义应用程序的Visual Studio工具包,被程序员广泛采用。VSTO使你可以用Visual C#扩展PDMS应用程序(生成DLL文件被PDMS调用)。可以使用强大的Visual Studio开发环境来开发PDMS应用程序。无论你是创建一个Forms控件,还是创建各种复杂的函数以便于进行数据处理,VSTO都可以实质变得非常容易。在添加对PDMS提供的命名空间后,我们可以轻易的使用.NET(C#)从PDMS获取各种想要的信息。基于VSTO的可视化开发平台和丰富的.NET控间资源,开发可以变得非常简单、高效。
使用.NET(C#)进行PDMS开发时,需要引用以下几个命名空间:
(1)命名空间:Aveva.ApplicationFramework
插件管理器:这个类提供属性和方法来管理应用程序框架插件。服务管理器:这个类定义一个接口,应用程序框架中的各种组件可以通过它发布服务。这个服务管理器本身作为一个服务提供者,也可以响应服务的请求,它还可以被应用程序和应用程序插件用于发布额外的服务。设置管理器:这个类提供属性和方法管理应用程序设置,这些设置保存在设置组中,用于在不同的任务中保持一致。
(2)命名空间:Aveva.ApplicationFramework.Presentation
命令条管理器:提供使用基于应用程序框架程序的菜单和命令条,也提供方法加载用户接口定制(UIC)文件中定义的菜单和命令条。命令管理器:这个类定义一个接口来提供一种机制管理命令对象可以关联到工具栏和其他用户界面对象,当激活一个工具(比如点击一个按钮)将执行相应的命令对象。一些不同的用户界面对象可以关联相同的命令对象,因此可以在命令中集中控制那些用户界面对象的功能,命令的这种状态属性(例如可用/选中)将可以影响关联这个命令的所有用户界面对象,例如,命令设置为不可用后将导致所有关联的用户界面对象不可用,用户界面对象通过CommandExecutor派生类关联命令。资源管理器:这个类定义一个接口给插件提供一种简单的机制来存取本地资源。资源管理器提供一些方法允许插件存取资源文件包含的各种形式的资源(字符串,图像,光标,图标等)。窗口管理器:提供存取主程序窗口,状态栏,多文档界面集合和可停靠窗口,也给开发者提供方法生成多文档界面和可停靠窗口来包含控件。
(3)命名空间:Aveva.Pdms.Database
数据服务管理:用于打开一个项目。数据属性管理:一是用于类实例属性的识别和传输;二是提供方法允许检索一个属性的元数据,例如类型,范围,名称,是否是隐含属性等等,这个类对于系统属性和用户自定义属性也有效。
2.3 NET开发的缺点
使用.NET进行程序开发时,程序调试非常的不方便,只能先封装在运行PDMS进行测试,测试结果只能显示该程序是否有问题,不能确认问题出在哪里。只能由开发人员自行检查代码,找到问题。当生成的C#库DLL文件被PDMS加载后,便不可以卸载;如我需要修改代码,则需要退出PDMS,严重影响开发效率。
结论:综上所述:在实现简单功能的二次开发中,需要根据不同项目的需求选择相应的开发语言进行软件开发。从数据来源的角度来说,如果仅仅对PDMS内部数据处理,不需要与其他软件进行数据交互;则直接采用PML语言进行设计较为简单高效;反之则应使用.NET(C#)平台。从数据处理效率来说,当软件内容较为复杂或数据处理量比较大时,使用.NET(C#)平台进行二次开发来提升运行效率则显得尤为重要。而在部分环境下,不仅需要软件进行PDMS内部数据处理,还需要与其他软件进行数据交互,软件数据量处理量比较大时,则需要二者结合使用;使用PML进行内部数据处理、数据的运算工作则使用C#进行开发是最有效的解决办法。