WITNESS规则
WITNESS规则–输入规则(InputRule)
输入规则控制零部件或者流体进入在系统中的流动过程。例如:一台空闲机器要启动的话,会按照输入规则输入零部件直到有足够的零部件启动它;一台尾部有空间的输送链在每向前移动一个位置时,按照输入规则输入零部件。
可以通过以下几种方法输入零部件或者流体:
l具有相同名称的一组元素。
l一组元素中的一种特殊的元素(需要指定那种元素的下标)。
l在模型外的一个特定的位置(WORLD)中得到零部件或流体元素。
设定输入规则的方法主要有两种:
l通过元素细节(detail)对话框中的“FROM”按钮
首先选中对象,然后双击鼠标左键,在弹出式detail对话框中的general页中,点击该按钮就显示出输入规则编辑器。
l使用可视化输入规则按钮
首先选中对象,然后点击Element工具栏上的“VisualInputRules”图标,将会显示如图5.1的输入规则对话框,然后进行输入设定。
通过这两种方法设定了元素的输入规则后,都会使得元素detail对话框general页框中的“FROM”按钮下方,显示出元素当前的输入规则的名称。当创建一个元素的时候,Witness会自动的给它一个默认的规则——WAIT,表示它不能接收零部件或者流体。为了规定零部件和流体通过模型时的路线,我们必须用一个其他的规则来代替WAIT规则。
要注意的是,在设定输入规则之前要先弄清楚零部件,流体,车辆和单件运输小车的在模型中的路径。我们不能把它们弄反了,举例来说,我们不能在元素A向元素B输入零部件的同时,元素B向元素A也输入零部件。另外,还可以考虑使用零部件路线(ROUTE)来控制它们通过模型的路线。
Witness提供的可以在输入规则使用的命令有:
BUFFERFLOWLEASTMATCH
MOSTPERCENTPULLRECIPE
SELECTSEQUENCEWAIT
WITNESS规则–输出规则(OutputRule)
输出规则控制着当前元素中的零部件,流体,车辆和单件运输小车输出的目的地和数量等。例如:一台机器在完成对零部件的加工后按照一个输出规则将零部件输出到另一台机器上。要是它出了什么故障不能这样做,那将会出现堵塞向现象;当一个零部件到达一个有输出规则的输送链前方时,输送链将把零部件输出,如果输送装置由于故障不能将零部件输出的话,这里将会出现堵塞(固定输送链)或者排长队(队列式输送链);车辆到达有输出规则的轨道前方的时候,轨道把车辆输送到另外一个轨道上面,要是轨道输送失败,路线将会变的堵塞;一台有输出规则的处理器完成对流体的处理后,把流体输出;一单件运输小车到达一个有输出规则的路线集的时候,路线集输出它到下一路线集。
可以输出零部件或者流体到:(1)具有相同名称的一组元素;(2)一组元素中的一种特殊的元素(指定该元素的下标);(3)模型外的一个特定的位置(SHIP,SCRAP,ASSEMBLE,WASTE,CHANGED,ROUTE或者NONE)。
设定输出规则的方法主要有两种:
l通过元素细节(detail)对话框中的“TO”按钮
首先选中对象,然后双击鼠标左键,在弹出式detail对话框中的general页中,点击该按钮就显示出输出规则编辑器。
l使用可视化输出规则按钮
首先选中对象,然后点击Element工具栏上的“VisualOutputRules”图标,将会显示如图5.2的输出规则对话框,然后进行输入设定。
元素detail对话框general页框中的“TO”按钮的下方,Witness会显示元素当前的输入规则的名称。当我们创建一个元素的时候,Witness会自动的给它一个默认的规则——WAIT,表示它没有传送零部件或者流体到其他元素的规则。为了规定零部件和流体通过模型时的路线,我们必须用一个其他的规则来代替WAIT规则。
输出规则的注意点跟输入规则相类似,设置输出规则时,同样应先搞清楚零部件,流体,车辆和单件运输小车的流动路线,也可考虑使用零部件路线记录来控制它们通过模型的路线。
Witness提供的可以在输出规则中使用的命令有:
BUFFERCONNECTDESTINATIONFLOW
LEASTMOSTPERCENTPUSH
RECIPESELECTSEQUENCEWAIT
WITNESS规则–劳动者规则(LaborRules)
劳动者规则概述
机器,输送链,管道,处理器,容器,路线集和工作台都需要劳动者才能完成任务。劳动者规则可以让我们详细说明实体元素为完成任务所需要的劳动者类型和数量。我们可以通过创建劳动者规则来完成的任务有:调整机器,并为它设定时间周期或修理它;修理输送链;帮助流体通过管道,并且做好清洁、清洗和修理的工作;帮助处理器处理流体,并且做好填入、清空、清洁和修理工作;帮助流体通过管道,或做修理工作;修理各种类型的工作站,在行为站做好进入、处理、退出动作,在装载(卸载)站做好装载(卸载)工作,在停靠站做好停靠工作;修理路线集。
可以使用元素细节对话框进入劳动者规则。如果一个元素需要劳动者,点击元素细节对话中的对应按钮。一个细节对话框可能包含几种劳动者规则按钮,例如,一台机器就有装配,循环,修理几种劳动者规则。劳动者规则按钮旁边如果有打钩的标记,则表明我们已经为这项工作建立了劳动者规则;如果有打叉的标记,则表示我们没有为这个工作建立劳动者规则。点击劳动者规则按钮后,弹出规则编辑器,在这里我们可以输入劳动者规则。
可以使用“VisualLaborRules”按钮,来输入劳动者规则,但要注意在我们使用元素的劳动者规则之前,我们必须建立Labor元素。输入劳动者规则最简单的方法是对元素的Labor规则编辑框中输入需要的劳动者元素的名称,例如,如果一台机器需要一个操作者处理零部件,只需要输入OPERATOR作为劳动者规则就可以了,当然先要定义一个Labor元素,其名称叫OPERATOR。
三种劳动者规则
我们也可以使用如下3种劳动者规则,当然有时也可将这三种劳动者规则结合起来使用。
NONE规则
在某种情况下,当元素不需要劳动者时,我们可以在劳动者规则中使用NONE规则。例如,当一个元素完成某项任务不需要劳动者时,我们不需要输入任何规则。该规则经常用在IF条件语句中,如
1 | IF JOB_TYPE = RIBBON |
在这个例子中,包装机包装两种不同类型的巧克力箱:一种是有带子的,一种是没有带子的。机器包装没有带子的巧克力箱时,不需要劳动者;包装有带子的时候(JOB_TYPE=RIBBON),需要进行打结的劳动者KNOTTER。劳动者规则指示机器当遇到有带子的巧克力箱时,获取劳动者;当遇到无带子的巧克力箱时,不获取劳动者。在这里如果我们使用“WAIT”规则而不是“NONE”规则时,只要无带巧克力箱一进入,机器就会阻塞。
MATCH规则
在WITNESS中,既可以用MATCH规则作为输入规则来输入一系列相匹配的零部件或者劳动力单位到机器,也可以用它来作为劳动者规则,设定某一元素,匹配完成某项工作所需的劳动力单位数。
MATCH规则的语法如下:
1 | MATCH / qualifier location1 {#(qty)} {[AND | OR] location2 {#(qty)}} {...} |
关于qualifier的设置在下面我们将会详述,location取决于我们是将MATCH规则作为机器的输入规则还是作为劳动者规则的,#(qty)是指MATCH规则从location中所选的元素的数量。它是一个整型表达式。如果不具体说明匹配的数量,则Witness默认数量为1。
①作为机器的输入规则的语法如下:
1 | {part_ name {from}} location _name {(index _exp)} {at position_ exp} |
Part_name是指模型中零部件的名称;location_name是指元素输入或输出零部件的地方,它可能是个名字表达式或是个模块的名称;如果发送零件的元素数量大于1,我们可以详细说明一组元素中的哪一个用来发送该零件,Index_exp是一个含有括号的整数表达式,例如,如果location_name是PACKING,则PACKING(3)表示第三台包装机,如果我们不使用Index_exp,规则从一组元素中的任何一个元素输入零部件;如果发送或者接收的零部件是输送链,我们可以从特殊的位置输入或者输出零部件,Position_exp是一个包含有输送链位置号的整型表达式。如果我们不使用该表达式,Witness从输送链的后方输入零部件(或输出零部件到后方);Withlabor_name是模型中要求与机器项目匹配的劳动单位的名称;#labor_qty是指被详细说明的与机器项目相匹配的劳动者数量。usingPATH指定相匹配的项目从前一地点输入机器时使用一条路径。
②作为劳动者规则的语法为:
1 | {labor_ name} {(index_ exp)} {using PATH} |
其中Labor_name是指模型中劳动者的名称。
③限定词是如下几种之一
ANY元素选择列出地点的任何一个。
1 | ATTRIBUTE attribute_ name {(attribute _index _exp)} |
ATTRIBUTE指元素具有特殊属性值的地方(例如,SIZE=10);attribute_name是指系统属性的名字或是自己创建的属性的名字;attribute_index_exp是一个供选择的属性目录,它由一个整数表达式组成。如果使用目录,规则使用一组同类属性中的一种特殊的属性;如果不使用目录,规则使用一组同类属性中的任何一种属性。
·CONDITIONconditionCONDITION是指元素的一般属性符合某种条件的地方;condition是一个条件,如SIZE>10。
下面是有关MATCH作为机器的输入规则的例子:
例1.
1 | MATCH/ANY CLOCK STORE(1) #(2) AND BOX STORE(2) #(1) |
在这个例子中,MATCH规则从第一个STORE元素中取出任意两个钟表零部件,再从第二个STORE元素中取出一个盒子零部件,并把它们一起输入到机器中去。
例2.
1 | MATCH/ATTRIBUTE COLOR CHASSIS_BUFF # (1) AND DOOR_BUFF # (4) |
在这个例子中,MATCH规则将从CHASSIS_BUFF缓冲区中取出1个零部件,再从DOOR_BUFF缓冲区中取出4个与之颜色属性相同零部件,并把它们输入到机器中去。
例3.
1 | MATCH/CONDITION SIZE>10 STOREA #(7) OR STOREB #(7) |
在这个例子中,MATCH规则从STORE_A缓冲区中取出7个SIZE属性值大于10的零部件或者从STORE_B中取出7个SIZE属性值大于10的零部件,并将它们输入机器。
例4.
1 | MATCH/ANY HELP_DESK_CALL #(1) AND SUPPORT_ENGINEER #(1) |
在这个例子中,MATCH规则使用一个SUPPORT_ENGINEER劳动者从HELP_DESK_CALL缓冲区取出1个零部件。
例5.
1 | MATCH/ANY CLOCK STORE(1) with WORKER(1) using path #(2) AND BOX STORE(2) #(1) |
在这个例子中,MATCH规则从第二个STORE元素中取出一个盒子零部件,并且使用劳动者元素WORKER(1)从第一个STORE元素中取出任意两个钟表零部件沿着适当的路径移动,并把它们一起输入到机器中去。
下面是MATCH作为劳动者规则的例子(假设是机器加工需要人员辅助):
例1.
1 | MATCH/ANY (JOE #(2) AND FRED #(1)) OR (BILL #(2) AND TOM #(1)) |
在这个例子中,MATCH规则设定如果有两个JOE劳动者与1个FRED劳动者同时可以使用,或者2个BILL劳动者与1个TOM劳动者同时可以使用,就使用一组进行辅助操作。
例2.
1 | MATCH ATTRIBUTE TEAM_NO DOCTOR#(1) AND NURSE#(2) |
在这个例子中,如果有TEAM_NO属性相同的1个DOCTOR劳动者与2个NURSE劳动者同时可用,就使用他们3个进行辅助操作。
例3.
1 | MATCH/CONDITION SKILL>5 FITTER#(1) OR FOREMAN#(2) |
在这个例子中,任意1个SKILL属性值大于5的FITTER劳动者可以辅助机器操作,或者任意2个SKILL属性值大于5的FOREMAN劳动者可以辅助机器进行操作。
例4.
1 | MATCH/ANY FITTER#(5) AND FOREMAN#(1) using PATH |
在这个例子中,MATCH规则通过特定的路径匹配任意5个FITTER劳动者与任意1个FOREMAN劳动者来辅助机器进行操作。
WAIT规则
(1)WAIT规则定义一个元素如何等待。每一个元素的输入输出规则在默认的情况下,都设为WAIT规则。为了指明模型中零部件的走向,我们必须用其他规则来替代它。
在IF语句中,劳动者规则非常有用。例如:
1 | IF NPARTS(WIDGET_BUFFER )< 50 |
在机器的输入规则这个例子中,如果缓冲区WIDGET_BUFFER中的零部件少于50个的话,机器把WIDGET零部件推入缓冲区内;如果WIDGET_BUFFER中的零部件不少于50的话,机器等待,直到缓冲区内的零部件数少于50。
(2)WAIT规则的语法如下,它没有其它的参数。
WAIT
①WAIT的输入规则
WAIT的输入规则指的是元素等待直到元素输入零部件或者流体到其中。下列元素可以用WAIT作为输入规则:
·机器·输送链·轨道
·管道·容器·处理器
·工作站·路线集·工作站
②WAIT的输出规则
WAIT的输出规则指的是元素等待直到其中的零部件或流体被取出。如果没有其他元素从中将它的零部件取出,元素将会永远被阻塞。以下元素可以用WAIT作为输出规则:
·零部件·单件运输小车·缓冲区
·机器·输送链·运载工具
·轨道·零部件文件·流体
·管道·容器·管道
·处理器·工作站·路线集
③WAIT的劳动者规则
WAIT的劳动者规则指的是元素等待直到劳动者有效。以下元素可用WAIT作为劳动者规则:
·机器·输送链·管道
·容器·处理器·停靠站
·行为站·装载站·卸载站
劳动者规则的例子
例1
1 | TWO _TON#1 OR ONE_TON#2 |
这个例子展示了劳动者作为工具或者资源来使用的情况。元素需要1个TWO_TON工具或者2个ONE_TON工具来完成任务,它将按照列表中的次序来选择劳动者,所以元素将会首先选择前者。
例2
1 | OPERATOR OR NONE |
元素需要一个操作者去执行任务,要是没有操作者可提供,Witness允许在没有操作者的情况下继续执行任务。
例3
1 | NOVICE AND AUTOMATIC OR EXPERT AND MANUAL |
这个例子把操作者作为一种资源或者一个工具来使用。元素需要一个初学者和一个自动工具或者一个专家和一个手动工具一起才能完成任务,它将按照列表中的次序来选择劳动者,所以元素将会首先选择前者。
例4
1 | IF NPARTS(PACKING(1)) < 3 |
如果第一个包装机的零部件的数目小于3,元素不需要劳动者。如果第一个包装机的零部件的数目少于9,但是大于3,元素需要一个单位的OPERATOR劳动者和一个PACK_TOOL工具去执行任务。如果零部件的数目等于9或者更多,元素就需要2个单位的OPERATOR劳动者和2个单位的PACK_TOOL工具,要是劳动者和工具不能被提供,那么用ROBOT来代替。