首页 > 代码库 > Lexicon-PDMS的字典

Lexicon-PDMS的字典

  Lexicon 顾名思义‘字典‘,因此在该模块可以进行许多自定义的工作,该模块既是PDMS的非常重要模块,也是非常常用的一个模块。但要想顺利使用该模块,以下两个条件缺一不可:

  a)、以free用户登录PDMS,普通的general用户是无法访问该模块的。

  b)、必须有一个类型为DICT的DB来存储自定义的数据,且该DB需要在所选择的MDB中。

1、自定义类型

Lexicon模块提供了多种可定义的数据类型,如DBVWWL,DSTWLD,DSXWLD,REVCWL,STAWLD,UDETWLD,UWLRD共7种。其中有的用于定义数据表、有的用于定义属性和类型。由于笔者水平有限,且所了解的知识点不够全面,因此只能浅谈以下两种类型。

 

2、UWLRD

UWLRD就是我们通常说的UDA,User Defined Attribute的简称,自定义属性是对PDMS基本属性和隐藏属性的一个重要补充。由于PDMS中所有元件类型的系统属性是可以枚举完的,当发现系统属性中并没有适合我们使用的属性类型时,就可以利用UDA进行自定义属性。

2.1、数据层次

UDA有3级数据层次:

UWRL  -  UDA World

UGRO  -  UDA  Group  该层次可有可无,但强烈建议使用。使用该层次,可以有效的管理UDA

UDA    -  UDA  实际元件层

2.2、建立管理层

既可以通过菜单栏来创建管理层,也可以通过命令行来创建。

2.2.1、界面创建UWRL

 

2.2.2、命令行创建UWRL

NEW UWRL

在比较老的PDMS版本下,可能没有界面创建,只能使用命令行来创建。 

2.2.3、创建UGRO

创建UGRO的方法与UWRL相同,此处不再赘述。

2.3、创建UDA

UDA的创建方法与创建其管理层的方法相同,此处我们创建一个UDA,用于存储设备的类型。

2.4、UDA属性

创建完UDA后,会发现UDA有大量的属性需要填写,列表如下:

2.5、属性说明

2.5.1、Description

该属性在非Lexicon模块中,实际上是看不到的,但写上以后,便于管理员后期维护。此处我们填写‘设备类型‘。

2.5.2、UDA Type

该属性指定了数据类型,此处点击右侧的下拉菜单,可以看到有多个选项。比如整型、字符串型、布尔型、日期型、以及还有PDMS特有的direction型和position型等等。此处我们选择‘text‘,即字符串型。

2.5.3、UDA Length

该属性指定了数据类型的长度。此处我们设置为10

2.5.4、Element Types

该属性用于定义UDA赋予给PDMS哪些类型的元素。即可以直接输入,也可以点击后,通过界面选取。

一个UDA可以赋给多个类型的元素,此处我们只将该UDA赋给了EQUI类型的元素,如果我们继续将该属性赋给ZONE类型的元素也是可以的。

2.5.5、UDA Default

指定UDA的默认值。此处我们设置为PUMP。

2.5.6、User-Defined name

UDA的名称,该属性非常重要,是UDA展现在其他模块中的名称。此处我们命名为EquipType。

2.5.7、Valid Values

指定UDA的有效值区间,可以用来对UDA的值进行约束。

此处的写法是有要求的,如果是实数的话,应写为如 0-10,表示在0到10之间。如果是字符串的话,其值必须用单引号或|将值框在里面,如|PUMP|。如果是多个并列值得话,值之间用逗号分隔。此处我们写为|PUMP|,|TANK|。

2.6、UDA校验

此时我们打开design模块,选择一个EQUI后,输入Q ATT查询属性,会发现在系统属性后面多了如下一行,

:EquipType PUMP

注意:刚才我们命名是并没有加上‘:‘,此处是PDMS自动加上的标识符,用于区分UDA和系统自带的属性。

我们将该属性的值改为TANK,修改成功,如果我们将其改为XXXX,会提示错误,值不在有效值的范围内。

2.7、UDA结语

UDA和PDMS系统属性在操作上完全相同,查询,修改等用法均相同。同时在利用PML编程时候,也完全等价于系统属性。

 

3、UDET

相对于UDA的普遍使用,UDET的使用并不算常见。UDET是User Defined Element Types的简称,即用户自定义元件类型。可以通过定义UDET来实现一些特殊的需求。

3.1、数据层次

同UDA一样,UDET也有3级数据层次:

UDETWL  -  UDET world

UDETGR  -  UDET group

UDET      -  UDET

细心的读者可能会发现,UDET的数据层次与UDA完全相同,实际上不但他们的数据层次相同,其创建方法也相同,都有界面和命令行两种。大家可以参考UDA数据层次的创建方法,来创建UDET的数据层次。但UDET与UDA却有完全不同的属性。

3.2、UDET属性

3.2.1、Description

该属性也是一个说明性的属性,此处我们填写‘设备‘。

3.2.2、User-Defined name

UDET的名称,该属性非常重要,是UDET在其他模块新建的层次类型名,此处我们命名为TANK。

3.2.3、Base type

基础类型,此处要特别注意,自定义的元件类型必须是等价于PDMS已知的元件类型的一种,并不能创建一个PDMS中完全不存在的类型。笔者认为这是导致UDET比较鸡肋的一个重要原因。点击右侧的下拉选项,选择一个PDMS的已知类型。

3.2.3、Owner types 和Member Types

这两个属性是不需要用户定义的,当选择完Base type后,程序将自动获取。

3.2.4、Hidden attributes

隐藏属性,选择完Base type后,该UDET将自动继承其等价类型的所有基础属性,但是否继承其隐藏属性,是可以通过面板来设置的。界面如下:

3.3、UDET校验

我们打开design模块,选择某个zone后,在命令行里输入new :TANK,将会在zone层下新建一个类型为:TANK的元件:

 注意:此处必须写new :tank,:不能漏掉,否则会提示语法错误。

 

3.4、UDET结语

UDET和PDMS本身的元件类型在各方面完全相同。同时在利用PML编程时候,也可以利用collect语句收集或var语句求值。