其他 Windchill 功能 > 製造流程管理 > 自訂製程計劃總管
  
自訂製程計劃總管
製程計劃是在廠區時需要完成哪些工作才能產生、檢驗、維修或維護特定零件或組件的詳細說明。它們包含要執行的作業、必須完成作業的順序、實體資源、必要的工廠與技能、文件參考、文字描述及時間與成本需求。
使用 Windchill MPMLink 製程計劃,您可以定義下列內容。
執行產品製造工作所需要的作業。
執行這些作業的工序。
每個作業的時間、成本與條件約束。
執行作業所需的實體資源與技能。
製造產品所需的零件,以及在製造流程中使用它們的地點與方法。
Windchill MPMLink 中,製程計劃也會用來建立廠區「工作指示」。工作指示是在廠區生產、檢驗、維修或維護零件時所使用的逐步指示。工作指示是動態產生的 HTML 文件,它結合了製程計劃資訊 (工序、作業、零件分配、資源分配、時間等) 及所有相關文件,例如含有註釋的工程圖、圖像及 3D 工作階段。
建立自訂方程式
方程式集可用來使一組屬性與要用來計算其值的對應方程式相關聯。構成方程式集的元件如下所示:
FormulaSet 用來識別集合
FormulaMetaData 定義了 Java 方程式的名稱與描述
FormulaValuatedLink 可將屬性名稱關聯至方程式定義
下圖是需要建立來新增自訂方程式的資料範例:
「方程式集」標籤是用來選取可用於計算與作業相關聯的時間與成本的預先定義方程式集。例如,標準時間與成本方程式集,以及定期時間與成本方程式集。這些方程式集會考量在作業中產生的零件數量,並使用為工作中心定義的規格 (例如設定時間、佇列時間)。當已選取「計算時間與成本」動作時,以及將製程計劃與作業載入「製造甘特總管」時,會使用方程式與方程式集。
雖然多個方程式集可以與一個工作中心產生關聯,但只能指派一個方程式集作為該工作中心的預設方程式集。當將工作中心分配到作業時,會將這個方程式集指派給該作業。
* 
必須將方程式指派給方程式集。如果您沒有現有的方程式集,必須先定義一個方程式集,才能定義自訂方程式。PSE 可以自訂,讓您能夠使用 PSE 將其他值新增至您的自訂方程式集。如需詳細資訊,請參閱 PSE 文件集。
欲建立自訂方程式,請遵循下列步驟:
1. 使用 LoadFromFile 公用程式,載入 XML 型載入檔案,其中 <csvname> 對系統而言具唯一性。此載入檔案必須包含下列所有元素:
csvFormulaSet - 這會建立 FormulaSet 物件。
csvFormulaMetaData - 這會建立 FormulaMetaData 物件。
csvAddFormulaMetaData - 這會將 FormulaMetaData 連結至 FormulaSet。
<csvFormulaSet handler="com.ptc.windchill.mpml.formula.LoadFormula.
createFormulaSet">
<csvuser></csvuser>
<csvname>Standard Time and Cost</csvname>
<csvdescription>This formula Set is used to calculate the time and
cost of an Operation</csvdescription>
<csvfolder>/Default/Design</csvfolder>
<csvparentcontextPath></csvparentcontextPath>
<csvorganizationName></csvorganizationName>
</csvFormulaSet>
2. 連結至實行方程式介面並傳回已計算值的 java 類別名稱,來建立方程式中繼資料。例如,FloatingPointWithUnits。
使用 LoadFromFile 公用程式,載入 XML 型載入檔案,其中 <csvname> 對系統而言具唯一性,且 <csvformulaClassName> 是實行方程式介面的 Java 類別。
<csvFormulaMetaData handler="com.ptc.windchill.mpml.formula.
LoadFormula.createFormulaMetaData">
<csvuser></csvuser>
<csvname>StandardAttributeValueFormulaTime</csvname>
<csvdescription>Standard Attribute Value Formula</csvdescription>
<csvtype>time</csvtype>
<csvformulaClassName>com.ptc.windchill.mpml.formula.Standard AttributeValueFormula</csvformulaClassName>
<csvfolder>/Default/Design</csvfolder>
<csvparentcontextPath></csvparentcontextPath>
<csvorganizationName></csvorganizationName>
<csvorganizationID></csvorganizationID>
</csvFormulaMetaData>
3. 使用屬性名稱將方程式中繼資料連結至方程式集。
例如,當呼叫計算方程式的服務時,將會執行與方程式集相關聯的所有方程式中繼資料,並且會使用屬性名稱作為索引鍵來傳回所有已計算值的對應。
使用 LoadFromFile 公用程式,載入 XML 型載入檔案,其中 <csvattributeName> 是 MPMOperation 物件中的時間與成本可重新使用屬性
<csvAddFormulaMetaData handler="com.ptc.windchill.mpml.formula.
LoadFormula.addFormulaMetaDataToFormulaSet" >
<csvformulaSetName>Standard Time and Cost</csvformulaSetName>
<csvformulaMetaDataName>StandardAttributeValueFormula Time</csvformulaMetaDataName>
<csvattributeName>IBA|MPM_Attr_MPMOperationSetupTime </csvattributeName>
</csvAddFormulaMetaData>
當建立實行方程式介面的 java 類別時,這些輸入預設可在輸入對應中存取。
FormulaHelper.FORMULAVALUATED:對其連結方程式集且轉換為 ForumlaValuated 的物件。
FormulatHelper.FORMULAVALUATED_TI:對其連結方程式集且轉換為 TypeInstance 的物件類型實例。它可以是空值。
FormulaHelper.FORMULAVALUATED_ATTRIBUTE_NAME:用來將方程式中繼資料連結至方程式集且轉換為「字串」的屬性名稱。這將會在結果對應中作為索引鍵使用。
FormulaHelper.LOT:由使用者在「計算時間與成本」動作的前後關聯中指定的批號值。它會轉換為雙精度浮點數。
以下是方程式 java 類別的範例:
import com.ptc.core.meta.common.AttributeIdentifier;
import com.ptc.core.meta.common.AttributeTypeIdentifier;
import com.ptc.core.meta.common.TypeinstanceIdentifier;
import com.ptc.core.meta.context.common.AttributecontextSpec
import com.ptc.core.meta.server.TypeIdentifierUtility;
import com.ptc.core.meta.type.common.TypeInstance;
import com.ptc.core.meta.type.common.TypeInstanceFactory;
import com.ptc.windchill.mpml.MPMLinkHelper;
import java.text.NumberFormat;
import java.util.HashMap;
import wt.units.FloatingPointWithUnits;
import wt.util.WTContext;
import util.WTException;
public class StandardAttributeValueFormula implements Formula{
private static final String RESOURCE = "com.ptc.windchill.mpml.formula.formulaResource";
private static NumberFormat numberFormat =
NumberFormat.getInstance(WTContext.getContext().getLocale());
/** Creates a new instance of StandardAttributeValueFormula */
* This Formula simply return the value of the attribute.
public StandardAttributeValueFormula() {
}
public FloatingPointWithUnits calculate(HashMap inputs)throws
InvalidFormulaInputException, WTException{
//Get the object on which the formula is call
Object object = inputs.get(FormulaHelper.FORMULAVALUATED);
//Get the TI on which the formula is call
TypeInstance ti =(TypeInstance)inputs.get(FormulaHelper.FORMULAVALUATED_TI);
//Get the attribute that is calculated by the formula
String attribute_name = (String)inputs.get(FormulaHelper.FORMULAVALUATED_ATTRIBUTE_NAME);
if(object == null)
throw new InvalidFormulaInputException( RESOURCE, formulaResource.REQUIRED_FORMULA_INPUT_MISSING, new Object[]{FormulaHelper.FORMULAVALUATED} );;
TypeInstanceIdentifier tii = null;

//Get the TI of the object if null
if(ti==null){
tii = TypeIdentifierUtility.getTypeInstanceIdentifier(object);
ti = TypeInstanceFactory.newTypeInstance(tii);
}else
tii = (TypeInstanceIdentifier)ti.getIdentifier();
//Get ATI for the attribute to calculate
AttributeTypeIdentifier ati = (AttributeTypeIdentifier)MPMLinkHelper.getIdentifierFactory().get(attribute_name,tii.getDefinitionIdentifier());
AttributeIdentifier[] ais = ti.getAttributeIdentifiers(ati);
//If the attribute value is not in the TI, update it to get the value
if(ais.length<1){
AttributecontextSpec fl = new AttributecontextSpec();
fl.putEntry(ati);
ti = MPMLinkHelper.updateTypeInstance(new TypeInstance[] {ti}, fl, null)[0];
ais = ti.getAttributeIdentifiers(ati);
}
//Get the attribute value
Object value = null;
if(ais.length>0)
value = ti.get(ais[0]);
//Return the value of the attribute if it’s a FloatingPointWithUnits
if(value instanceof FloatingPointWithUnits)
return (FloatingPointWithUnits)value;
// value is null
return FloatingPointWithUnits.valueOf(numberFormat.format(0));
}
}
* 
您也可以透過建立新動作,然後使用方程式服務呼叫方程式集的執行,以將更多輸入新增至方程式。如需有關建立新動作的詳細資訊,請參閱 PSE 文件集。
啟用定期時間與成本方程式
欲啟用定期時間與成本方程式,請遵循下列步驟:
1. 啟動「類型及屬性管理」公用程式。
2. 「管理可重新使用屬性」窗格中,選取 Resource_Attribute_Org 組合管理。
3. 插入具有以下內容的新屬性:
名稱:MPM_Attr_SetupLotInterval
資料類型:實數
內部名稱:MPM_Attr_SetupLotInterval
描述︰顯示名稱與階層顯示名稱:設定批號間隔
4. 插入具有以下內容的新屬性:
名稱:MPM_Attr_SetupTimeDuringProcessing
資料類型:實數
內部名稱:MPM_Attr_SetupTimeDuringProcessing
描述︰顯示名稱與階層顯示名稱:設定批號間隔
5. 插入具有以下內容的新屬性:
名稱:MPM_Attr_SetupCostDuringProcessing
資料類型:實數
內部名稱:MPM_Attr_SetupCostDuringProcessing
描述︰顯示名稱與階層顯示名稱:設定處理期間的成本
6. 「管理類型」窗格中,編輯位於「零件主物件」 > 「資源」 > 「可指派作業」下的「工作中心」類型
7. 「範本」標籤中,選取「屬性根目錄」,按一下「新增屬性」,然後將三個先前建立的屬性關聯至「工作中心」類型。
8. 啟動「製造資源總管」。
9. 針對每個現有的工作中心,出庫工作中心,並在「資訊」標籤中針對「設定批號間隔」、「設定處理期間的時間」與「設定處理期間的成本」屬性設定值。設定好所有屬性後,入庫工作中心。
變更累計時間與成本的量測單位
「製程計劃總管」的累計時間與成本功能不使用「量測系統」預設單位。
欲變更時間與成本自動更新的單位,必須修改下列內容:
com.ptc.windchill.mpml.CumulatedTimeAndCostActionTimeUnit
com.ptc.windchill.mpml.CumulatedTimeAndCostActionCostUnit
這些內容可在下列位置找到:
codebase/com/ptc/windchill/mpml/xconf/mpmlin.properties.xconf
預設值分別為 "min" 與 "$"。
自訂工作指示
可以自訂隨 Windchill MPMLink 安裝的工作指示範本,以符合您的需求。欲自訂工作指示,您應具備 JSP 與 Info*Engine 的基本知識。
Info*Engine 任務可用來收集要顯示在工作指示中的資訊,而 JSP 則可用來排列該資訊的顯示及設定其格式:
位置
描述 (Description)
<WT_Home>\codebase\netmarkets\jsp\ mpml
在工作指示中使用之 JSP 的位置。
<WT_Home>\tasks\com\ptc\windchill\ mpml\workinstructions
用來收集工作指示資料之 Info*Engine 任務的位置。
<WT_Home>\codebase\com\ptc\windchill\ mpml\xconfs\ mpmlink.properties.xconf
工作指示內容的位置。
<WT_Home>\codebase\netmarkets/css/wor kInstructionStyles.css
工作指示樣式表的位置。此檔案可用來變更在工作指示中使用的字型,以及報告標題的顏色。
在工作指示中使用的 JSP
下表列出並描述用來配置工作指示的 JSP。
JSP
描述 (Description)
headerWorkInstruction.jsp
建立顯示在工作指示報告最上方角落的標誌圖像。在標誌右側會建立一個表格,顯示有關作業製程計劃的資訊,這些資訊也顯示在報告中。在最右邊會建立一個與此製程計劃相關聯的組件表資訊。
configSpecWorkInstruction.jsp
建立在工作指示報告中使用的組態規格表。此報告有三種有效的組態規格類型:標準、基準線與生失效。顯示的值是在啟動工作指示報告時套用至資料之展開條件的值。
operationHeaderWorkInstruction.jsp
在左邊界顯示在 sequenceHeaderWorkInstruction.jsp 中建立的資訊。建立作業或子作業的標籤編號,並將其置於序號旁邊。在標籤編號底下,會建立表格,顯示該作業的名稱、編號、版本與簡短描述。
operationDetailHeaderWorkInstruction. jsp
在作業標題下方建立表格。它會顯示作業的詳細資訊,包括使用的工作中心、時間與成本。
operationDetailWI.jsp
建立含作業長描述、其關聯零件、其分配資源及其關聯文件的表格。如果文件表中「已顯示」欄的值為「是」,關聯文件便是要顯示在這些詳細資訊表左側工作指示面板中的辨識圖像。可以顯示在工作指示中的圖像檔案必須以下列內容指定的副檔名結尾:
com.ptc.windchill.mpml.WorkInstructi
onIllustrationFileExtensionAllowed
sequenceHeaderWorkInstruction.jsp
當作業是工序的一部份時,此 JSP 會建立對於分支作業與傳回作業的連結。如果作業是另一個作業的子作業,此 JSP 會建立父作業的連結。
footerWorkInstruction.jsp
建立顯示在每個作業部份結尾的頁尾區域。這會顯示作業的目前狀態、其狀況、其檢查,其何時第一次建立,上次何人更新作業,以及上次更新日期與時間。
coreWorkInstruction.jsp
建構工作指示報告的核心 JSP。處理 URL 參數,並呼叫用來收集與在製程計劃中找到之作業資料相關的 Info*Engine 任務。如果從製程計劃啟動 JSP,它會呼叫
processPlanLogicWorkInstruction.jsp
如果從作業啟動,它會呼叫
operationLogicWorkInstruction.jsp
此 JSP 也會計算作業之間的父與子關係,及工序分支作業與傳回作業。它會針對每個作業呼叫建立表格的 JSP,並顯示 Info*Engine 任務傳回的資料。
operationLogicWorkInstruction.jsp
Info*EngineInfo*Engine
啟動尋找某作業下所有作業及標準程序的 Info*Engine 任務。作業會依作業標籤編號排序。此 JSP 不會顯示報告中的項目。
processPlanLogicWorkInstruction.jsp
啟動尋找某作業下所有作業、工序及標準程序的 Info*Engine 任務。找到的作業會依作業標籤編號排序。此 JSP 不會顯示報告中的項目。
在工作指示中使用的 Info * Engine 任務
下表列出並描述用來收集在工作指示中使用之資料的 Info*Engine 任務。
Info*Engine 任務
描述 (Description)
describeAttributes.xml
此任務中的每個 webject 都會建立本地化屬性值所在的群組。然後這些本地化值會顯示在工作指示報告中。
getOperationData.xml
此任務中的 webject 會查詢作業中顯示在工作指示報告中的資料。會收集下列資料集:工作中心、製程、零件、製造能力、資源與文件。每個資料集都儲存在 Info*Engine 群組中。
getOperationsAndStProceduresUnderAnOperation.xml
此任務中的 webject 會建立一個群組,其中包含在特定作業下找到的第一層深度的子作業與標準程序。
getProcessPlanAndAssemblyInformation.xml
此任務中的 webject 會建立一個群組,其中包含與製程計劃相關聯之組件的資訊。
getSequencesAndStProceduresUnderAProcessPlan.xml
此任務中的 webject 會建立一個群組,其中包含在製程計劃下找到的第一層深度的工序與標準程序。
sortingOperations.xml
此任務中的 webject 會建立一個群組,其中包含在特定作業下找到的子作業與標準程序。它也會在每一層級中排序作業與標準程序。目前,演算法並非遞歸;它會上移至 3 層的深度。亦即,它將只會尋找 3 層的子作業,然後無論是否有更多子作業,都會停止。欲前往更深的層級,請遵循在此任務中套用的模式,並相應地新增更多層級。
sortingSequences.xml
此任務中的 webject 會建立一個群組,其中包含在特定工序下找到的子工序與標準程序。它也會在每一層級中排序工序與標準程序。目前,演算法並非遞歸;它會上移至 3 層的深度。亦即,它將只會尋找 3 層的子工序,然後無論是否有更多子工序,都會停止。欲前往更深的層級,請遵循在此任務中套用的模式,並相應地新增更多層級。
工作指示內容
工作指示自訂
自訂工作指示有幾個原因,包括用我們自己的資訊取代頁首與標誌,或提供更簡單的工作指示。
下表列出某些常用的工作指示自訂。
自訂
描述 (Description)
欲變更作業的時間單位:
修改下列 JSP:
timeUnit in coreWorkInstruction.jsp
例如,欲從秒變更為分鐘,請變更為 m
欲變更作業中步驟的時間單位:
視需要修改下列 JSP:
setupTimeUnit
processingTimeUnit
LaborTimeUnit
queueTimeUnit,
teardownTimeUnit,
waitTimeUnit,
moveTimeUnit
例如,欲從秒變更為分鐘,請變更為 m
欲重新定位工作指示中的表格:
導覽至下列 JSP 的結尾:
coreWorkInstruction.jsp
然後重新設計 HTML 顯示。
欲在工作指示中顯示作業的處理成本:
導覽至下列任務:
getOperationsAndStProceduresUnder AnOperation.xml
sortingOperations.xml
將下列屬性新增至上述任務:
MPM_Attr_MPMOperationProcessingCost
然後在下列 JSP 中建立欄並顯示資料:
operationDetailHeaderWorkInstruction
.jsp
欲變更工作指示中標題的字型、大小或顏色:
修改下列 CSS 檔案以及使用 CSS 檔案中定義的 JSP:
workInstructionStyles.css
欲變更工作指示頂部或作業表中的標誌:
請遵循下列步驟:
xconfmanager -d
com.ptc.windchill.mpml.WorkInstructionLogo=<logo> -t
codebase/wt.properties
其中 <logo> 是在下列資料夾中找到之標誌 .gif 檔案的完整路徑:
codebase\netmarkets\jsp\mpml
預設值為:對應至資料夾 codebase\netmarkets\images 的 ../../images/ptcLogo_workInstructions.gif
欲新增圖像副檔名類型:
將副檔名類型新增至下列內容:
com.ptc.windchill.mpml.WorkInstructi
onIllustrationFileExtensionAllowed
欲重新排列、移除或新增新表格:
修改下列 JSP:
coreWorkInstructions.jsp
變更作業編號
Windchill MPMLink 會以 10 為增量為作業編號。例如,作業 10、作業 20 等。不過,您可能會想要配置您的作業,使其以不同的編號配置自動增量。
欲變更編號配置,您可以修改下列內容:
wt.operationLabelIncrement
wt.operationLabelNumberOfCharacters
例如,欲使操作標籤具有三個字元並以 5 為增量進行增加 (005、010),請將下列內容放在 site.xconf 中,然後執行 xconfmanager-pF:
<Property name="wt.operationLabelIncrement" overridable="true" targetFile="codebase/wt.properties" value="5"/>
<Property name="wt.operationLabelNumberOfCharacters" overridable="true" targetFile="codebase/wt.properties" value="3"/>
此外,欲變更作業使用的填補 (例如,變更為 0 以外的值),請修改下列內容:
wt.operationLabelPaddingCharacter