首页 > 代码库 > 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语句求值。