李梅竹
(陜西廣播電視大學(xué) 工程管理系,西安 710119)
STEP-NC的數(shù)控程序不僅包含零件的三維幾何信息,而且還包含了工藝信息和加工信息,從而克服了傳統(tǒng)的基于ISO6983標(biāo)準(zhǔn)的數(shù)控程序的信息損失、程序修改困難等缺點。STEP-NC有兩種數(shù)據(jù)模型:ISO10303中的AP-238[1]和 ISO14649[2-3],其中 AP-238 為應(yīng)用解釋模型,而ISO14649為應(yīng)用參考模型。本文采用ISO10303 AP-238作為STEP-NC的執(zhí)行方法。
從EXPRESS角度出發(fā),應(yīng)用程序以實體實例或?qū)傩灾禐閱挝贿M行訪問和操作數(shù)據(jù)。ROSE C++類庫,它是ST-Developer中的一個開發(fā)環(huán)境,提供了面向?qū)ο蟮腁PI,可以滿足STEP應(yīng)用開發(fā)的特定需求。利用這個庫可以將EXPRESS模型中的每一個實體(Entity)轉(zhuǎn)換為一個C++類,通過這些C++類,應(yīng)用程序可以快速寫入屬性數(shù)據(jù),并且容易擴展。因此本文的生成過程中借助STEPTools公司提供的ST-Developer來操作數(shù)據(jù),完成有關(guān)數(shù)據(jù)的寫入操作。
應(yīng)用解釋模型是通過映射表來實現(xiàn)的,映射表定義了每個確定的信息需求是如何被滿足的[4]。映射表的格式如表 1 所示[1],其中:1)第一列為應(yīng)用元素。這一列表示的為應(yīng)用元素的名稱,這個名稱是與應(yīng)用對象定義中出現(xiàn)的名稱相一致的。2)第二列為應(yīng)用解釋模型的元素。應(yīng)用實體屬性的名字以<實體名稱>.<屬性名稱>被提及。3)第三列為資源。主要說明這個應(yīng)用解釋模型的元素來源。4)第四列為規(guī)則。這些規(guī)則主要是源于應(yīng)用對象之間的關(guān)系,相同的規(guī)則是由所有有關(guān)的AIM元素的映射條款所涉及。5)第五列為參考路徑。描述了應(yīng)用對象完整的映射,它通過一些相關(guān)的AIM元素指定了一個必要的參考路徑。
表1 部分映射表信息
從實體的映射表可以看出,它對實體的每一個屬性都給了全面的解釋,從屬性的來源到屬性信息的參考路徑都有涉及到。從以實體為對象的角度分析,這個映射表全面給出了實體本身和它所包含屬性之間的關(guān)系,并且對各個屬性內(nèi)容給出一定的解釋。按照映射表所包含屬性的順序,對表中的每一個屬性進行分析,其中參考路徑為分析的重點。
STEP物理交換文件的頭段信息包含了幾個描述性對象:文件描述實體的屬性;文件名實體的屬性;文件模式實體。當(dāng)創(chuàng)建一個新的設(shè)計對象時,利用RoseDesign類的initialize_header()函數(shù)建立頭段對象信息,具體信息由 header_description()和 header_name()來創(chuàng)建,文件模式(file_schema)由useSchema()函數(shù)寫入。
下面是一個頭段信息建立的實例:
design=new RoseDesign("lmz","integrated_cnc_schema");
Design->format("step");//以STEP Part21的格式寫入
Design->initialize_header();
Design->header_description()->description()->add("AP-238 file");
……
Design->header_name()->authorisation("Someone else");
基于ROSE類庫采用兩種數(shù)據(jù)段的生成方法,即早聯(lián)編和晚聯(lián)編。本文采用的是早聯(lián)編。
早聯(lián)編方式生成數(shù)據(jù)段時,首先把應(yīng)用協(xié)議AP-238對應(yīng)的模式文件用EXPRESS編譯器編譯,把應(yīng)用協(xié)議中的實體轉(zhuǎn)化成C++類。在生成數(shù)據(jù)段的應(yīng)用程序中使用這些類創(chuàng)建對應(yīng)實體的實例,并給實體中的屬性賦值。應(yīng)用協(xié)議中每個實體都具有約束規(guī)則,因此在生成實體實例時必須滿足各實體的約束規(guī)則,這樣生成的AP-238文件才能滿足一致性要求,在應(yīng)用程序中按照實體約束規(guī)則的描述,用對應(yīng)的C++類生成規(guī)則中的實體實例。應(yīng)用協(xié)議中全部相關(guān)實體及對應(yīng)的規(guī)則中的實體實例構(gòu)成了應(yīng)用協(xié)議對應(yīng)的STEP物理文件。
下面以AP-238協(xié)議中定義的實體machining_workingstep為例講述早聯(lián)編方式生成STEP文件數(shù)據(jù)段的過程和方法。
machining_workingstep 實體的 EXPRESS 定義如下[1]:
ENTITY machining_workingstep
SUBTYPE OF(machining_process_executable);
name:STRING;
description:STRING;
consequence:STRING;
purpose:STRING;
END_ENTITY;
由EXPRESS定義可以看出實體machining_workingstep是實體machin-ing_process_executable的子類,它繼承了實體machining_process_executable的所有屬性。
實體machining_workingstep的5條約束規(guī)則分別為:
WR1:machining_workingstep實體實例必須是實體machining_process_-sequence_relationship的屬性related_method的值,并且此實體的屬性relating_method的值是machining_process_executable實體類型。
WR2:machining_workingstep實體必須是實體action_property的屬性definition的值,并且實體action_property的 name屬性值為“toolpath orientation”,用來描述實體action_property的representation實體需要包含一個axis2_placement_3d類型的representation_item實體。
WR3:machining_workingstep的 description屬性必須為“machining”或“turning”。并且它必須滿足函數(shù)very_optional_in_process_geometry中測試的條件,即只有當(dāng)輸入的machining_process_executable滿足一定條件,very_optional_in_process_geometry函數(shù)返回真。
WR4:machining_workingstep的 description屬性為“machining”時,必須滿足以下的條件:
1)machining_workingstep實體是實體 machining_feature_relationship的屬性relating_method的值,實體machining_feature_relationship的屬性related_method的值為machining_feature_process實體類型;
2)machining_workingstep實體是實體 machining_final_feature_relation-ship的屬性relating_method的值,實體 machining_final_feature_relationship的屬性related_method的值為machining_feature_process實體類型;
3)machining_workingstep實體是實體 machining_operation_relationship的屬性relating_method的值,實體machining_operation_relationship的屬性related_method的值為machining_operation實體類型。
WR5:machining_workingstep的 description屬性為“turning”時,必須滿足的條件與WR4相似在這里不詳細闡述。
AP-238應(yīng)用協(xié)議對應(yīng)的模式文件為integrated_cnc_schema.exp,先用EXPRESS編譯器編譯該模式文件,編譯器界面如圖1所示。
圖1 EXPRESS編譯器界面
編譯完模式文件,可以得到包含實體machining_workingstep在內(nèi)的所有實體對應(yīng)的C++類庫,把C++類庫添加到工程中。
早聯(lián)編使用EXPRESS編譯器產(chǎn)生C++類來生成STEP文件,代碼如下:
machining_workplan*machin_workplan=pnew
machining_workplan("machining operations","Routing 1","","");
machining_workingstep*machin_workingstep=pnew machining_workingst-ep("WS 1","machining","","");
machining_process_sequence_relationship*machin_process_sequence_relation =pnew machining_process_sequence_relationship
("","",machin_workplan,machin_workingstep,1.);
characterized_action_definition*definition100=pnew characterized_action_definition();
definition100->_action_method(machin_workingstep);
action_property*action_propertyl=pnew action_property("toolpath orientation","",definition100);
通過上述早聯(lián)編方式生成的AP-238文件代碼如圖2所示。
此外對于聚合屬性的數(shù)據(jù)類型,以SET數(shù)據(jù)類型為例說明其生成方法。例如實體representation的EXPRESS表達形式為:
圖2 生成的部分AP-238文件
ENTITY representation;
name:label;
items:SET[1:?]OF representation_item;
context_of_items:representation_context;
END_ENTITY;
生成文件的編譯代碼如下所示:
measure_representation_item*repitem1=pnew
measure_representation_item("",mei,zhu);
setOfrepresentation_item * setofrepitem1=pnew setOfrepresentation_item();
setofrepitem1->add(repitem1);
representation*rep11 =pnew representation("",setofrepitem1,li);
生成對應(yīng)的AP-238文件代碼為:
#96=REPRESENTATION('',(#33),#197);綜上可完成AP-238文件的生成。
STEP物理文件交換是不同系統(tǒng)之間進行數(shù)據(jù)交換最基本的途徑,也是實現(xiàn)STEP標(biāo)準(zhǔn)的最基本的方式,本論文主要研究AP-238文件的生成方法。文中的研究分為兩部分,即文件頭段生成方法和數(shù)據(jù)段生成方法,其中數(shù)據(jù)段部分用早聯(lián)編方式實現(xiàn)。最后以AP-238協(xié)議中定義的實體machining_workingstep為例給出具體實例詳細說明生成方法。
[1] ISO/DIS 10303-238-2006 Industrial automation systems and integration-Product data representation and exchange-Part238:Application protocol:Application interpreted model for computerized numerical controllers[S].
[2] ISO14649-1-2003 Industrial automation systems and Integration-Physical device control-ISO14649 Data model for Computerized Numerical Controllers-Part1:Overview and fundamental principles[S].
[3] ISO/FDIS 14649-10-2002 Industrial automation systems and integration-Physical device control-ISO14649 Data model for Computerized Numerical Controllers-Part10:General Process Data[S].
[4] 王樹春.網(wǎng)絡(luò)制造中STEP-NC與XML數(shù)據(jù)轉(zhuǎn)換系統(tǒng)的開發(fā)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2006:18-19.