pml基础手册与总结
- 格式:pdf
- 大小:205.04 KB
- 文档页数:20
PM基础讲座-管理资料1、什么是PM所谓PM是预防性维修(Preventive Maintenance)和生产维修(Productive Maintenance)的英文首字母的略语,在日本设备工程协会的PM用语集上有如下定义:预防维修——是指从预防医学的立场出发,对设备的异状进行早期发现和早期治疗,。
(注)在预防维修由国外引进我国的最初阶段:即算作PM。
生产维修——是提高设备生产效能的最经济的维修方法。
其目的在于从设备的设计、制造、使用以致维修的全过程,换言之,也就是在设备的一生之中,设法减低设备本身价值和维修等有关设备使用的一切维修费用,以及由于设备劣化而带来的损失等全部费用,用以提高企业的生产效能。
作为它的手段,有预防维修,事后维修,改善维修和维修预防。
我国最初引进PM的时候(约在1951年),对于事先防止设备故障的活动,叫做“预防维修”,其后,约在1954年,自从美国GE社特别强调提高生产效能以来,也就是提倡意味着赚钱维修的生产维修以来,PM就形成含有两种意义的词汇,而今天说PM就只是意味着“生产维修”。
关于“预防维修”在日本语中多用预防保全一词。
2、PM的发展过程(参看表1)PM一词最初引进我国是在1951年(昭和26年),即所谓战后。
那时,从废墟上重建了军需工业,随之以此力图转向现代化工业,逐渐走向活跃的开端。
在日本通过化学工业和其它,以所谓安装工业为中心的日本能率协会的顾问活动,用报告会、出版刊物等极力宣传;与其在发生故障之后才进行维修,不如采取美国那种更为经济的在发生故障之前就进行维修的PM方式,从而开始出现预防维修的热潮。
其后,在1954年(昭和29年),如上所述,根据GE社的经验又开始提倡生产维修。
表-1 PM发展过程年代1951年(昭和26年) 1954年(昭和29年) 1957年(昭和32年) 1960年(昭和35年 1962年(昭和37年) 1971年(昭和46年) 发展过程 PM Produtive Maintenance PM 预防维修 PM Produtive Maintenance PM 生产维修 CM Corrective Maintenance CM 改善维修MP Maintenance Prevention MP 维修预防Relability Engineering 可靠性工程 TPM Total PM 全员参加的PM 特征我国最初引进预防修理中心以提高生产为目的的维修,由美国GE社所提倡强调改善,设备素质的改善强调新设备的PM设计强调可靠性和维修性由日本设备工程协会提倡强调TPM表-1 PM发展过程这个生产维修实际也包含着预防维修,也就是为了提高生产的经济效果的维修。
集团股份有限公司SAP—PM操作手册目录一、功能位置 (3)1.创建功能位置:IL01 (3)2.修改功能位置:IL02 (5)3.显示功能位置:(IL03) (7)4.按功能位置结构展开(IH01) (8)二、固定资产类设备新增 (9)1.固定资产类新增提报 (9)2.供应部建立采购订单ME21N (9)3.收货MIGO (9)4.设备到货,完善设备主数据 (9)三、项目设备 (13)1.项目利用旧设备 (14)2.项目采购新设备 (14)四、设备BOM的新增、修改 (14)1.新增单个设备BOM (14)2.修改设备BOM (21)3.显示设备BOM (21)4.批量导入设备BOM (21)五、故障知识库的新增、修改 (21)1.故障现象的新增、修改 (21)2.故障原因新增、修改 (24)六、状态监测点的新增、修改 (24)1.创建状态监测点 (24)2.修改状态监测点信息 (26)3.单个查询状态监测点的信息 (26)4.批量显示计量点 (26)5.录入状态监测点数据记录 (27)6.显示计量凭证(状态监测记录) (29)七、密封点 (30)1.根据功能位置创建密封点 (30)2.修改密封点信息 (32)3.查询计量点(密封点)信息 (33)4.密封点泄漏率统计报表查询 (33)八、换油点 (33)1.创建换油点 (33)2.修改换油点信息 (35)3.查询计量点(换油点)信息 (35)4. 维护换油信息 (35)5.换油执行 (36)6.换油历史记录 (36)九、测厚点 (37)1.创建测厚点 (37)2.修改测厚点信息 (38)3.查询计量点(测厚点)信息 (39)4.测厚监控平台 (39)5.测厚执行 (40)6.测厚历史记录 (40)十、设备维修流程 (40)1.职能部门创建维修通知单 (41)2.建立维修订单 (45)3.领料 (54)4.维修执行——内部维修(车间内部维修) (54)5.维修执行——外部维修(车间外) (55)6.维修工单报工 (55)7.维修订单关闭 (56)8.维修工单状态对照表 (58)十一、设备保养 (58)1.设备保养计划导入 (58)2.查看维护保养计划 (59)3.设备保养执行 (60)4.打印保养工单 (62)5.保养工单报工、结算、关闭 (63)十二、特种设备定检 (63)十三、设备调拨 (64)1.调拨申请 (64)2.财务处理 (64)3.职能部门处理 (64)十四、设备报废 (68)1.车间OA申请 (68)2.职能部门对设备调拨 (69)3.财务资产号报废 (69)十五、设备状态变更 (69)1.车间OA申请 (69)2.职能部门对设备调拨 (69)十六、文档管理 (70)1.创建设备文档 (70)2.修改、更新、查看文档 (74)十七、设备大修 (76)1.大修计划的制定及导入 (76)2.大修执行 (77)十八、报表相关说明 (77)1.设备台账报表 (77)2.设备故障分析报表 (80)3.设备故障率统计报表 (81)4.密封点泄漏率统计报表 (81)5.维修成本报表 (82)6.设备管理指标统计报表 (83)7.设备管理指标统计报表 (83)一、功能位置责任部门:设备科责任人:固定资产管理员1.创建功能位置:IL01在事物代码输入框处输入事务代码(IL01)回车进入界面;1.1单击结构标识后面的选择框,在弹出的选择界面上选择圣泉PM结构标识(XXXX—XXXX —XX—XX);功能位置分四层,按照XXXX—XXXX—XX—XX的格式去创建,第一层代表工厂(SAP的概念),第二层是车间名称代码(一般是车间名称首字母,附录里有对照表),第三层代表工段,第四层代表楼层。
第一部分: 基础知识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 $!!ELSEIF (TYPE EQ ‘BRAN’) THEN$P BRANCH $!!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 is $!!其中$为转义字符, 如果要输出$, 则使用$$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此时, 点击按钮, 会弹出对话框. (截图)。
PML开发介绍与总结1 pml语言简介 (2)1.1 pml变量 (2)1.2 变量类型 (2)1.3 自定义变量类型 (3)1.4 定义变量 (3)1.5 函数(Function)和方法(Method) (4)1.6 使用ANY类型的变量作为函数参数 (5)1.7 变量的方法 (6)1.8 自定义变量类型的方法 (7)1.9 方法的重载 (8)1.10 Unset和Undefined (9)1.11 删除变量 (10)2 Pml的一些特点 (10)3 Pml表达式 (11)4 pml流程控制 (11)4.1选择结构 (12)4.2 do循环 (13)4.3 GoLabel跳转语句 (14)5 pml数组 (15)5.1 定义数组 (15)5.2 数组的赋值 (15)5.3 多维数组 (15)5.4 数组的方法 (16)5.5 利用数组进行字符串处理 (17)5.6 数组排序 (18)5.7 Do values循环和Do indices循环访问数组变量 (19)6 pml宏文件概念及其运行 (19)6.1 概念 (19)6.2 带参数的宏文件 (20)语言简介介1pml语言简pml是用于pdms二次开发的面向对象的编程语言,它的面向对象属性是与其他脚本语言的最大区别,也是现代高级语言的基本特征。
pml提供了编辑窗体和菜单的功能,且语法简单方便,使得pml能实现高级语言的大部分功能,用户可以开发自己的菜单窗体,完成需求定制。
pml提供了大量的变量类型(object type)及与变量类型相对应的方法(method)。
pml 提供的方法实用,具有针对性。
比如数组(Array object)可以存放不同的数据类型,可以进行排序、清空没有赋值的元素、查找、删除等等方法,这是大多数高级语言没有提供的功能。
1.1pml变量对于pml语言,每个变量即是一个object,对应一个变量类型object type。
不同类型的变量只能保存对应类型的数据。
pml变量的特点:变量名称唯一,且不能重复。
每个object type即是一个类(class),有属于类的通用的方法和属性。
因此每个pml 的变量(object)都可以调用所属类的方法。
每个变量对应一个变量类型,在定义变量前,对应的变量类型必须存在。
1.2变量类型Pml的变量类型比较多,可以分为三类,built-in、system-defined、user-defined。
Built-in变量类型包括以下几种:字符串实数布尔数组system-defined变量类型包括Direction,Position,Orientation等多种类型,详细信息可以参考手册。
user-defined变量类型是指用户自定义的类型。
1.3自定义变量类型Pml提供的变量类型可以满足大部分情况的使用,如果有需要,用户也可以定义自己的变量类型。
下面是一个自定义变量类型的示例。
define object FACTORYmember .Name is STRINGmember .Workers is REALmember .Output is REALendobject自定义变量类型的名称是FACTORY,该变量类型有3个成员(member),分别是Name,Workers和Output。
任意一个FACTORY类型的pml变量都默认有这3个成员。
比如设变量!MyFactory是FACTORY类型,则可以通过!访问或赋值变量的Name成员,如下面的表达式分别读取和设置了变量!MyFactory的Name属性,!FactoryName = !! = ‘APPLE’Pml对成员的类型没有限制,自定义变量类型的变量也可以作为成员,如下例,成员Site 的类型是FACTORY。
define object PRODUCTmember .Code is STRINGmember .Total is REALmember .Site is FACTORYendobject为了方便区分,变量类型一般用大写表示,变量一般首字母大写。
自定义变量类型一般以变量类型的名称为文件名(字母必须是小写),以.pmlobj为后缀保存到PMLLIB文件夹下面。
程序会自动加载定义文件。
1.4定义变量Pml的变量分为全局变量(global)和局部变量(local)两种,全局变量在整个程序运行期间一直存在,而局部变量只在所在的宏文件或函数内有效。
比如一个宏文件包含下面的语句,!Y = 3!!X = 5$p $!Y $!!X运行后得到结果 3 5运行完成后在pdms中分别查询变量!Y和!!X,!Y是Undefined,而!!X是实数类型变量,值是5。
因为!Y是局部变量,宏文件运行完成后自动释放。
Pml变量名的最大允许长度是16个字符(包含前面的符号!),变量名必须以字母开头,可以是字母和数字的组合。
确定变量名时要简单易懂、避免重复,可以添加自定义的前缀进行区分。
在编写程序时,为了避免重复和减少资源占用,应该尽量减少使用全局变量,使用!!CD为前缀的变量是系统预留的全局变量,在定义变量时要避免重复。
定义一个built-in类型变量(REAL,STRING,BOOL,ARRAY)可以通过直接赋值确定其变量类型,比如!MyVariable = 2,则变量! MyVariable会自动根据所赋值的类型确定为real 类型,不用另外指定变量类型。
当定义一个值为空的变量时,可以采用如下的方式!MyVariable2 = STRING(),指定!MyVariable的类型为字符串,而值为空(UNSET)。
对应其他类型变量的定义需采用下面的形式,!MyVariable3 = object DIRECTION()和方法((Method)1.5函数函数((Function)和方法函数一般定义在一个单独的文件中,文件名必须是小写的函数名称,后缀为.pmlfnc。
函数定义文件一般存放在PMLLIB文件夹中。
每个函数定义文件只能包含一个函数,且文件的第一行必须是define function开头。
所有的用户自定义函数都是global类型变量。
函数和方法类似,都可以带有参数和指定返回值。
参数和返回值的类型必须在函数和方法定义时指定,当在主程序中调用函数或方法时必须把对应类型的值传递给函数或方法,经过处理后把返回值传递给主程序。
下面的语句定义了一个函数!!AreaDefine Function !!Area( !Length is REAL, !Width is REAL ) is REAL!Area = !Length * !WidthReturn !AreaEndFunction!!Area的功能是根据主程序传递过来的参数!Length和!Width计算矩形面积并将面积返回主程序。
参数!Length、!Width 和返回值都是REAL类型,返回值用关键词Return指定,最后以endfunction结束函数定义。
一般在表达式中调用有返回值的函数,如:!MyLength = 15!MyWidth = 10!MyArea = !!Area(!MyLength, !MyWidth)则得到!MyArea = 150,注意参数的顺序不能颠倒,否则可能会导致错误。
上面的语句也可以简化为!MyArea = !!Area(15, 10)函数也可以用参数的方式返回运行结果(没有返回值的函数称为PML Procedure,用Call 关键词调用),即在调用函数前定义一个变量,并把变量包含在函数的参数列表里。
如下面的例子,Define Function !!LengthAndTrim(!Name is STRING, !Length is REAL)!Name = !Name.Trim()!Length = !Name.Length()EndFunction函数的功能是计算字符串变量!Name的长度(去掉前后空格),REAL类型参数!Length 用于存放并返回计算结果。
函数的调用过程如下,!Name = ' FRED '!Length = REAL()Call !!LengthAndTrim(' FRED ', !Length)运行完后,字符串长度的计算结果存放在了变量!Length中。
注意,必须是一个变量存放返回的计算结果,不能是常量,如!!LengthAndTrim(' FRED ', 2)是错误的,因为函数不能修改一个常数。
对于特殊的情况,当函数或Procedure没有参数时,函数名后面的括号也必须保留,如Define Function !!LengthAndTrim()。
对有返回值的函数也可以采用Call关键词调用,但会由于无法保存而导致返回值丢失。
1.6使用ANY类型的变量作为函数参数某些特殊情况下,可以指定函数的参数或返回值的类型为ANY,即可以接受任何类型的变量。
如下面的例子定义参数!Argument为ANY类型。
Define Function !!Print(!Argument is ANY)$P $!Argument在使用ANY类型的变量前需要确定变量的具体类型,可以使用变量的pmlobjectType()方法如下。
Define Function !!AnyType(!Argument is ANY)Type = !Argument.pmlobjectType()if ( !Type EQ 'STRING' ) then- - do something with a STRINGelseif ( !Type EQ 'REAL' ) then- - do something with a REALelseif ( !Type EQ 'DBREF' ) then- - do something with a DB Referenceelse- - do something with all other types or give an errorendifEndFunction1.7变量的方法方法是与具体的变量类型相对应、且可以由任意一个变量调用的函数。
每种变量类型包含的方法可以参考手册。
下面以STRING类型为例说明如何使用变量的方法。
!Mystring = STRING() 定义一个STRING类型的变量截取部分字符,取指定的字符串右侧的剩余部分赋值给新变量!Mystring ='Iwanttolearnenglish'!newstring = !Mystring.after('Iw')则!newstring = 'anttolearnenglish'同理可以调用before()方法取指定字符串左侧的部分。