PML命令_part1_design模块
PDMS-PML基础
PML基础王元AVEVA中国2005.11.19如何学习PML编程T需要具备的基本知识–熟悉Pdms的基本操作–了解Pdms的运行机制,模块之间的关系–Pdms属性的操作–Pdms命令的操作–Pml语法(本教程)–通过Pdms菜单查找示范程序课程将包括...T PML介绍–PML概念–PML功能–PML构成T PML程序语言–变量的定义及用法–循环Do、判断If、跳转Golabel–错误处理–文件处理–函数Functions、方法Method–对话框Forms和菜单Menu课程结束后...T您会具有以下知识…–PML构成及功能–编写简单的宏–PML变量的定义及应用–PML函数/方法的定义及调用–PML窗体/对象的定义及调用PML -功能强大的语言T P rogrammable M acro L anguage可编程宏语言T PML2基于面向对象(Object Oriented)概念的编程语言T支持用户自定义对象类型(Object Types)T简单易学,与PDMS无缝连接T丰富的内置函数,方法及对象T最简单的对话框,菜单编写语言PML构成T Macros–Macros是包含PDMS 命令序列的ASCII文件–Macros 在PDMS 中通过$m /FILENAME来执行T PML–变量(Variables)–判断语句(if Constrcuct)–循环(Do loops)–错误处理(Error Handling)–文件处理(Files and Directories)T窗体和菜单–PDMS大多数应用程序都由对话框(Forms)和菜单(Menus)来驱动一个简单的MacroT宏是包含PDMS 命令序列的一个文本文件T运行宏$M /MyFileASCII 文件MYFILE NEW EQUIP /FREDNEW BOXXLEN 300 YLEN 400 ZLEN 600NEW CYL DIA 400 HEI 600CONN P1 TO P2 OF PREVNEW EQUIP /$1NEW BOXXLEN $2 YLEN $3 ZLEN $4NEW CYL DIA $3 HEI $4CONN P1 TO P2 OF PREVASCII 文件MYFILE 一个简单的Macro ,继续,参数化宏Parameterized Macro T 宏可以参数化T 文件名后面的字符串是参数(parameters)$M /MyFile NEWEQUIP 300 400 600宏的参数T Macros 可以有多达9 个由空格分隔的参数.$M /MyFile PML TRAINING 55 66T 文本字符串可以以单个参数输入$M /MyFile $< PML TRAINING $> 55 66T $<和$>是分隔符,在它们之间的任何字符都被认为是单个参数变量VariablesT变量基本概念–变量用于存储数值,变量必须有名字,变量的数值可以改变,但变量名是固定的.T PML变量–在PML2中变量是一个对象(Objects)•每一个对象(变量)有一个唯一的名字•每一个对象都有一套函数与之相关联,这些函数称为方法(Methods).方法用于处理对象中的数据•生成对象时必须指明对象类型(Object type),不同的对象类型对应不同的方法对象(变量)类型Object TypesT内置(Build-in)的对象类型–字符串类型(String).如'Hello World'–实数类型(Real).整数类型包括在实数类型中,如99–布尔类型(Boolean).用于逻辑表达式,如True,False–数组类型(Array).可以存储任意类型的数据T系统定义(System-defined)的对象类型–指在PDMS中的变量类型,如Positon,ReferenceT用户自定义(User-defined)的对象类型生成、查询、删除变量T使用命令行或者文本文件测试T通过赋值声明变量类型!MyString= 'Hello World'Q var!MyString显示<STRING> 'Hello World'T直接声明变量类型!Length = Real()Q Var!Length显示<REAL> UnsetT删除变量用到方法!MyString.Delete()变量命名规则(Naming Conventions) T局部变量(Local)和全局变量(Global)!SurfaceArea! 表示局部变量!!Area !!表示全局变量T变量名最长16 个字符(不包括!和!!),变量名可以包含字母和数字T变量名不能用数字和点(.)开头T变量名的大小写不敏感T建议:一个变量一个用途,最好给变量名一个有意义的名字,并且区分大小写!!StartInUpperCasePDMS属性类型-系统定义变量类型T名字(Name)如NameT字符串(String)如Description,FunctionT实数(Real)如Angle,Temperature,RatingT布尔(Boolean)如Lock,Shop,BuiltT数组(Array)如LevelT参考(Reference)如Spref,Catref,Lstube,Ptref,Gmref T关键字(Word)如Type,PurposeT位置(Position)如Position,HpositionT方位(Orientation) 如OrientationT方向(Direction)如HDirection!!ceT特殊全局变量!!CE–得到当前元素的参考,DBref类型–‘.’点操作符可以提取元素的属性和隐含属性变量提取属性T用变量提取属性值,变量名=DBref变量.属性名!Name = !!!Desc= !!ce.Description!Pspec= !!ce.Pspec!Temp = !!ce.Temp!Purp= !!ce.Purp!Rating = !!ce.cref.pspec.rating!Pos = !!ce.Pposition[3]$*P-point[3]坐标!Dir = !!ce.Pdirection[1] $*P-point[1]方向T查询属性类型!Ref = RefQ var!Ref变量给PDMS属性赋值T属性名= 变量名–名字赋值,变量中第一个字符必须是/!!= !Name!!ce.Describsion=!Desc!!ce.Temp= !Temp!!ce.Pspec= !Pspec!!ce.Purp= !Purp常用的赋值方法T可以不是当前元素!A = !!CE!!CE = !!CE.Owner!A.Built= TRUET坐标的变化!Pos = !!CE.Position!Pos.Up= 2000!!CE.Position= !Pos练习-变量给属性赋值T使用文本编辑器编辑–获取当前元素的Name和Type–新建同样类型的元素–在命名中追加-NEWPDMS命令中使用变量T变量前加$表示提取变量的值!type = !!ce.type!name = !!!newname= !name + ‘-NEW’New $!type $!newnameT直接组合字符串New $!type $!name-NEW方法(Method)和函数(Function)T函数(Function)是执行特定功能的子程序T方法(Method)是对象(变量)的函数–在PML2中变量是一个对象(Objects)•每一个对象(变量)有一个唯一的名字•每一个对象都有一套函数与之相关联,这些函数称为方法(Methods).方法用于处理对象中的数据•生成对象时必须指明对象类型(Object type),不同的对象类型对应不同的方法–方法并不改变对象的类型和对象中的值T参考手册Cadcentre Software Customisation Reference Manual方法-字符串对象(String Object)T字符串长度Length()T类型转换Real(),Position(),Boolean()T大小写转换LowCase(),UpCase()T两端截取After(str2),Before(str2),Substring(index) T中间截取Substring(index,nchars)T分隔符截取Part(nth),Part(nth,delim)T替换Replace(str2,str3)T匹配Match(str2),MatchWild(str2)T分割(返回数组)Split()T修剪Trim(),Trim(option)方法实例T方法示例!str= 'hello how are you!'!newstr= !str.after('hello').trim().upcase()q var!newstr<String> 'HOW ARE YOU!'T练习-将字符串改为'where are you?‘!str= 'hello how are you!'!newstr= !str.after('hello').trim().replace('how', 'where').replace('!', '?')PML表达式T表达式运算符(Expression operators)–算术运算符+-* /–和并符&–比较运算符EQ NE LT LE GT GE–布尔运算符NOT AND OR表达式说明T表达式可以嵌套T运算符前后必须加空格T表达式前后的类型必须一致!X = 64!Y = 32!Z = !X + !Y!Z = 96!A = 'Hello '!B = 'World'!AB = !A + !B!AB = 'Hello World'!XY = !X & !Y!XY = '6432'方法-实数对象(Real Object)T 开方Sqrt()T 乘方Power(REAL)T 取整INT()定义函数T 函数定义成全局变量define function !!Area( !Length is REAL, !Width is REAL ) is REAL !Area = !Length * !Widthreturn !Area $*函数!!Area 有两个参数一个返回值EndfunctionT 文件命名和存放位置–文件名必须与函数名一样,后缀是小写的pmlfncPmllib/NewPmlfunctions forms area.pmlfnc xxx.pmlfrm objects xxx.pmlobj定义函数T函数定义成全局变量define function !!Area( !Length is REAL, !Width is REAL,!area is Real) !Area = !Length * !WidthEndfunction函数调用T将新建函数加到索引文件Pml.index中Pml Rehash AllT调用函数并且得到返回值!MyArea= !!Area(6,4)Q var!MyArea<Real> 24T练习-新建函数计算圆的面积,测试函数define function !!circleArea( !radius is REAL) is REAL!Area = PI * !Radius.Power(2)return !AreaEndfunctionPML通用功能-注释T单行注释--This is a new-style PML comment------------------------------$*The following lines calculate the new angle!Z = !X + !Y $*We are assuming both !X and !Y are REAL T段落注释$(skip if (!X EQ !Y)…$)PML通用功能-打印等T打印$P This text will be output to the screen.T换行$P This is an example of a much longer message $that will be output to the screenT退出程序if ( count EQ 0 ) thenreturnendif逻辑控制(Control Logic)T四种逻辑控制结构–条件判断语句If…else…endif–循环语句Do …enddo–跳转Label Golabel–错误处理Handle…Endhandle条件判断语句(If Construct) T判断表达式中必须是布尔值!Type = Type!OwnType= Type of OwnerIF(!Type eq'BRAN') THEN$P CE is Branch.ELSEIF(!OwnType eq'BRAN') THEN$P CE is Branch member.ELSE$P CE is $!Type,Pls select Branch.ENDIFT Elseif,else都是可选项判断元素是否有名字T判断元素是否有名字!Name = Name!FullName= FullNameIf(!Name EQ !FullName) then$p Named.Else$p No name.Endif判断常用例程T判断变量是否定义If(UnDefine(!x)) then$p Variables $!x not define.endifT判断变量值是否存在!x =real()用函数判断用方法判断If(Unset(!x)) then…if(!x.Unset()) then…If(Set(!x)) then…if(!x.Set()) then…练习-条件判断T判断当前元素类型(Type),添加当前元素和与之连接的元素–如果是'BRAN',加入头尾连接的元素add Href Tref–如果是'NOZZ',加入连接的管道add Cref–打印当前元素类型!type = typeadd ceAuto ceif(!type eq'BRAN') thenadd href trefelseif(!type eq'NOZZ') thenadd crefendif$p Current type = $!type循环(Do loops)T循环赋值!Total = 0Do!x From1 To100 By1!Total = !Total + !xEnddoT可以忽略的选项–如果循环起始为1,From选项可以忽略–如果步长为1,By选项可以忽略中断循环BreakT中断循环Break!Total = 0Do !x To 100!Total = !Total+ !xIf(!Total gt500) thenBreak$*或者Break if(!Total gt500)EndifEnddo跳过循环(Skip)T用skip 跳过奇数Do !x To 100If(Int(!x/ 2) NE (!x / 2)) thenSkip$*或者Skip If(Int(!x/ 2) NE (!x / 2))Endif!Total = !Total + !xEnddo跳转(Jump)T用golabel可以跳转到标记行,不限制前后顺序Label /Start…GoLabel/StartT Label名最长16 个字符,不包括'/'T不允许跳转到Do循环中golabel/illegal!Total = 0do !x from 1 to 5!Total = !Total + !xlabel /illegalenddo错误提示T测试程序Next$p OKT可能出现的错误(2,113) List exhausted2表示错误出现在PDMS中的哪个模块113是错误代码T出现错误通常有三种结果–出现一个警告框,用户必须确认–输出一个错误信息–从当前运行的程序中退出错误处理(Error Handling) T处理特定错误,使程序继续执行NextHandle (2,113)$p Last element.EndHandle$p OKT处理任何可能的错误NextHandle AnyEndHandle$p OK处理多个错误T处理多个错误NextHandle (2,113)$p Last element.ElseHandle(2,46)$p …EndHandle$p OK没有错误T处理没有错误!noteM= !sheetname+ '/LoadTable'$!noteMhandle anynew note $!noteMelsehandle nonedelete notenew note $!noteMendhandle数组(Array)T从字符串创建数组!Str= 'Benz,Bmw,Audi'!BestCar= !Str.Split(',')Q var!BestCar<ARRAY>[1] <STRING> 'Benz'[2] <STRING> 'Bmw'[3] <STRING> 'Audi'$*数组元素,索引号T逐个元素添加!BestCar[5] = 'Cadillac'方法-数组对象(Array Object)T数组元素数量Size()T数组最大宽度Width()T追加元素Append(value)T追加数组AppendArray(Array)T删除全部元素Clear()T删除单个元素!MyArray[N].Delete()T删除数组Delete()T压缩数组Compress()T排序Sort()T倒序Invert()T搜索Find(value),FindFirst(value) T和并重复项Unique()数组方法实例T数组追加,数组必须存在,否则提前声明!BestCar.Append('Lincoln')T声明数组!BestCar= array()数组循环T赋值循环Do valuedo!Name values!BestCar$*将!BestCar中元素逐个赋给!Name $p Array element is $!NameEnddo–自动跳过空的数组元素T索引循环Do indicesdo !n indices!BestCar$*将!BestCar中索引号逐个赋给!n !Car = !BestCar[!n]$p Array element $!n is $!CarEnddoT练习-测试数组循环PDMS中生成数组(Collections)T收集指定类型的Pdms元素Var!PipeComps Coll ect All Pipe For CE–生成的!PipeComps是数组,保存的是元素的参考号–不使用For CE则是从整个MDB中提取T类型用法示例ALL所有元素ALL Pipe所有的PipeALL BRANCH MEMBERS所有管件,包括TubeITEMS OF EQUI /D1201设备中的所有基本体继续…T限制条件Var!Elbows Coll All Elbow With (Abor gt100)for CEWith后面是一个表达式T限制区域Var!Elbows Coll All Elbow Within W0N0U0 to W2000N2000U2000 Var!Elbows Coll All Elbow Exclusive Within Volume /D1201 1500Exclusive表示完全包含在空间内的元素才被选中T追加Var!Elbows Append Coll all Bend for CE练习T选择一个设备,将所有Nozzle连接的管道加入显示–加入当前设备,居中显示–Nozzle的Cref属性记录连接的管道名称–通过参考号定位到Nozzle–加入显示Add CrefAdd ceAuto ceVar!nozzles Coll all nozzle for ceDo !nozzle value !nozzles$!nozzleAdd crefEndDo求值(Evaluate)T通过参考号提取属性值Var!Pipes Coll all Pipe for ce$*得到参考号Var!Names Eval name for all from!Pipes$*提取Name属性Q var!namesT练习-将Zone中所有的Pipe名称和等级打印到命令行–使用Do循环将Name和Pspec输出到一行Var!Pipes Coll all Pipe for ce$*得到参考号Var!Names Eval name for all from !Pipes$*提取Name属性Var!Pspecs eval pspec for all from !pipesDo !n indices !names$p $!names[$!n] $!pspecs[$!n]enddo排列字符串ComposeT按照宽度和对齐方式排列字符串,返回数组!a = ‘ABCDEFG’!b = ‘DEF’var!output compose‘$!a’width 5 L SPACE 2 ‘$!b’width 5 RQ var!outputT输出数组的第一个元素$p $!output[1]练习T完善前一个练习,排列Name和PspecVar!Pipes Coll all Pipe for ce$*得到参考号Var!Names Eval name for all from !Pipes$*提取Name属性Var!Pspecs eval pspec for all from !pipesDo !n indices !namesvar!out compose ‘$!names[$!n]’wid15 space 2 ‘$!pspecs[$!n]’wid15 $p $!out[1]enddo练习T继续完善前一个练习,自动设置宽度Width()Var!Pipes Coll all Pipe for ce$*得到参考号Var!Names Eval name for all from !Pipes$*提取Name属性Var!Pspecs eval pspec for all from !pipes!wid1 = !names.width()!wid2 = !pspecs.width()Do !n indices !namesvar!out compose ‘$!names[$!n]’wid$!wid1 space 2 $‘$!pspecs[$!n]’wid$!wid2$p $!out[1]enddo对话框(Form)系统对话框T警告对象(Alert Objects)!!Alert是系统定义的对象–三种无返回值的警告对象–三种带返回值的警告对象警告Alert ObjectsT三种无返回值的警告对象(Alert Object)!!Alert.Error( 'You cannot do this!' )!!Alert.Message( 'Saving your data now!' )!!Alert.Warning( 'Do not press this button again!' )T缺省情况,警告窗口出现在光标附近,可用X,Y值指定其在屏幕上的位置,整个屏幕左上角是0,0,右下角是1,1 !!Alert.Error( 'You cannot do this!' , 0.25, 0.1)确认-Comfirm Alert ObjectsT三种带返回值的警告对象(Alert Object)confirm, question 和inputT确认(Confirm),返回值是'YES'或'NO'!Answer = !!Alert.Confirm( 'Are you sure!' )练习T确认是否在管道上生成弯头,YES则生成,NO则退出–生成弯头New Elbow choose rtext–连接Conn!Answer = !!Alert.Confirm('Creat Elbow?')If(!answer eq'YES') thenNew Elbow choose rtextconnendif询问-Question Alert ObjectsT询问(Question),返回值是'YES' ,'NO'或'CANCEL' !Answer = !!Alert.Question( 'OK to delete Site?' )输入-Input Alert ObjectsT输入(Input)!Answer = !!Alert.Input( 'Enter Width of Floor','10' )–第一个值是输入提示,第二个值是缺省值–Input alerts 返回一个字符串值练习T完善上一个练习–如果生成弯头,询问出口方向和距离–改变方向Dir U–改变距离Dist 1000!Answer = !!Alert.Confirm('Creat Elbow?')If(!answer eq'YES') thenNew Elbow choose rtextconn!dir = !!Alert.Input('Direction?', 'N' )dir $!dir!dist = !!Alert.Input('Distance?', '1000' )dist $!distendif一个简单的对话框(Form)T 对话框是全局变量的对象setup form !!hello Title 'Hello'paragraph .Message text 'Hello world'button .bye 'Goodbye' OK exitT 控件(Gadget)Paragraph .Message 文字控件和控件名Button .bye 按钮控件和控件名T 对话框控制属性OK内置属性,关闭对话框对话框调用T 对话框存放位置文件名与对象名一样,后缀是小写的pmlfrm T 将新建对话框加到索引文件Pml.index 中,在命令行键入Pml Rehash All T 显示对话框Show !!hello T 命令行关闭对话框Hide !!helloPmllib/NewPml functions formsarea.pmlfncHello.pmlfrmobjects xxx.pmlobj调试对话框T调试对话框–对话框显示后,定义文件被加载到内存中,下一次直接从内存中加载对话框定义内容–对话框的定义文件被修改后,需要重新加载Pml reload form !!helloShow !!hello方法-对话框对象(Form Object)T显示状态shown()T判断命令行窗口的显示状态!shown = !!CADCBTH.shown()if(not!shown) thenshow !!CADCBTHendifvar!date clock datevar!time clock time$p Begin report at $!date $!time缺省构造方法(Constructor method)T增加一个输入框和方法setup form !!helloTitle 'Hello'paragraph .Message text 'Hello world'text .input 'Enter text' width 10 is string$*字符串类型的编辑框button .bye 'Goodbye' OKexitDefine method .hello()$*缺省构造方法,与Form同名,不带参数!this.input.callback= '!this.doinput()'$*Callback指明响应操作endmethodDefine method .doinput()$*响应操作,’.’前面加空格!this.message.val= !this.input.val$*!this = !!hello, val表示value endmethod缺省构造方法T缺省构造方法–与Form同名,不带参数–在调用对话框的时候自动执行–一般用于设置控件的缺省值和回调方法–再一次显示对话框时,缺省构造方法不再执行,因为对话框的定义内容已经全部加载到内存中,–Kill !!hello从内存中清除已经加载的定义内容控件的响应操作(Callbacks)T控件的callback成员用于指定控件的响应操作T控件的响应可以是以下的操作–显示另一个对话框form!this.show.Callback= 'show !!hello'–直接执行一条命令command!this.remove.Callback= 'remove all'–调用一个函数function!this.area.Callback= '!area = !!area(!length,!width)'–调用一个方法method!this.apply.Callback= '!this.Apply()'对话框布局(Form Layout)T对话框有一个隐含的定位网格,原点在Form的左上角T每个控件(Gadget) 有四个隐含变量可以用于参考定位XMIN, XMAX, YMIN, YMAX控件定位T自动定位(Auto-placement)–PATH Down 下一个控件在前一个控件的下方–PATH up,PATH Right(缺省), PATH LeftT相对前一个控件定位(Relative)setup form !!helloTitle 'Hello'paragraph .Message text 'Hello world'text .input 'Enter text' at x0 ymax width 10 is stringbutton .bye 'Goodbye' at x0 ymax OKexitT相对指定控件定位button .bye 'Goodbye' At xmax.input ymax.input OK 控件自动定位举例对话框程序-Copy&RenameT实现拷贝同时修改名字T用到的命令NEW type newname COPY oldname REN oldname newname By n 100对话框定义文件T对话框定义文件setup form !!mycopytitle 'Copy and rename'text .from 'From' at x0 width 20 is stringpath rightbutton .ce'CE 'text .to 'To ' at x0 ymax+ 0.3 width 20 is stringtext .by 'By ' at x0 ymax+ 0.3 width 10 is stringbutton .copy ' Copy ' at x2 ymax+ 0.3button .cancel 'Cancel' at x23 Cancelexit缺省构造方法T缺省构造方法Define method .mycopy()!this.ce.callback= ‘!this.ce()’!this.copy.callback= ‘!this.copy()’!this.by.val= ‘N0’EndmethodT得到CE的名字Define method .ce()!this.from.val= nameendmethod主程序T首先判断控件的值Define method .copy()!from = !this.form.val$!fromhandle any!!alert.message(‘$!from not existed.’)returnendhandle!type = type!to = !this.to.val!by = !this.by.valnew $!type $!to copy $!from ren$!from $!to by $!byendmethod控件的内置方法T控件的内置方法(Method)和成员(Member)–变灰一个控件!this.apply.Active = FALSE–聚焦控件!this.input.SetFocus()–编辑框只读!this.input.seteditable(false)–清除列表框的值!this.list.clear()–改变按钮上的文字!this.apply.tag = ' Add '–改变按钮的背景颜色!this.apply.backgroud= 2复杂对话框程序添加指定空间内的设计元素T添加指定空间内的设计元素T程序中用到的命令Var!Comps Append Coll All pipe Within Volume /D1*******控件定义(Gadget)T文本框Paragraph,对于Paragraph,at必须在text前面paragraph .cename at x0 ymax text 'No name' width 20 height 1 T编辑框Texttext .input 'Enter text' at x0 ymax width 10 is stringT多选框Toggletoggle .bran 'Branch'toggle .equi'Equipment'T框架FrameFrame .frame1 'Include' at x0 ymax+ 0.2toggle .bran 'Branch'toggle .equi'Equipment'Exit继续…T按钮Buttonbutton .ce'CE' at x0 ymax tooltip'Select pipe'button .ok 'OK' at x0 ymax OK $*关闭对话框,保留控件值button .apply 'Apply' at x0 ymax Apply $*不关闭对话框button .cancel 'Cancel' at x0 ymax Cancel $*关闭对话框,不保留控件值T图标按钮,png图像文件必须在Pmllib搜索路径内!icon = !!pml.getpathname('modmodeon16.png')button .pick pixmap/$!icon at x0 ymaxT列表框Listlist .list 'Drawlist' at x0 ymax width 18 height 5T练习-组合上述控件,生成新的对话框!!Addvolumn,比较Ok,Cancel的不同设置控件初始值T缺省构造方法设置控件初始值define method .addvolumn()!this.bran.val= true!this.input.val= '1500'endmethod按钮的应用实例T新建方法,将当前元素的名字显示在文本框中define method .ce()!this.cename.val= fullnameendmethodT在缺省构造方法中指定控件的响应操作define method .addvolumn()…!this.ce.callback= '!this.ce()'endmethod对话框控制属性-ApplyT新建方法,调用控件的值define method .apply()!dist = !this.input.val!name = !this.cename.val$p CE is $!name ,Dist = $!distendmethodT在缺省构造方法中指定Apply按钮的响应操作define method .addvolumn()…!this.apply.callback = '!this.apply()' $*不关闭对话框endmethod多选框状态判断T多选框(toggle)的状态通过.val成员判断!this.bran.val= true$*表示选中多选框的应用实例T完善Apply方法define method .apply()!name= !this.cename.val!dist= !this.input.val!elements = array()if(!this.bran.val) thenvar!elements append coll all bran Within Volume$!name$!distendifif(!this.equi.val) then …var!names eval name for all from !elementsdo !element value !elementsadd $!elementenddoendmethod列表框应用实例T列表框用数组赋值,dtext表示display text !this.list.dtext= !namesT从列表框获取值!name = !this.list.selection()T新建方法,提取List中的名字define method .doselection()!name = !this.list.selection()$!nameendmethodT在缺省构造方法中指定列表框的响应操作define method .addvolumn()…!this.list.callback = '!this.doselection()' endmethodView控件T四种View控件–输入输出显示窗口Alpha view–Plot图片显示窗口Plot view–Design显示窗口Volume view–Draft显示窗口Area ViewAlpha ViewsT自定义输入输出对话框Setup Form !!alphaviewtitle ' Input & Output'view .Input ALPHA hei10 width 40channel REQUESTSchannel COMMANDSExitbutton .apply 'Apply' at x0 ymax Applybutton .Dismiss 'Cancel' at Xmax form-size Cancel ExitPlot ViewT显示Plot图片setup form !!plotviewView .view1 plot width 41 hei23exitdefine method .plotview()!this.view1.borders = false!this.view1.add('c:/ladder.plt')endmethodVolumn ViewT Design的显示窗口setup form !!poptestview .vol volume width 50 hei9exitpath downbutton .press 'swap popup' call '!this.popswap()'menu .popmenuadd 'hello' ' 'add 'world' ' 'exitexitdefine method .popswap()!this.vol.popup = !this.popmenuendmethod文件处理(Handling Files)文件处理(Handling Files)T读写文件需要使用FILE对象!Input = object FILE('%pdmsexe%\abc.txt')!Lines = !Input.ReadFile() $* ReadFile将文件内容写到字符串数组中!ResultArray= ARRAY() $* 声明新数组do !Line VALUES !Lines!Column1 = !Line.Part(1)!ResultArray.Append( !Column1)Enddo!Output = object FILE('%pdmsexe%\def.txt')!Output.WriteFile('WRITE', !ResultArray) $* WriteFile将数组写到文件T ReadFile()方法可以自动打开(Open)和关闭(Close)文件T写文件还有覆盖模式'OVERWRITE'和追加模式'APPEND'练习-文件处理T将一个文本文件的内容显示在命令行中!Input = object FILE('d:\abc.txt')!Lines = !Input.ReadFile() $* ReadFile将文件内容写到字符串数组中do !Line VALUES !Lines$p $!LineEnddoT将Pipe名称写入到一个文本文件中Var!Pipes Coll all Pipe for ce$*得到参考号Var!Names Eval name for all from !Pipes$*提取Name属性!Output = object FILE('%pdmsexe%\def.txt')!Output.WriteFile('overWRITE', !names) $*将数组写到文件选择文件的标准函数T函数定义define function!!fileBrowser(!directory is STRING,!seedFile is STRING,!title is STRING,!existFlag is BOOLEAN,!callback is STRING)T使用实例!!filebrowser('%pdmsuser%','*','Text File',true,'!filename = !!()q var!filename')实例应用T调用标准函数setup form !!findfiletitle 'Find file'text .filename 'File name' at x1 ymax+0.3 width 35 is stringbutton .browser 'Browser'button .ok ' OK ' at x1 ymax+0.3 OKbutton .cancel 'Cancel' at x10 cancelexitdefine method .findfile()!this.browser.callback=|!!filebrowser('%pdmsuser%','*','',true,'!!findfile.filename.val= !!()')|endmethod练习-显示文件T File Browser选择文件,将内容显示在命令行中define method .findfile()!this.browser.callback=|!!filebrowser('%pdmsuser%','*','',true,'!!findfile.filename.val= !!()')|!this.ok.callback= '!this.display()'endmethodDefine method .display()!fname= !this.filename.val!output = object file(‘$!fname’)!lines = !output.readfile()q var!linesendmethod菜单(Menu)。
PMILL模具程编技巧
PMILL模具程编技巧P-MILL模具程编技巧是一种数控编程技巧,是用于数控加工中的高效加工方式。
P-MILL技术能够帮助模具制造商和加工厂在加工过程中更加高效地使用数控机床,从而可以生产出更高质量的模具。
以下是关于P-MILL模具程编技巧的详细介绍。
1. 目标制定在开始P-MILL编程之前,需要先明确加工目标,即制定模具的加工目标和规范。
目标制定应该包括模具各个部位的加工顺序、参数和尺寸要求等信息,以确保最终加工出的模具符合客户的要求。
2. 模具加工工艺设计在进行P-MILL编程之前,模具加工工艺必须被完全设计和确定。
这包括所需的切削工具、切削参数、刀具路径、加工顺序等。
在进行P-MILL编程时,操作员必须对加工工艺进行详细的规划和分析,缺乏加工顺序和切削参数的规划和分析将导致加工误差和损失。
3. 刀路策略设计刀路策略是P-MILL编程的核心。
如何制定最佳刀路,能够显著提高加工效率和加工精度。
因此,在刀路策略的设计中需要选择合适的或适当的加工模式和加工参数。
加工模式包括模具的扫描、磨削和半开隙加工等等。
加工参数包括加工刀具的尺寸、刀头倾角、刀具形状、刀具路径和扫描速度等等。
4. 刀具库准备为了保证P-MILL编程的准确性,我们需要对数控机床所使用的刀具进行库存管理。
我们通过创建刀具库分别存储不同的刀具和刀具工艺技术,能够提高刀具和加工效率,大大缩短加工时间和费用。
每个刀具的尺寸和特性应被完全了解,以确保其在P-MILL加工过程中的效率。
5. 加工操作详细规划和预测的P-MILL编程能够帮助操作工快速完成工作。
在P-MILL编程过程中,我们可以设定计划中的最大加工深度,以避免错误加工。
如果加工深度过浅,将导致增加加工时间和费用,在加工过程中产生薄壁,从而导致加工误差。
注意事项在应用P-MILL技术时,需要注意以下几点:1. 需要精确计算所有参数,避免出现浪费和误差。
2. 建立刀具分类标准,每个刀具具有特定的使用条件和工艺技术。
利用PML语言开发PDMS建模
利用PML语言开发PDMS建模作者:张博陈冬霞来源:《数字技术与应用》2014年第06期摘要:PDMS三维配管设计中,PDMS 前期的建模和后期的出图占据了很大的比重。
前期建立的PDMS数据库资源丰富,如何开发这个宝藏,是我们面临的一个重要课题。
本文简要介绍如何利用PML 语言,编程解决PDMS建模中的一些问题,重点阐述了如何编程实现一步设定一批管道绝热信息,在附录中列出程序并做了相应的程序说明。
通过开发利用PML语言编程,以期降低工作强度,提高工作效率。
关键词:PDMS PML语言编程管道绝热中图分类号:TQ050.2 文献标识码:A 文章编号:1007-9416(2014)06-0189-011 概述PDMS是英国AVEVA公司开发的三维工厂设计系统,是工厂设计管理系统(Plant Design Management System)的简称,目前在国内已被广泛应用于石化、冶炼、制药、电力等行业。
较之传统的CAD等平面设计软件,PDMS以数据库作支撑,通过PML(Programmable Macro Language)可编程宏语言后台运行,借助三维实体模型表观,直观而精准的体现了空间内设备、管道、结构等的相互位置关系,且支持提取平立面图纸和表格,经简单整理即可生成项目的施工文件,达到无差错,最优化设计,使现有的设计思想、方法及过程都发生一系列变革,为工程设计人员提供了全新的设计方法和手段。
本文通过PML编程语言的二次开发,找到了一种自动设置管道解热等级的方法,从而避免了手动设置,且可以批处理,从而大大提高了工作效率。
2 PML语言编程在PDMS建模中的应用PDMS常规上管道模型,一般是按照PID将各管件,法兰,阀门等依次合理的布置在某一空间里(当然包括管线命名,如XSC1303A-80-S9A-H3-GC2),最后再设置管道绝热。
管道的绝热设置一般是逐个手动设置绝热等级(如H3),因为只有设置好后,利用相应模板抽出的表格才有保温厚度。
PML使用手册一
1SIPM/PLM概述制造业是人类财富在20 世纪空前发展的主要贡献者。
没有制造业的发展,就没有今天人类的现代物质文明。
高度发达的制造业已成为衡量一个国家国际竞争力的重要标志,成为一个国家在国际市场上获胜的关键要素。
在全球化市场的大背景下,制造业产品的上市时间和成本是竞争的两个主要方面,如何缩短产品上市时间和降低产品的费用永远是企业孜孜追求的目标,同时用户个性化需求的增长导致了市场的离散化趋势越来越明显,它要求企业拥有更强大的研发与设计手段,更敏捷地对市场做出反应的机制。
纵观国际制造业的发展,制造业面临的挑战主要有:●对全球市场的快速响应能力。
●全方位竞争信息的快速捕捉、收集和转化。
●快速配置与系统集成人、技术和资源系统。
●可持续发展与对环境的适应性。
●可重组的企业。
●创新与改进制造流程和工艺技术。
面对这些挑战,以快速产品创新、精益制造为核心竞争力,以创新求发展已逐步成为制造企业的共识。
激烈的市场竞争,迫使企业必须整合企业内外部信息资源,对内以信息技术为核心,提高产品的开发能力和企业知识沉淀,保证质量体系有效执行和持续改善,打破部门之间、各种应用系统之间的信息孤岛;对外以信息技术为核心实现企业与客户之间、企业与供应商之间的高速信息共享。
因此建立以产品为核心组织企业数据、能适应企业的组织、流程、生产方式不断动态变化的信息化系统已经成为企业生存与发展的必然选择。
思普产品数据管理系统SIPM/PLM通过支持从产品构思到产品报废的整个生命周期中,将企业及其合作伙伴范围内的人员、过程、业务系统和信息系统(如CAD/CAE/CAM/CAPP/ERP等)加以整合和集成,完成异地分布式协同、合作、创新、生产制造、实施服务、环境保护以及产品推广等活动。
SIPM/PLM采用J2EE分布式可伸缩管理架构、领先的业务模型驱动思想,使企业能够自如地应对瞬息变化的市场需求,它全面支持大中小型企业整合和改善业务流程、开展产品全生命周期数据管理和跨地域的异地远程开发管理,帮助企业提升产品研发质量、降低研发成本、加快创新性产品开发的上市进程。
常用MML命令汇集
常用MML命令汇集增加(ADD)查询状态(DSP) 查询配置(LST) 删除(RMV) 激活(ACT) 复位(RST) 备份(BKP) 修改(MOD)闭塞(BLK)解闭塞(UBL) 设置(SET) 去激活(DEA) 载波资源(CARRIERRES) 单板(BRD) 扇区(SECTOR)查询光电模块动态信息(DSP SFP)增加单板(ADD BRD)查询单板(DSP BRD)查询CPRI端口动态信息(DSP CPRIPORT)查询RRU状态(DSP TDRRU)显示驻波检测任务(DSP VSWRTEST)查询BBU电源板状态(DSP UPEU)查询单板版本信息(DSP BRDVER)查询网元时间(DSP TIME)查询单板版本信息(DSP BRDVER)激活软件(ACT SOFTWARE)备份配置数据(BKP CFGFILE)激活配置数据(ACT CFGFILE)查询NodeB(LST TDSNODEBFUNCTION)复位单板(RST BRD)修改NodeB(MOD TDSNODEBFUNCTION)查询网元当前状态(DSP MNTMODE)查询基站名称(LST RBSNAME)增加设备IP地址(ADD DEVIP)查询设备IP配置信息(LST DEVIP)查询设备IP地址(DSP DEVIP)查询静态路由配置信息(LST IPRT)增加IP路由(ADD IPRT)增加SCTP链路(ADD SCTPLNK)查询SCTP链路状态(DSP SCTPLNK)查询CP承载状态(DSP CPBEARER)增加CP承载(ADD CPBEARER)查询下一跳VLAN映射配置信息(LST VLANMAP)增加下一跳VLAN的映射(ADD VLANMAP)删除下一跳VLAN映射(RMV VLANMAP)增加远端维护通道(ADD OMCH)查询远端维护通道状态(DSP OMCH)查询远端维护通道配置信息(LST OMCH)增加本地小区设备(ADD LOCELL)删除本地小区设备(RMV LOCELL)增加扇区(ADD SECTOR)查询活动告警(LST ALMAF)闭塞本地小区设备(BLK LOCELL)查询单板制造信息(DSP BRDMFRINFO)。
pml编程
用 PML与Cadcentre产品的信息传递
所有命令都需以字符串的形式传给命令解释器. 提取一个PML 变量值,并赋给一个字符串 -- 在变量前加 $ 例如: !CompType = ‘ELBO’ !dist = 5600 NEW $!CompType DIST $!dist
CADCENTRE
s
s
大多数pml都是基于formcadcentrepmlprogrammablemacrolanguagepml可编程宏语言macros是包含pdms命令序列的ascii文件programmablemacros可编程宏是包含程序语statementsif语句和doloopsdomacros在pdms中通过mfilename来执行在macroline中任何额外位当做为parameters参mbuildbox100200300意味着宏文件名后的额外的3个值被当做为参数1这可在macro中用来设置pdms属性或作为计算cadcentrepml2pml2更象其它现代型语言大多数pml1编写的宏仍可在pml2中运行pml2包含许多pml1所没有的功能cadcentrepml术语objectsfunctionsobjectblockspmllibpmlfrmcadcentrepml2的新功能新的变量类型stringrealbooleanarray内置methods用作一般的执行新的globalfunctions全程函数替代了老式的宏用户自定义的objecttypes对象类型新的pml搜索路径pmllib动态调用formsfunctions和objects新的几何建模的aidobjects辅助对象cadcentre一个简单的macronewequipfrednewboxxlen300ylen400zlen600newcyldia400hei600connp1prev一个宏仅仅是包含一些命令的一个文件macro
AM软件常用命令大全
查询属性
Q Att
查询类型
Q Type
查询可以生成的类型
Q List
查询环境变量
Q evar pdmsuser
清屏
命令行清屏
Alpha request clear
新建
生成
New (Type)
删除
Delete (Type)
命名
查询
q name
q fullname
Branch)
– CONN PH TO ID NOZZ@
新建元件Choose
设置自动连接
Choose AutoConnect On
从Branch等级中选择元件,显示元件描述
New Gask Choose Rtext(Or Stex,Ttex)
New Flan Choose Rtext
Branch收尾Conn PT to Last mem
Output CE
File End
执行宏程序
$m D:\output.txt
辅助定位点
辅助定位点,最多10个
Pin1 AT U1000
关闭辅助定位点
Pin1 Off
PDMS管道建模常用命令
新建Pipe,Branch
建立Pipe,指定等级
New Pipe /100-P-2003-2.5A1-ST(1)
exit
追踪
追踪程序执行过程$R6,退出追踪$R
追踪程序执行过程和变量的值,在控制台显示
Pml trace on
pml trace off
记录命令行追踪内容
log /filename
pml基础语法简明教程
pml基础语法简明教程第一部分: 基础知识PML基本概念Programmable Macro Language 可编程宏语言.通常的PML开发包括两部分, 一部分是PML宏,脚本语言; 另一部分是PML2,面向对象的编程语言.1.PML宏(Macro)宏, 就是一系列pml命令的集合.通过$m执行.格式为: $m filename [param1 param2 ….](举例)其中param1为参数, 宏可以参数化.(举例)2.面向对象的PML2PML支持对象(Object),对话框(Form)和菜单(Menu).(举例)一.变量,函数和方法1. 变量的定义及用法在PML2中, 每一个变量都是对象. 变量名以!或者!!开头,例如!weight. !开头的变量为局部变量, !!开头的为全局变量.PML内置了常用的变量类型.(1)Real 实属类型. 提供基本的四则运算操作. 例如!a = 10!b = 10!a = !a + !b$p $!a --输出变量a的值(2)String 字符串类型. 例如!strName = ‘/EQUI-TEST-1’(3)Boolean 用于逻辑表达式. 值只能是true/false(4)Array 数组(5)Position(6)Direction3.变量的创建, 删除, 查看变量可以用赋值来创建. 例如!str = ‘abc’也可以用类型标识来创建.!str= string()!str= ‘abc’删除: !str.delete()查看:通常使用q var!str也可以用$p $!str4.方法(method) 和函数(Function)Method是一个对象的子程序. 只有当对象存在,才可以调用对象的方法. 例如!strNum = ‘123’!num= !strNum.Real()$p $!num以上的代码, 调用的string类型的real()方法, 将字符串转换为数字,并输出.函数的用法与方法类似, 同样有参数和返回值. 但函数是独立存在的,全局的. 在任何地方, 都可以调用.二.程序的结构控制1.循环语句(1)Do循环例如:!sum = 0Do !i From 1 To 100 By 1!sum = !sum + !iEnddo其中!i为循环变量, 初始值为1, 终指为100, 步长为1. 当步长为1是,一般省略.(2)中断Break: 中断并跳出最内层循环(3)跳过Skip. 跳过当此存换. 例如!sum = 0Do !i From 1 To 100 By 1Skip if ( int(!i / 2) eq (!i / 2)) $* 跳过所有的偶数!sum = !sum + !iEnddo2.逻辑控制语句格式为if () then …else…其中括号内的必须是表达式.例如:IF (TYPE OF OWNER EQ ‘BRAN’) THEN$P BRANCH $!!/doc/699641110.html, ELSEIF (TYPE EQ ‘BRAN’) THEN$P BRANCH $!!/doc/699641110.html, ELSE$P NOT BRANCHENDIF其中elseif /else可选, elseif可多个.3.跳转语句定义标记Label /label1跳转Golabel /gol1不建议使用.三.其他相关语句1.数组字符串长度Length()类型转换Real(),Position(),Boolean()大小写转换LowCase(),UpCase()两端截取After(str2),Before(str2),Substring(index) 中间截取Substring(index,nchars)替换Replace(str2,str3)匹配Match(str2)分割(返回数组) Split()修剪Trim()2.字符串元素数量Size()追加元素Append(value)追加数组AppendArray(Array)删除全部元素Clear()倒序Invert()搜索Find(value),FindFirst(value)和并重复项Unique()3.表达式(1)算术运算符+ - * /(2)连接运算符&(3)比较运算符LT GT EQ NEQ(4)逻辑运算符AND OR NOT4.计算函数Sqrt(x)Power(x, e)Int(x)Sin(x)Cos(x)5.注释单行注释用—开头. –之前不可出现空格之外的字符单行注释$*. $*之后的内容为注释. $*之前可出现其他字符段落注释. 用$(和$)将注释内容包括进来.(举例)6.打印$p 打印内容例如$p test line打印多行$p line 1 $Line 2输出内容包括变量$p /doc/699641110.html, is $!!/doc/699641110.html,其中$为转义字符, 如果要输出$, 则使用$$7.异常处理程序运行中, 可能需要意料之中的可能发生的异常/错误, 例如节点创建失败, 遍历子节点时超过最后一个等等. 这时需要捕捉异常,作出相应的处理.(1)异常捕捉例如Site /TEST_SITEHandle (2, 109) $*$p节点不存在Endhandle其中(2, 109)为错误编号. 也可以使用handle any捕捉任意类型的错误.(2)捕捉多个异常Site /TEST_SITEHandle (2, 109) $*$p节点不存在Elsehandle (2, 108)$p /TEST_SITE节点存在, 但不是SITE类型elsehandle none$p Site /TEST_SITE节点存在endhandle其中handle none表示没有遇到错误的情况.四.用户自定义方法/用自定义函数/自定义对象(1)自定义方法Define method .方法名(参数1 is 类型, 参数2 is 类型…) is 返回值类型其中参数可没有返回值可以没有例如Define method .Sum(!a is real, !b is real) is real!sum = !a + !bReturn !numendmethod(2)自定义函数Define function !!sum(!a is real, !b is real) is real!sum = !a + !bReturn !numendFunction与方法类似. 一个文件里只能定义一个函数,扩展名为pmlfnc, 必须放在指定的文件夹下,并执行pml rehash all(3)自定义对象Define object 对象名endobject五.文件处理(1)读取!file = object FILE(‘d:\abc123.txt')!lines = !file.ReadFile()Qvar!lines(2)写入!arr = array()!arr.append(‘line1’)!arr.append(‘line1’)!file = object FILE('d:\abc.txt')!file.WriteFile('WRITE', !arr) $*将数组!arr写入文件其中’Write’可以换成'OVERWRITE'(覆盖)和'APPEND'(追加)六.对话框及菜单1.系统对话框(1)询问!!alert!confirm = !!alert.confirm('确定要删除吗?')if(!confirm neq 'YES') thenreturnendif(2)警告!!alert.message(‘message’)(3)错误提示!!alert.error(‘error’)2.自定义对话框SETUP FORM !!custumFormTITLE '自定义对话框’Text .text1 ‘点击按钮’Button .okExit这是一个最简单的对话框, 显示一个文本框加上按钮, 但是点击按钮不会有任何反应. (截图)3.对话框调用/初始化Pmlhash allPml reload form !!custumFormShow !!custumForm4.默认构造方法/初始化方法每个form初始化时, 会自动调用与其名字相同的方法. 在刚才的代码中加上Define method .custumForm()!this.text1.tag = ‘初始化完成’Endmethod除此以外, 还可以加上默认的初始化函数在开头加上一行!this.initcall = '!this.init()', 调用构造方法结束,显示之前,会自动调用init()方法5.界面消息的响应界面消息的相应, 例如点击按钮, 选择下拉框等, 用callback关联.SETUP FORM !!custumFormTITLE '自定义对话框’Text .text1 ‘点击按钮’Button .ok ‘OK’ExitDefine method .custumForm()!this.text1.tag = ‘初始化完成’!this.ok.callback = ‘!this.ok()’EndmethodDefine method .ok()!!alert.message(‘OK’)Endmethod此时, 点击按钮, 会弹出对话框. (截图)。
MML命令
X2环境配置-X2传输 ADD ETHPORT ADD DEVIP ADD SCTPLNK ADD X2INTERFACE ADD IPPATH
添加以太网端口 添加X2DEVIP 配置SCTP链路数据 配置X2接口 配置X2-IPPATH
站间同频切换环境配置
创建两个相同频点的小区
ADD EUTRANEXTERNALCELL 创建外部小区
LBBP
ADD BRD
配置BBU机框单板数据
UPEU FAN
ADD BRD ADD BRD
LMPT
ADD BRD
配置RRU射频模块数据
增加RRU链环 增加RRU
ADD RRUCHAIN ADD RRU
配置GPS时钟模块数据
增加GPS信息 设置参考时钟源工作模式
ADD GSET MNTMODE
配置底层IP传输数据
增加以太网端口 增加设备IP地址
ADD ETHPORT ADD DEVIP
配置S1-C接口对接数据
增加基站S1接口信令IP 增加对端MME信息
ADD S1SIGIP ADD MME
配置S1-U接口对接数据
增加基站S1接口服务IP 增加对端SGW信息
ADD S1SERVIP ADD SGW
MOD ENODEB ADD CNOPERATOR ADD CNOPERATORTA ADD CABINET ADD SUBRACK ADD BRD ADD BRD ADD BRD ADD BRD ADD RRUCHAIN ADD RRU ADD GPS SET CLKMODE SET MNTMODE ADD ETHPORT ADD DEVIP ADD SCTPLNK ADD S1INTERFACE ADD IPPATH ADD SECTOR ADD CELL ADD CELLOP ACT CELL
MATLAB中文手册
Matlab中文手册目录 (1)第1章MATLAB 6.5环境 (11)1.1 MATLAB简介 (11)1.1.1 MATLAB工具箱 (11)1.1.2 MATLAB功能和特点 (12)1.2 MATLAB 6.5环境设置 (13)1.2.1 菜单栏 (13)1.2.2 工具栏 (18)1.2.3 通用操作界面窗口 (18)1.3 MATLAB 6.5帮助 (32)1.4 MATLAB 6.5其他管理 (35)1.4.1 MATLAB用户文件格式 (35)1.4.2设置搜索路径 (36)1.4.3文件管理命令 (37)1.4.4 退出MATLAB (39)1.5 一个实例 (39)第2章MATLAB数值计算 (43)2.1 变量和数据 (43)2.1.1数据类型 (43)2.1.2数据 (43)2.1.3变量 (46)2.2 矩阵和数组 (47)2.2.1矩阵输入 (47)2.2.2矩阵元素和操作 (54)2.2.3字符串 (65)2.2.4矩阵和数组运算 (72)2.2.5多维数组 (92)2.3稀疏矩阵 (98)2.3.1稀疏矩阵的建立 (98)2.3.2稀疏矩阵的存储空间 (103)2.3.3稀疏矩阵的运算 (105)2.4多项式 (105)2.4.1多项式的求值、求根和部分分式展开 (105)2.4.2多项式的乘除法和微积分 (109)2.4.3多项式拟合和插值 (112)2.5元胞数组和结构数组 (115)2.5.1元胞数组 (116)2.5.2结构数组 (121)2.6数据分析 (127)2.6.1数据统计和相关分析 (127)2.6.2差分和积分 (129)2.6.3卷积和快速傅里叶变换 (134)2.6.4向量函数 (137)第3章MATLAB符号计算 (138)3.1 符号表达式的建立 (138)3.1.1 创建符号常量 (138)3.1.2 创建符号变量和表达式 (141)3.1.3 符号矩阵 (143)3.2符号表达式的代数运算 (145)3.2.1符号表达式的代数运算 (146)3.2.2 符号数值任意精度控制和运算 (149)3.2.3 符号对象与数值对象的转换 (152)3.3符号表达式的操作和转换 (154)3.3.1符号表达式中自由变量的确定 (154)3.3.2符号表达式的化简 (156)3.3.3符号表达式的替换 (161)3.3.4求反函数和复合函数 (164)3.3.5 符号表达式的转换 (166)3.4 符号极限、微积分和级数求和 (169)3.4.1符号极限 (169)3.4.2符号微分 (171)3.4.3符号积分 (174)3.4.4符号级数 (176)3.5 符号积分变换 (178)3.5.1傅里叶(Fourier)变换及其反变换 (178)3.5.2拉普拉斯(Laplace)变换及其反变换 (180)3.5.3 Z变换及其反变换 (181)3.6符号方程的求解 (183)3.6.1代数方程 (183)3.6.2符号常微分方程 (185)3.7符号函数的可视化 (186)3.7.1符号函数的绘图命令 (186)3.7.2图形化的符号函数计算器 (189)3.8 Maple函数的使用 (189)3.8.1访问Maple函数 (190)3.8.2 获得Maple的帮助 (191)第4章MATLAB计算的可视化和GUI设计 (192)4.1二维曲线的绘制 (192)4.1.1基本绘图命令plot (192)4.1.2绘制曲线的一般步骤 (198)4.1.3多个图形绘制的方法 (199)4.1.4曲线的线型、颜色和数据点形 (202)4.1.5设置坐标轴和文字标注 (204)4.1.6交互式图形命令 (210)4.2 MATLAB的三维图形绘制 (211)4.2.1绘制三维线图命令plot3 (211)4.2.2绘制三维网线图和曲面图 (212)4.2.3立体图形与图轴的控制 (217)4.2.4色彩的控制 (220)4.3 MATLAB的特殊图形绘制 (225)4.3.1条形图 (225)4.3.2面积图和实心图 (227)4.3.3直方图 (228)4.3.4饼图 (230)4.3.5离散数据图 (231)4.3.6对数坐标和极坐标图 (232)4.3.7等高线图 (234)4.3.8复向量图 (235)4.4图形窗口的功能 (236)4.5对话框 (238)4.6句柄图形 (242)4.6.1句柄图形体系 (242)4.6.2图形对象的操作 (242)4.6.3图形对象属性的获取和设置 (248)4.7图形用户界面(GUI)设计 (251)4.7.1可视化的界面环境 (252)4.7.2菜单 (253)4.7.5回调函数 (258)4.7.6 GUI应用举例 (258)4.8动画 (261)4.8.1以电影方式产生动画 (261)4.8.2以对象方式产生动画 (262)第5章MATLAB程序设计 (264)5.1脚本文件和函数文件 (264)5.1.1 M文本编辑器 (265)5.1.2 M文件的基本格式 (265)5.1.3 M脚本文件 (266)5.1.4 M函数文件 (268)5.2程序流程控制 (269)5.2.1 for ... end循环结构.. (269)5.2.2 while ... end循环结构. (271)5.2.3 If...else...end条件转移结构 (272)5.2.4 switch...case开关结构.. (273)5.2.5 try... catch... end试探结构 .. (275)5.2.6流程控制语句 (276)5.3函数调用和参数传递 (280)5.3.1子函数和私有函数 (280)5.3.2局部变量和全局变量 (281)5.3.4程序举例 (287)5.4 M文件性能的优化和加速 (289)5.4.1 P码文件 (289)5.4.2 M文件性能优化 (290)5.4.3 JIT和加速器 (292)5.5内联函数 (295)5.6利用函数句柄执行函数 (298)5.6.1函数句柄的创建 (298)5.6.2用feval命令执行函数 (299)5.7利用泛函命令进行数值分析 (301)5.7.1求极小值 (302)5.7.2求过零点 (304)5.7.3数值积分 (305)5.7.4微分方程的数值解 (306)第6章线性控制系统分析与设计 (309)6.1线性系统的描述 (309)6.1.1状态空间描述法 (309)6.1.2传递函数描述法 (311)6.1.3零极点描述法 (312)6.1.4离散系统的数学描述 (313)6.2线性系统模型之间的转换 (317)6.2.1连续系统模型之间的转换 (317)6.2.2连续系统与离散系统之间的转换 (325)6.2.3模型对象的属性 (330)6.3结构框图的模型表示 (334)6.4线性系统的时域分析 (348)6.4.1零输入响应分析 (348)6.4.2脉冲响应分析 (350)6.4.3阶跃响应分析 (351)6.4.4任意输入的响应 (353)6.4.5系统的结构参数 (356)6.5线性系统的频域分析 (358)6.5.1频域特性 (358)6.5.2连续系统频域特性 (359)6.5.3幅值裕度和相角裕度 (366)6.5.4离散系统频域分析 (367)6.6线性系统的根轨迹分析 (367)6.6.1绘制根轨迹 (367)6.6.2根轨迹的其它工具 (370)6.7线性系统的状态空间设计 (373)6.7.1极点配置法 (373)6.7.2最优二次型设计 (374)第7章Simulink仿真环境 (376)7.1演示一个Simulink的简单程序 (376)7.2 Simulink的文件操作和模型窗口 (379)7.2.1 Simulink的文件操作 (379)7.2.2 Simulink的模型窗口 (380)7.3 模型的创建 (382)7.3.1模块的操作 (382)7.3.2信号线的操作 (385)7.3.3给模型添加文本注释 (387)7.4 Simulink的基本模块 (387)7.4.1基本模块 (387)7.4.2常用模块的参数和属性设置 (390)7.5复杂系统的仿真与分析 (395)7.5.1仿真的设置 (395)7.5.2连续系统仿真 (397)7.5.3离散系统仿真 (400)7.5.4仿真结构参数化 (402)7.6子系统与封装 (403)7.6.1建立子系统 (403)7.6.2条件执行子系统 (405)7.6.3子系统的封装 (407)7.7用MATLAB命令创建和运行Simulink模型 (413)7.7.1用MATLAB命令创建Simulink模型 (413)7.7.2用MATLAB命令运行Simulink模块 (417)7.8以Simulink为基础的模块工具箱简介 (418)第8章MATLAB高级应用 (419)8.1 MATLAB应用接口 (419)8.1.1 MEX文件 (419)8.1.2 使用MATLAB编译器生成MEX和EXE文件 (424)8.2 低级文件的输入输出 (426)8.2.1打开和关闭文件 (426)8.2.2读写格式化文件 (428)8.2.3读写二进制数据 (433)8.2.4文件定位 (435)8.3 图形文件的转储 (437)8.4 Notebook (438)8.4.1 Notebook的安装 (438)8.4.2 Notebook的启动 (438)8.4.3 Notebook的使用 (441)8.4.4 Notebook中MATLAB的使用 (445)第1章MATLAB 6.5环境1.1MATLAB简介●MATLAB(Matrix Laborator)是MathWorks公司开发科学与工程计算软件;●广泛应用于自动控制、数学运算、信号分析、计算机技术、图像信号处理、财务分析、航天工业、汽车工业、生物医学工程、语音处理和雷达工程等行业;●国内外高校和研究部门科学研究的重要工具;●MATLIB 已成为数学计算工具方面事实上的标准,MATLIB 6.5是最新版本。
M-Design 用户手册说明书
M-Design用户手册V3.7.2杭州华望系统科技有限公司前言概述本用户手册主要介绍了M-Design建模设计软件所有的功能与操作。
读者对象本需求手册适用于以下读者:●MBSE实施建模人员●设计研发人员目录1.引言 (1)1.1编写目的 (1)1.2背景 (1)2.安装M-Design (2)2.1系统要求 (2)2.2安装步骤 (2)2.3License激活 (6)2.3.1固定license激活 (7)2.3.1.1通过license文件激活 (7)2.3.1.2通过手工输入license激活 (9)2.3.2服务器账号激活 (10)3.用户使用指南 (12)3.1欢迎页 (12)3.1.1教程页 (12)3.1.2产品介绍页 (13)3.2用户界面 (14)3.2.1菜单栏 (14)3.2.2工具栏 (15)3.2.3项目面板 (16)3.2.3.1模型树 (16)3.2.3.1.1模型树工具栏 (16)3.2.3.1.2模型树功能 (16)3.2.3.2图表 (17)3.2.4属性面板 (18)3.2.5图表工作区 (19)3.2.5.1图表标签栏 (19)3.2.5.2图表工具栏 (19)3.2.5.3组件区 (20)3.2.5.4绘图区 (21)3.2.5.5图表区工具条 (22)3.2.5.5.1缩略图 (22)3.2.5.5.3文字设置 (23)3.2.5.5.4布局设置 (24)3.2.5.5.5画布设置 (25)3.2.6状态栏 (25)3.3项目 (26)3.3.1创建项目 (26)3.3.2保存项目 (27)3.3.3打开项目 (27)3.3.4导入项目 (28)3.3.5导出项目 (28)3.3.6切换项目 (28)3.3.7文件恢复 (28)3.3.8导入需求 (29)3.3.8.1从Excel文件中导入需求 (29)3.3.8.2从ReqIF文件中导入需求 (30)3.3.8.3从M-Require中同步需求 (31)3.3.8.4从M-Require中更新需求 (32)3.4绘图功能 (33)3.4.1创建图表 (34)3.4.2打开图表 (35)3.4.3图表头部信息 (35)3.4.4复制和粘贴对象 (36)3.4.5使用图表标签 (36)3.4.6设置图表属性 (36)3.4.7操作图元 (38)3.4.7.1创建图元 (39)3.4.7.2删除图元 (39)3.4.8操作关系和路径 (40)3.4.8.1创建关系 (40)3.4.8.1.1在模型树上创建关系 (40)3.4.8.1.2在图表上创建关系 (43)3.4.8.2删除关系 (43)3.4.9显示关联 (44)3.4.9.2显示关系连线 (44)3.4.9.4显示关联元素 (44)3.4.10情境工具 (45)3.4.10.1情境操作按钮 (45)3.4.10.2情境工具条 (46)3.4.11缩放 (47)3.4.11.1使用缩放按钮 (47)3.4.11.2使用缩略图 (47)3.4.12使用网格 (47)3.4.12.1显示网格 (47)3.4.12.2调整网格尺寸和颜色 (48)3.5模型元素操作 (48)3.5.1创建模型元素 (48)3.5.2元素导航 (49)3.5.3元素定位 (49)3.5.4编辑属性 (50)3.5.5修改元素名称 (50)3.5.6删除元素 (50)3.6图表 (51)3.6.1SysML图表 (51)3.6.1.1模块定义图 (52)3.6.1.1.1目的 (52)3.6.1.1.2用途 (52)3.6.1.1.3总结 (53)3.6.1.2内部模块图 (53)3.6.1.2.1目的 (53)3.6.1.2.2用途 (53)3.6.1.2.3总结 (54)3.6.1.2.4使用 (54)3.6.1.3用例图 (55)3.6.1.3.1目的 (55)3.6.1.3.2用途 (55)3.6.1.3.3总结 (55)3.6.1.4活动图 (56)3.6.1.4.1目的 (56)3.6.1.4.3总结 (56)3.6.1.5序列图 (57)3.6.1.5.1目的 (57)3.6.1.5.2用途 (57)3.6.1.5.3总结 (57)3.6.1.6状态机图 (58)3.6.1.6.1目的 (58)3.6.1.6.2用途 (58)3.6.1.6.3总结 (58)3.6.1.7参数图 (59)3.6.1.7.1目的 (59)3.6.1.7.2用途 (59)3.6.1.7.3总结 (59)3.6.1.8包图 (60)3.6.1.8.1目的 (60)3.6.1.8.2用途 (60)3.6.1.8.3总结 (60)3.6.1.9需求图 (61)3.6.1.9.1目的 (61)3.6.1.9.2用途 (61)3.6.1.9.3总结 (61)3.6.2分析图表 (62)3.6.2.1通用矩阵 (62)3.6.2.1.1创建通用矩阵 (62)3.6.2.1.2使用通用矩阵 (62)3.6.2.2需求追溯图 (71)3.6.2.2.1创建需求追溯图 (72)3.6.2.2.2使用需求追溯图 (74)3.6.3表格 (78)3.6.3.1表格工具栏 (79)3.6.3.2创建表格 (79)3.6.3.3通用表 (79)3.6.3.4需求表 (81)3.6.3.4.1需求表工具栏 (82)3.6.3.4.3编辑需求 (84)3.6.3.4.4设置显示字段 (84)3.6.3.4.5搜索需求 (85)3.6.3.4.6创建需求关系 (85)3.6.3.4.7删除/移出需求 (86)3.6.3.5黑盒ICD表 (87)3.6.3.5.1新建黑盒ICD表 (87)3.6.3.5.2设置显示字段 (87)3.6.3.5.3设置查询范围 (88)3.6.3.6部件ICD表 (88)3.6.3.6.1新建部件ICD表 (88)3.6.3.6.2设置显示字段 (89)3.6.3.6.3设置查询范围 (89)3.7数据交换 (94)3.7.1xml导入导出 (94)3.7.1.1xml标准格式导出 (94)3.7.1.2xml标准格式导入 (95)3.7.2图片导出 (96)3.8模型分析 (96)3.8.1模型校验 (96)3.9SysML常用元素 (97)3.9.1包Package (97)3.9.1.1显示包元素的内部结构 (97)3.9.1.2使用嵌套来表达包含关系 (97)3.9.1.3创建包的包含关系 (98)3.9.2包导入Package Import (99)3.9.2.1创建包导入关系 (99)3.9.3元素导入Element Import (100)3.9.3.1创建元素导入 (100)3.9.4模块Block (101)3.9.4.1添加属性 (101)3.9.4.2添加端口 (103)3.9.5接口模块Interface Block (104)3.9.5.1使用接口模块作为完整端口的类型 (104)3.9.6约束模块Constraint Block (105)3.9.6.1设置约束表达式 (106)3.9.6.2自动解析参数 (108)3.9.7值类型ValueType (108)3.9.8度量类型QuantityKind (109)3.9.9度量单位Unit (109)3.9.10枚举类型Enumeration (109)3.9.10.1对枚举类型添加字面量 (109)3.9.11信号Signal (110)3.9.12实例Instance (110)3.9.12.1创建模块的实例 (110)3.9.13接口Interface (111)3.9.14端口Port (111)3.9.14.1设置提供/请求接口 (111)3.9.15代理端口ProxyPort (112)3.9.15.1创建代理端口 (112)3.9.16完整端口FullPort (113)3.9.17实例连接Link (113)3.9.18关联关系Association (113)3.9.18.1使用引用关联创建引用属性 (113)3.9.19定向关联DirectedAssociation (114)3.9.20聚合关系Aggregation (115)3.9.20.1转变聚合关系为关联关系 (115)3.9.21定向聚合DirectedAggregation (115)3.9.22组合关系Composition (115)3.9.22.1使用组合关系创建部件属性 (115)3.9.23泛化关系Generalization (116)3.9.23.1使用泛化实现针对抽象的设计 (117)3.9.24使用Usage (119)3.9.25执行者Actor (119)3.9.25.1连接关系 (119)3.9.26用例UseCase (119)3.9.26.1添加属性 (120)3.9.26.2连接关系 (120)3.9.27项目流ItemFlow (120)3.9.28测试用例TestCase (121)3.9.28.1创建测试用例 (121)3.9.28.2添加关系 (121)3.9.29需求Requirement (122)3.9.29.1添加属性 (122)3.9.29.2连接关系 (122)3.9.30满足Satisfy (123)3.9.31派生需求DeriveReqt (124)3.9.32复制Copy (124)3.9.33追踪Trace (125)3.9.34验证Verify (125)3.9.35精化Refine (126)3.9.36简单状态Simple State (127)3.9.36.1添加区域 (127)3.9.36.2状态机图内部行为 (128)3.9.36.3连接关系 (130)3.9.37复合状态Composite State (131)3.9.38子状态机Submachine State (131)3.9.39起始状态Initial (131)3.9.40终止状态Final State (132)3.9.41终止Terminate (132)3.9.42入口点Entry Point (132)3.9.43出口点Exit Point (133)3.9.44结合连接器Connection Point Reference (133)3.9.44.1选择入口点和出口点 (133)3.9.45深层历史连接器Deep History (134)3.9.46浅层历史连接器Shallow History (134)3.9.47连接器Junction (135)3.9.48转换Transition (135)3.9.49到自己的转换Transition to Self (136)3.9.50有效性度量Measure of effectiveness (136)3.9.51目标函数Objective Function (137)3.9.52动作Action (137)3.9.53调用行为动作Call Behavior Action (138)3.9.54调用操作动作Call Operation Action (138)3.9.55不透明动作Opaque Action (139)3.9.55.1设置不透明动作的内容 (139)3.9.56对象节点Object Node (140)3.9.57活动参数节点Activity Parameter Node (140)3.9.58控制流Control Flow (141)3.9.59对象流Object Flow (141)3.9.60发送信号动作Send Signal Action (141)3.9.61接受事件动作Accept Event Action (141)3.9.62等待时间动作Wait Time Action (142)3.9.63活动起点Initial Node (142)3.9.64活动终点Activity Final (142)3.9.65流终点Flow Final (142)3.9.66判断节点Decision (143)3.9.67合并节点Merge (143)3.9.68异常处理器Exception Handler (143)3.9.69可中断活动区域Interruptible Activity Region (143)3.9.70结构化节点Structured Activity Node (143)3.9.71条件节点Conditional Node (144)3.9.72栓Pin (144)3.9.73泳道Swimlanes (144)3.9.74流端口Flow Port (144)3.9.75值属性Value Property (145)3.9.76部件属性Part Property (145)3.9.77引用属性Reference Property (145)3.9.78约束属性Constraint Property (145)3.9.79流属性Flow Property (145)3.9.80参与者属性Participant Property (146)3.9.81约束关联Bound Reference (146)3.9.82类型行为属性ClassifierBehaviorProperty (146)3.9.83连接器Connector (146)3.9.84绑定连接器Binding Connector (146)3.9.85生命线Lifeline (147)3.9.85.1设置生命线的声明 (147)3.9.86组合片段CombinedFragment (149)3.9.86.1选择操作符Option (150)3.9.86.2循环操作符Loop (150)3.9.86.3可选操作符Alternatives (150)3.9.86.4并行操作符Parallel (150)3.9.86.5断开操作符Break (151)3.9.86.6否定操作符Negative (151)3.9.86.7忽略操作符Ignore (151)3.9.87交互引用Interaction Use (151)3.9.88消息Message (151)3.9.89调用消息Call Message (151)3.9.90发送消息Send Message (151)3.9.91回复消息Reply Message (152)3.9.92递归消息Recursive Message (152)3.9.93删除消息Delete Message (152)3.9.94丢失的消息Lost Message (152)3.9.95给自己的消息Message to Self (152)3.9.96时间段约束DurationConstraint (152)3.9.97时间点约束TimeConstraint (153)4.扩展和DSL指南 (155)4.1基础概念 (155)4.2使用扩展包 (155)4.2.1创建扩展包 (155)4.2.2扩展包的导出和导入 (156)4.2.3使用构造型 (157)5.协同建模指南 (160)5.1协同用户 (160)5.1.1登录 (160)5.1.2登出 (161)5.1.3退出 (161)5.2发布新项目 (162)5.3项目列表 (162)5.4检入检出 (164)5.4.1检入 (164)5.4.2检出 (165)5.5快速更新 (166)5.6提交更改 (167)1.引言1.1编写目的M-Design是一款针对SysyML需求建模管理开发的一款工业建模软件,为了便于建模人员了解M-Design的建模设计流程和平台功能,建模流程,产品特点,注意事项等,特制定本手册。
PM 命令及功能说明
作用---- 参考线直接转成刀具路经命令---- COMMIT PATTERN ; \r PROCESS TPLEADS--------------------------------------------------------------------------------作用---- 刀具路经直接转参考线成命令----CREATE PATTERN ;\rEDIT PATTERN ; INSERT TOOLPATH ;\r--------------------------------------------------------------------------------作用----非正常关闭后的只读项目转为可读写项目命令----PROJECT CLAIM--------------------------------------------------------------------------------作用----切换到英文界面命令---- lang english--------------------------------------------------------------------------------作用----切换到中文界面命令---- lang chinese--------------------------------------------------------------------------------PowerMILL不使用PS-Exchange来转换输入的文件,而将使用igetodmt来转换输入的文件。
命令----edit ddx p***change off--------------------------------------------------------------------------------PM 精加工计算路径时视窗不缩小化命令----EDIT PREFERENCE AUTOMINFINFORM YES选单自动往下缩EDIT PREFERENCE AUTOMINFINFORM NO选单不缩--------------------------------------------------------------------------------转到公制单位:EDIT UNITS MM\r转到英吋单位:EDIT UNITS INCHES\r--------------------------------------------------------------------------------批处理完刀路后自动保存:开EDIT PREFERENCE AUTOSAVE YES\r关EDIT PREFERENCE AUTOSAVE NO\r键盘PowerMILL 功能------------------------------------------ CTRL + Numlock + Keypad 0 - 9不同方向的查看---------------------------CTRL O开启专案--------------------------CTRL R更新显示---------------------------CTRL S储存专案---------------------------CTRL A另存专案---------------------------CTRL D删除已选图素---------------------------ALT + V显示检视工具列开关---------------------------CTRL I插入专案---------------------------CTRL P列印---------------------------CTRL H显示十字游标开关---------------------------CTRL T显示刀具开关---------------------------功能键的使用F1说明---------------------------F2显示线架构开关---------------------------F3显示着色开关---------------------------F6放大全视窗---------------------------其它功能ESC取消命令---------------------------按多次 ESC暂停下面介紹大家平常可能沒有用到的快捷操作:1:按住ALT+SHIFT keys並配合滑鼠左,中或右鍵在屏幕上上下移動滑鼠,可以依次由X,Y或Z方向旋轉模型;2:按住CTRL+SHIFT配合滑鼠框選可反向選擇物件(EG:先選中不想要的模型面,再按照前面所說的方式,可反向選擇你想選中的面)。
MATLABsimulink命令集
MATLABsimulink命令集simulink命令集(转载)仿真命令:sim ---仿真运行一个simulink模块sldebug ---调试一个simulink模块simset ---设置仿真参数simget ---获取仿真参数线性化和整理命令:linmod ---从连续时间系统中获取线性模型(状态方程)linmod2 ---也是获取线性模型,采用高级方法dinmod ---从离散时间系统中获取线性模型trim ---为一个仿真系统寻找稳定的状态参数构建模型命令:open_system --打开已有的模型close_system --关闭打开的模型或模块new_system --创建一个新的空模型窗口load_system --加载已有的模型并使模型不可见save_system --保存一个打开的模型add_block --添加一个新的模块add_line --添加一条线(两个模块之间的连线)delete_block --删除一个模块delete_line --删除一根线find_system --查找一个模块hilite_system --使一个模块醒目显示replace_block --用一个新模块代替已有的模块set_param --为模型或模块设置参数get_param --获取模块或模型的参数add_param --为一个模型添加用户自定义的字符串参数delete_param --从一个模型中删除一个用户自定义的参数bdclose --关闭一个simulink窗口bdroot --根层次下的模块名字gcb --获取当前模块的名字gcbh --获取当前模块的句柄gcs --获取当前系统的名字getfullname --获取一个模块的完全路径名slupdate --将1.x的模块升级为3.x的模块addterms --为未连接的端口添加terminators模块boolean --将数值数组转化为布尔值slhelp --simulink的用户向导或者模块帮助模块名 (Sinks library) 用途Auto_Scale Graph Scope 在MATLAB自动调整显示比例的图形窗口显示信号Graph Scope 在MATLAB图形窗口显示信号Hit Crossing 在规定值附近增加仿真步数Scope 在仿真过程中显示信号Stop Simulation 当输入不为零时停止仿真To File 把数据输出到文件中To Workspace 把数据输出到工作面上定义的一个矩阵中XY Graph Scope 在MATLAB图形窗口中显示信号的X—Y图模块名 (Discrete library) 用途Discrete-Time Integrator 对一个信号进行离散积分Discrete-Time Limited Integrator 对一个信号进行离散有限积分Discrete State-Space 建立一个离散状态空间模型Discrete Transfer Fcn 建立一个离散传递函数Discrete Zero-Pole 以零极点形式建立一个离散传递函数Filter 建立IIR和FIR滤波器First-Order Hold 建立一阶采样保持器Unit Delay 对一个信号延迟一个采样周期Zero-Order Hold 建立一个采样周期的零阶保持器模块名 (Linear library) 用途Derivative 对输入信号进行微分Gain 对输入信号乘上一个常数增益Inner Product 对输入信号进行点积Integrator 对输入信号进行积分Matrix Gain 对输入信号乘上一个矩阵增益Slider Gain 以滑动形式改变增益State-Space 建立一个线性状态空间模型Sum 对输入信号进行求和Transfer Fcn 建立一个线性传递函数Zero-Pole 以零极点形式建立一个传递函数模块名 (Nonlinear library) 用途Abs 输出输入信号的绝对值Backlash 用放映的方式模仿一个系统的特性Combinatorial 建立一张真值表Coulombic Friction 在原点不连续而在原点以外具有线性增益Dead Zone 提供一个死区Fcn 对输入进行规定的表示Limited Integrator 在规定的范围内进行积分Logical Operator 对输入进行规定的逻辑运算请问:在simulink参数中设置的步长是50e-6,在系统中有一个simout模块向MATLAB中传递数据,但是希望以1e-3的步长获取数据,因该如何设计?在simout模块中直接设定仿真步长是不能运行的。
PML命令_part1_design模块
PML命令_part1_design模块ADD to Drawlist●ADD ALL WITHIN VOL CE $*Add all elements include and crossing the CE volume box●ADD ALL WITHIN VOL CE 100 $* Add all disciplines that overlap CE with an additional clearance volume +100mm $* 加入当前CE的volume范围之外100的体积内的所有的元件●ADD ALL SCTN WITHIN VOL CE $* Add only the SCTN include and corssing the CE volume●ADD ALL SCTN WITH PURP EQ 'PS' $* Add only the SCTN with their Purpose EQ to’ps’●ADD ALL WITH PURP EQ 'PS' $* add all不可以单独使用,但是可以这样有限制条件地使用●ADD ALL WITHIN VOL CE 500 COLOUR 4 $*Add all within volume CE+500 colour yellow●ADD CE $* Can be followed by AUTO CE to zoom adjusted around CE●ADD ALL SITE $* add all site, ADD SITE will get error●ADD PIPE $* add the pipe of CE●ADD ALL PIPE $* add all pipe●ADD CREF $* Add cref of CE,confirm the cref attribute is existent,cref can be instead of tref,href.$* TEE或则NOZZLE有Cref属性,branch都有Href和Tref属性。
PDMS二次开发之PML编程基础
函数调用
T 将新建函数加到索引文件Pml.index中
Pml Rehash All
T 调用函数并且得到返回值
!MyArea = !!Area(6,4) Q var !MyArea <Real> 24
T 练习-新建函数计算圆的面积,测试函数
define function !!circleArea( !radius is REAL) is REAL !Area = PI * !Radius.Power(2) return !Area
T 关键字(Word) 如Type,Purpose
T 位置(Position) 如Position,Hposition
T 方位(Orientation) 如Orientation
T 方向(Direction) 如HDirection
!!ce
T 特殊全局变量!!CE
– 得到当前元素的参考,DBref类型 – ‘.’点操作符可以提取元素的属性和隐含属性
对象(变量)类型Object Types
T 内置(Build-in)的对象类型
– 字符串类型(String).如'Hello World' – 实数类型(Real).整数类型包括在实数类型中,如99 – 布尔类型(Boolean).用于逻辑表达式,如True,False – 数组类型(Array).可以存储任意类型的数据
T 函数(Function)是执行特定功能的子程序 T 方法(Method)是对象(变量)的函数
– 在PML2中变量是一个对象(Objects) • 每一个对象(变量)有一个唯一的名字 • 每一个对象都有一套函数与之相关联,这些函数称为方法 (Methods).方法用于处理对象中的数据 • 生成对象时必须指明对象类型(Object type),不同的对象类型对 应不同的方法
PML快速入门
PML用途
宏文件
调用方法<使用$m 运行指定路径的文件> 如: $m d:\macro.txt
自定义窗体(插件)
调用方法<show !!插件名> 如: show !!tool
PML简介
分PML1(旧) 和PML2(面向对象编程) PML原理
1) 2) 3)
几乎所有PDMS操作均可由命令完成 通过循环、条件等语句控制程序走向 可面向对象编程
DBREF成员 例: !name=!! Q var !name
通过点操作,结果显示为元素 的名称
注: !!ce即为当前元素 !name=!! 等效于: !dbref=ce !name=!
宏程序举例<1>——IF语句
例: !type=type IF !type EQ ’TEE’ THEN q cref ENDIF NEXT
A赋值 声明A为对象x A的成员b A执行c方法 对A执行d方法 fun函数带参数A运算 删除变量a
宏文件举例
1. 2.
在D盘创建记事本macro.txt 在记事本中写入:
•记事本中写入任意需要执行的操作 •必要时加入循环、条件语句
3.
PDMS命令栏内输入$m d:\macro.txt
•按顺序执行记事本中的命令
BOOLEAN 布尔值
最常见布尔值:
TRUE FALSE
常用于条件判断语句中
布尔值举例:
查询大管组设置元件是否需要现场安 装时修改元件的shop属性 !shop=shop Q var !shop 结果显示为 <BOOLEAN> TRUE
逻辑判断符号: EQ 等于 NE 不等于 GE 大于等于 LE 小于等于 GT 大于 LT 小于 例: !a= 1 !b= 2 !c= !a LE !b Q var !C 结果为 TRUE
PDMS中常用PML语句
Q abore ------查询元件的公称直径Q aod ------查询元件的外径Q P1 bore ------查询元件P1点的直径,包括设备上的NozzleQ P3 bore ------查询元件P3点的直径,包括设备上的NozzleMark ce ------为当前元素做标记,可以是Pipe,Branch,members, Equipment 等,标记的内容是它本身的名称。
Mark with 'RPE1567' ce ------对当前元素标记’RPE1567’, 引号里面可以是任意内容Q Att ------查询当前元素的参数Q :ims-qcl ------查询Pipe或Branch的等级,当前元素要放在Pipe或Branch层上, Q name ------查询名称,如果知道这个名称,直接敲入命令行就可以找到改元素。
Q lastmodif ------查询最后修改时间Q usermod ------查询最后修改的用户Q usermod :ims-qcl ------查询最后修改:ims-qcl这个参数的用户Q var !!ce.ppos[0].wrt(world) ------查询阀门的设计重心Q var !!ce.ppos[999].wrt(world) ------查询阀门的设计者自己定义的重心Q var !!ce.gcof.wrt(world) ------查询阀门的重心(不考虑负体积如挖孔等)Q var !!ce.ncof.wrt(world) ------查询阀门真正的重心(这是PDMS自带的功能)q var !!ce.poss.wrt(world)Q var !!ce.hstub.attribute(':ep') ------查询branch头部的壁厚,当前元素放在branch上Q var !!ce.lstub.attribute(':ep') ------查询选定元件下面管子的壁厚Q var !!ce.spref.attribute(':ep') 或 Q :ep of spref ------查询所选元件的壁厚上边的:ep可以换成其他的参数,如:de(外径)Q cllength ------查询branch的长度Q var !!ce.spref.attribute(':matiere')[1].name ------查询管道的材料Q spref ------查询元素的制造规格,比如,对于支吊架来说,得出的结果就可能是 spref /MDP/PR09-100Q :mtoarea ------查询安装分区信息Q p1 pos wrt world ------查询元件P1点坐标,例如预埋板Q pos wrt world ------查询元件在世界中的坐标Q poss wrt world ------查询Beam的头部的中心点坐标Q pose wrt world ------查询Beam的尾部的中心点坐标Q :mdsancref ------查询ATTA、STRU以及Anchor plate之间的链接关系Q :prop desc ------查询Beam截面信息Q Dtxr ------查询元件的catalogue详细参数Q Prop code ------查询支吊架的详细类型Q angle/radius ------查询弯头和三通的角度和半径Enhance ce col red ------对当前元素着色,也可以是green,pink , cyan等其他颜色Enhance ce transl >5 ------改透明度Add all within vol ce ------添加当前元素空间内的所有元素Add all STRU within vol ce 300 Col 4 ------添加当前元素周围300空间内的所有 STRU并以yellow显示,其中的STRU、 300和col 4是可变的参数Add ce auto ce ------添加当前元素并居中显示Add href cref ------添加branch头部和尾部相连的管道Add cref ------添加三通相连的管道Add all bran with :ims-ssno eq 'HRA_RPE_03' ------添加具有相同属性的管道,其中的:ims-ssno和HRA_RPE_03是可变参数Add all bran with matchw(:ims-ssno,'HRA_RPE_03') ------添加具有相同属性的管道add all bran with matchwild(:ims-ssno,'HRA_PTR_53') and Hbore gt 50 ------Aid text num 2 (name of owner) at at hpos of owner ------辅助标记,其中的num 2、name of owner和hpos of owner是可变参数,比如改成num 3、TSN、ce/p0等都可以。
利用PML语言提高PDMS建模效率
利用PML语言提高PDMS建模效率在PDMS三维建模的过程中,利用PML语言创建一些常用命令的快捷方式,能够减少建模过程中一些不必要的重复工作,缩短建模时间,不仅极大的提高建模的效率和准确度,也为之后模型的校对提供便利。
标签:PML语言;菜单小工具;效率PDMS (plant design management system)是英国的A VEV A公司开发的一款三维工厂设计管理软件,它是以元件数据库为核心,高度参数化,并具有直观、准确、方便、灵活的特点,已经非常广泛地应用于化工、电力及海洋工程等行业。
此外,PDMS 还是各设计专业设计、建模和交流协调的平台,能十分方便地检查出设计过程中出现的“错、漏、碰、缺”等问题;尤其是在设计空间紧张、设计密度高的工程行业,使用三维建模设计,能够更高效地实现总体布置的优化。
1 PDMS常用操作PDMS是一个适用性比较强的三维设计软件,但是每个设计单位并不会应用到PDMS所有的设计功能,一些揉和到一起的功能显得有些臃肿,并不方便。
因此,设计单位需要项目管理人员针对自身需要,利用PML语言对PDMS中的一些功能进行分类和剥离,从而减少建模过程中一些不必要的重复工作,缩短建模时间,提高创建三维模型的效率和准确度。
下面首先介绍一下在日常建模过程中遇到的一些常用操作。
1.1 管线管底对齐/管顶对齐在创建项目模型的过程中,经常需要对管线进行管底对齐或管顶对齐的操作,在常规操作过程中,首先需要测量该管线的管底标高/管顶标高,然后通过菜单栏position相关命令移动至相应的位置,当类似管廊的位置需要对齐的管线命令比较多时,就要多次重复相关操作,费时费力,还经常由于取点不准确造成一定的偏差。
1.2 管线头部收尾/尾部收尾在创建项目模型的过程中,有些管线的头尾或者尾部本身没有连接关系,需要在最后一个元件或指定位置进行收尾。
在常规的操作过程中,需要点选菜单栏上的connect下的branch命令进行相关操作,费时费力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ADD to Drawlist●ADD ALL WITHIN VOL CE $*Add all elements include and crossing the CE volume box●ADD ALL WITHIN VOL CE 100 $* Add all disciplines that overlap CE with an additional clearance volume +100mm$* 加入当前CE的volume范围之外100的体积内的所有的元件●ADD ALL SCTN WITHIN VOL CE $* Add only the SCTN include and corssing the CE volume●ADD ALL SCTN WITH PURP EQ 'PS' $* Add only the SCTN with their Purpose EQ to’ps’●ADD ALL WITH PURP EQ 'PS' $* add all不可以单独使用,但是可以这样有限制条件地使用●ADD ALL WITHIN VOL CE 500 COLOUR 4 $*Add all within volume CE+500 colour yellow●ADD CE $* Can be followed by AUTO CE to zoom adjusted around CE●ADD ALL SITE $* add all site, ADD SITE will get error●ADD PIPE $* add the pipe of CE●ADD ALL PIPE $* add all pipe●ADD CREF $* Add cref of CE,confirm the cref attribute is existent,cref can be instead of tref,href.$* TEE或则NOZZLE有Cref属性,branch都有Href和Tref属性。
●AUTOCOLOUR OFF●REMOVE CE●ADD CE COLOUR 39 translucency 25 EDGES ON $* or ADD CE COLOUR BLUE translucency25 EDGES ON●AUTOCOLOUR $* add CE and set the colour 39,with 25% of translucency,edges on.$* 如果是对于某个具体的元件操作,实际上是作用于其紧邻的管理层。
$* 只有在translucency被设置的情况下才能设置EDGES ONREMOVE●REM CE $* Remove Current element●REM ALL $* Remove all element●REM EQUI $* Remove equipment of CE●REM ALL EQUI $* Remove all equipment●REM ALL WITHIN VOL CE 100 $* rem all in the volume of ce adding 100●REM ALL WITHIN VOL CE $* rem all in the volume of ce,CE can be instead by name of a element.MARK 同一个可以被标记的元件只能被标记一次,自动切换到最后一次标记的效果。
●MARK CE $* Mark CE name●UNMARK CE $* or UNMARK ALL●MARK WITH 'TEMPORARY' CE $* Tag CE with temporary name 'TEMPORARY'●MARK With (NAME OF CATREF) /NAME $* mark /NAME with name of catref of /NAME●MARK With (TYPE) /NAME $* tag /NAME with type of /NAME●MARK With (STRING(DESPARAM[1]) + '_' + NAME OF CATREF) CE $*mark CE with element 1 of attribute desparam and name of catref of CE$*DESPARAM[1] can be DESP1AXES●AXES AT CE $* add an aid axes on current element●AXES AT ID@ $* Add an Aid axe on element to be specified●AXES OFF $* Suppress the displayAIDS●AID TEXT (NAME OF CATREF)AT AT P1●AID TEXT (string(DESP1) + '_'+ NAME OF CATRE) AT AT P1 $* DESP1 can be DESPARAM[1]●AID TEXT ('ELEVATION' + '_'+ string(p1 up in world)) AT AT P1 $* 'p1 up in world' means the up position of p1 wrt world$* If you use '!pos = at p1',you can find that the key word 'at' is to get the position of p1.●AID ARROW AT AT P1 OF CE DIR OPPO PPOINT1 HEI 1000 $* 'OPPO' is abbreviatived word of 'OPPOSITE',and ppoint1 can be abbreviated to 'P1'●AID ARROW AT AT P1 OF CE DIR AXES PPOINT1 HEI 1000 $* 'AXES PPOINT1' means the direction of P1.●AID CLEAR ALL $*To suppress all aid diaplay●ALPHA REQUEST CLEAR $* Clear the command line window and its displayMODIFY ON DESPARAMS●DESP n2 500 n6 300 $*This change the design parameters 2 and number 6 with its new value,and the value of the other parameters before 6$* which haven't been set is 0.CREATE PDMS ELEMENT●NEW SUBS /name_of_subs pos AT IDP@ ORI Y IS N AND Z IS UP $*keyword 'pos' can be ignored●NEW BOX XLEN 500 YLEN 25 ZLEN 50 LEV 5 7 OBST 0●NEW SUBS /name_of_subs COPY PREV BY East 1550●NEW SUBS /name_of_subs pos POLAR N22.5W wrt world Dist 500 $* POLAR axes.If keyword 'wrt world' does not exist,the pos is wrt its owner,$* and keyword 'pos' can be ignored●NEW PIPE name /flow/area/pipe1 $* keyword 'name' can be ignored●NEW ELBOW SELect WIth STYP EL●NEW FLAN COPY PREV FLANAssociate with COPY●COPY PREV MOVE North(43.68 + 180)East DISTANCE 1000 $* The type of current element must be the same as the type of previous$*And current element can't have members. (43.68 + 180) = (43.68 180 ADD)●NEW SCTN COPY PREV BY E200●NEW SCTN COPY PREV BY E200 WRT CE $* Copy E200 wrt CE●NEW SCTN COPY PREV MIRROR PLANE E THROUGH E 1180 N8000 U2600 WRT /* $* Mirror copy CE With coordinates and direction●NEW SCTN COPY PREV MOVE W WRT CE TO IDPL@ $*Copy a new SCTN and move it west withrespect to CE and toward Selected PLINE $* 'NEW SCTN COPY PREV' creates SCTN first,and copy previous,so previous means CEbefore the command executes.$* 'IDPL@' means choosing the pline by cursor identification.$* 'WRT CE' is with respect to current element which is new created.$* The position of new SCTN is at the intersect and projected position of pline to thereference direction.●NEW BOX COPY PREV MOVE W WRT CE TO IDP@ $*The position of new BOX is at theprojected position of ppoint to the reference direction.COPY of GROUP objects●COPY MEMBER OF /Goup_member_name $* Copy the member of /Group_member_name,$* and it is not the same as command 'COPY /Goup_member_name'●NEW SUBS /name_of_subs COPY PREV ROTATE ABOUT Z BY 45 $* 'ABOUT Z ' is with respect to the owner of new SUBS.●NEW BRAN /CVT/RRI001 COPY /RRI001 RENAME /RRI /CVT/RRIMove Objects●MOVE N45E DIST l500●MOVE U THROUGH P2 OF PREV BOX●MOVE ALONG P1 DIST 547●MOVE TOWARDS ID@ DIST 500 $* If the position of identified item and the position of CE are the same,error will occur.●MOVE TOWARDS IDP@ DIST 500 $* If the position of Ppoint and the position of CE are the same,error will occur.$* The direction is the position of CE to the ppoint position.●MOVE $!DIR WRT WORLD PLANE $!PLAN CLEARANCE $!DIST $!RELATIVE$!RESPECT_ELEMENT_NAME●MOVE E PLANE N45W DIST 20 TO /TANK5$* MOVE CE to the position of intersect point of direction and plane.●MOVE P2 North DIST 500 FROM ID@●MOVE E WRT CE TO ID@ $*Move CE wrt its own axe's East to an element chosen●MOVE W TO IDPL@●BY D 100●BY E 2IN WRT CE $* Move CE E 2''(INCHES) WRT CE●AT IDP@ $*Move CE to selected PPOINT●AT IDPL@ $* Move CE to selected PLINEROTATE command (Object Rotation)●ROTATE ABOUT U wrt world AND y is TOWARDS <position>●ROTATE ABOUT X AND Y IS TOWARDS PREV $* The reference axes of X is the owner's.●ROTATE ABOUT Z THROU IDP@ BY 45 $* The default related position is the original positionof the element,and the axes x is the owner's.●ROTATE BY 45 $* The default axes is Z of the owner●ROTATE BY 60 ABOUT East $* or "ROTATE ABOUT East BY 60", the related axes about east isthe owner's axes.●ROTATE THRough P2 ABOUT South BY 45●ROTATE AND Y IS N45W25D $* The default axes is Z of the owner,and rotates until the Y axis points as closely as possible to the N45W25D direction.●ROT THR W1000 N20000 U30000 WRT /* ABOut U BY 90 $* Rotate CE about coordinate wrtworld about vertical axis by 90 degrees●ROT THR POSEnd ABOut D BY 30 $* can be used for SCTN,rotate about posend axis down by 30●ROT THR POSStart ABOut D BY 45 $* Rotate about start axis d by 45●ROT THR MIDP ABO D BY 90 $* Rotate CE about middle position of SCTN by 90●ROT ABO IDP@ BY 90 $* The associated direction of the axes is the direction of the ppoint.●ROT ABO IDPL@ BY 90 $* Rotate CE local to pline by 90.The associated direction is posstart toposend.The origin position is the posstart of SCTN.●ROT THR IDP@ BY 90 $*The associated direction is the z direction of the owner. Keyword'through' does not specify the direction,$* however keyword 'about' specifies the direction.●ROT THR IDPL@ BY 90 $* The default direction is that of the Neutral Axis or Z axis. The originposition is the posstart position of the SCTN.$* Keyword 'through' specifies the origin position but not the direction. The direction is the posstart to the posend if it is SCTN.●ROT ABOut P1 BY 90 $* Rotate CE about P1 by 90. The default direction is that of P1.●ROT ABOut PPLIN TOS BY 15 $*Rotate CE about pline with pkey equal TOS by 15 degrees.PLANE command (Displacement of object according to the normal in the datum-line●PLANE N CLEARance 100 BEHIND CE $* Move Plane North clearance 100 behind●PLANE E THROugh PIN1 $* Move Plane East through Pin1●PLANE U DIST 0 BEHIND IDP@ $* More Plane Up distance 0 behind ppoint @●PLANE PIN 2 THRO lDP@ $* Move pin2 through ppoint @●PLAN N DIST 500 $* Move to North distance 500●PLAN N THROugh ID@ $* Move North through element@●PLAN U THROugh U 1000 $* Move Up through up dist 1000●PLAN N DIST -200 FROM IDP@ $* The distance is coming from south (-... equal oppositedirection)POSITION Command(Object position))●POS PT DIST 500 FROM LAST MEM $*Pos branch tail 500 from last member●POS PH DIST 500 FROM FIRST MEM $*Pos branch head 500 from first member●VAR !P1 P1 POS IN WORLD $* Store P1 pos in variable !p1, or 'VAR !P1 P1 POS WRT WORLD' ●POS AT IDP@ $* Position at Ppoint chosen●POS ID@ AT PIN 2 $* Position object chosen at Pin2●POS P6 AT P2 OF ID@ $* Position object from its P6 to P2 0f chosen●Q POS WRT ID@ $* Query the distance from CE to identify object●Q POS WRT CE TO ID@●Q POS IN ID@ $* The same as 'Q POS WRT ID@'●Q POS PIN1 WRT /* $* Give the CE coordinates OF PIN1●Q POSE $* Give the CE END coordinates●Q POS FITT $* Query the fitting coordinates(start)●Q POS IDPL@ $* Query the Pline coordinates at start of idpline●Q POS PPLI BOS WRT /* $* Query the bottom BOS pline coordinates●Q POS PPLI NA PROP 0.5 $* Query the centre coordinates position of the pline(PPLI) at (0.5×derive length)on N/A●Q POSS $* Query position start of the SCTN●Q POSS POSE $* Query position start and end of the SCTNPINSUtilization design pins●PIN1 AT PPLI BOS PROP 0.5 $* position PIN1 at middle of pline BOS●PIN1 PLAN N THR PIN2 $* Move the pin1 through pin2 in plan north with the moving direction of pin1●PIN1 COPY IDP@ $* Create pin1 according to Ppoint choosen●PIN1 COPY PIN2 $* Create pin2 by copy of pin1●PIN1 DIR D $* Orientation pin1 down●PIN1 DIR U WRT/* THR IDP@ $* Move PIN1 UP TO a SELECED PPONT,and note that 'U' is the direction of moving●PIN2 DIR D WRT/* THR IDPL@ $* Move PIN2 DOWN TO a SELECED Pline,and note that 'U' is the direction of moving●PIN1 BY D 800 $* Move PIN1 Down 8mm●PIN6 OFF $* turn PIN6 off●PIN3 AT CE $* Position PIN3 at origin of CE●Q DIR PIN1 $* Query Pin1 direction,and the same as 'Q PIN1 DIR'Query PIPING●Q BORE $* Give the bore of pipe,and must be pipe●Q POD1 $* Give the Outside diameter 1,and must be branch or branch element●Q CLLE $* Give the branch centerline lenght,and must be branch●Q HPOS $* Give the CE pipe HEAD position,and must be branch●Q HT $* Give the CE hanger TAIL coordinates,and can be used for branch or branch element.●Q HH●Q ISPEC $* Query the insulation specification●Q PA $* Query the arrive position of branch element●Q PA TOP WRT/* $* Give the CE ARRIVE coordinate at TOP of pipe●Q PA BOP WRT/* $* Give the CE arrive coordinate at BOP of pipe●Q PH BORE $* Give the CE branch head bore●Q PH OD $* Give the CE branch head external diameter●Q PL WRT/* $* Give the CE LEAVE coordinates●Q TPOS $* Give the branch tail coordinates●Q CREF $* Give the connection reference●Q PT $* Give the branch tail attributes●Q LTLE $* Give the length of the leaving implied tube●Q MTCL $* 可能与Q LTLE的功能一样,与q ITLENGTH of IL TUBE一样。