国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于演進(jìn)過程控制系統(tǒng)中的規(guī)范的軟件構(gòu)架的制作方法

      文檔序號:6593654閱讀:217來源:國知局
      專利名稱:用于演進(jìn)過程控制系統(tǒng)中的規(guī)范的軟件構(gòu)架的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明總體上涉及過程控制系統(tǒng),并且更具體地涉及提供用于演進(jìn)過程控制系統(tǒng) 中的規(guī)范版本的軟件構(gòu)架的方法和裝置。
      背景技術(shù)
      過程控制系統(tǒng)通常保護(hù)一些現(xiàn)場設(shè)備,所述現(xiàn)場設(shè)備可操作用來實施期望的控制 過程(例如石油煉制、制造操作等等)?,F(xiàn)場設(shè)備的示例包括閥、定位器和開關(guān),它們都被控 制以實施控制過程。通?;谶_(dá)成一致的慣例/標(biāo)準(zhǔn)來為過程控制系統(tǒng)中的各種系統(tǒng)/設(shè)備等等的互 通性來提供規(guī)范。該規(guī)范可以指示各種方面,例如數(shù)據(jù)的格式、從外部系統(tǒng)提供的或可用于 使用的服務(wù)等等。規(guī)范常常演進(jìn),通常由版本號標(biāo)識。一般來說,規(guī)范的每個版本意圖提供新的特征 (有可能針對新引入的部件/設(shè)備/軟件等等)以及/或者解決現(xiàn)有版本的已知問題。存在對實施在這種演進(jìn)過程控制設(shè)備中的規(guī)范的背景中操作的軟件應(yīng)用程序 (application)的普遍需求。


      將參考下面簡描述的附圖來描述本發(fā)明。圖1是說明可以在其中實施本發(fā)明的一些方面的示例設(shè)備的數(shù)字處理系統(tǒng)的框 圖。圖2是說明根據(jù)本發(fā)明的方面而實施的軟件應(yīng)用程序的實施方式和/或操作的流 程圖。圖3是說明可以在其中實施本發(fā)明的一些方面的示例環(huán)境的過程控制設(shè)施的框 圖。圖4是說明示例實施例中的解析器(parser)的使用的框圖。圖5是說明一起實施本發(fā)明實施例中的解析器的各種模塊的框圖。圖6A是說明其中類廠(class factory)源自本發(fā)明實施例中的基廠(kise factory)的方式的框圖。圖6B是說明其中解析器對象源自本發(fā)明實施例中的鏈中的對應(yīng)基對象的方式的 框圖。圖7是說明在本發(fā)明實施例中形成的鏈廠(chain factory)的細(xì)節(jié)的框圖。
      圖8是說明當(dāng)在本發(fā)明的實施例中添加新版本時的鏈廠的框圖。在圖中,相似的參考標(biāo)記一般指示相同、功能相似和/或結(jié)構(gòu)相似的元件。元件首 次在其中出現(xiàn)的圖由對應(yīng)參考編號中的最左邊(一個或多個)數(shù)字表示。
      具體實施例方式1.概論本發(fā)明的一個方面提供一種構(gòu)架,使用該構(gòu)架,軟件應(yīng)用程序可以被設(shè)計成演進(jìn) 過程控制系統(tǒng)中的規(guī)范。在實施例中,至少對于通過與現(xiàn)有版本相比較的對應(yīng)版本添加或 修改的特征來實施版本對象的集合。還提供類廠來例示版本對象。生成表示類廠的信息, 其可以被用來例示對應(yīng)的版本對象。當(dāng)根據(jù)特定版本,應(yīng)用程序被適當(dāng)?shù)慕涌?/命令需要處理調(diào)用時,檢查廠信息以 選擇被設(shè)計成例示可以處理所接收的輸入的版本對象的廠對象。通過例示對應(yīng)的版本對象 來創(chuàng)建解析器實例。使用所創(chuàng)建的解析器實例來處理該輸入。這樣的構(gòu)架可以提供一些優(yōu)點。例如,可以簡化升級軟件應(yīng)用程序以支持較新的 版本。在一個實施例中,廠信息處于節(jié)點的鏈接列表的形式,其中每個節(jié)點指向?qū)?yīng)的 類廠。通過遍歷鏈接列表來選擇類廠??梢员闅v鏈接列表來確定如對應(yīng)于大于或等于適合 于處理所接收輸入的版本標(biāo)識符的版本號的版本對象的選擇的類廠??梢詫嵤┰醋韵嗤鶑S的所有類廠。另一方面,每個版本對象(除了對于開始版 本的版本對象)源自被設(shè)計成解析緊接先前版本的版本對象。因此,每個版本對象可以僅 需要實施相比于先前版本的變化(所添加/修改的段)。因此,對新版本支持的添加可能需要實施新的版本對象(解析與現(xiàn)有最新版本相 比而變化的段),并且將對應(yīng)的類廠添加到鏈。為了適度地處理任何不支持版本中的變化,使用最近的版本對象(和作為鏈尾部 的對應(yīng)類廠)。當(dāng)遇到由這種不支持版本改變的段時,最近的版本對象返回誤差代碼,由此 提供對不支持版本中的變化的容忍度(tolerance)。在實施例中,在實施用來解析不同版本的協(xié)議標(biāo)準(zhǔn)的設(shè)備描述的解析器的背景下 實施上述特征。為了說明下面參考示例來描述本發(fā)明的一些方面。應(yīng)該理解,闡述了許多特定細(xì) 節(jié)、關(guān)系和方法來提供本發(fā)明的完全理解。然而,相關(guān)領(lǐng)域技術(shù)人員將會容易認(rèn)識到可以在 缺少一個或多個特定細(xì)節(jié)的情況下,或者利用其他方法等等來實行本發(fā)明。在其他實例中, 為了避免模糊本發(fā)明,沒有詳細(xì)示出公知的結(jié)構(gòu)或操作。2.數(shù)字處理系統(tǒng)圖1是說明可以在其中實施本發(fā)明的一些方面的數(shù)字處理系統(tǒng)100的細(xì)節(jié)的框 圖。通過執(zhí)行適當(dāng)?shù)能浖噶羁梢圆僮髦辽僖恍┓矫?。?shù)字處理系統(tǒng)100可以包含一個或多個處理器,例如中央處理單元(CPU)llO、隨 機存取存儲器(RAM) 120、次級存儲器130、圖形控制器160、顯示單元170、網(wǎng)絡(luò)接口 180、和 輸入接口 190。除了顯示單元170之外的所有部件可以通過通信路徑150彼此通信,如相關(guān) 領(lǐng)域中公知的那樣通信路徑150可以包含一些總線。下面將更詳細(xì)地描述圖1的部件。
      CPU 110可以執(zhí)行存儲在RAM 120中的指令以提供本發(fā)明的一些特征(包括下文 所述的解析器和其他塊)。一般來說,指令一起構(gòu)成用戶應(yīng)用程序,這依據(jù)根據(jù)本發(fā)明的各 個方面而提供的構(gòu)架。從下文的描述將會清楚,構(gòu)架有助于容易升級以符合演進(jìn)標(biāo)準(zhǔn),并且 容忍(tolerant)還沒有被軟件應(yīng)用程序特別實施的較新標(biāo)準(zhǔn)。盡管在本文中關(guān)于在單個(單獨)系統(tǒng)上實施的軟件應(yīng)用程序提供了示例,但是 應(yīng)該認(rèn)識到可以在基于網(wǎng)絡(luò)的應(yīng)用程序上實施特征的一些方面,如通過閱讀本文中所提供 的公開內(nèi)容相關(guān)領(lǐng)域技術(shù)人員將會認(rèn)識到的那樣。CPU 110可以包含多個處理單元,其中每個處理單元潛在地都是為特定任務(wù)而設(shè) 計的??商鎿Q地,CPU 110可以僅包含單個通用處理單元。RAM 120可以使用通信路徑150 從次級存儲器130接收指令,并且還在提供用戶界面的時候支持對象。圖形控制器160基于從CPU 110接收到的數(shù)據(jù)/指令為顯示單元170生成顯示信 號(例如以RGB格式)。顯示單元170包含顯示屏以顯示由顯示信號限定的圖像。輸入接 口 190可以對應(yīng)于鍵盤和/或鼠標(biāo)。顯示單元和輸入接口可以被用來提供合適的接口以管 理根據(jù)本發(fā)明的各個方面的現(xiàn)場設(shè)備。網(wǎng)絡(luò)接口 180可以包含一個或多個物理接口,其為各種控制網(wǎng)絡(luò)以及提供用戶界 面的客戶端系統(tǒng)提供連通性。例如,網(wǎng)絡(luò)接口 180使得中央服務(wù)器350能夠與客戶端系統(tǒng) 連接到其上的控制網(wǎng)絡(luò)和LAN 二者對接。次級存儲器130(由非易失性存儲裝置表征)可以包含硬盤驅(qū)動器135、閃速存儲 器136和可移動存儲驅(qū)動器137。次級存儲器130可以存儲數(shù)據(jù)和軟件指令(例如上述模 塊),其使得數(shù)字處理系統(tǒng)100能夠提供根據(jù)本發(fā)明的一些特征??梢栽诳梢苿哟鎯卧?40上提供一些或所有數(shù)據(jù)和指令,并且數(shù)據(jù)和指令可以 被可移動存儲驅(qū)動器137讀取并提供給CPU 110。軟盤驅(qū)動器、磁帶驅(qū)動器、CD-ROM驅(qū)動器、 DVD驅(qū)動器、閃速存儲器、可移動存儲器芯片(PCMCIA卡、EPR0M)是這樣的可移動存儲驅(qū)動 器137的示例??梢允褂门c可移動存儲驅(qū)動器137兼容的介質(zhì)和存儲格式來實施可移動存儲單 元140,以使得該可移動存儲驅(qū)動器137可以讀取數(shù)據(jù)和指令。因此,可移動存儲單元140 包括具有存儲在其中的計算機軟件和/或數(shù)據(jù)的計算機可讀(存儲)介質(zhì)。然而,計算機 (或機器,通常)可讀介質(zhì)可以是其他格式(例如不可移動的、隨機存取等等)。在該文檔中,術(shù)語“計算機程序產(chǎn)品”一般被用來指可移動存儲單元140或安裝在 硬盤驅(qū)動器135中的硬盤。這些計算機程序產(chǎn)品是用于為數(shù)字處理系統(tǒng)100提供軟件的裝 置。CPU 110可以檢索軟件指令,并且執(zhí)行構(gòu)成用戶應(yīng)用程序的指令。如上文所指出的那樣,用戶應(yīng)用程序可以被實施并且依據(jù)根據(jù)本發(fā)明的一些方面 而提供的構(gòu)架來操作。因此,根據(jù)本發(fā)明的一個方面,當(dāng)應(yīng)用程序被執(zhí)行時,關(guān)于應(yīng)用程序 的操作來繼續(xù)描述。3.應(yīng)用程序的內(nèi)部操作圖2是說明本發(fā)明實施例中的應(yīng)用程序的內(nèi)部操作的流程圖。僅為了說明,關(guān)于 圖1來描述流程圖。然而,也可以在其他環(huán)境中實施特征。此外,僅為了說明以特定序列來描述步驟。如相關(guān)領(lǐng)域的技術(shù)人員將會認(rèn)識到的 那樣,可以以不同序列(或在時標(biāo)上并行地以重疊方式)來實施至少一些步驟。
      而且,應(yīng)用程序的操作/實施方式指各種面向?qū)ο蟮恼Z言概念,將在標(biāo)題為 “Object Oriented Analysis and Design with Applicationsby Grady Booch,,的書中更 詳細(xì)地描述這些。流程圖以步驟201開始,在步驟201中控制轉(zhuǎn)到步驟210。在步驟210中,形成廠信息,所述廠信息表示當(dāng)輸入數(shù)據(jù)的對應(yīng)版本被處理時而 調(diào)用的類廠。如所公知的那樣,當(dāng)類廠被調(diào)用時,例示對應(yīng)的對象。在這種情況下,該對象 對應(yīng)于被設(shè)計成處理對應(yīng)版本的輸入數(shù)據(jù)的特定版本對象。應(yīng)該認(rèn)識到,響應(yīng)于構(gòu)成應(yīng)用 程序的軟件指令的執(zhí)行來動態(tài)形成該信息。在步驟220中,接收輸入數(shù)據(jù)和版本信息(基于其來表示輸入數(shù)據(jù))??梢詮牟煌?源或相同源來接收輸入數(shù)據(jù)和版本信息。在步驟230中,通過檢查基于版本信息的廠信息來選擇適當(dāng)?shù)念悘S。一般來說,期 望對應(yīng)于版本對象的類廠被設(shè)計成至少處理由對應(yīng)版本引入的變化(添加、修改等等)。然 而,更高級版本也被選擇,尤其當(dāng)廠信息中不存在這樣的匹配版本號并且該版本向后兼容 時。應(yīng)該認(rèn)識到,廠信息被形成為與實施步驟230的選擇的指令不同的數(shù)據(jù)/比特。換 句話說,廠信息不被嵌入或硬編碼在指令中(例如,作為在如果-則-否則語句中比較的數(shù) 據(jù)),這使得廠信息也能夠反映任何后添加的版本。在步驟240中,使用所選擇的類廠來創(chuàng)建版本(對象)實例。一般來說,通過調(diào)用 在類廠內(nèi)提供的適當(dāng)方法,對應(yīng)對象可以被適當(dāng)例示。所例示的對象表示適于處理輸入數(shù) 據(jù)的特定版本的處理邏輯。在步驟250中,使用所創(chuàng)建的版本實例來處理適當(dāng)?shù)脑O(shè)備描述。因為例示適當(dāng)?shù)?版本對象,輸入數(shù)據(jù)可以被準(zhǔn)確地處理。流程圖在步驟四9中結(jié)束??梢栽诟鞣N環(huán)境中實施和/或部署根據(jù)上述特征的應(yīng)用程序。在實施例中,輸入 數(shù)據(jù)對應(yīng)于根據(jù)隨著時間而演進(jìn)的版本所指定的設(shè)備描述數(shù)據(jù),并且在過程控制設(shè)施中部 署的系統(tǒng)中實施應(yīng)用程序。下面首先在過程控制設(shè)施中建立對本發(fā)明應(yīng)用的需要。4.過程控制設(shè)施中的需要過程控制設(shè)施一般包含一些現(xiàn)場設(shè)備,其在操作中實施期望的控制過程(例如, 石油煉制、制造操作等等)?,F(xiàn)場設(shè)備的示例包括閥、定位器和開關(guān),它們都被控制以實施控 制過程。通常由與現(xiàn)場設(shè)備相關(guān)聯(lián)的供貨商來提供設(shè)備描述,其中所述設(shè)備描述中的信息 指示各種設(shè)備能力,例如這樣的方式,其中現(xiàn)場設(shè)備在不同條件下運行、可以看到狀態(tài)信息 (或執(zhí)行管理命令的結(jié)果)、可以發(fā)送(傳達(dá)到現(xiàn)場設(shè)備)管理命令等等。通常以文件(例 如DD(設(shè)備描述)文件、CFF(通用文件格式)文件、值文件或與該設(shè)備有關(guān)的任何其他輔 助數(shù)據(jù)源)的形式來提供設(shè)備描述。通常根據(jù)說明書來提供設(shè)備描述。由相關(guān)領(lǐng)域公知的不同的開放標(biāo)準(zhǔn)(例如基金 會現(xiàn)場總線(TM)、HART(TM)等等)來提供規(guī)范。甚至在這種開放標(biāo)準(zhǔn)的每一個中,規(guī)范通 常隨著時間擴展。在每個這種擴展之后的擴展規(guī)范被稱為版本。例如,基金會現(xiàn)場總線規(guī)范已引入 意味著版本2. 8,2. 0,1. 0等等為現(xiàn)有版本的版本2. 9。在附錄A和B中的CFF文件中的每 一個包含在最先的幾行中的版本信息。版本號可以是任何格式,盡管在所述示例中它由兩個數(shù)字Nl和N2表示,讀作版本Ni. N2 (例如2. 8)。通常在諸如管理站和客戶端系統(tǒng)之類的系統(tǒng)中使用解析器,以解析設(shè)備描述的內(nèi) 容。解析通常需要檢查順應(yīng)與開放標(biāo)準(zhǔn)的特定版本相關(guān)聯(lián)的語法和語義(要使用的關(guān)鍵 字、呈現(xiàn)關(guān)鍵字所使用的文法、用戶可以提供值或被提供值的特定位置等等)的設(shè)備描述。通常期望,解析器被設(shè)計成具有構(gòu)架以便簡化實施方式和/或部署,特別地鑒于 演進(jìn)的擴展,來提供針對可應(yīng)用規(guī)范的向后和向前兼容性。5.示例過程控制環(huán)境圖3是說明可以在其中實施本發(fā)明的一些方面的示例環(huán)境的細(xì)節(jié)的過程控制設(shè) 施的框圖。示出了包含現(xiàn)場設(shè)備310A到310Z、控制網(wǎng)絡(luò)330、控制系統(tǒng)340、中央服務(wù)器 350、數(shù)據(jù)庫服務(wù)器370和客戶端系統(tǒng)380A到380Y的框圖。下面將詳細(xì)描述每個塊??刂凭W(wǎng)絡(luò)330將中央服務(wù)器350和控制系統(tǒng)340中的每一個與現(xiàn)場設(shè)備310A到 310Z連接??刂凭W(wǎng)絡(luò)330可以包含根據(jù)一個或多個協(xié)議(例如相關(guān)領(lǐng)域中公知的IIART、 控制網(wǎng)以及基金會現(xiàn)場總線)而操作的網(wǎng)絡(luò)設(shè)備(例如多路復(fù)用器、調(diào)制解調(diào)器、結(jié)束面板寸寸J??刂葡到y(tǒng)340發(fā)布命令來控制現(xiàn)場設(shè)備310A到310Z的操作。現(xiàn)場設(shè)備被控制以 實施期望的控制過程(例如煉油廠、制造設(shè)施)。數(shù)據(jù)庫服務(wù)器370提供用于存儲與現(xiàn)場 設(shè)備的配置、現(xiàn)場設(shè)備的狀態(tài)、維護(hù)計劃、歷史狀態(tài)/菜單信息等等有關(guān)的信息的中央儲存庫。現(xiàn)場設(shè)備310A到310Z在控制系統(tǒng)340的控制下執(zhí)行各種操作以實施期望的制造 過程。此外(或者作為支持這種過程的一部分),每個現(xiàn)場設(shè)備可以被實施為支持從中央服 務(wù)器350接收到的各種管理命令。一些管理命令可以僅僅請求信息(例如所測量的壓力), 并且一些命令使得配置被改變(例如可能使得閥被打開)。中央服務(wù)器350通過控制網(wǎng)絡(luò)330從各種現(xiàn)場設(shè)備310A到310Z接收狀態(tài)信息, 并且經(jīng)由客戶端系統(tǒng)380A到380Y使得信息可供用戶使用。命令可以被發(fā)布給現(xiàn)場設(shè)備以 檢索期望的信息。在實施例中,檢索到僅對應(yīng)于所預(yù)訂的信息的信息??蛻舳讼到y(tǒng)380A到380Y提供用戶界面,用戶可以使用該用戶界面來管理現(xiàn)場設(shè) 備310A到310Z。用戶界面通常由設(shè)備描述(例如DD文件和/或(一個或多個)CFF文件) 的一個或多個格式得到。一般來說,存在與常常由不同供貨商提供的一些設(shè)備相關(guān)的設(shè)備描述。該描述也 可以是開發(fā)標(biāo)準(zhǔn)的不同版本。為了提供上述管理特征,可能需要解析設(shè)備描述。根據(jù)本發(fā) 明的一個方面,如下文結(jié)合示例所描述的那樣,可以提供這種解析器。6.客戶端系統(tǒng)圖4是說明在一個實施例中對解析器的需要的客戶端系統(tǒng)的細(xì)節(jié)的框圖??蛻舳?系統(tǒng)380A被示出為包含設(shè)備描述410、解析器420、模板430、管理軟件450和網(wǎng)絡(luò)接口 470。 下面進(jìn)一步詳細(xì)描述每個框。盡管僅為了說明而關(guān)于客戶端系統(tǒng)提供了該描述,但是應(yīng)該認(rèn)識到還可以在與過 程控制設(shè)施有關(guān)的其他系統(tǒng)(例如中央服務(wù)器350)中實施該特征。設(shè)備描述410指示過程控制設(shè)施中的各種設(shè)備的設(shè)備能力。每個設(shè)備描述可 以從外部源檢索到或者以在客戶端系統(tǒng)中提供的非易失性存儲器內(nèi)的文件形式本地存儲。應(yīng)該理解,對于相同的現(xiàn)場設(shè)備類型,可以存在不同的設(shè)備描述版本,因為設(shè)備實例 (110A-110Z)可以被不同版本支持,所述不同版本特別地由不同供貨商提供或者歸因于升 級設(shè)備實施方式中的延遲。網(wǎng)絡(luò)接口 470提供客戶端系統(tǒng)380A所需的電氣/物理和協(xié)議接口,以與中央服務(wù) 器350(或例如動態(tài)檢索設(shè)備描述的任何其他系統(tǒng))進(jìn)行通信??梢允褂迷谙嚓P(guān)領(lǐng)域中公 知的協(xié)議(例如TCP/IP、以太網(wǎng)和ATM)來實施網(wǎng)絡(luò)接口 470。管理軟件450表示使得用戶能夠管理各種現(xiàn)場設(shè)備的應(yīng)用程序。一般來說,管理 軟件450從用戶接收(通常關(guān)于信息或改變配置的)命令,并且將該命令轉(zhuǎn)發(fā)到中央服務(wù) 器350。作為響應(yīng),根據(jù)適當(dāng)?shù)挠脩艚缑鎭盹@示從中央服務(wù)器350接收到的信息。管理軟件450可能需要在上文中提到的文件內(nèi)提供的設(shè)備描述,以提供這樣的管 理特征。在實施例中,軟件使用以模板430的形式所存儲的設(shè)備描述數(shù)據(jù)。模板表示任何 預(yù)先指定的數(shù)據(jù)結(jié)構(gòu)(例如樹、對象),其促進(jìn)所感興趣的期望信息的快速/方便檢索。由 設(shè)備描述來創(chuàng)建這些模板。根據(jù)本發(fā)明的各個方面提供的解析器420解析設(shè)備描述,并且以數(shù)據(jù)庫服務(wù)器 370內(nèi)的模板的形式存儲包含在其中的信息。如可以認(rèn)識到的那樣,可能需要解析器以解析 對應(yīng)于各種版本的設(shè)備描述。將被解析的(整個文件或僅(一個或多個)特定文件)的特 定段(一般來說,要被處理的整個輸入數(shù)據(jù)的一部分)可以在啟用時由管理軟件450指定。為了說明,在附錄A和附錄B中分別示出對應(yīng)于針對霍尼韋爾公司溫度傳感器的 基金會現(xiàn)場總線CFF規(guī)范的版本1. 6和1. 7的CFF文件的一小部分。如可以容易觀察到的那樣,存在公用段,在不改變兩個版本的變化的情況下存在 該公用段。在CFF文件的背景中,段表示信息的較小自包含單元,以促進(jìn)將整個CFF文件按 照邏輯分成較小的塊。示出以包括在方括號之間的段名([段名(sectiormame)])開始的 每個段。根據(jù)為附錄A和B所選擇的協(xié)定,當(dāng)下一段開始時該段結(jié)束。此外,版本1. 7被示出為具有附加的新段“ [SM軟件下載屬性]([SMSoftware Download Property]) ”,并且具有對另一個段 “ [VFD 2 功能塊類型 1] ([VFD 2 Function Block Type 1])”的語法的修改。下面用示例描述一種方式,其中可以將對于解析器420的軟件指令設(shè)計成對如在 圖3的方法中所提議的這種變化尋址。在下面的實施例中,僅為了說明,假設(shè)開放標(biāo)準(zhǔn)存在 6個版本。然而,如相關(guān)領(lǐng)域中的技術(shù)人員清楚的那樣,可以在不偏離本發(fā)明一些方面的范 圍和精神的情況下,實施較多或較少版本。此外,盡管僅與解析器有關(guān)的軟件的部分被描述為使用本發(fā)明的特征來實施,但 應(yīng)該認(rèn)識到還可以使用類似的方法來實施在客戶端系統(tǒng)380A上實施的軟件應(yīng)用程序的其 他部分(例如管理軟件450)。7.解析器構(gòu)架圖5是說明可以在根據(jù)本發(fā)明的方面的解析器內(nèi)實施的各種代碼模塊的框圖。解 析器420被示出,其包含基廠模塊510、類廠模塊520-525、解析器對象模塊560-565、鏈廠模 塊570、以及節(jié)點模塊580。與在執(zhí)行期間動態(tài)創(chuàng)建并呈現(xiàn)(在下面的段中所描述)的實例 不同,每個塊被稱為表示靜態(tài)軟件代碼的模塊。應(yīng)該認(rèn)識到,每個模塊被實施為一個類,并且相應(yīng)地當(dāng)背景容許時,模塊(或例示之后的對應(yīng)實例)也被稱為下面描述中的類。如公知的那樣,每個類可以包含方法和變量 (或者僅本地可見的或外部的類),并且在一些實例中,這些方法和變量還可以提供在該類 的外部(例如在主代碼中)。而且,每一個解析器對象模塊對應(yīng)于前文關(guān)于上面圖2所述的版本對象。此外,選擇方法和類的名稱以密切地描述由對應(yīng)方法/類提供的功能(效用)。同 時,為了簡明起見,僅提供程序邏輯的框架,應(yīng)該認(rèn)識到通過閱讀本文所提供的公開內(nèi)容, (一個或多個)整個程序邏輯的實施方式對相關(guān)領(lǐng)域的技術(shù)人員來說是顯而易見的。為了說明,就相關(guān)領(lǐng)域中公知的類似于C++語言的偽代碼示出針對每個模塊的可 用軟件代碼。另外,標(biāo)記CFF(由基金會現(xiàn)場總線提供的通用文件格式)被示為附加到僅僅 是針對示例實施例中的對應(yīng)格式的一些標(biāo)記。然而,如相關(guān)領(lǐng)域中的技術(shù)人員通過閱讀本文所提供的公開內(nèi)容而顯而易見的那 樣,可以在不偏離本發(fā)明范圍和精神的情況下,使用其他語言并且對于其他格式來實施本 發(fā)明的一些實施例。可以觀察到,存在在下面的段中所描述的針對“向前兼容性”而使用的一個附加類 廠模塊(52 和解析器對象模塊(565)。此處描述了這些特定模塊的差別,盡管下面的一些描述也可用于這兩個模塊。每個類廠模塊520-525被設(shè)計成創(chuàng)建特定類的對象(此處分別為560-56 。如所 公知的那樣,不同的類可以具有在它們的對象實例被創(chuàng)建之前要被滿足的不同需求。相應(yīng) 地實施每個類廠模塊以滿足這些需求??梢詫嵤┟總€類廠模塊520-525以源自基廠類510,可以如下面這樣實施它們class CFF_ClassFactory{protected //CFF spec versiondouble CFF_Version ;//pointer to the auto built factory chainstatic CFF_ClassFactory_Chain*m_pCFF_ClassFactoryChain ;public //Method that should be used to get the CFF_Parser which has CFF version//just greater than or equal to the version passed as argumentstatic CFF_Parser*Get_CFF_Parser(double CFF_Ver);//Factory Method to create instance of CFF_Parservirtual CFF_Parser*CreateInstance () = 0;}如可以觀察到的那樣,基廠類提供Createhstance方法,其在啟動時將創(chuàng)建解析 器實例并且將指針返回給該類。如由上文的“=0”指示的那樣,Createhstance方法被限 定成虛的,以暗示源自基廠類的類必須實施該方法。通過閱讀本文所提供的公開內(nèi)容,在所 得到的類中的Createhstance方法的軟件代碼實施方式對相關(guān)領(lǐng)域中的技術(shù)人員來說是顯而易見的。另外,如下文所描述的那樣,基廠類保持指向用于選擇正確的解析器對象的類廠 鏈的指針。類廠模塊520的定義(代碼)可以順著下面的行class CFF_ClassFactory_Versionl :CFF_ClassFactory{private static CFF_ClassFactory_Versionl m_CFF_ClassFactory_Versionl ;public //Method that creates the CFF Parser_Versionl object//that supports CFF version Version 1virtual CFF_Parser*CreateInstance ();}可以指出,類廠模塊的Createhstance方法提供該方法的實施方式(如上文提到 的定義所需求的那樣)。相應(yīng)地,用戶可以在用于創(chuàng)建適當(dāng)版本對象的類廠模塊中提供期望 代碼。如上文提到的那樣,針對這些方法的代碼需要實施對設(shè)法被例示的對象的特定需求。可以類似地實施每個剩余的類廠521-524。在圖6A中描繪類廠和基廠的一般關(guān) 系,其示出每個類廠520-5M被定義為源自基廠510。應(yīng)該認(rèn)識到,通過對應(yīng)類廠對象的例 示形成每個類廠實例。每個解析器對象模塊560-564被設(shè)計成解析標(biāo)準(zhǔn)的對應(yīng)版本。因為每個版本通常 添加多個段,并且可能修改現(xiàn)有版本的一些段的語法/語義,所以如在圖6B中所描繪的那 樣,方便地使用由面向?qū)ο蟮恼Z言提供的便利并且版本的解析器對象源自緊鄰現(xiàn)有版本的 解析器對象。如在圖6B中所示出的那樣,分別示出針對版本2-5的解析器對象(被分別示為 561-565)被限定為源自以針對版本1-4 (560-564)的解析器對象實例,其中版本1是開始版 本。因此,版本1-4的類將分別被稱為針對版本2-5的(緊鄰)基類。這意味著每個解析 器對象將需要添加對應(yīng)于基類中的對應(yīng)版本中的添加和修改段的代碼。在實施例中,每個解析器對象包含標(biāo)題為“ftOcessSection”的方法,如下面這樣 實施它B00L CFFParser_2ProcessSection(string sectionName){//First forward the call to the immediate base classBOOL bSuccess = CFFParser_1::ProcessSection(sectionName);//check if the base class could handle. Ifnot, check ifthe section matchesany//of the sections supported by this version of the objectif (NOT bSuccess){//Handle(handling code)modified syntaxes or new syntaxes here
      }return bSuccess ;}假設(shè)上述代碼在解析器對象561內(nèi),并且CFFParserJ指得是對應(yīng)于解析器對象 560的類(緊鄰基類)。盡管解析器對象被示出為明確命名緊鄰基類,但是當(dāng)編程環(huán)境容許 這樣的話,可以采用可替換技術(shù)來指定緊鄰基類(例如通過使用關(guān)鍵字)。在一個實施例 中,下述加載功能提供段名。處理代碼一般需要實施程序邏輯來解析在當(dāng)前版本或覆蓋先前版本的那些版本 中引入的段。因此,針對版本1. 7的處理代碼將需要包括對應(yīng)的軟件指令,從而至少解析新 的段“ [SM軟件下載屬性],,和修改的段“ [VFD 2功能塊類型1] ”。在一個實施例中,可以順著下面的行來實施上面提到的解析新段“ [SM軟件下載 屬性]”的程序邏輯。BOOL CFFParser_2ProcessSection(string sectionName){//sectionName here is “SM Software Download Property,,//First forward the call to the immediate base classBOOL bSuccess = CFFParser—1::ProcessSection(sectionName)//check if the base class could handle. Ifnot, process the section(s) hereif (NOT bSuccess){//Handle SM Software Download Property section hereif(sectionName. CompareNoCase(_T(" SM Software Download Property"))==0){//process the section variables here and set the return value as truebSuccess = true ;}else{//I cannot handle the passed in section.I need to set the//return value as false so that others can take carebSuccess = false ;}}return bSuccess ;}剩余的解析器對象562-564還可以被類似地實施。一般來說,CFF文件的每個段首先被傳到緊鄰基類(直到基類560處理它為止)。從基類返回的假(失敗)值暗示解析存在失敗。因此,假設(shè)與對應(yīng)于緊鄰基類的版本相比 具有段名的段是擴展,或者語法已被當(dāng)前版本修改(在上面的描述中,利用附錄A和B說明 的兩種情況),并且在當(dāng)前類(解析器對象)中解析(處理)該段的描述。因此,當(dāng)段不能被精確地解析(包括在附錄A和B中說明的兩種情況)時,實施每 個基類以返回失敗值。這進(jìn)一步暗示段中拼錯的字最終將返回錯誤值。此外,上述設(shè)計將暗示基類560的過程段將被一直調(diào)用以處理每個段。此后,連 續(xù)的緊鄰基類將返回失敗值直到最早版本的解析器對象開始返回作為成功指示(bSuccess =真)的真值。為了說明,假設(shè)版本3被設(shè)計成精確地解析段并且已請求針對版本6的解析器對 象(因為CFF文件是版本6的)來解析該段。解析器對象6將調(diào)用解析器對象5,解析器對 象5將調(diào)用解析器對象4等等,并且解析器對象1的ftOcessSection方法(絕對基)最終 將被調(diào)用。解析器對象1將返回失敗,這將使得解析器對象2也處理并且此后返回失敗值。 解析器對象3的處理代碼將返回真值,因為解析器對象3的處理代碼被設(shè)計成成功地解析 該段。然后解析器對象4和5也將返回真值,以指示成功解析。從上文,可以認(rèn)識到一般足以例示對應(yīng)于CFF文件中的版本的解析器對象。鏈廠 模塊570和節(jié)點模塊580可以用于這樣的意圖并且下面相應(yīng)地描述。8.選擇解析器對象來處理段概括來說,鏈廠模塊570包含數(shù)據(jù)結(jié)構(gòu)和方法來創(chuàng)建節(jié)點,其中每個節(jié)點指向所 對應(yīng)的類廠實例520-5M中的一個。每個節(jié)點還可以包含指針以保持類廠實例的鏈表。查 找鏈表以確定適當(dāng)?shù)念悘S,其例示下面結(jié)合示例所述的對應(yīng)解析器對象。在實施例中,順著下面的行來實施每個節(jié)點class Class_Factory_Chain_Node{public //actual objectCFF_ClassFactory*pCFF_ClassFactory ;//links in the chainClass_Factory_Chain_Node*pNextNode ;Class—Factory—Chain—Node氺pPrevNode ;Class_Factory_Chain_Node(CFF_ClassFactory*pCFF_ClassFactory); }如可以認(rèn)識到得那樣,變量pNextNode和pI^revNode存儲指向鏈中的在后和在前 節(jié)點的指針。通過方法ClasS_Fact0ry_Chain_N0de的啟用來初始化每個節(jié)點,以將指針作 為參數(shù)傳遞給類廠實例。另一方面,針對鏈廠模塊的程序邏輯可以順著下面的行class Class_Factory_Chain{protected Class_Factory_Chaln_Node*m_pChainHeader ;//Header node
      public //Method to add a node to the chainvoid AddToChain(CFF_ClassFactory氺pNewCFFFactory);//Method to get the first node in the chain that is//just greater than or equal to the versionvirtual Class_Factory_Chain*GetApplicabieNode(double CFF Ver);//Method to get the last node in the chain//This node contains the highest versionClass_Factory_Chain_Node*GetLastNode();}如可以從上面認(rèn)識到得那樣,ClaSS_FaCt0ry_Chain對象顯露將節(jié)點添加到鏈,得 到鏈中的第一節(jié)點或鏈中的最后節(jié)點的方法。AddToChain方法被用來創(chuàng)建(下面描述的) 廠鏈。在一個實施例中,順著下面的行來實施AddToChain功能void Class_Factory_ChainAddToChain(CFF_ClassFactory氺pNewCFFFactory) {C1ass_Factory_Chain_Node^pNewNode = new Class_Factory_Chain_Node(pNewCFFFactoryClass_Factory_Chain_Node*pHeaderTemp = m_pChainHeader ;//first nodeif (pHeaderTemp- > pNextNode = = NULL){pHeaderTemp- > pNextNode = pNewNode ;pNewNode- > pPrevNode = pHeaderTemp ;}else{//insert in the list according to the increasing order of versions supportedwhile (pHeaderTemp-> pNextNode ! = NULL){Class_Factory_Chain_Node*pNodeInChain =pHeaderTemp- > pNextNode;//check the version of resourceif (nNewNodeVer < nNodeVerlnChain){//insert before the nodepNewNode- > pPrevNode = pNodelnChain— > pPrevNode pNewNode- > pNextNode = pNodelnChain ; pNodelnChain- > pPrevNode = pNewNode ; break ;ιelse if (nNewNodeVer == nNodeVerlnChain){//same version, skip break ;else {
      }}}因此使用由此實施的程序邏輯(構(gòu)架),接下來描述當(dāng)執(zhí)行解析器的軟件指令時 解析器可以操作的方式。9.在操作階段的細(xì)節(jié)因此,下面描述當(dāng)執(zhí)行實施解析器的指令時,實施例中的操作序列??梢岳绢?廠。此后,使用上文提到的節(jié)點來創(chuàng)建廠的鏈表(根據(jù)版本號/信息以上升順序),并且在 圖7中描繪對應(yīng)的方案。作為結(jié)果示出為每個類廠創(chuàng)建的節(jié)點。上文提到的pNextNode和pPrevNode變量 將存儲指向在后節(jié)點和在前節(jié)點的指針。針對最后節(jié)點715的pI^revNode可以存儲NULL 值以指示鏈的末端。一般來說,鏈可以被初始化為零,并且每個版本可以作為對應(yīng)的節(jié)點添加到鏈。可 以順著下面的行來實施對應(yīng)的程序//This is where the class factory chain is initialized.pHeaderTemp = pHeaderTemp- > pNextNode ;,reached endif (pHeaderTemp- > pNextNode == NULL){pHeaderTemp- > pNextNode = pNewNode pNewNode- > pPrevNode = pHeaderTempNULL ;
      Class_Factory_Chain*CFF_ClassFactory::m_pCFF_CIassFactory Chain =//This is the place where the class factory object' s constructor //will be called where the objects are added to the class factorychain.CFF—ClassFactory—Versionl m—CFF—ClassFactory—Versionl ;CFF—ClassFactory—Version2 m—CFF—ClassFactory—Version2 ;//append to this list when new versions need to be incorporated在一個實施例中,可以順著下面的邏輯來實施CFF—Classi^actory—Versionl的構(gòu)^itJJJlIa^S CFF_ClassFactory_yersionlCFF_ClassFactory_Versionl(){CFF_Version =1.0;CFF_ClassFactory_Versionl m_pCFF_ClassFactoryChain- > AddToChain(this);}然后檢查特定CFF文件(設(shè)備描述410之一)以確定版本號。然后如下確定適于 解析版本號的CFF文件的解析器對象。在實施例中,如下例示適于處理設(shè)備描述的解析器對象中的一個特定解析器對 象m_pCFF_Version = CFF_ClassFactoryGet_CFF_Parser(CffVersion);一般來說,針對Get_CFF_Parser方法的程序邏輯需要被設(shè)計成檢查圖7的廠鏈中 的版本信息,確定要被例示的解析器對象中的一個適合的解析器對象,并且例示該解析器 對象。通過閱讀本文所提供的公開內(nèi)容,對本相關(guān)領(lǐng)域技術(shù)人員來說Get_CFF_Parser方法 的實施方式是顯而易見的。從上文,可以認(rèn)識到Get_CFF_ParSer遍歷圖7的節(jié)點來確定對應(yīng)于解析器對象的 類廠,其可以解析等于或大于由被傳遞為參數(shù)的CFF_VerSi0n表示的值的版本。調(diào)用在該 類廠內(nèi)提供的方法Createhstance ()以例示對應(yīng)的解析器對象。然后作為函數(shù)Get_CFF_ ParserO的執(zhí)行結(jié)果返回指向所例示的解析器對象的指針。在上面的描述中,可以認(rèn)識到版本信息和輸入數(shù)據(jù)(即設(shè)備描述的各個段)被分 開接收。然而,在可替換實施例中(例如當(dāng)處理與網(wǎng)絡(luò)通信相關(guān)的分組時),可以一起接收 輸入數(shù)據(jù)和版本信息。此后,檢查CFF文件以識別每個段,并且解析該段。在一個實施例中,我們可以設(shè) 想下面描述的諸如Load的方法/函數(shù)將在設(shè)備描述中的段列表中重復(fù)并且開始處理B00L CFF_Parser:Load(string strCFF_File){while(bSuccess&& ! EndOfFile){//Identify a new section based on[]string strSection = GetNextSection_From_CFF_File(strCFF_File);//process the new sectionbSuccess = ProcessSection(strSection);}
      }因此,使用上面的基本構(gòu)架,可以容易地合并附加版本。在描述可以將附加版本的 解析合并到根據(jù)本發(fā)明的各個方面提供的解析器中的方式之前,關(guān)于其中解析器被設(shè)計成 容忍(tolerate)根據(jù)本發(fā)明的方面的新版本(還沒有為其提供解析器對象)的方式來繼 續(xù)描述。10.對仍沒被支持的新版本的容忍度
      根據(jù)本發(fā)明的方面,解析器420被實施為對CFF規(guī)范的較新版本容忍,仍沒有為其 實施上文提到的解析器對象。換句話說,在這種情況中,覆蓋先前版本或新段的特定段仍沒 有被支持。通常期望適度地處理這樣的變化。在實施例中,實施解析器對象模塊565以指示為支持最高版本號(比如版本1000, 而其他版本是單個數(shù)字的量級)。假想地假設(shè),解析器對象模塊564支持版本2. 8,并且然后接收解析版本2. 9的 CFF文件的請求,類廠525將被選擇并且解析器對象565將被Get_CFF_Parser ()例示。可以如下實施解析器對象565的處理代碼(假設(shè)解析器對象類被稱為CCFF_ MaxVersion 并且其基類被稱為 My_Immediate_Base)BOOL CCFF_MaxVersion:ProcessSection(string sectionName){BOOL bSuccess = My_Immediate_Base:ProcessSection(sectionName);if (NOT bSuccess){//tolerate the new or modified section by skipping the section and its contents
      //SkipSection is a helper function to skip a section' s content SkipSection(sectionName); bSuccess = TRUE ;}return bSuccess ;ι可以觀察到,在目前不支持版本的所有情況中例示解析器對象565。將由基對象中 的代碼來解析先前版本所支持的段,同時解析器對象565的處理代碼將處理新的段和將覆 蓋先前段中的定義的段。從上面,應(yīng)該認(rèn)識到新的段可以一直被忽略,從而提供容忍度或返回給請求者的 適當(dāng)錯誤代碼。例如,假設(shè)僅支持(高達(dá))附錄A的版本1.6,當(dāng)碰到段“ [SM軟件下載屬 性],,和“ [VFD 2功能塊類型1],,時,解析器對象565的處理代碼將是可操作的?,F(xiàn)在關(guān)于上述軟件可以被擴展成支持新版本的方式來繼續(xù)描述。11.添加代碼來支持新版本現(xiàn)在假設(shè)解析器對象564對應(yīng)于版本1.6(附錄A),并且期望更新解析器以添加對 版本1. 7 (附錄B)的支持。一旦被支持,解析器對象565將不被例示成解析對應(yīng)的CFF版 本,如下面關(guān)于圖8進(jìn)一步詳細(xì)描述地那樣。為了簡明起見,下面僅描述關(guān)于圖5、6A、6B和U7的差別??梢岳锰幚泶a來實施新的解析器對象835以處理段“ [SM軟件下載屬性]”和 [VFD 2功能塊類型1]”??梢砸砸阎绞絹韴?zhí)行該代碼的實施方式。對象模塊將被包括在圖5的代碼中。將例示解析器對象835的廠模塊825也被包括在圖5的代碼中。廠模塊 825將源自基廠510,正如其他模塊一樣。解析器對象835將源自解析器對象564,而解析器 對象565將源自解析器對象835。為廠對象825創(chuàng)建節(jié)點815(在主節(jié)點中,沒有示出),并且通過使用鏈中的適當(dāng)指 針來將該節(jié)點815放置在節(jié)點714和715之間。當(dāng)如上面那樣設(shè)計并實施軟件指令時,解析器也將支持版本1. 7。此外,對于由版 本1. 8引入的變化并且此后,解析器對象565將繼續(xù)處理對應(yīng)的段。因此,簡化對新版本支持的添加。此外,解析器更加容忍由其他版本引入的變化。應(yīng)該進(jìn)一步認(rèn)識到可以在各種數(shù)字處理系統(tǒng)中實施上述特征。盡管一些特征被描 述為在執(zhí)行適當(dāng)?shù)能浖噶顣r操作,但是可以利用由電路(例如專用集成電路FPGA等等) 制成的每個塊(例如圖2的步驟,圖4-8的塊)來實施可替換實施例。12.結(jié)論盡管上文已描述了本發(fā)明的各種實施例,但是應(yīng)該理解已僅以實例而非限制的方 式給出它們。因此,本發(fā)明的外延和范圍不應(yīng)該被上述任何示例性實施例限制,而是應(yīng)該僅 根據(jù)下面的權(quán)利要求和它們的等同物限定。應(yīng)該理解,僅為了示例目的給出在附件中說明的、突出本發(fā)明的功能和優(yōu)點的圖 和/或抓屏。本發(fā)明足夠靈活并且可被配置,以使得可以以不同于附圖中示出的方式來利 用它。此外,下面摘要的作用是使得美國專利商標(biāo)局和普通公眾,以及尤其是不熟悉專 利或法定術(shù)語或用語的領(lǐng)域中的科學(xué)家、工程師和從業(yè)者粗略一看就能夠迅速確定本申請 的技術(shù)公開的實質(zhì)和本質(zhì)。摘要不意圖以任何方式成為對本發(fā)明范圍的限制。附錄AIlH Honeywell ST3000 Capabilities FilesIlH Copyright 2000, Honeywell International.Il11 =========================//File Header11 =========================[File Header]Description =" STT35F Temperature Transmitter Capabilities File" // Description of this fileFileType = CapabilitiesFile //must equal this exact stringFileDate = 2003,12,17 //yyyy, mm, dd order must be usedCffVersion = 1,6
      11 =========================//Device Header11 =========================[Device Header]DeviceName = " Temperature Transmitter" //Not actually present in the device ?CommGroup = 3CommClass = Class31+Class32//Cl ass32 was omitted in earlier versions, but hasalwaysappliedCommSubClass = Class3Publisher+Class3Subscriber+Class3LinkMasterDeviceClass = 2 //Link Master11 =========================//Management VFD11 =========================[Device VFD 1]VendorName = " Softing"ModelName = " FD_MIB〃Revision = " 1. 51"VersionOD = 1ProfileNumber = 0x4D47 //defined in SM spec11 =========================//Function Block VFD11 =========================[Device VFD 2]VendorName = " Honeywell"ModelName = " STT35F"Revision = " Rev 4.04"VersionOD = 0x02ProfileNumber = O11 =========================//Network Management Section11 =========================[NM OD Directory]//Object 257//HeaderDirectoryRevisionNumber = 1NumberOfDirectoryObjects = 1TotalNumberOfDirectoryEntries = 8
      DirectoryIndexOfFirstCompositeListReference = 9NumberOfCompositeListReferences = 1//Composite Object ReferencesStackMgtOdIndex = 290NumberOfObjectsInStackManagement = 1VcrListOdIndex = 291NumberOf Ob ject s InVcrLi st = 36DlmeBasicOdIndex = 330NumberOfObjectsInDlIBasic = 2DlmeLinkMasterOdIndex = 332NumberOfObjectsInDlILme = 8LinkScheduleListOdlndex = 343NumberOfObjectsInDlILinkSchedule = 6DlmeBridgeOdIndex = O //Not used in ST35FNumberOfObjectsInDlIBridge = OPlmeBasicOdIndex = 340NumberOfObjectsInPhyLme = 3ListOfMmeReferences = 9NumberOfMmeComposites = O[NM Restrictions]//Communication CapabilityMaximumResponseDelaySlotTime = 50//Slowest time it takes the device to respond(octets)MinimumInterPduDelay = 4 //Minimum time the device needs between messages(octets)SlotTime = 5//Minimum ? //Stack CapabilitiesFasArTypesAndRolesSupported = QUB_SERVER+QUU_SOURCE+BNU_PUBLISHER+BNU_SUBSCRIBERMaxDlsapAddressSupported = 16MaxDlcepAddressSupported = 17DlcepDeliveryFeaturesSupported = OxBBVersionOfNmSpecSupported = 0x103 //Should this change ? AgentFunctionsSupported = 0x07FmsFeaturesSupported = INFO_REPORT+EVENT, GET_OD+READ+WRITE+INFO_REPORT+ACK_EVENT+GEN_DOWNLOAD//Basic CharacteristicsVersion = 1
      BasicStatisticsSupportedFlag = 0DlDeviceConformance = 0x20010365DlOperatFunctionalClass = 2//VCR InformationMaxEntries = 16NumPermanentEntries = 1DynamicsSupportedFlag = TRUEStatisticsSupported = FALSE//Ref code system, h//The following 6 values reflect the VCR capabilities, but are not available//as parameters in the MIB.MaximumNumberOfClientVcrs = OMaximumNumberOfServerVcrs = 15//MAX_N0_0F_USR_VCRMaximumNumberOfSourceVcrs = 15//MAX_N0_0F_USR_VCRMaximumNumberOfSinkVcrs = OMaximumNumberOfSubscriberVcrs = 15//MAX_N0_0F_USR_VCRMaximumNumberOfPublisherVcrs = 15//MAX_N0_0F_USR_VCR//Scheduling informationMaximumSchedulingOverhead = 4DlmeLinkMasterCapabilitiesVariable = 0x04NumOfSchedules = 2NumOfSubSchedulesPerSchedule = 1//Ref code system, h//The following 3 elements are checked by the Product when schedules are downloaded//However, they are not available as parameters in the MIB//All 3 of these are maximum allowable values.NumOfSequencesPerSubSchedule = 10//MAX_N_SEQNumOfElementsPerSequence = 4//MAX_N_SEQ_ELEMSMaximumSingleLasScheduleSize = 120//MAX_LAS_CFGH---------------------------------------------//Physical LayerH---------------------------------------------PowerRequired = 22//in milliampsChannelStatisticsSupported = OxO MediumAndDataRatesSupported = 0x0000000000000049//WIRE_MEDIUM+V0LTAGE_M0DE+SPEED_31KBPSIecVersion = 0x0001//31. 25 half duplex
      NumberOfChannels = 1PowerMode = BUS_P0WEREDInterfaceMode = HALF_DUPLEX11 =========================[Server Restrictions]//Reference function falvcr_check_feat_and_ctr()-falvcr. cFmsMaxOutstandingServicesCal1ing = OFmsMaxOutstandingServicesCalled = 111 =========================[匪 VCR Usage 1]//For partially configurable VCRs, the host configuration device must remember//which attributes of the VCR are configurable. The fully configurable VCRs are not listedhere.//Permanent Management VCRFasArTypeAndRole = QUB+SERVER+NOBYPASSFasDllLocalAddr = 0xF8FasDllConfiguredRemoteAddr = FREEFasDllSDAP =NONSCHEDULED+DISORDERED+AUTH_SOURCE+TIMEAVAILABLEFasDlIMaxConfirmDelayOnConnect = 60000FasDllMaxConfirmDelayOnData = 60000FasDllMaxDlsduSize = 128FasDllResidualActivitySupported = RESIDUALFasDllTimelinessClass = NONE+NODUPLICATION+NONEFasDllPublisherTimeffindowSize = OFasDllPublisherSynchronizingDlcep = OFasDllSubscriberTimeffindowSize = OFasDllSubscriberSynchronizingDlcep = OFmsVfdID = 1FmsMaxOutstandingServicesCal1ing = OFmsMaxOutstandingServicesCalled = 1FmsFeaturesSupported = NONE, GET_OD+READ+WRITE+GEN_D0WNL0AD//Other VCRs are fully configurable.11 ==================//SM section11 ==================[SM OD Directory]
      DirectoryRevisionNumber = 1NumberOfDirectoryObjects = 1TotalNumberOfDirectoryEntries = 5DirectoryIndexOfFirstCompositeListReference = ONumberOfCompositeListReference = OSmAgentStartingOdIndex = 258NumberOfSmAgentObjects = 4SyncAndSchedulingStartingOdlndex = 262NumberOfSyncAndSchedulingObjects = 8AddressAssignmentStartingOdIndex = 270NumberOfAddressAssignmentObjects = 3VfdListStartingOdIndex = 273NumberOfVfdListObjects = 2FbScheduleStartingOdlndex = 275//From Parm diet, was 276NumberOfFbScheduleObjects = 511 ==================//SM VFD11 ==================[SM VFD 1]VFD_REF = OxlVFD_TAG = " MIB_VFD"[SM VFD 2]VFD_REF = 0x2VFD_TAG = " FBAP"11 ==================//SM Capability11 ==================[SM Capability]Sm_Support = SET_PDTAG_AGENT+SET_ADDR_AGENT+CLR_ADDR_AGENT+IDENTIFY_AGENT+LOC_FB_AGENT\+FMS_SERVER+TIME_SLAVE+SCHEDULE_FB11 ==================//Function Block Application VFD11 ==================[VFD 2 OD Directory]DirectoryRevisionNumber = 2NumberOfDirectoryObjects = 1TotalNumberOfDirectoryEntries = 12DirectoryIndexOfFirstCompositeListReference = 17
      NumberOfCompositeListReference = 3OdlndexForStartingActionObject = ONumberOfActionObjects = OOdlndexOfTheStartingLinkObjectInTheVfd = 561NumberOfLinkObjectsInTheVfd = 14OdIndexOfTheStartingAlertObjectlnTheVfd = 551NumberOfAlertObjectsInTheVfd = 3OdlndexOfTheStartingTrendObjectInTheVfd = 556NumberOfTrendObjectsInTheVfd = 2OdIndexOfTheStartingDomainObjectlnTheVfd = 550NumberOfDomainObjectsInTheVfd = 1DirectorylndexForTheResourceBlock = 23NumberOfResourceBlocksInTheVfd = 1DirectorylndexForTheFirstTransducerBlockPointer = 25NumberOfTransducerBlocksInTheVfd = 1DirectorylndexForTheFirstFunctionBlockPointer = 27NumberOfFunctionBlocksInTheVfd = 211 ==================//Channels for I/O11 ==================[VFD 2 Channels]Channell = " Sensor Temperature"11 ==================//Resource Block11 ==================[VFD 2 Resource Block]//Block Type = RESOURCE //removed in version 1. 5Block_Index = 400DD_Item = 0x80020af0//Resource block 2 with ITK_VERProfile = 0x0133Profile Revision = OxOlOlNum_Of_Parms = 51Views_Index = 588Number_View_3 = 1Number_View_4 = 1[VFD 2 Resource Block Defaults]//Minimum Resource Block Defaults required//All writeable parameters after Restart-DefaultsST_REV = O
      TAG_DESC =0x2020202020202020202020202020202020202020202020202020202020202020STRATEGY = 0ALERT_KEY = 0M0DE_BLK = 0x01,0x01,0x11,0xl0//0/S,0/S, 0/S | Auto,AutoDD_RES0URCE =““MANUFAC_ID = 0x48574CDEV_TYPE = 0x0101DEV_REV = 0x04DD_REV = 0x01GRANT_DENY = 0x00,0x00HARD_TYPES = 0x8000RESTART = 1//RunFEATURES = 0x4800//R印orts | Hard W LockFEATURE_SEL = 0x4000//ReportsCYCLE_TYPE = 0x8000CYCLE_SEL = 0x0000MIN_CYCLE_T = 4000//125msecMEM0RY_SIZE = 0NV_CYCLE_T = 28800000//15MinutesSHED_RCAS = 640000//20secSHED_R0UT = 640000//20secFAULT_STATE = 1//ClearSET_FSTATE = 1//0FFCLR_FSTATE = 1//0FFMAX_N0TIFY = 8LIM_N0TIFY = 8C0NFIRM_TIME = 640000//20secWRITE_L0CK = l//not locked//ALARM_SUM = 0x0100,0x0000,0x0000,0x0000//Jim rem' d this out on LXACK_0PTI0N = 0x0000WRITE_PRI = 0ITK_VER = 4//Manufacturer' s specific parametersDL_CMD1 = 0DL_CMD2 = 0AUX_FEATURES = 0x0000[VFD 2 Resource Block Example Values]11 ==================
      //Transducer Block //= = = = = = = = = = = = = [VFD 2 Transducer Block 1]//Block_Type = TRANSDUCER //removed in version 1. 5

      Block_Index = 470DD_Item = 0x20000

      Profile = 0x8001//custom TB

      Prο f i1e_Reν i s i on = 0

      Num_Of_Parms = 34

      Views_Index = 592

      Number_View_3 = 1

      Number_View_4 = 1

      [VFD 2 Transducer Block 1 Defaults] ST_REV = 0 TAG_DESC =

      0x2020202020202020202020202020202020202020202020202020202020202020
      STRATEGY = 0 ALERT_KEY = 0M0DE_BLK = 0x01,0x01,0x11,0xl0//0/S, 0/S,0/S|Auto,Auto Block in 0/S to restricted writes.//ALARM_SUM = 0x0100,0x0000,0x0000,0x0000//Manufacturer' s specific parametersXD_DIAGNOSTICS = 0//No specific problemPV_UNITS = 1243//mVCJT_EXTERNAL = 0CJT_UNITS = 1001//deg CCJT_TYPE = 1//Internal Cold JunctionSENS0R_TYPE = 103//mVSENS0R_C0NF = 3//Single sensor wiredBREAK_DETECT = 2//Sensor fault detection ENABLEDLATCHING = 1//Latching DISABLEDP0WER_FILTER = l//50HzEMISSIVITY = 10[VFD 2 Transducer Block 1 Example Values]// = = = = = = = = = = =
      //AI Function Block

      [VFD 2 Function Block 1]
      //Block_Type = AI //removed in version 1. 5Block_Index = 257DD_Item = 0x800201D0Profile = 0x0101//standard AI blockProfile_Revision = 0x0101//<DD_REV>01Execution_Time = 736Num_0f_Parms = 39Views_Index = 580Number_View_3 = 1Number_View_4 = 1[VFD 2 Function Block 1 Defaults]ST_REV = 0TAG_DESC =0x2020202020202020202020202020202020202020202020202020202020202020STRATEGY = 0ALERT_KEY = 0//Causes Block Configuration Error//M0DE_BLK = 0x80,0x80,0x98,0x08//0/S,0/S,Auto | Man 0/S, AutoM0DE_BLK = 0x01,0x01,0x19,0xl0//0/S,0/S,Auto | Man | 0/S,Auto//BL0CK_ERR = 0x8002//0ut of Service|BlockConfigurationOUT = 0xld,0SIMULATE = 0x0,0,0x0,0,l//partially dependent on XD block-disabledXD_SCALE = 100,0,1001,0//Should match XD. PRIMARY_VALUE_RANGE0UT_SCALE = 100,0,1147,0
      GRANT_DENY = 0x00,0x00I0_0PTS = 0x0000STATUS_0PTS = 0x0000CHANNEL = 0//Causes Block Configuration ErrorL_TYPE = 0//Causes Block Configuration ErrorL0W_CUT = 0PV_FTIME = 0//ALARM_SUM = 0x0080,0x0000,0x0000,0x0000ACK_0PTI0N = 0x0000ALARM_HYS = 0. 5HI_HI_PRI = 0x00HI_HI_LIM = +INFHI_PRI = 0x00HI_LIM = +INFL0_PRI = 0x00L0_LIM = -INF
      L0_L0_PRI = 0x00L0_L0_LIM = -INF//Manufacturer‘ s specific parameters[VFD 2 Function Block 1 Example Values]//= = = = 二 =============//PID Function Block//= = = = 二 =============[VFD 2 Function Block 2]//Block_Type = PID //removed in version 1.5Block_Index = 310DD_Item = 0x800202B0Profile = 0x0108//standard PID blockProfile_Revision = 0x0101//<DD_REV>01Execution_Time = 2880Nurn_0f_Parms = 74Views_Index = 584Number_View_3 = 1Number_View_4 = 1[VFD 2 Function Block 2 Defaults]ST_REV = 0TAG_DESC =0x2020202020202020202020202020202020202020202020202020202020202020STRATEGY = 0ALERT_KEY = 0//M0DE_BLK 二 0x80,0x80,0x9f,0x08//0/S,0/S, ROut | RCas | Cas | Auto | Man | 0/S,AutoM0DE_BLK = 0x01, 0x01, 0xf9,0xl0//0/S, 0/S, ROut | RCas | Cas | Auto |Man 10/S,Auto//BL0CK_ERR = 0x8002//0ut of Service|BlockConfiguration//BL0CK_ERR = 0x4001//Out of Service|BlockConfigurationSP = 0xlc,0OUT = 0xld,0PV_SCALE = 100,0,0,00UT_SCALE = 100,0,0,0
      GRANT_DENY 二 0x00,0x00C0NTR0L_0PTS = 0x0000STATUS_0PTS = 0x0000PV_FTIME = 0BYPASS = 0//Causes Block Configuration Error0706]SP_RATE_DN = +INF0707]SP_RATE_UP = +INF0708]SP_HI_LIM = 1000709]SP_L0_LIM = 00710]GAIN = 00711]RESET = +INF0712]BAL_TIME = 00713]RATE = 00714]0UT_HI_LIM = 1000715]0UT_L0_LIM = 00716]BKCAL_HYS = 0. 50717]SHED_0PT = 0//Causes Block Configuration Error0718]TRK_SCALE = 100,0,0,00719]FF_SCALE = 100,0,0,00720]FF_GAIN = 00721 ]//ALARM_SUM = 0x0080,0x0000,0x0000,0x00000722]ACK_0PTI0N = 0x00000723]ALARM_HYS = 0. 50724]HI_HI_PRI = 0x000725]HI_HI_LIM = +INF0726]HI_PRI = 0x000727]HI_LIM = +INF0728]L0_PRI = 0x000729]L0_LIM = -INF0730]L0_L0_PRI = 0x000731]L0_L0_LIM =-INF0732]DV_HI_PRI = 0x000733]DV_HI_LIM = +INF0734]DV_L0_PRI = 0x000735]DV_L0_LIM = -INF0736]//Manufacturer' s specific parameters0737]PID_F0RM = 10738]ALG0_TYPE = 10739]0UT_LAG = 00740]GAIN_NLIN = 00741][VFD 2 Function Block 2 Example Values]0742]附錄B0743]//0744]H Honeywell STT35F Capabilities Files
      HIl Copyright 2004, Honeywell International.Il11 =========================//File Header11 =========================[File Header]Description =" STT35F Temperature Transmitter Capabilities File" // Description of this fileFileType = CapabilitiesFile //must equal this exact stringFileDate = 2004,06, 25 //yyyy,mm, dd order must be usedCffVersion = 1,711 =========================//Device Header11 =========================[Device Header]DeviceName =" STT35F Temperature Transmitter" //Not actually present in thedevice ?CommGroup = 3CommClass = Class31+Class32//Class32 was omitted in earlier versions, but has alwaysappliedCommSubClass = Class3Publisher+Class3Subscriber+Class3LinkMasterDeviceClass = 2 //Link Master11 =========================//Management VFD11 =========================[Device VFD 1]VendorName = " Softing"ModelName = " FD_MIB〃Revision = " 1.51〃VersionOD = 1ProfileNumber = 0x4D47 //defined in SM spec11 =========================//Function Block VFD11 =========================[Device VFD 2]VendorName = " Honeywell"ModelName = " STT35F"
      Revision = “ Rev 4.04"VersionOD = 0x02ProfileNumber = O11 =========================//Network Management Section11 =========================[NM OD Directory]//Object 257//HeaderDirectoryRevisionNumber = 1NumberOfDirectoryObjects = 1TotalNumberOfDirectoryEntries = 8DirectoryIndexOfFirstCompositeListReference = 9NumberOfCompositeListReferences = 1//Composite Object ReferencesStackMgtOdIndex = 290NumberOfObjectsInStackManagement = 1VcrListOdIndex = 291NumberOf Ob ject s InVcrLi st = 36DlmeBasicOdIndex = 330NumberOfObjectsInDlIBasic = 2DlmeLinkMasterOdIndex = 332NumberOfObjectsInDlILme = 8LinkScheduleListOdlndex = 343NumberOfObjectsInDlILinkSchedule = 6DlmeBridgeOdIndex = O //Not used in ST35FNumberOfObjectsInDlIBridge = OPlmeBasicOdIndex = 340NumberOfObjectsInPhyLme = 3ListOfMmeReferences = 9NumberOfMmeComposites = O[NM Restrictions]//Communication CapabilityMaximumResponseDelaySlotTime = 50//Slowest time it takes the device to respond(octets)MinimumInterPduDelay = 4 //Minimum time the device needs between messages(octets)SlotTime = 5
      //Stack CapabilitiesFasArTypesAndRolesSupported = QUB_SERVER+QUU_SOURCE+BNU_PUBLISHER+BNU_SUBSCRIBERMaxDlsapAddressSupported = 16MaxDlcepAddressSupported = 17DlcepDeliveryFeaturesSupported = OxBBVersionOfNmSpecSupported = 0x103AgentFunctionsSupported = 0x07FmsFeaturesSupported = INFO_REPORT+EVENT, GET_OD+READ+WRITE+INFO_REPORT+ACK_EVENT+GEN_DOWNLOAD//Basic CharacteristicsVersion = 1BasicStatisticsSupportedFlag = ODlDeviceConformance = 0x20010365DlOperatFunctionalClass = 2//VCR InformationMaxEntries = 16NumPermanentEntries = 1DynamicsSupportedFlag = TRUEStatisticsSupported = FALSE//The following 6 values reflect the VCR capabilities, but are not available//as parameters in the MIB.MaximumNumberOfClientVcrs = OMaximumNumberOfServerVcrs = 15//MAX_N0_0F_USR_VCRMaximumNumberOfSourceVcrs = 15//MAX_N0_0F_USR_VCRMaximumNumberOfSinkVcrs = OMaximumNumberOfSubscriberVcrs = 15//MAX_N0_0F_USR_VCRMaximumNumberOfPublisherVcrs = 15//MAX_N0_0F_USR_VCR//Scheduling informationMaximumSchedulingOverhead = 4DlmeLinkMasterCapabilitiesVariable = 0x04NumOfSchedules = 2NumOfSubSchedulesPerSchedule = 1//The following 3 elements are checked by the Product when schedules are downloaded//However, they are not available as parameters in the MIB//All 3 of these are maximum allowable values.NumOfSequencesPerSubSchedule = 10//MAX_N_SEQ
      NumOfElementsPerSequence = 4//MAX_N_SEQ_ELEMSMaximumSingleLasScheduleSize = 120//MAX_LAS_CFGIl---------------------------------------------//Physical LayerIl---------------------------------------------PowerRequired = 22//in milliampsChannelStatisticsSupported = OxOMediumAndDataRatesSupported = 0x0000000000000049//WIRE_MEDIUM+V0LTAGE_M0DE+SPEED_31KBPSIecVersion = 0x0001//31. 25 half duplexNumberOfChannels = 1PowerMode = BUS_POWEREDInterfaceMode = HALF_DUPLEX11 =========================[Server Restrictions]FmsMaxOutstandingServicesCal1ing = OFmsMaxOutstandingServicesCalled = 111 =========================[匪 VCR Usage 1]//For partially configurable VCRs, the host configuration device must remember//which attributes of the VCR are configurable. The fully configurable VCRs are not listedhere.//Permanent Management VCRFasArTypeAndRole = QUB+SERVER+NOBYPASSFasDllLocalAddr = 0xF8FasDllConfiguredRemoteAddr = FREEFasDllSDAP =NONSCHEDULED+DISORDERED+AUTH_SOURCE+TIMEAVAILABLEFasDlIMaxConfirmDelayOnConnect = 60000FasDllMaxConfirmDelayOnData = 60000FasDllMaxDlsduSize = 128FasDllResidualActivitySupported = RESIDUALFasDllTimelinessClass = NONE+NODUPLICATION+NONEFasDllPublisherTimeffindowSize = OFasDllPublisherSynchronizingDlcep = OFasDllSubscriberTimeffindowSize = OFasDllSubscriberSynchronizingDlcep = O
      FmsVfdID = 1FmsMaxOutstandingServicesCal1ing = OFmsMaxOutstandingServicesCalled = 1FmsFeaturesSupported = NONE, GET_OD+READ+WRITE+GEN_DOWNLOAD//Other VCRs are fully configurable.11 ==================//SM section11 ==================[SM OD Directory]DirectoryRevisionNumber = 1NumberOfDirectoryObjects = 1TotalNumberOfDirectoryEntries = 5DirectoryIndexOfFirstCompositeListReference = ONumberOfCompositeListReference = OSmAgentStartingOdIndex = 258NumberOfSmAgentObjects = 4SyncAndSchedulingStartingOdlndex = 262NumberOfSyncAndSchedulingObjects = 8AddressAssignmentStartingOdIndex = 270NumberOfAddressAssignmentObjects = 3VfdListStartingOdIndex = 273NumberOfVfdListObjects = 2FbScheduleStartingOdlndex = 275NumberOfFbScheduleObjects = 5[SM Software Download Property]DownloadClass = 1WriteRspReturnedForACTIVATE = 1WriteRspReturnedForPREPARE = 1ReadyForDwnldDelaySecs = 200ActivationDelaySecs = 6011 ==================//SM VFD11 ==================[SM VFD 1]VFD_REF = OxlVFD_TAG=〃 MIB_VFD〃[SM VFD 2]VFD_REF = 0x2VFD_TAG=〃 FBAP 〃
      11 ==================//SM Capability11 ==================[SM Capability]Sm_Support = SET_PDTAG_AGENT+SET_ADDR_AGENT+CLR_ADDR_AGENT+IDENTIFY_AGENT+LOC_FB_AGENT\+FMS_SERVER+TIME_SLAVE+SCHEDULEFB11 ==================//Function Block Application VFD11 ==================[VFD 2 OD Directory]DirectoryRevisionNumber = 2NumberOfDirectoryObjects = 1TotalNumberOfDirectoryEntries = 12DirectoryIndexOfFirstCompositeListReference = 17NumberOfCompositeListReference = 3OdlndexForStartingActionObject = ONumberOfActionObjects = OOdlndexOfTheStartingLinkObjectInTheVfd = 561NumberOfLinkObjectsInTheVfd = 14OdIndexOfTheStartingAlertObjectlnTheVfd = 551NumberOfAlertObjectsInTheVfd = 3OdlndexOfTheStartingTrendObjectInTheVfd = 556NumberOfTrendObjectsInTheVfd = 2OdIndexOfTheStartingDomainObjectlnTheVfd = 550NumberOfDomainObjectsInTheVfd = 1DirectorylndexForTheResourceBlock = 23NumberOfResourceBlocksInTheVfd = 1DirectorylndexForTheFirstTransducerBlockPointer = 25NumberOfTransducerBlocksInTheVfd = 1DirectorylndexForTheFirstFunctionBlockPointer = 27NumberOfFunctionBlocksInTheVfd = 211 ==================//Channels for I/O11 ==================[VFD 2 Channels]Channell = " Sensor Temperature"11 ==================//Resource Block[VFD 2 Resource Block] Block Index = 400DD_Item = 0x80020af0//Resource block 2 with ITK_VERProfile = 0x0133Prο f i1e_Reν i s i on = 0x0101Num_0f_Parms = 51Views_Index = 588Number_View_3 = 1Number_View_4 = 1[VFD 2 Resource Block Defaults]//Minimum Resource Block Defaults requiredMANUFAC_ID == 0x48574CDEV_TYPE = 0x0101DEV_REV = 0x04DD_REV = 0x01DD_RES0URCE 二 ““HARD_TYPES = 0x8000FEATURES = 0x4800//Reports|Hard W Lock CYCLE_TYPE = 0x8000 MIN_CYCLE_T = 4000//125msec MEM0RY_SIZE 二 0NV_CYCLE_T = 28800000//15Minutes MAX_N0TIFY = 8ITK_VER = 4 // ==================//Transducer Blockπ ==================[VFD 2 Transducer Block Type 1]Block—Index = 470DD—Item = 0x20000Profile = 0x8001//custom TBProf ile—Revision = 0Num—Of—Parms = 34Views_Index 二 592Number—View—3 = 1Number—View—4 = 1π ==================//AI Function Block1009]Il1010][VFD 2 Function Block Type 1]1011]BlockJndex = 2571012]DD_Item = 0x800201D01013]Profile = 0x0101//standard AI block1014]Profile_Revision = 0x0101//<DD__REV>011015]Execution_Time = 7361016]Num_0f_Parms = 391017]Views_Index = 5801018]Number_View_3 = 11019]Number_View_4 = 11020]Il1021]//PID Function Block1022]111023][VFD 2 Function Block Type 2]1024]Block_Index = 3101025]DD_Item = 0x800202B01026]Profile = 0x0108//standard PIDblock1027]Profile_Revision = 0x0101//<DD_一REV>011028]Execution_Time = 28801029]Num_0f_Parms = 741030]Views_Index = 5841031]Number_View_3 = 11032]Number_View_4 = 11033]Il1034]//Trend Objects1035]Il1036][VFD 2 Trend Object Usage 0]1037]TrendType = FLOAT1038][VFD 2 Trend Object Usage 1]1039]TrendType = FLOAT
      權(quán)利要求
      1.一種在過程控制設(shè)施(圖幻中實施應(yīng)用程序的方法,所述方法包括提供多個版本對象(560-565),其中所述多個版本對象(560-565)中的每一個分別對 應(yīng)于多個版本中的對應(yīng)版本并且被設(shè)計成由多個類廠(520-525)中的對應(yīng)類廠例示,其中 所述多個版本對象(560-565)中的每一個都被設(shè)計成處理對應(yīng)版本中相比于預(yù)先版本的 變化;形成(210)表示能被用來例示對應(yīng)版本對象的類廠中的一個特定類廠的廠信息; 接收(220)要被處理的輸入數(shù)據(jù)和版本標(biāo)識符;檢查(230)所述廠信息以選擇被設(shè)計成例示進(jìn)而被設(shè)計成處理所述輸入數(shù)據(jù)的第一 版本對象(560)的第一類廠(520);例示(MO)所述第一版本對象(560)的版本實例;以及 使用所述版本實例來處理(250)所述輸入數(shù)據(jù)。
      2.根據(jù)權(quán)利要求1所述的方法,其中所述多個版本對象(560-56 包含最后的版本對 象(565),所述最后的版本對象(56 被設(shè)計成處理由對其不提供版本對象的任何較高版 本限定的段,其中每個段表示所述輸入數(shù)據(jù)的一部分,其中所述最后的版本對象(56 容忍處理由所述任何較高版本添加或修改的段。
      3.根據(jù)權(quán)利要求2所述的方法,其中所述廠信息具有多個節(jié)點(710-715)的鏈表(圖 7)的形式,其中每個節(jié)點指向?qū)?yīng)的類廠,其中所述檢查通過遍歷所述鏈表(圖7)來確定 所述第一類廠,其中所述應(yīng)用程序被升級以支持新版本,所述方法還包括添加新版本對象(835),所述新版本對象(83 源自被設(shè)計成處理由所述應(yīng)用程序支 持的標(biāo)準(zhǔn)的先前最高版本改變或添加的段的對象(564);添加被設(shè)計成例示所述新版本對象(835)的新類廠(825);以及 將新節(jié)點(81 插入到對應(yīng)于所述新類廠(825)的所述鏈表(圖7),其中所述新 節(jié)點(81 被放置在對應(yīng)于所述先前最高版本和所述最后版本對象(565)的一對節(jié)點 (714&715)之間。
      4.根據(jù)權(quán)利要求2所述的方法,其中除了針對開始版本的版本對象(560)之外的 所述多個版本對象(561-565)中的每一個源自被設(shè)計成處理緊鄰先前版本的版本對象 (560-564),其中除了所述開始版本的所述版本對象(560)之外的所述多個版本對象(561-565)中 的每一個被設(shè)計成從版本對象源自的基版本調(diào)用方法來處理每個段,其中當(dāng)段不能被版本對象處理時,所述多個版本對象(560-565)中的每一個返回失敗 指示,其中當(dāng)段能被成功處理時,所述多個版本對象(560-565)中的每一個返回成功指示, 其中當(dāng)接收到成功指示時,所述多個版本對象(560-565)中的每一個將成功指示傳遞 給調(diào)用版本對象,以及其中如果存在對應(yīng)過程段方法并且接收到失敗指示,則所述多個版本對象(560-565) 中的每一個使用處理邏輯來處理該段。
      5.根據(jù)權(quán)利要求4所述的方法,其中所述應(yīng)用程序包括解析器020),所述輸入數(shù)據(jù)包 括在所述過程控制設(shè)施(圖3)中的多個現(xiàn)場設(shè)備(310A-310Z)的管理中使用的設(shè)備描述 (410)。
      6.一種存儲用于使得系統(tǒng)(380A)解析過程控制設(shè)施(圖幻中的多個現(xiàn)場設(shè)備 (310A-310Z)的管理中的設(shè)備描述G10)的一個或多個指令序列的機器可讀介質(zhì),其中每 個設(shè)備描述在標(biāo)準(zhǔn)的多個版本之一中,并且包含多個段,其中由包含在所述系統(tǒng)(380A)中 的一個或多個處理器對所述一個或多個指令序列的執(zhí)行使得所述系統(tǒng)(380A)執(zhí)行下述動 作提供多個解析器對象(560-565),其中所述多個解析器對象(560-565)中的每一個分 別對應(yīng)于對應(yīng)的多個版本之一并且被設(shè)計成由多個類廠(520-525)中的對應(yīng)類廠例示,其 中所述多個解析器對象(560-565)中的每一個都被設(shè)計成至少解析由對應(yīng)版本相比于預(yù) 先版本添加或修改的一組段;形成(210)表示能夠被用來例示對應(yīng)解析器對象的類廠中的一個特定類廠的廠信息; 接收(220)要被解析的設(shè)備描述G10)的版本標(biāo)識符;檢查(230)所述廠信息以選擇被設(shè)計成例示進(jìn)而被設(shè)計成解析所述設(shè)備描述(410)的 第一解析器對象(560)的第一類廠(520);例示(MO)所述第一解析器對象(560)的解析器實例;以及 使用所述解析器實例來處理(250)所述設(shè)備描述(410)。
      7.根據(jù)權(quán)利要求6所述的機器可讀介質(zhì),其中所述多個解析器對象(560-56 包含最 后的解析器對象(565),所述最后的解析器對象(56 被設(shè)計成處理由對其不提供解析器 對象的任何較高版本限定的段,其中所述最后的解析器對象(56 容忍處理由所述任何較 高版本添加或修改的段。
      8.根據(jù)權(quán)利要求7所述的機器可讀介質(zhì),其中所述廠信息具有多個節(jié)點(710-715)的 鏈表(圖7)的形式,其中每個節(jié)點指向?qū)?yīng)的類廠,其中所述檢查通過遍歷所述鏈表(圖 7)來確定所述第一類廠,其中所述一個或多個指令序列包括解析器G20),所述解析器(420)被升級以支持所 述標(biāo)準(zhǔn)的新版本,還包括添加新解析器對象(835),所述新解析器對象(83 源自被設(shè)計成解析由所述解析器 (420)支持的所述標(biāo)準(zhǔn)的先前最高版本改變或添加的段的對象(564); 添加被設(shè)計成例示所述新解析器對象(835)的新類廠(825);以及 將新節(jié)點(81 插入到對應(yīng)于所述新類廠(825)的所述鏈表(圖7),其中所述新節(jié) 點(81 被放置在對應(yīng)于所述先前最高版本和所述最后解析器對象(565)的一對節(jié)點 (714&715)之間。
      9.一種操作過程控制設(shè)施(圖3)的數(shù)字處理系統(tǒng)(100),包括提供多個版本對象(560-56 和多個類廠(520-52 的次級存儲器(130),其中所述多 個版本對象(560-565)中的每一個分別對應(yīng)于多個版本中的對應(yīng)版本并且被設(shè)計成由所 述多個類廠(520-525)中的對應(yīng)類廠例示,其中所述多個版本對象(560-565)中的每一個 都被設(shè)計成處理對應(yīng)版本中相比于預(yù)先版本的變化;形成表示被用來例示對應(yīng)版本對象的類廠中的一個特定類廠的廠信息的處理器 (110);接收要被處理的輸入數(shù)據(jù)和版本標(biāo)識符的接口(190); 其中所述處理器(110)操作來檢查(230)所述廠信息以選擇被設(shè)計成例示進(jìn)而被設(shè)計成處理所述輸入數(shù)據(jù)的第一 版本對象(560)的第一類廠(520);例示(MO)所述第一版本對象(560)的版本實例;以及 使用所述版本實例來處理(250)所述輸入數(shù)據(jù)。
      10.根據(jù)權(quán)利要求9所述的數(shù)字處理系統(tǒng)(100),其中所述多個版本對象(560-565)包 含最后的版本對象(565),所述最后的版本對象(56 被設(shè)計成處理由對其不提供版本對 象的任何較高版本限定的段,其中每個段表示所述輸入數(shù)據(jù)的一部分。
      全文摘要
      一種基于面向?qū)ο蟮母拍畹能浖?yīng)用體系結(jié)構(gòu)。根據(jù)一個方面,升級支持描述設(shè)備描述的標(biāo)準(zhǔn)的較新版本的應(yīng)用程序被簡化。根據(jù)另一個方面,該應(yīng)用程序被設(shè)計成容忍由仍不被該應(yīng)用程序支持的將來/后來版本引入的變化(添加或修改)。在實施例中,在被設(shè)計成解析不同版本的設(shè)備描述的解析器的背景中應(yīng)用該方法。
      文檔編號G06F15/16GK102047221SQ200980119019
      公開日2011年5月4日 申請日期2009年2月24日 優(yōu)先權(quán)日2008年3月25日
      發(fā)明者R·B·科尼基, V·坦頓 申請人:霍尼韋爾國際公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1