專利名稱:用于存取過程控制數據的方法和設備的制作方法
技術領域:
本發明公開總的來說涉及一種過程控制系統,更具體而言,涉及用于訪問過程控制數據的過程控制裝置和方法。
背景技術:
諸如在化學、石油或其它過程中所使用的那些過程控制系統典型地包括一個或多個集中過程控制器,其通過模擬、數字、或者模擬/數字組合總線與至少一個主機或操作員工作站以及一個或多個現場設備通信地連接。該現場設備例如可以是閥門、閥門定位器、開關以及變送器(例如溫度、壓力和流速傳感器),其在該過程中執行諸如開啟或關閉閥門以及測量過程參數等功能。該過程控制器接收由現場設備所作出的表示過程測量值的信號以及與現場設備相關的其它信息,并使用該信息來實現控制例程,然后產生控制信號,其通過總線或其它通信線路發送到現場設備以控制該過程的操作。來自該現場設備和該控制器的信息可以由該操作員工作站所執行的一個或多個應用程序使用,以使得操作者能夠執行想要的關于該過程的功能,諸如查看該過程的當前狀態、修改該過程操作等。
在設計階段和系統操作過程中,系統工程師必須經常訪問過程控制數據,以查看、監視、增加、更新、修改該過程控制數據等。例如,過程控制系統典型地使用配置應用程序來進行配置,其使得工程師、操作者、用戶等能夠定義過程控制系統內的每個現場設備對于特定的過程(例如特定的化學生產過程)應該如何操作。當將現場設備加到特定的過程時,或者當每次對該過程進行改變時,工程師可以產生新的控制程序或新的配置數據,或者可以更新或修改現存的控制程序。每個過程可以使用大量的現場設備、控制器和/或其它控制設備,于是控制程序可以包括大量過程控制數據。某些已知過程控制系統提供有編輯器或過程控制數據查看器,其使得用戶在操作期間能夠監視過程,和/或查看、創建、和/或更新控制程序。已知的過程控制數據編輯器和查看器典型地將用戶限制在由過程控制軟件開發者所提供的特征。例如,過程控制軟件開發者可以調查其客戶,以確定理想的用戶界面控件的類型和數據訪問功能。然后,使在發布過程控制軟件時對客戶有用的該用戶界面和數據訪問特征符合其它客戶的一般要求,以包括這些特征。
根據客戶而定制的過程控制軟件通常相對較貴并且項目復雜。具體地說,如果客戶需要特定的或定制的用戶界面或數據訪問特征,該客戶需要理解并修改原始的過程控制軟件源代碼。在這種情況下,過程控制軟件售主必須向希望定制他們的軟件的每一客戶提供許多資源(例如軟件開發者、系統工程師、源代碼等)。另外,該軟件售主在將源代碼提供給客戶之前可能需要客戶購買源代碼許可證或開發許可證。資源和/或許可證對于軟件售主和/或客戶通常都比較貴。而且,通過發布某些源代碼,如果該源代碼包括商業秘密、機密或其它有競爭優勢的編碼技術,售主存在風險。
發明內容
本文公開了用于訪問過程控制系統數據的示例方法和系統。根據一個例子,用于訪問過程控制數據的方法包括裝載客戶對象,和從該客戶對象向被配置為與服務器通信的實對象(real object)傳送數據訪問請求。該實對象然后根據該數據訪問請求向該服務器傳送查詢,并且響應于該查詢而從該服務器獲得過程控制數據。然后將該過程控制數據從與服務器模式(schema)關聯的第一數據布局映射到與客戶模式關聯的第二數據布局。然后將所映射的過程控制數據傳送給應用程序。
根據另一例子,用于訪問過程控制數據的另一方法包括響應于用戶界面請求裝載第一和第二客戶對象。該第一和第二客戶對象與訪問基于客戶模式組織的過程控制數據關聯。然后裝載與該第一和第二客戶對象關聯的實對象。該第一和第二實對象被配置用來獲得基于服務器模式組織的過程控制數據。然后將該過程控制數據從該服務器模式組織映射到該客戶模式組織,并將其傳送給第一和第二客戶對象。然后通過與該第一客戶對象關聯的第一用戶界面和與該第二客戶對象關聯的第二用戶界面獲得該過程控制數據。
根據另一例子,用于訪問過程控制數據的系統包括預先產生的部分類和用戶產生的部分類。該預先產生的部分類包括與訪問過程控制數據關聯的預先產生的類元素。該用戶產生的部分類與該預先產生的部分類關聯,并且包括用戶定義的類元素,所述用戶定義的類元素可以通過該預先產生的類元素訪問過程控制數據。該系統還包括用戶界面,其被配置用來基于該預先產生的部分類和該用戶產生的部分類來實例化客戶對象。該用戶界面還被配置用來根據該預先產生的類元素和用戶定義的類元素訪問過程控制數據。該系統還包括客戶模型,其被配置用來裝載對象句柄和與該客戶對象關聯的實對象,并且在該客戶對象與服務器之間通過該對象句柄和該實對象傳送過程控制數據。
圖1所述的框圖為示例的客戶/服務器構架,其包括與過程控制系統機器通信地連接的客戶機。
圖2詳細描述了圖1的該客戶模型和用戶界面的功能框圖。
圖3和4描述了示例代碼配置,其可以用來通過繼承在用戶產生的與預先產生的部分類之間共用代碼。
圖5描述了另一個示例代碼配置,其可以用來通過聚集在用戶產生的與預先產生的部分類之間共用代碼。
圖6描述了預先產生的部分類與具有兩個客戶模式的客戶應用程序的實對象之間的關系。
圖7和8描述了在運行階段期間,在圖1和2的用戶界面與客戶模型之間形成的數據路徑。
圖9的方框圖描述了圖1和2的用戶界面與客戶對象之間的數據綁定。
圖10描述了定義示例服務器模式的示例服務器模式XML源代碼。
圖11為該過程控制系統數據庫服務器響應于由該客戶模型所提交的查詢而返回給該客戶模型的示例XML源代碼。
圖12描述了可以用來將過程控制數據從服務器模式映射到客戶模式的示例客戶模式XML源代碼。
圖13描述了表示對象和包含在其中的角色的示例用戶界面。
圖14的詳細框圖描述了客戶模式與服務器模式之間的映射配置,以產生圖13的該示例用戶界面。
圖15描述了可以用來產生從圖14的服務器模式層次結構到客戶模式層次結構的映射的示例XML源代碼。
圖16描述了示例用戶界面,其表示包含功能框和兩個屬性的復合功能框“PT COMP”。
圖17的詳細框圖描述了服務器模式層次結構與客戶模式層次結構之間的映射配置,其將單個客戶角色映射到多個服務器角色,以產生圖16的示例用戶界面。
圖18描述了可以用來產生從圖17的服務器模式層次結構到客戶模式層次結構的映射的示例XML源代碼。
圖19描述了表示特定工廠區域內多個不同控制設備的示例用戶界面。
圖20的詳細框圖描述了服務器模式層次結構與客戶模式層次結構之間的映射配置,其將多個客戶角色映射到單個服務器角色,以產生圖19的示例用戶界面。
圖21描述了可以用來產生從圖20的服務器模式層次結構到客戶模式層次結構的角色映射的示例XML源代碼。
圖22描述的示例用戶界面可以用來選擇性地顯示與控制設備關聯的項。
圖23的詳細框圖描述了服務器模式層次結構與客戶模式層次結構之間的映射配置,其將客戶對象映射到服務器對象的子集,以產生圖22的示例用戶界面。
圖24描述了可以用來產生從圖23的服務器模式層次結構到客戶模式層次結構的對象映射的示例XML源代碼。
圖25描述的示例用戶界面可以用來將附加項插入到控制設備視圖中,即使該附加項并不是用于該控制設備的服務器模式的一部分。
圖26的詳細方框圖描述了服務器模式層與客戶模式層之間的映射配置,其將客戶對象插入到該客戶模式層。
圖27描述了用于將客戶對象插入到圖26的該客戶模式層的示例XML源代碼。
圖28描述的示例用戶界面可以用來顯示可以通過命令獲得的實時過程控制數據的項。
圖29的詳細方框圖描述了作為命令實施客戶角色的映射配置。
圖30描述了可以用來作為命令在圖29的該客戶模式層中實施客戶角色的示例XML源代碼。
圖31A和31B所述的流程圖是可以用來在運行階段期間提供通過客戶對象對實對象進行客戶應用程序訪問的示例方法。
圖32是可以用來更新客戶對象中的修改過程控制數據的示例方法。
圖33是示例處理器系統的方框圖,其可以用來實施此處所述的該示例裝置、方法和制品。
具體實施例方式
雖然下面所公開的示例系統包括在硬件上執行的軟件和/或固件以及其它組件,但是應該注意到,這些系統僅僅只是說明性的,并且不應該作為限制考慮。例如,可以考慮將任何或所有這些硬件、軟件和固件組件專門通過硬件、專門通過軟件、或通過硬件和軟件的組合來實施。相應地,雖然下面描述了示例系統,但是本領域的普通技術人員可以容易地認識到,所提供的這些示例并不是實施這些系統的唯一方式。
相比于將終端用戶限制為預定義的特征和用于訪問過程控制數據和與過程控制數據交互的功能這種已知系統,這里所描述的該示例裝置、方法和制品可以使用可定制的數據訪問工具來訪問過程控制系統服務器中的過程控制數據,其使得終端用戶能夠定制客戶應用程序訪問、表示以及顯示該過程控制數據的方式。過程控制數據典型地包括與控制系統、過程、材料流和成分、控制系統裝備、現場設備、以及用來操作、維護、和診斷整個系統的任何工作顯示關聯的任何數據或信息。過程控制系統服務器典型地位于加工廠中,并且用來存儲過程控制數據。為了自動化、管理和配置過程控制系統,企業典型地使用運行于過程控制系統服務器上的過程控制系統軟件(即過程控制系統應用程序),并且根據用戶定義的過程控制數據管理與該過程控制系統關聯的每個操作。用戶(例如系統工程師)可以使用客戶應用程序與過程控制數據進行交互(例如管理、查看、修改、配置等),其中客戶應用程序與過程控制系統應用程序交換命令、請求和過程控制數據。該客戶應用程序典型地可以安裝于或運行于與該過程控制系統服務器也連接的網絡連接的任何工作站(即任何計算機終端)上。
傳統的客戶應用程序不管是由終端用戶還是由向終端用戶提供過程控制軟件的軟件售主開發,通常都是在與該過程控制系統應用程序同時或與其結合在一起開發。傳統的客戶應用程序典型地提供固定集合的數據訪問和數據處理功能,用戶通過這些功能被限制于訪問、表示和查看過程控制數據。定制該數據訪問和數據處理功能通常是一個復雜并且昂貴的過程,因為其需要修改該過程控制系統應用軟件、修改該客戶應用軟件、重新編譯所有軟件以及重新測試所有軟件。
這里所描述的示例方法、裝置和制品提供客戶模型數據接口層(例如圖1的客戶模型116),其提供可定制的客戶/服務器數據接口,由此客戶應用程序(例如圖1的該客戶應用程序108)可以通過該數據接口與過程控制系統服務器(例如該過程控制系統數據庫服務器112)交換數據。該客戶模型116使得客戶應用程序從該過程控制系統服務器112中提取出來,并且可以在不同的過程控制系統服務器之間移動。該客戶模型116包括核心數據訪問或數據交換功能,和一套基本的數據訪問和數據處理功能,這些功能使得該客戶應用程序108能夠與該過程控制系統數據庫服務器112通信和交互,以及與其交換過程控制數據。該客戶模型116可以在軟件開發工具包(SDK)中作為多個目標代碼文件、頭文件、源文件等提供給終端用戶(例如消費者、系統工程師等)。終端用戶然后可以基于該客戶應用程序SDK開發客戶應用程序,以與該過程控制系統服務器交互,從而查看、管理和配置過程控制數據。該終端用戶可以在任何時候修改或增加數據訪問功能,并且每次可以只重新編譯該客戶應用程序軟件,而不需要修改該過程控制系統應用軟件。
如下面將要更詳細的描述的,使用與面向對象的編程語言關聯的部分類(partial class)來實現該客戶模型116。部分類用來將類的類型分離、劃分或分割成可以駐留于兩個或更多個文件中的兩個或更多個部分。通過這種方式,程序員可以根據功能、使用頻率或任何其它標準將長代碼分割或斷開成多個小片斷或部分代碼。如下所述,該部分類可以用來區分用戶產生的代碼中和預先產生的代碼。相應的部分類可以駐留于目標代碼和源代碼的任何組合中。預先產生的代碼包括用于客戶模型116的預先產生的部分類,其在過程控制系統應用程序的初始開發被開發,并被編譯以產生例如通過如上所述的客戶應用程序SDK發送到終端用戶的客戶模型目標代碼。用戶產生的代碼包括用戶產生的部分類,其對應于該預先產生的部分類,并且被用來為隨后開發(例如在銷售之后)的客戶應用程序定義定制功能。
該終端用戶可以通過只使用該客戶模型目標代碼中所提供的那些功能來開發客戶應用軟件,或者該終端用戶可以隨后開發源代碼,以定義附加的用戶定義的數據訪問功能,從而按照該終端用戶的需要來訪問、表示、和/或顯示過程控制數據。可以使用該客戶模型目標代碼的對應預先產生的部分類中所定義的任何資源、元素、或功能來在用戶產生的部分類中開發該用戶定義的數據訪問功能。在編譯時間期間,編譯者掃描軟件過程的每個文件(例如每個目標文件和源文件),并且交叉鏈接相應的部分類以形成定義該類的每個元素、功能、或方面的完整類(complete class)。在執行期間,該客戶應用程序108將所組合的對應部分類識別為完整類,從而使得用戶定義的數據訪問功能能夠與該客戶模型116一起工作,就好像該用戶定義的數據訪問功能最初就是該客戶模型目標代碼的一部分。
該客戶模型116也使得用戶能夠定義該過程控制數據布局,或者定義當從過程控制系統數據庫(例如圖1的該過程控制系統數據庫110)中檢索出該過程控制數據時如何表示該過程控制數據。該過程控制系統數據庫110使用表、列、記錄、項、字段等組織過程控制數據。當該過程控制系統數據庫服務器112從過程控制系統數據中檢索過程控制數據時,該服務器根據服務器模式組織該過程控制數據。然而,客戶應用程序通常需要使該過程控制數據進行不同組織、表示、或布局,從而該客戶應用程序可以按照用戶定義來顯示該過程控制數據。為了便于通過客戶應用程序訪問和顯示數據,終端用戶可以在該客戶應用程序的設計階段為每一客戶應用程序定義客戶模式。在操作期間,該客戶模型116可以從該過程控制系統數據庫服務器110中獲得按照服務器模式組織或設置的過程控制數據,并按照下面結合圖13至30所述根據該用戶定義的客戶模式將該過程控制數據從該服務器模式組織重新設置成客戶模式組織或設置。
現在詳細參見圖1,客戶/服務器架構110包括客戶機102和過程控制系統機104。該客戶機102一般用來查看、修改、和管理與過程控制數據相關的任何過程控制數據。該客戶機102可以使用計算機、工作站終端、便攜計算機、膝上計算機、手持個人數字助理(PDA)、或任何其它適當的處理器系統來實現。該過程控制系統機104存儲該過程控制數據并根據該過程控制數據對該過程控制系統進行自動化和管理。該過程控制系統機104可以是工作站、主機、服務器、或與過程控制系統中的控制設備通信地連接的任何其它適當的處理器系統(例如圖33的示例處理器系統3310)。該過程控制系統機104被配置用來將該過程控制數據提供給該客戶機102(或被配置用來與該過程控制系統機104通信的任何其它客戶機),并且被配置用來按照該客戶機102和/或對應的過程控制系統中的控制設備的請求修改、增加、或更新過程控制數據。
該客戶機102可以通過通信網絡106與該過程控制系統機104通信地連接。該通信網絡106例如可以是局域網(LAN)或廣域網(WAN),并且可以使用任何適當的通信技術或者各種技術的組合來實現,諸如Ethernet、IEEE 802.11、Bluetooth、任何數字或模擬移動通信系統(即蜂窩通信系統)、數字用戶線(DSL)、任何寬帶通信系統等。
該客戶機102包括讓用戶能夠檢索、查看、管理和存儲過程控制數據的客戶應用程序108。用戶可以在實現客戶應用程序108的客戶機102上安裝機器可訪問的指令,并隨后使用客戶應用程序108來訪問所存儲的過程控制數據和/或實時過程控制數據。所存儲的過程控制數據可以包括與控制設備配置參數相關聯的信息、以周期性間隔測得的過程控制數據值、歷史測量值、或可以被存儲用于以后檢索的任何其它值。總的來說,實時過程控制數據包括不是存儲、而是根據請求所產生或得出的任何過程控制數據。例如,實時過程控制數據可以包括響應于來自該客戶應用程序108的請求而測得、獲得、產生、或計算得到的過程控制數據值。
所存儲的過程控制數據可以從過程控制系統機104中獲得。過程控制系統機104包括被配置用來存儲過程控制數據(例如所存儲的過程控制數據)的過程控制系統數據庫110,和與該過程控制系統數據庫110通信地連接的過程控制系統數據庫服務器112。該過程控制系統數據庫服務器112被配置用來在該過程控制系統數據庫110與客戶應用程序108之間傳送所存儲的過程控制數據。
客戶機102包括運行期(runtime)服務器114,以提供實時過程控制數據。該運行期服務器114可以與該網絡106通信地連接,并且被配置用來獲得從該數據庫服務器112和/或直接從過程控制系統中的控制設備獲得過程控制數據。例如,運行期服務器114可以通過從該數據庫服務器112請求過程控制數據,并且對所檢索到的過程控制數據執行例如數學運算或任何其它操作,從而根據一個或多個所存儲的過程控制數據得到實時過程控制數據。如果該客戶應用程序108請求與控制設備關聯的實時測得的過程控制數據值(例如溫度值、壓力值、流速值等),那么運行期服務器114可以通過過程控制系統機104和/或該網絡106與該控制設備通信,以檢索實時測得的該過程控制數據值。
該客戶應用程序108包括該客戶模型116和用戶界面118。該客戶模型116與過程控制系統機104和運行期服務器110通信地連接,并使得該客戶應用程序108能夠與該過程控制系統機104和該運行期服務器110通信,以訪問所存儲的過程控制數據和實時過程控制數據。具體地說,該客戶模型116提供可以被該客戶應用程序108使用的數據訪問功能,以訪問和交換所存儲的以及實時的過程控制數據。該數據訪問功能包括一套基本的數據訪問功能,并且也可以包括用戶定義的數據訪問功能。如下結合圖2的詳細所述,通過預先產生的部分類提供該套基本數據訪問功能,并且通過與該預先產生的部分類對應的用戶產生的部分類提供該用戶定義的數據訪問功能。
該用戶界面118被配置用來產生多個基于圖形和/或基于文本的用戶界面屏幕,其可以用來對過程控制數據進行訪問、查看、管理、修改、更新等。用戶可以在設計階段和/或在運行階段指定由該用戶界面118所要使用的顯示布局或顯示設置,以顯示該過程控制數據。例如,所示的該用戶界面118包括樹視圖界面120和內容視圖界面122。該樹視圖界面120可以用來以分級樹結構來顯示過程控制數據,該結構具有可以查看所選控制設備的更少或更多詳情的擴展和折疊部分。該內容視圖界面122可以用來顯示層疊到過程控制系統圖上的過程控制數據。例如,該內容視圖界面122可以顯示過程控制系統圖中的彼此通信地連接的多個控制設備,并且顯示與相應控制設備相鄰或其上的過程控制數據。通過這種方式,用戶可以在整個過程控制系統的范圍內查看過程控制數據。
客戶模型116在該用戶界面118、運行期服務器114和過程控制系統數據庫服務器114之間根據模式、查詢和命令傳送過程控制數據。模式用來定義特定的數據組織、布置、或應該如何表示過程控制數據的數據布局。例如,客戶模式為該用戶界面118定義特定的數據布置或用來表示過程控制數據的數據布局。該用戶界面118也與多個客戶模式關聯,每個客戶模式都用來布置、組織、或表示不同的過程控制數據。例如,一個客戶模式可以用來表示泵控制設備數據,而另一客戶模式可以用來表示多個控制設備共用的屬性值,而還有的客戶模式可以用來表示與特定工廠區域內的控制設備關聯的過程控制數據。
服務器模式為過程控制系統數據庫服務器112和運行期服務器114定義用來表示或布置過程控制數據的特定數據布置或數據布局。用于該過程控制系統數據庫服務器112的服務器模式可以與用于運行期服務器114的服務器模式不同。然而,總的來說,服務器模式用來與客戶模式不同地表示、組織、或布置數據。例如,服務器模式可以用來表示與過程控制系統關聯的所有過程控制數據,而客戶模式可以用來僅表示該過程控制數據的特定部分或片斷。
該客戶模型116被配置用來在服務器模式與客戶模式之間轉換或映射過程控制數據,如下面結合圖13至30詳述的那樣。例如,響應于來自該用戶界面118的數據請求查詢,該客戶模型116將該過程控制數據從服務器模式轉換或映射到客戶模式,以根據由該用戶界面118所提供的該客戶模式布置該處理數據。該客戶模型116也可以響應于來自該客戶界面118的更新查詢,將修改或更新后的過程控制數據從客戶模式轉換或映射到服務器模式。
由該用戶界面118和/或該客戶模型116所產生的查詢可以包括數據請求查詢和更新查詢。該數據請求查詢用來檢索特定的過程控制數據,該更新查詢用來修改或更新例如該過程控制系統數據庫110中的過程控制數據。響應于接收到來自該用戶界面118的查詢,該客戶模型110確定該查詢是否與所存儲的過程控制數據或者與實時過程控制數據關聯,并相應地將該查詢傳送到該過程控制系統數據庫服務器112或該運行期服務器114。如果該查詢包括與所存儲的和實時的過程控制數據關聯的部分,該客戶模型116可以解析該查詢,或將其分解成實時數據查詢和存儲數據查詢,并分別將這些查詢傳送到該服務器112和114。
該命令可以包括使得服務器112和114檢索、修改和/或創建過程控制數據的機器可訪問指令。例如,某些命令可以包括與根據這些查詢和更新查詢來訪問(例如檢索、修改或創建)該過程控制系統數據庫110中的過程控制數據相關聯的指令。另外,某些命令可以包括使得運行期服務器114從控制設備測量或獲取過程控制數據,或者使得該運行期服務器114根據所存儲的過程控制數據得出過程控制數據值(例如平均值、濾波值等)的指令。
圖2是圖1的客戶模型116和用戶界面118的詳細功能框圖。具體地說,圖2描述了在運行階段期間使用部分類來在該用戶界面118、該客戶模型116以及該服務器112和114之間交換過程控制數據的方式。該用戶界面118使用多個客戶模式(例如圖14、17、20、23、26和29的該多個客戶模式分級層)來尋址不同的過程控制數據。例如,所示的該用戶界面118包括第一客戶模式對象模型202a、第二客戶模式對象模型202b和第三客戶模式對象模型202c,其中每個對象模型與各自的第一、第二和第三客戶模式關聯。用戶界面118也包括用戶I/O控件204,其被配置用來顯示用戶界面(UI)視圖(例如圖1的樹視圖120和內容視圖122)中的過程控制數據,并且用來獲得與檢索、顯示、和/或修改過程控制數據相關聯的用戶輸入。該用戶I/O控件204例如可以包括文本框、按鈕、列表、數據域等,并且可以使用任何適當的控件框架來實現,例如可以包括MicrosoftAvalon控件框架。
每個客戶模式對象模型202a-c包括一個或多個預先產生的部分類206和一個或多個用戶產生的部分類208,其能夠對與各個第一、第二和第三客戶模式相關聯的過程控制數據進行訪問和處理。具體地說,該預先產生的部分類206包括預定義的類元素,而該用戶產生的部分類208包括用戶定義的類元素。類元素可以包括數據成員、存取器、方法或功能、實現、和/或本領域所熟知的任何其它類元素,每個類元素都可以被指定為私有的、受保護的或公有的。該預先產生的部分類206的類元素可以用來通過如下結合圖6詳述的實對象(例如下面所述的該實對象216)與該過程控制系統數據庫服務器112(圖1和2)通信。該用戶產生的部分類208的類元素可以被配置用來訪問與相應的預先產生的部分類206的類元素關聯的數據,并且可以被配置用來通過該預先產生的部分類206中的類元素與該過程控制系統數據庫服務器112通信。如圖2中所示,該用戶產生的部分類108包括用戶定義的功能210。由對應的該部分類206和208形成的每個完整類可以與不同類型的過程控制數據關聯。例如,示例的類可以包括與特定類型的控制設備關聯的數據訪問和處理功能,而另一示例的類可以包括與特定的加工廠區域或特定的過程控制子系統關聯的數據訪問和處理功能。還有的示例類可以包括與對過程控制數據進行數學和/或統計處理(例如平均、濾波等)關聯的功能。
在開發階段期間,對于每個客戶模式,終端用戶可以選擇一個或多個預先產生的部分類來創建該每個預先產生的部分類206。而且在開發階段期間,該終端用戶可以開發該用戶定義的功能210,并通過選擇與該用戶定義的功能210相關聯的一個或多個用戶產生的部分類來創建每個客戶模式對象模型202a-c的用戶產生的部分類208。
為第一客戶模式對象模型202a所選擇的部分類206和208可以不同于為第二客戶模式對象模型202b所選擇的部分類206和208。例如,為第一客戶模式對象模型202a選擇的部分類206和208可以用來訪問與第一加工廠區域的控制設備關聯的過程控制數據,而為第二客戶模式對象模型202b選擇的部分類206和208可以用來訪問與第二加工廠區域的控制設備關聯的過程控制數據。
在運行階段期間,部分類206和208可以用來為每個客戶模式對象模型202a-c產生多個客戶對象212。該客戶對象212符合或對應于該客戶應用程序(例如圖1的客戶應用程序108)的數據布局或數據部置。每個客戶對象212是由部分類206和208之一所定義的類的類型。可以產生該相同類的類型的兩個或更多個客戶對象212,諸如兩個類的類型泵的對象,分別用于該過程控制系統中不同的物理泵控制設備。另外,可以產生兩個或更多個客戶對象212,以訪問與該同一物理控制設備關聯的過程控制數據。由兩個或更多個該客戶對象212對該同一物理控制設備的過程控制數據的訪問通過實對象(例如該實對象216)在該客戶模型116中進行仲裁或處理,如下所述的那樣。該客戶對象212可以用來將該用戶I/O控件204數據綁定到實時和存儲的過程控制數據,如下結合圖9詳述的那樣。通過將該用戶I/O控件204數據綁定到該過程控制數據,該客戶對象212可以響應于通過該用戶I/O控件所提供的用戶輸入,產生數據請求查詢和/或數據更新查詢。如上所述,使用這些查詢來檢索或修改所存儲的或實時的過程控制數據。該客戶對象212也可以響應于指示例如該過程控制系統數據庫210中的至少某些過程控制數據值已經改變或被修改的數據更新事件,來更新通過該用戶I/O控件204顯示的過程控制數據值。
該客戶模型116包括多個第一對象句柄214a、多個第二對象句柄214b、和多個第三對象句柄214c。如圖2中所示,多個對象句柄214a-c中的每個對象句柄與客戶模式對象模型202a-c中的相應對象模型關聯。該客戶模型116也包括多個實對象216。該實對象216符合或對應于與圖1的過程控制系統數據庫服務器114和/或運行期服務器114關聯的服務器模式的該數據布局或數據布置。該對象句柄214a-c是存儲器中對應于實對象216的位置的地址參考或基本地址。在運行期間,當在存儲器堆中創建并存儲一個該實對象216時,在存儲器棧上也創建并存儲句柄214a-c中的一個對應句柄。通過該實對象的對象句柄(例如,句柄214a-c中的一個句柄)向該實對象發送數據訪問請求、查詢、更新查詢、和/或過程控制數據,每個客戶對象212與一個實對象216關聯,并通過一個實對象216訪問過程控制數據。該實對象216響應于從該客戶對象212接收到的查詢或更新查詢來將查詢和/或更新查詢傳送到該過程控制系統數據庫服務器112。該實對象216從該過程控制系統數據庫服務器112獲得基于服務器模式(例如,圖14、17、20、23、26和29的服務器模式層次結構中的一個)而組織或布置的過程控制數據。該客戶模型116然后將該過程控制數據從服務器模式組織映射、重新布置或轉換到客戶模式組織,如下結合圖13至29中詳述的那樣。
在某些情況下,兩個或更多個客戶對象212對應于特定的一個實對象216。例如,當從相同類型的類構建兩個或更多個客戶對象212來訪問該相同的過程控制數據時,就為這兩個或更多個客戶對象212創建單個實對象216。通過這種方式,一個實對象216可以仲裁由兩個或更多個實對象216對該相同的過程控制數據所作出的數據訪問請求。
圖3和4描述了示例的代碼配置,其可以用來通過繼承在用戶產生的部分類與預先產生的部分類之間共用代碼。圖3顯示的預先產生的文件302的名稱為“MODULE_GEN.CS”,第一用戶產生的文件304的名稱為“MODULE_MANUAL.CS”,第二用戶產生的文件306的名稱為“MODULE_BASE.CS”。該預先產生的文件302定義名稱空間“DELTAV.CONFIG.EXPLORER.HIERARCHY”308中的部分類,其包含類型“MODULE”310的預先產生的公有部分類(即該預先產生的公有部分類“MODULE”310)。該公有部分類“MODULE”310可以包括被配置用來與圖1和2的該過程控制系統數據庫服務器112通信的類元素。該公有部分類“MODULE”310可以是圖2的預先產生的部分類206的一部分。
該第一用戶產生的文件304使用名稱空間“DELTAV.CONFIG.EXPLORER”312,以及名稱空間“DELTAV.CONFIG.EXPLORER.HIERARCHY”310中的部分類定義。在名稱空間“DELTAV.CONFIG.EX-PLORER.HIERARCHY”310中,該預先產生的公有部分類“MODULE”310繼承該用戶產生的類“MODULE_BASE”314的類元素。通過這種方式,該類“MODULE”310和“MODULE_BASE”314可以共用或訪問彼此的類元素。例如,在類“MODULE_BASE”314中定義的類元素可以通過類“MODULE”310中所定義的類元素與該過程控制系統數據庫服務器112通信。類“MODULE_BASE”314在下面所描述的第二用戶產生的文件306中定義,并且其可以是圖2的用戶產生的部分類208的一部分。
第二用戶產生的文件306包括可以用來配置客戶應用程序(例如圖1的該客戶應用程序108)的源代碼,以在預先產生的部分類“MODULE”310與用戶產生的部分類“MODULE_BASE”314之間共用源代碼。在該第二用戶產生的文件306中,該名稱空間“DELTAV.CONFIG.EXPLORER”312包含用于用戶產生的部分類“MODULE_BASE”314的特定應用方法的實現。該用戶產生的部分類“MODULE_BASE”314的特定應用方法由第一用戶產生的文件304中的用戶產生的部分類“MODULE”310繼承。
圖4描述的示例運行配置用來在運行階段期間在兩個不同的名稱空間之間共用圖3的源代碼。圖4顯示了名稱空間為“DELTAV.CONFIG.EXPLORER”312的實例、名稱空間為“DELTAV.CONFIG.EXPLORER.HIERARCHY”308的實例和名稱空間為“DELTAV.CONFIG.EXPLORER.CONTENT”402的實例。在名稱空間308或402中裝載或實例化的部分類的類型“MODULE”310的客戶對象可以使用在該預先產生的文件302或用戶產生的文件306中定義的源代碼或類元素。
名稱空間“DELTAV.CONFIG.EXPLORER”312的實例包括用于該用戶產生的部分類“MODULE_BASE”314的第二用戶產生的文件306(圖3)中所定義的類元素。名稱空間“DELTAV.CONFIG.EXPLORER.HIERARCHY”308的實例包括類的類型“MODULE”(例如部分類的類型“MODULE”310)的第一“MODULE”客戶對象404。名稱空間“DELTAV.CONFIG.EXPLORER.CONTENT”402的實例包括第二“MODULE”客戶對象406,其也是類類型“MODULE”(例如該部分類型“MODULE”310)。每個客戶對象404和406包括用戶產生的部分410(例如用戶產生的類元素)和預先產生的部分412(例如預先產生的類元素)。該用戶產生的部分410包括在該第二用戶產生的文件304的用戶產生的類“MODEL_BASE”310中所定義的類元素。該預先產生的部分412包括在該預先產生的文件302的用戶產生的部分類型類“MODULE”310中所定義的類元素。
圖5描述了另一個示例代碼配置,其可以用來通過聚集來在用戶產生的與預先產生的部分類之間共用代碼。預先產生的部分類代碼502包括名稱空間“DLETAV.CONFIG.EXPLORER.HIERARCHY”308,其包含預先產生的部分類“MODULE”310。用戶產生的部分類代碼504包括名稱空間“DLETAV.CONFIG.EXPLORER.HIERARCHY”312,其包含用戶產生的類“EXPLORER_MODULE”506。為了在該預先產生的部分類“MODULE”310與該用戶產生的類“EXPLORER_MODULE”506之間共用源代碼或類元素,該用戶產生的類“EXPLORER_MODULE”506定義“MODULE”508(例如部分類類型“MODULE”310)類型的客戶對象,其可以被該預先產生的部分類代碼502中所定義的預先產生的部分類“MODULE”310的所有類元素使用。
圖6描述了預先產生的部分類與具有兩個客戶模式的客戶應用程序(例如圖1的該客戶應用程序108)的實對象之間的關系。第一客戶模式602使用多個第一預先產生的部分類604,并且第二客戶模式606使用多個第二預先產生的部分類608。該預先產生的部分類604和608基本上與圖2的預先產生的部分類206類似或相同。該客戶應用程序108使用兩個客戶模式602和606來尋址不同的需要或不同的過程控制數據。例如,該第一客戶模式602與特定工廠區域下的模塊關聯,并且該第二客戶模式606與特定子系統的報警關聯。
該客戶模型116包括與該第一客戶模式602關聯的多個第一對象句柄610和與該第二客戶模式606關聯的多個第二對象句柄612。該對象句柄610和612基本上與圖2的對象句柄214a-c類似或相同。該客戶模型116為每個客戶模式602和606建造或產生對象句柄的單獨的組或樹。每個預先產生的部分類604和608中預先產生的部分類的層次關系與對應的對象句柄610和612的層次關系相同。
該客戶模型116還包括基本上與圖2的實對象216類似或相同的多個實對象614。該客戶應用程序108通過與預先產生的部分類604和608關聯的客戶對象(例如圖2的客戶對象212和圖7的710a-d)與實對象614通信。具體地說,與該部分類604和608關聯的客戶對象通過該對象句柄610和612訪問該實對象614。
當該客戶應用程序108從第一客戶模式602發送數據訪問請求(例如查詢)到客戶模型116時,該客戶模型116裝載與特定過程控制數據(例如特定的工廠區域)關聯的實對象(例如某些實對象614),其中該數據訪問請求與上述特定過程控制數據關聯。當該客戶應用程序108從該第二客戶模式606發送數據訪問請求(例如查詢)時,該客戶模型116裝載所有報警屬性或與該特定子系統關聯的一個實對象614的屬性,如圖6中所示,其中該數據訪問請求與上述特定過程控制數據關聯。
該客戶用于108控制該實對象614的壽命或裝載該實對象614的時間。例如,如果該客戶應用程序108指示某些實對象614應該保持被裝載,那么這些對象就不會被卸載。典型地,通過垃圾收集例程卸載諸如該實對象614之類的對象,其中垃圾收集例程周期性地檢測已經被指定為可垃圾收集或可卸載的實對象。例如,如果該客戶應用程序118確定應該卸載某些實對象614,那么那些實對象就被指定可垃圾收集。在這種情況下,隨后的垃圾收集掃描就會卸載被標記為可垃圾收集的或者沒有被標記為當前使用的這些實對象614。
圖7和8描述了在運行階段期間,在圖1和2的該用戶界面108與該客戶模型116之間形成的數據路徑。特別地,圖7描述了該客戶對象212與用于第一用戶界面(UI)視圖702和第二UI視圖704的實對象216之間的數據路徑。在圖7中,該UI視圖702和704共用一個共同的客戶模式。圖8描述了客戶對象212與實對象216之間的數據路徑,其中第一UI視圖702和第二UI視圖704分別具有其自己的客戶模式。UI視圖702和704可以基本上與圖1的樹視圖120和/或內容視圖122類似或相同。
如圖7和8中所示,第一和第二UI視圖702和704屬于客戶應用對象706或與其關聯。每個UI視圖702和704通過一個或更多個實對象216訪問過程控制數據。所示實對象216具有父實對象“R”708a,其裝載“ModuleLibrary”實角色708b。諸如“ModuleLibrary”實角色708b之類的角色暴露于與該角色關聯的多個過程控制數據,或提供對與該角色關聯的多個過程控制數據的訪問。例如,角色可以提供對與特定工廠區域相關聯的,或者與特定類型的控制設備相關聯的過程控制數據的訪問。該“ModuleLibrary”實角色708b響應于來自UI視圖702和704的過程控制數據請求,裝載第一實對象“R1”708c和第二實對象“R2”708d。例如,第一實對象708c可以與第一控制設備關聯,而第二實對象708d可以與第二控制設備關聯。
為了通過該實對象216訪問過程控制數據,該UI視圖702和704裝載該客戶對象212,以與該實對象216通信。例如,如圖7中所示,為了訪問與該“ModuleLibrary”實角色708b關聯的過程控制數據,該第一UI視圖702裝載父客戶對象“O”710a。該父客戶對象“O”710a引用父對象句柄“H”712a,該父客戶對象710a使用父對象句柄“H”712a,以通過第零個掩碼“M”704a訪問該父實對象“R”708a。諸如第零個掩碼“M”714a之類的掩碼被配置用來將過程控制數據從服務器模式的數據布局或布置翻譯或映射到客戶模式的數據布局或布置。例如,父實對象708a可以是提供對多個過程控制數據文件庫的訪問的庫對象。如果父客戶對象710a被配置用來只訪問與該父實對象708a相關聯的多個庫對象(例如,該“ModuleLibrary”實角色708b)的子集,那么掩碼714a將庫訪問請求從父客戶對象710a翻譯或映射到父實對象708a中對應的庫。例如,掩碼可以包括布置在布局中的多個指針,其對應于客戶模式,并且指向或者引用實對象中的過程控制數據。
所示該數據路徑為多個活動和未活動的數據路徑。實線表示活動的或者UI視圖702或704使用的以訪問特定對象、句柄或掩碼的數據路徑。虛線表示未活動的或者UI視圖702或704都不再使用的數據路徑。例如,起始第一UI視圖702使得父客戶對象“O”710a實例化或裝載第一子客戶對象“O1”710b。第一UI視圖702可以使用第一子客戶對象“O1”710b,以通過第一實對象708c來訪問過程控制數據。該第一UI視圖702通過第一數據路徑716訪問該第一子客戶對象710b,其起始是表示活動的或“在使用中”的數據路徑的實線。該第一子客戶對象710b引用第一句柄“H1”712b,并通過第一掩碼“M1”714b訪問第一實對象708c。
另外,由于第一和第二UI視圖702和704共用公用的客戶模式,該第二UI視圖704也可以通過該第一子客戶對象710b訪問該第一實對象708c。如圖7中所示,該第二UI視圖704通過第二數據路徑718訪問該第一子客戶對象710b。當該第一UI視圖702結束使用該第一子客戶對象710b時,該第一數據路徑716變成圖7中通過虛線所示的未活動。如果該客戶應用程序706沒有其它UI視圖需要訪問該第一子客戶對象706b,那么客戶對象710b變為可以進行垃圾收集(例如可卸載)。然而,因為該第二UI視圖704繼續訪問該第一子客戶對象710b,該數據路徑718保持為圖7中用實線表示的活動狀態,并且該客戶對象710b并不變為可用于垃圾收集。從該第一子客戶對象710b到該第一實對象708c的數據路徑720、722和724也保持為用實線所示的活動狀態。
當客戶對象不再被客戶應用程序的任何用戶界面使用時,與該客戶對象關聯的所有數據路徑變為未活動,并且該客戶對象和對應的句柄和掩碼都被標記為準備用于垃圾收集,并且隨后由該客戶模型116卸載。另外,如果被該客戶對象訪問的實對象不再被其它任何客戶對象訪問時,那么該實對象也被標記為準備用于垃圾收集,并且隨后由客戶模型116卸載。例如,開始為該第一UI視圖702初始化或裝載以訪問該第二實對象708d的第二子客戶對象“O2”710c,當其不再被任何UI視圖702或704使用時隨后變為未活動狀態并被標記為準備用于垃圾收集。第二對象句柄714c和第二掩碼714c也變成被標記為用于垃圾收集。在這種情況下,與該第二子客戶對象710c關聯的所有數據路徑都變為圖7中用虛線所示的未活動狀態。雖然該客戶模型116卸載第二子客戶對象710c、第二對象句柄712c、以及第二掩碼714c,但是如果另一個子客戶對象仍然還在使用或者還請求訪問該第二實對象708d時,該客戶模型116可以不卸載該第二實對象708d。
在特定客戶對象的實例被卸載之后,可以為隨后任何訪問與該客戶對象關聯的過程控制數據裝載該客戶對象的另一個實例。例如,如圖7中所示,在卸載該第二子客戶對象710c之后(例如在垃圾收集期間被卸載),該第一UI視圖702可以使得該父對象710a裝載或實例化該第二子客戶對象“O2”710d的第二個實例,以訪問第二實對象708d。
在圖8中,每個UI視圖702和704都有其自己單獨的客戶模式,并且使用其自己的子客戶對象來訪問該實對象216。例如,第二UI視圖704實例化或裝載客戶對象“O1”802,其與被第一UI視圖702所使用的所有客戶對象都分離。下面結合圖31A和31B所述的該示例方法可以用來在UI視圖702和704與圖7和8中所示的實對象216之間形成通信路徑。
圖9的框圖描述了在圖1和2的該用戶界面118與基本上與圖2的一個客戶對象212類似或相同的客戶對象902之間的數據綁定。圖9中該用戶界面118舉例來說具有基本上與圖2的該用戶I/O控件204相同或類似的第一、第二和第三用戶I/O控件904a、904b和904c。例如,該用戶I/O控件904a-c可以是文本框、列表框、數據域、復選框等。該客戶對象902包括用戶產生的類元素部分906和預先產生的類元素部分908。該用戶產生的元素部分906在用戶產生的部分類(例如圖2的一個用戶產生的部分類208)中定義,并且該預先產生的類元素部分908的類元素在預先產生的部分類(例如圖2的一個預先產生的部分類206)中定義。根據該用戶產生的和預先產生的部分906和908的類元素創建下面所述的多個屬性910a-910e。
該用戶產生的部分907包括PROPERTY_A元素910a和PROPERTY_B元素910b。該預先產生的部分908包括PROPERTY_C元素910c、PROPERTY_D元素910d和PROPERTY_E元素910e。使用屬性元素910a-c來從該過程控制系統數據庫110中檢索所存儲的過程控制數據。PROPERTY_A元素910a與PROPERTY_C元素910c關聯,并且基于該PROPERTY_C元素910c得出值。該客戶對象902包括如圖9中所示的私有哈希表912,其包括用戶產生的元素(例如屬性元素910a和910b)與預先產生的元素(例如屬性元素910c-e)之間的該映射或關聯。可以通過對于對象912私有的類型“HashTable”的變量或指針來引用或訪問該私有哈希表912。在該私有哈希表912的行914中所示的為PROPERTY_A元素910a與PROPERTY_C元素910c之間的關聯。
該用戶I/O控件904a-c分別被數據綁定到PROPERTY_A元素910a、PROPERTY_D元素910d和PROPERTY_E元素910e。通過這種方式來數據綁定該I/O控件904a-c就使得每次當任何這些數據值被更新時,該客戶應用程序108在該I/O控件904a-c與它們各自的元素910a、910c和910e之間傳送數據值。例如,如下結合圖32更加詳細所述的,該過程控制系統數據庫服務器112和客戶模型116可以交換關于過程控制系統數據庫服務器112中已經被修改的過程控制數據的更新信息(例如“UpdateNotification”事件和可疑或臟對象列表)。通過這種方式,客戶對象902可以確定任何修改的過程控制數據是否與任何其屬性元素910c-d關聯,其中屬性元素910c-d用來訪問所存儲的過程控制數據,如果是,那么就更新過程控制數據值被修改的對應的每個屬性元素910c-d的值。該客戶對象902然后可以使用該私有哈希表912來更新使用或與過程控制數據值被修改的對應的任何屬性元素910c-d關聯的任何用戶產生的屬性(例如該屬性910a和910b)的值。
為了更新該數據綁定的用戶I/O控件904a-c的值,該客戶模型116解析通過更新通知事件所接收到的更新信息,以產生用于其對應的過程控制數據值已經被修改的任何用戶產生的或預先產生的屬性的“PropertyChanged”事件。該“PropertyChanged”事件然后使得該數據綁定的用戶I/O控件904a-c從各自的屬性910a-c中獲得修改的過程控制數據,并更新該用戶I/O控件904a-c的值。
該客戶對象902也可以使用該更新信息來產生臟哈希表916。該臟哈希表916通過類型“HashTable”的變量或指針來引用,并且對于對象902是私有的。該臟哈希表916用來存儲客戶應用程序(例如圖1的客戶應用程序108)的臟的或可疑的對象句柄。在該更新信息中提供該臟對象句柄,并且該臟對象句柄指示某些客戶對象的過程控制數據已經處于過程控制系統數據庫110中。該客戶應用程序108可以使用“PopulateDirtyHashTable”函數來產生具有該臟對象句柄的臟哈希表916。例如,該“PopulateDirtyHashTable”函數首先接收來自該更新通知事件的更新信息,然后解析該更新信息和產生具有臟句柄的該臟哈希表916。
圖10描述了定義示例服務器模式的示例服務器模式XML源代碼1000。該服務器模式XML源代碼1000存儲在該過程控制系統數據庫服務器112中,并且定義用來通過該過程控制系統數據庫服務器112表示過程控制數據的布置或布局。該服務器模式XML源代碼1000包含類類型定義和枚舉定義。每個類類型具有名稱,并包含多個屬性、角色和命令。每個屬性具有名稱和數據類型。
角色具有名稱和其包含的類類型。角色中所包含的用于項目的基本類型在角色元素中聲明。特定類的子類型被嵌套在該角色元素中。每個所包含的類類型被標記其是否可以通過命令由客戶應用程序(例如圖1的該客戶應用程序108)創建。類類型定義還包含可以通過例如從該客戶應用程序108獲得的命令腳本來執行的命令。每個命令具有名稱并定義其參數和返回類型。
如圖10中所示,該服務器模式XML源代碼1000指定的類型名稱為“ControlModule”(線1002)。該類型名稱“ControlModule”(線1002)包含名稱為“detailDisplayName”的數據類型為字符串的屬性(線1004)和名稱為“Blocks”的目的類型“BlockBase”的角色(線1006)。該角色名稱“Blcoks”(線1006)包含可以通過該客戶應用程序108創建的名稱為“ModelUsage”的類型。該類型名稱“ModelUsage”(線1008)包含當客戶應用程序108裝載或實例化對象類型“ModelUsage”時創建的多個創建參數(線1010和1012)。該類型名稱“ControlModule”(線1002)還包含名稱為“renameTo”的返回類型為空的命令(線1014)。該命令名稱“renameTo”(線1014)包含名稱為“newName”的數據類型為字符串的參數(線1016)。
該服務器模式XML源代碼1000也指定一枚舉定義。具體地說,該服務器模式XML源代碼1000包括名稱為“DbeAttributeType”的枚舉(線1018)。該枚舉名稱“DbeAttributeType”(線1018)包含包括名稱為“Float”的條目(線1020)和名稱為“FloatWithStatus”的條目(線1022)的多個項。
可以在屬性的數據類型字段中引用枚舉。例如,類型名稱“Attribute”(線1024)包含名稱為“attributeType”的屬性,其數據類型為“DbeAttributeType”(線1026),該數據類型對應于枚舉名稱“DbeAttributeType”(線1018)。
圖11為由過程控制系統數據庫服務器112響應于由客戶模型116提交的查詢而返回給客戶模型116的示例XML源代碼1000。具體地說,響應于該查詢Site.PlantAreas[name=’AREA_A’](index).Modules(na me),返回該示例XML源代碼1000。如圖11中所示,該XML源代碼1000中的結果包括名稱為“PlantAreas”的ModelRole(線1102)。該ModelRole名稱“PlantAreas”(線1102)包含名稱為“AREAP_A”的PlantArea(線1104)。該PlantArea名稱“AREA_A”(線1104)包含被設置為零的屬性索引(1106)和名稱為“Models”的ModelRole(線1108)。該ModelRole名稱“Models”(線1108)包含多個模塊和每個模塊的對應屬性。例如,ModelRole名稱“Models”(線1108)包含名稱為“EM1”的ModuleInstanceBase(線1110),其包含名稱為“EM1”的屬性(線1112)。
圖12描述了可以用來將過程控制數據從服務器模式(例如圖10的服務器模式XML源代碼1000或下面結合圖14、17、20、23、26和29所述的服務器模式層次中的一個)映射到客戶模式(例如下面結合圖14、17、20、23、26和29所述的客戶模式層次中的一個)的示例客戶模式XML源代碼1200。客戶模式按照基本上與服務器模式定義類型相似的方式來定義屬性、角色和命令的類型。對于每個類型、屬性、和角色,客戶模式XML源代碼(例如客戶模式XML源代碼1200)指示了到服務器模式的映射,從而客戶模式116(圖1)可以在客戶模式與服務器模式之間重新布置或映射過程控制數據。
如圖12中所示,客戶模式中名稱為“Module”的類型被映射到服務器模式中名稱為“Module”的類型(線1202)。在這種情況下,客戶模式中名稱為“Module”的該類型在服務器模式中名稱也為“Module”。然而,客戶模式中的類型名稱可以映射到服務器模式中具有不同名稱的類型名稱。例如,類型名稱“ModuleOne”可以映射到類型名稱“Module Two”。
屬性元素(線1204)可以包含一個或多個屬性元素。每個屬性元素定義該客戶類型的一個或多個客戶屬性,并且包含每個客戶屬性的名稱、該客戶屬性與其關聯的該域、以及到服務器模式的映射。如圖12中所示,屬性名稱“desc”與該數據庫域關聯(例如該屬性對應于存儲在該過程控制系統數據庫110中的存儲過程控制數據),并且被映射到服務器模式中名稱為“description”(線1206)的屬性。屬性名稱“rtValue”與運行域關聯(例如該屬性對應于可以從圖1的運行期服務器114中獲得的實時過程控制數據),并被映射到服務器模式中名稱為“ST”(線1208)的屬性。該屬性映射與該包含的類型有關。例如,如果包含的類型為“Module”,其位于包含的類型“Site”內,那么產生用來檢索用于MOD_X的“desc”屬性的查詢為Site.Modules[name=’MOD_X’](description)。
角色元素(線1210)包含一個或多個Role元素。每個Role元素定義關聯客戶類型的客戶角色,并包含該客戶角色的名稱、該客戶角色關聯的域、用來得到該客戶角色的映射、以及該客戶角色的對象類型。如圖12中所示,該角色元素(線1210)包含與該數據庫域關聯的名稱為“attributes”的角色(例如該角色對應于存儲在該過程控制系統數據庫110中的存儲過程控制數據),并且被映射到服務器模式中名稱為“Attributes”的角色(線1212)。該屬性映射與該包含的類型有關。例如,如果包含的類型為“Module”,其位于該包含的類型“Site”內,那么產生用來檢索用于MOD_X的“attributes”角色的查詢為Site.Modules[name=’MOD_X’].Attributes。
圖13至29描述了示例用戶界面、模式映射配置、和示例XML源代碼,XML源代碼可以用來將諸如對象和角色的類元素從駐留于服務器(例如圖1的該過程控制系統數據庫服務器112或該運行期服務器114)上的服務器模式映射到駐留于客戶應用程序(例如圖1的該客戶應用程序108)中的客戶模式。下面描述的該映射配置可以通過客戶模型116來實現,以從過程控制系統服務器中提取客戶應用程序。通過將類元素通過該客戶模型116從服務器模式映射到客戶模式,可以配置客戶應用程序來與多個服務器通信地連接并與其一起工作。進一步,下面描述的基于使用模式映射配置的客戶模型116對客戶應用程序進行開發可以使得分別具有特定過程控制數據需要的多個應用程序能夠與過程控制系統服務器通信地連接并與其一起工作。
圖13描述了表示對象和包含在其中的角色的示例用戶界面1300。該示例用戶界面1300所示的單元模塊“AREA_A”1302作為一個完整對象。然而,在過程控制系統數據庫110(圖10)中,作為兩個分開的對象存儲該單元模塊“AREA_A”1302。第一對象包含該單元模塊“AREA_A”1302的行為,第二對象包含定義可以如何在單元模塊“AREA_A”1302中嵌套其它模塊的模塊容器行為。
圖14的詳細框圖描述了客戶模式與服務器模式之間的映射配置1400,以產生圖13的示例用戶界面1300。可以通過客戶模型116(圖1)來實現映射配置1400。具體地說,圖14顯示了服務器模式層次1402、客戶模式層次1404、和一對一映射配置形式的客戶模型層次1406。該服務器模式層次1402指示了存儲在過程控制系統數據庫110(圖1)中的“Unit”1408類型的服務器對象與“UnitModule”1410類型的服務器對象之間的區別。該客戶模型層次1406的層次符合該服務器模式層次1402的層次,或基本上與其相似或與其相同。客戶模式層次1404通過使用將指針提供到該客戶模型層1406中的掩碼1410a、1410b和1410c來僅表示服務器模式層1402中所關心的那些對象和角色。
服務器模型層1402包括類型“AREA”的服務器對象1412,該服務器對象包含類型“Units”的服務器角色1414。該服務器角色“Units”1414指向服務器對象“Unit”1408,其包含類型“UnitModule”的服務器角色1418和類型“Modules”的服務器角色1420。服務器角色“UnitModule”1418指向該服務器對象“UnitModule”1410,并且該服務器角色“Modules”1420指向類型“Module”的服務器角色1422。
客戶模式層1404包括類型“AREA”的客戶對象1424,該客戶對象包含類型“UnitModules”的客戶角色1426。該客戶角色“UnitModules”1426指向類型“UnitModules”的客戶對象1428,其包含類型“Modules”的客戶角色1430。客戶角色“Modules”1430指向類型“Module”的客戶對象。該客戶對象和客戶角色通過下面結合圖15所描述的客戶模型層次1406的實對象和角色以及掩碼1410a-c被映射到該服務器對象和服務器角色。
客戶模型層次1406包括多個實對象和實角色,其設置基本上與該服務器模式層次1402相似或相同。客戶模型層次1406包括對應于該服務器對象“AREA”1412的類型“AREA_A”的實對象1434。該實對象“AREA_A”1434包含對應于該服務器角色“Units”1414的類型“Units”的實角色1436。該實角色“Units”1436指向對應于該服務器對象“Unit”1408的類型“ABC”的實對象1438。該實對象“ABC”1438包含對應于該服務器角色“UnitModule”1418的類型“UnitModule”的實角色1440,和對應于該服務器角色“Module”1420的類型“Modules”的實角色1442。該實角色“UnitModule”1440指向對應于該服務器對象“UnitModule”1410的實對象“ABC”1444。該實“Module”1442指向對應于該服務器對象“Module”1442的實對象“SSS”1446。
圖15描述了可以用來產生從圖14的服務器模式層次1402到客戶模式層次1404的映射的示例XML源代碼1500。該XML源代碼1500顯示了該客戶對象“AREA”1424(圖14)被映射到該服務器對象“AREA”1412(圖14)(線1502)。為了將該客戶對象“AREA”1424映射到該服務器對象“AREA”1412,該客戶模型116通過該掩碼“AREA_A”1410a將該實對象“AREA_A”1434映射到該客戶對象“AREA”1424。通過這種方式,該客戶對象“AREA”1424通過該實對象“AREA_A”1434訪問該服務器對象“AREA”1412,就好像是該客戶對象“AREA”1424在直接訪問該服務器對象“AREA”1412。
客戶對象“AREA”1424包含客戶角色“UnitModules”1426(圖14),其映射到該服務器角色“Units”1414(圖14)并且指向該客戶對象“UnitModules”1428(圖14)(線1504)。該客戶模式層次1404中的客戶對象可以具有與該服務器模式層次1402中的服務器對象相同的名稱,即使該客戶對象并不映射到該相同名稱的服務器對象。例如,該客戶對象“UnitModules”1428被映射到該服務器對象“Unit”1408(圖14)(線1506)。在這種情況下,客戶模型116將客戶對象“UnitModules”1428通過該掩碼“ABC”1410b映射到實對象“ABC”1438。
客戶對象“UnitModules”1428包含名稱為“scanRate”的屬性,其映射到該服務器對象“UnitModules”1410的“scanRate”屬性(即‘UnitModule(scanRate)’)(線1508)。在這種情況下,該客戶模型116將實對象“ABC”1444的“scanRate”通過該掩碼“ABC”1410b映射到客戶對象“UnitModule”1428的“scanRate”屬性。通過將實對象“ABC”1444的“scanRate”屬性通過該掩碼“ABC”1410b映射到客戶對象“UnitModule”1428的“scanRate”屬性,該客戶模型116從該服務器對象“Unit”1408遍歷該服務器角色“Unitmodule”1418(圖14),以將該客戶對象“UnitModule”1428的“scanRate”屬性映射到該服務器對象“UnitModules”1410的“scanRate”屬性。
對象“UnitModules”1426包含客戶角色“Models”1430(圖14),其映射到服務器角色“Modules”1420(圖14)并且指向該客戶對象“Modules”1432(圖14)(線1510)。
圖16描述的示例用戶界面1600表示包含功能框和兩個屬性的復合功能框“PT_COMP”1602。如該用戶界面1600中所示,該復合功能框“PT_COMP”1602包括包含功能框“CALC1”1606、屬性“ABS_PRESS_CF”1608、和屬性“ABS_TEMP_CF”1610的項的統一列表1604。如果用戶選擇顯示對象的統一列表,該客戶模型116可以被配置用來將客戶角色映射到兩個或多個服務器角色。如下結合圖17所述,在服務器模式(例如圖17的該服務器模式層次1702)中,對應于該功能框“CALC1”1606的對象關聯于與對應于屬性“ABS_PRESS_CF”1608和屬性“ABS_TEMP_CF”1610的對象不同的服務器角色。然而,在客戶模式(例如圖17的客戶模式層次1704)中,對應于該功能框“CALC1”1606、屬性“ABS_PRESS_CF”1608和屬性“ABS_TEMP_CF”1610的對象被表示作為該同一客戶角色的一部分。
圖17的詳細框圖描述了服務器模式層次1702與客戶模式層次1704之間的映射配置1700,其將單個客戶角色映射到多個服務器角色,以產生圖16的該示例用戶界面1600。在該映射配置中所描述的映射可以由客戶模型116(圖1)執行。映射配置1700通過客戶模型層次1706和多個掩碼1708a-d將該客戶模式層次1704映射到該服務器模式層次1702。該服務器模式層次1702包括類型“Composite Function Block”的服務器對象1710,其包含兩個服務器角色類型“Blocks”的服務器角色1712和類型“Attributes”的服務器角色1714。該服務器角色“Blocks”1712指向類型“BlockUsage”的客戶對象1716,并且該服務器角色“Attributes”1714指向類型“AttributeDefinitions”的客戶對象1718。如圖所示,該客戶模型層次1706符合該服務器模式層次1702。
該客戶模式層1704包括類型“Composite”的客戶對象1720,其包含類型“Children”的客戶角色1722。該客戶角色“Children”1722指向類型“Blocks”的客戶對象1724和類型“Attributes”的客戶對象1726。
圖18描述了可以用來產生從圖17的服務器模式層次1702到客戶模式層1704的映射的示例XML源代碼1800。該XML源代碼1800將客戶對象“Composite”1720(圖17)映射到該服務器對象“Composite Function Block”1710(圖17)(線1802)。包含在該客戶對象“Composite”1720(線1804)內的該客戶角色“Children”1722映射到兩個服務器角色。特別地,該客戶角色“Children”1722映射到該服務器角色“Blocks”1712(線1806),并映射到該服務器角色“Attributes”1714(線1808)。為了映射到該服務器角色“Blocks”1712,該客戶角色“Children”1722指向該客戶對象“Block”1724(線1806)。為了映射到該服務器角色“Attributes”1714,該客戶角色“Children”1722指向該客戶對象“Attribute”1726(線1808)。該客戶角色“Block”1724映射到該服務器對象“BlockUsage”1716(線1810),并且該客戶角色“Attribute”1726映射到該服務器對象“AttributeDefinition”1718(線1812).
圖19描述了表示特定工廠區域“AREA_A”1902內多個不同控制設備的示例用戶界面1900。具體地說,該工廠區域“AREA_A”1902包括“LIC-549”控制設備1904、“PLM1”控制設備1906、和“EM1”控制設備1908。如下結合圖20和21所述,該控制設備1904、1906和1908在客戶模式(例如圖20的該客戶模式層次2004)中表示為映射到服務器模式(例如圖20的該服務器模式層次2002)中的單個服務器角色的三個獨立的客戶角色。
圖20的詳細框圖描述了服務器模式層次2002與客戶模式層次2004之間的映射配置2000,其將單個客戶角色映射到多個客戶角色,以產生圖19的示例用戶界面1900。該映射配置2000通過客戶模型層次2006和多個掩碼2008a-d將該客戶模式層次2004映射到該服務器模式層次2002。該服務器模式層次2002包括類型“Area”的服務器對象2010,其包含類型“Modules”的服務器角色2012。該服務器角色“Modules”2012指向類型“Phase LogicModule”的服務器對象2014、類型“Equipment Module”的服務器對象2016、和類型“ControlModule”的服務器對象2018。該客戶模型層次2006包括類型“PLM1”的實對象2020、類型“EM1”的實對象2022、和類型“LIC-459”的實對象2024,其分別對應于服務器對象“Phase Logic Module”2014、服務器對象“Equipment Module”2016、以及服務器對象“Control Module”2018。該實對象“PLM1”2020、實對象“EM1”2022、以及實對象“LIC-459”也分別對應于該用戶界面1900中所示的該“LIC-549”控制設備1904、“PLM1”控制設備1906、和“EM1”控制設備1908。
該客戶模式層次2004包括類型“Area”的客戶對象2026,其指向類型“ControlModules”的客戶角色2028、類型“PhaseLogicModules”的客戶角色2030、和類型“EquipmentModules”的客戶角色2032。該客戶角色“ControlModules”2028指向類型“Control Module”的客戶對象2034。該客戶角色“PhaseLogicModules”2030指向類型“Phase Logic Module”的客戶對象2036。該客戶角色“EquipmentModules”2032指向類型“EquipmentModule”的客戶對象2038。
圖21描述了可以用來產生從圖20的該服務器模式層次2002到客戶模式層次2004的角色映射的示例XML源代碼2100。如該XML源代碼2100中所示,該客戶角色“ControlModules”2028被映射到該服務器角色“Modules”2006(線2102)。而且,該客戶角色“PhaseLogicModules”2030被映射到該服務器角色“Modules”2006(線2104)。另外,該客戶角色“EquipmentModules”2032被映射到該服務器角色“Modules”2006(線2106)。
圖22描述的示例用戶界面2200可以用來選擇性地顯示與控制設備關聯的項。例如,該用戶界面2200示出了“CH01”控制設備2202并僅顯示了一個屬性,即屬性“CTLR1C01CH01”2004,其該“CH01”控制設備2202關聯,盡管該“CH01”控制設備2202與服務器模式(例如圖23的服務器模式層次2302)中的至少兩個屬性關聯。如下進一步詳述的,客戶模式(例如圖23的客戶模式層次2304)可以被映射到服務器模式(例如服務器模式層次2302)中的服務器對象的子集,使得客戶應用程序(例如圖1的客戶應用程序108)僅顯示如用戶界面2200中所示對象的該子集。
圖23的詳細框圖描述了服務器模式層次2302與客戶模式層次2304之間的映射配置2300,其將客戶對象映射到服務器對象的子集,以產生圖22的該示例用戶界面2200。客戶模式層次2306包括類型“CTLR1C01”的實對象2308,其對應于圖22的屬性“CTLR1C01CH01”2204。該服務器模式層次2302包括類型“Device”的服務器對象2310和類型“DST”的服務器對象2312。該客戶模式層次2304包括類型“DST”的客戶對象2314。如圖24的該示例XML源代碼2400中所示,該客戶對象“DST”2314被映射到該服務器對象“DST”2312(線2402)。該客戶對象“DST”2314通過該實對象“CTLR1C01CH01”2308和掩碼“CTLR1C01CH01”2316被映射到該服務器對象“DST”2312。
圖25描述的示例用戶界面2500可以用來將附加項插入到控制設備視圖中,即使該附加項并不是用于該控制設備的服務器模式的一部分。該用戶界面2500包括“CTLR1”控制設備2502,其所示具有“Assigned Modules”項2504和“TIC-205”項2506。如下面結合圖26所述的,服務器模式(例如圖26的服務器模式2602)并不包括對應于該“Assigned Modules”項2504的服務器對象。相反,對應于該“Assigned Modules”項2504的客戶對象被插入到客戶模式(例如圖26的該客戶模式2604)中。
圖26的詳細框圖描述了服務器模式層次2602與客戶模式層次2604之間的映射配置2600,其將客戶對象插入到該客戶模式層次2604中。服務器模式層次2602和客戶模式層次2604中的每個都包括單個對象。具體而言,服務器模式層次2602包括類型“Module”的服務器對象2608,并且客戶模型層次2606包括對應于該服務器對象“Module”2608和該“TIC-205”項2506(圖25)的類型“TIC-201”的實對象2610。該客戶模式層次2604包括對應于該服務器對象2608和客戶模型對象2610的客戶對象“Module”2612。另外,客戶應用程序(例如圖1的客戶應用程序108)已經插入類型“AssignedModules”的客戶對象2614。
圖27描述了用于將客戶對象“AssignedModules”2614(圖26)插入到客戶模式層次2604(圖26)的示例XML源代碼2700。具體地說,為了創建該客戶對象“Assigned Modules”2614,該示例XML源代碼2700規定類型“AssignedModules”的客戶角色2616(圖26)不具有服務器模式映射(例如Role name=”AssignedModules”mapping=“”),并且該客戶角色“AssignedModules”2616指向該客戶對象“AssignedModules”2614(線2702)。為了將該客戶對象“AssignedModules”2614插入到該客戶模式層次2604,該示例XML源代碼2700規定該客戶對象“Assigned Modules”2614假裝映射到類型“Control”的服務器對象2618(例如該服務器模式層次2602的父對象)。該客戶對象“AssignedModules”2614包含類型“Modules”的客戶角色2620(圖26),其映射到類型“AssignedModules”的服務器角色2622(圖26)(線2706)。
圖28描述的示例用戶界面2800可以用來顯示可以通過命令為其獲得實時過程控制數據的項。該用戶界面2800包括現場總線端口“P01”2802,其包含可以從其中通過該運行期服務器114獲得實時過程控制數據的控制設備(圖1)。具體地說,該現場總線端口“P01”2802包含“DecommissionedFieldbus Devices”2804,其包括控制設備“D1”2806。該控制設備“D1”2806在客戶模式(例如圖29的該客戶模式層2902)中作為如下結合圖29所述的命令來實現。
圖29的詳細框圖描述了作為命令實現的客戶角色的映射配置。客戶模式層次2902包括作為命令實現的類型“Devices”的客戶角色2904。該客戶角色“Devices”2904可以用來從圖1的運行期服務器114中獲得實時過程控制數據。圖30的示例XML源代碼3000規定類型“DecommissionedDevices”的客戶對象2906(圖29)(圖30的線30)包含該客戶角色“Devices”2904(圖29)。該示例XML源代碼3000還規定使用存儲在文件“commands.dll”(例如assembly=”commands.dll”)中的命令指令來實現該客戶角色“Devices”2904,并且規定實現客戶角色“Devices”2904的指定命令是“GetDecommissionedDevices”(線3004)。該客戶角色“Devices”2904指向類型“FieldbusDevices”的客戶對象2908(圖29)(圖30的線3004),其并不映射到服務器模式層次2901(圖29)(圖30的線3006)。
圖31A、31B和32所述的流程圖表示用于實現圖1和2的示例客戶應用程序108、示例客戶模型116、和示例用戶界面118的示例機器可讀并可執行的指令。在這些例子中,該機器可讀指令包括用于由處理器執行的程序,諸如圖33的該示例處理器系統3310中所示的處理器3312。該程序可以實施在存儲于有形介質上的軟件中,其中有形介質諸如CD-ROM、軟盤、硬盤驅動、數字萬能盤(DVD)、或與處理器3312相關聯的存儲器,和/或該程序可以以已知的方式實施于固件或專用硬件中。例如,圖1和2的示例客戶應用程序108、示例客戶模型116和示例用戶界面118內的任何或所有結構都可以通過軟件、硬件和/或固件實現。進一步,雖然參照圖31A、31B和32中所述的流程圖描述了該示例程序,但是本領域的普通技術人員會容易認識到,可替換地可以使用許多其它方法來實現圖1和2的示例客戶應用程序108、示例客戶模型116、和示例用戶界面118。例如,這些方框的執行順序可以改變,和/或可以改變、消除或組合某些所述方框。
圖31A和31B所述的流程圖是可以用來在運行階段期間提供通過客戶對象(例如圖2、7和8的客戶對象212)對實對象(例如圖2、7和8的實對象216)進行客戶應用程序(例如圖1的客戶應用程序108)訪問的示例方法。起始,該客戶應用程序108引用第一和第二UI視圖(例如圖7的第一和第二UI視圖702和704)(方框3102)。該第一UI視圖702然后請求通過父客戶對象(例如圖7的父客戶對象“O”710a)以及對應的父對象句柄和掩碼(例如圖7的父對象句柄“H”712a和第零個掩碼“M”714a)訪問父實對象(例如圖7的父實對象“R”708a)(方框3104)。例如,該第一UI視圖702可以發送調用來使用該父客戶對象“O”710a。該父客戶對象“O”710a然后可以通過引用該父對象句柄“H”712a進行響應,該父對象句柄又引用該第零個掩碼“M”714a。該第零個掩碼“M”714a然后引用該父實對象“R”708a,并且在該第一UI視圖702與該父實對象“R”708a之間建立通信路徑,如圖7中所示。
該第一UI視圖702然后使得該父實對象“R”708a裝載實角色(例如圖7的“ModuleLibrary”實角色708b)(方框3106)。例如,該第一UI視圖702調用該父客戶對象“O”710a上的裝載角色并傳送該角色名稱“ModuleLibrary”。該父客戶對象“O”710a然后從該父對象句柄“H”712a中提取該實角色,并且該父對象句柄“H”712a使得該第零個掩碼“M”714a裝載該“ModuleLibrary”實角色708b。
該父實對象“R”708a然后裝載該“ModuleLibrary”實角色708b下的第一和第二實對象708c和708d(方框3108)。該第零個掩碼“M”714a然后為第一和第二實對象708c和708d創建掩碼(例如圖7的第一和第二掩碼714b和714c),并將這些掩碼返回到該父對象句柄“H”712a(方框3110)。該父對象句柄“H”712a然后為該第一和第二掩碼714b和714c創建對象句柄(例如圖7的第一和第二對象句柄712b和712c),并將對象句柄返回到該父客戶對象“O”710a(方框3112)。
該父客戶對象“O”710a然后實例化第一和第二子客戶對象710b和710c(圖7),并將每個子客戶對象710a-b引用到對應的對象句柄(方框3114)。具體地說,該第一子客戶對象710b被引用到該第一對象句柄712b,并且該第二子客戶對象710c被引用到該第二對象句柄712c。該第一UI視圖702然后引用該第一和第二子客戶對象710b和710c(方框3116),這就形成了如圖7中所示第一UI視圖702與第一和第二實對象708c和708d之間的通信路徑。
如圖31B中所示,該第二UI視圖然后請求訪問該第一實對象708c(方框3118)。該客戶模型116然后確定該第一和第二視圖702和704是否共用客戶模式(例如圖14、17、20、23、26和29中的客戶模式層次中的一個)(方框3120)。如果該UI視圖702和704的確共用客戶模式,那么該第一UI視圖702將第一子客戶對象710b傳送到第二UI視圖704(方框3122)。在這種情況下,如圖7中所示,在該第二UI視圖704與該第一子客戶對象710b之間建立數據路徑,并且該第一UI視圖702與該第一子客戶對象710b之間的數據路徑未被激活,因為該第一UI視圖702不再引用該第一子客戶對象710b。
如果該第一和第二UI視圖702和704并不共用客戶模式,那么該第一UI視圖702將該第二UI視圖704傳送到對應于該第一子客戶對象710b的服務器路徑(方框3124)。該第二UI視圖704然后將該服務器路徑傳送到該客戶模型116,并發送請求給該客戶模型116來查找該服務器路徑上的項(方框31260)。該客戶模式116然后創建第三掩碼804(圖8)和第三對象句柄806(圖8),其引用該第一實對象708c(方框3128)。該第二UI視圖704然后從該客戶模型116接收該第三對象句柄804(圖8)(方框3130)。該第二UI視圖704然后實例化該第三子客戶對象804(方框3132)。該第三子客戶對象804然后引用該第三對象句柄804(方框3134)。然后在該第二UI視圖704與該第一實對象708c之間形成通信路徑,如圖8中所示。當該第一UI視圖702結束訪問該第一實對象708c時,該客戶模型指示該第一子客戶對象710b、第一對象句柄712b和第一掩碼714b不再被使用或未活動,并準備用于垃圾收集(方框3136)。
在該客戶模型116指示哪些客戶對象、句柄和掩碼準備用于垃圾收集之后,或者在方框3122該第一UI視圖702將該第一子客戶對象710b傳送到該第二UI視圖704之后,該客戶模型116確定該第一UI視圖702是否需要再次訪問該第一實對象708c(方框3138)。如果該第一UI視圖702的確需要再次訪問該第一實對象708c,那么就將控制傳送回到方框3104(圖31A),并且重復上面結合方框3104至3116所述的操作,以在該第一UI視圖702與該第一實對象708c之間建立通信路徑。在這種情況下,如圖7中所示,通過該第一子客戶對象“O1’”的第二實例710e、第一對象句柄“H1’”的第二實例712d、和第一掩碼“M1’”的第二實例714d建立從該第一UI視圖702到第一實對象708c之間的通信路徑。如果該客戶模型116在方框3138確定該第一UI視圖702并不需要再次訪問該第一實對象708c,那么該過程就結束。
圖32是可以用來更新客戶對象(例如圖9中的客戶對象902)中的修改的過程控制數據的示例方法。初始,該客戶模型116(圖1)獲得更新通知事件(方框3202)。該客戶模型116從該過程控制系統數據庫服務器112和/或該過程控制系統數據庫110中接收該更新通知事件。例如,當修改了該過程控制系統數據庫110中的存儲過程控制數據時,該過程控制系統數據庫110發布更新通知事件(例如“UpdateNotification”事件)和可疑實對象或臟實對象(例如圖2和圖7中與該數據庫110中被修改的過程控制數據相關聯的某些實對象216)的列表。響應于該“UpdateNotification”事件,該客戶模型116識別一個或多個可疑客戶對象(例如圖2和圖7中的某些客戶對象212),其對應于通過該“UpdateNotification”事件提供給該客戶模型116的可疑實對象(方框3204)。該客戶模型116然后例如通過“QuestionableUpdateNotification”事件將可疑客戶對象的列表傳送到客戶應用程序(例如圖1的客戶應用程序108)(方框3206)。該可疑客戶對象的列表可以包括每個可疑客戶對象的句柄或標識。
該客戶應用程序108然后從該客戶模型116接收該可疑客戶對象的列表,并根據該可疑客戶對象的列表產生臟哈希表(例如圖9的該臟哈希表916)(方框3208)。例如,該客戶應用程序108的預先產生的部分類(例如圖2的預先產生的部分類206)可以包括用來監視該“QuestionableUp-dateNotification”事件和可疑客戶對象的列表的方法或事件。該客戶應用程序108然后通知任何可視UI視圖(例如圖7的UI視圖702和704以及圖9的UI視圖118)已經接收到更新通知事件(方框3210)。例如,為了減少更新用戶可以看到的過程控制數據所需要的時間量,該客戶應用程序108可以不告知最小化在用戶界面顯示器上的任何UI視圖。該可視UI視圖然后根據該臟哈希表916確定它們這些客戶對象是否有臟的(方框3212)。例如,該可視UI視圖的客戶對象確定任何他們這些句柄或標識符是否對應于該臟哈希表916中的可疑客戶對象的句柄或標識符。
該可視UI視圖然后標志出處于該臟哈希表916中的任何使用的對象句柄(方框3124)。例如,如果該UI視圖118仍然在使用該客戶對象902,并且對應于該客戶對象902的對象句柄在該臟哈希表916中,那么該對象902標志出該臟哈希表916中其對應的對象句柄,以指示該客戶對象902仍然“在使用”,并從而不準備用于垃圾收集。該臟哈希表916中任何沒有被標志的對象句柄都被標定或指定為未活動或未被使用,并可以用于垃圾收集。該客戶模型116然后刪除或卸載所有未活動或未被使用的臟對象句柄(方框3216)。例如,該客戶模型116可以使用垃圾收集例程來刪除或卸載該臟哈希表916中所列出的、但是沒有被標志為在使用或活動的所有臟對象句柄。
該客戶模型116然后為該臟哈希表916中被標志為在使用的臟對象句柄檢索更新的或修改的過程控制數據(方框3218)。例如,該客戶模型116產生對應于“在使用”的臟對象的過程控制數據的查詢,并將該查詢傳送到過程控制系統數據庫服務器112(圖1)。該過程控制系統數據庫服務器112然后從該過程控制系統數據庫110檢索該修改的過程控制數據,并將該修改的過程控制數據返回到該客戶模型116。
該客戶模型116然后將該更新的或修改的過程控制數據從服務器模式轉換到客戶模式(方框3220)。例如,該客戶模型116可以使用上面結合圖14、17、20、23、26和29所述的任何映射配置來將該修改的過程控制數據從該服務器模式(例如圖14、17、20、23、26和29的服務器模式層次中的一個)轉換或映射到客戶模式(例如圖14、17、20、23、26和29的客戶模式層次中的一個)。
該客戶模型116然后確定哪些當前為該可疑客戶對象所裝載的過程控制數據值不同于所接收到的修改的過程控制數據,并只將不同的修改的過程控制數據(例如實際上已經改變的數據)傳送到該客戶應用程序(方框3222)。通過這種方式,該客戶模型116并不必將標志為修改的、但是實際上與當前裝載在客戶應用程序108中的過程控制數據沒有變化的任何過程控制數據傳送到客戶應用程序108。該客戶應用程序108然后將更新通知發送到與已使用的臟對象句柄關聯的、并且從客戶模式116接收到修改的過程控制數據的客戶對象(方框3224)。例如,該客戶應用程序108可以發送通知到該客戶對象902,并傳送與任何PROPERTY_C元素910c、PROPERTY_D元素910d、以及PROPERTY_E元素910e(圖9)關聯的修改的過程控制數據。每個客戶對象然后根據所接收到的修改的過程控制數據更新其數據(方框3226)。例如,該客戶對象902可以根據所接收到的修改的過程控制數據更新元素910c、910d和910e的值。
圖33是示例處理器系統的框圖,其可以用來實施此處所述的示例裝置、方法和制品。如圖33中所示,該處理器系統3310包括與互連總線3314連接的處理器3312。該處理器3312包括寄存器組或寄存器空間3316,其在圖33中所示為與芯片一體,但是其可替換地可以全部或部分不在芯片上,并通過專用電子連接和/或通過互連總線3314與該處理器3312直接連接。該處理器3312可以是任何適當的處理器、處理單元或微處理器。雖然在圖33中沒有示出,但是該系統3310可以是多處理器系統,并于是可以包括一個或多個附加處理器,其與該處理器3312相似或相同,并與該互連總線3314通信地連接。
圖33的處理器3312與芯片組3318連接,其包括存儲器控制器3320和輸入/輸出(I/O)控制器3322。如所熟知的,芯片組典型地提供I/O和存儲器管理功能以及可以被一個或多個與該芯片組3318連接的處理器訪問或使用的多個通用和/或專用的寄存器、定時器等。該存儲器控制器3320執行使得處理器3312(或如果有多個處理器就是多個處理器)能夠訪問系統存儲器3324和大容量存儲器3325的功能。
該系統存儲器3324可以包括任何所想要類型的易失性和/或非易失性存儲器,諸如靜態隨機存取存儲器(SRAM)、動態隨機存取存儲器(DRAM)、快速存儲器、只讀存儲器(ROM)等。該大容量存儲器3325可以包括任何所想要類型的大容量存儲設備,包括硬盤驅動器、光盤驅動器、磁帶存儲設備等。
該I/O控制器3322執行使得處理器3312能夠通過I/O總線3332與外圍輸入/輸出(I/O)設備3326和3328以及網絡接口3330通信的功能。該I/O設備3326和3328可以是任何想要類型的I/O設備,諸如鍵盤、視頻顯示器和監視器、鼠標等。該網絡接口3330例如可以是使得該處理器系統331O能夠與另一個處理器系統通信的以太網設備、異步傳輸模式(ATM)設備、802.11設備、DSL調制解調器、線纜調制解調器、蜂窩調制解調器等。
雖然在圖33中該存儲器控制器3320和I/O控制器3322所示為該芯片組3318內的不同功能塊,但是由這些功能塊所執行的功能可以集成在單個半導體電路內,或者可以使用兩個或更多個分開的集成電路來實現。
雖然這里已經描述了某些方法、裝置以及制品,但是本專利的覆蓋范圍并不限于此。相反,本專利范圍覆蓋落入所附權利要求書字面意思或等同物的范圍內的所有方法、裝置和制品。
權利要求
1.一種用于訪問過程控制數據的方法,包括裝載客戶對象;從該客戶對象向被配置成與服務器通信的實對象傳送數據訪問請求;根據該數據訪問請求從該實對象向該服務器傳送查詢;響應于該查詢,從該服務器獲得過程控制數據;將該過程控制數據從與服務器模式關聯的第一數據布局映射到與客戶模式關聯的第二數據布局;和將所映射的過程控制數據傳送給應用程序。
2.根據權利要求1所述的方法,其中該過程控制數據以可擴展標記語言形式從該服務器獲得。
3.根據權利要求1所述的方法,其中該過程控制數據是存儲的過程控制數據或實時過程控制數據中的至少之一。
4.根據權利要求1所述的方法,其中該客戶對象通過應用程序裝載。
5.根據權利要求1所述的方法,其中將該過程控制數據從該第一數據布局映射到該第二數據布局的步驟包括將與該客戶模式關聯的多個客戶角色元素映射到與該服務器模式關聯的服務器角色元素。
6.根據權利要求1所述的方法,其中將該過程控制數據從該第一數據布局映射到該第二數據布局的步驟包括將與該客戶模式關聯的客戶對象映射到與該服務器模式關聯的多個服務器對象。
7.根據權利要求1所述的方法,其中將該過程控制數據從該第一數據布局映射到該第二數據布局的步驟包括將與該客戶模式關聯的客戶角色元素映射到與該服務器模式關聯的多個服務器角色元素。
8.根據權利要求1所述的方法,其中將該過程控制數據從該第一數據布局映射到該第二數據布局的步驟包括將客戶角色元素和客戶對象插入到該客戶模式,其中該服務器模式不包括對應于該客戶角色元素和該客戶對象的服務器角色元素和服務器對象。
9.根據權利要求1所述的方法,其中將該過程控制數據從該第一數據布局映射到該第二數據布局的步驟包括以命令方式實現客戶角色元素。
10.根據權利要求1所述的方法,進一步包括在將該映射的過程控制數據傳送給該應用程序之后卸載該客戶對象。
11.根據權利要求10所述的方法,其中卸載該客戶對象的步驟包括指定該客戶對象未被使用。
12.一種用于訪問過程控制數據的裝置,包括處理器系統;和與該處理器系統通信連接的存儲器,該存儲器包括存儲的指令,其使得該處理器系統能夠裝載客戶對象;從該客戶對象向被配置為與服務器通信的實對象傳送數據訪問請求;根據該數據訪問請求從該實對象向該服務器傳送查詢;響應于該查詢,從該服務器獲得過程控制數據;將該過程控制數據從與服務器模式關聯的第一數據布局映射到與客戶模式關聯的第二數據布局;和將所映射的過程控制數據傳送給應用程序。
13.根據權利要求12所述的裝置,其中該過程控制數據以可擴展標記語言形式從該服務器獲得。
14.根據權利要求12所述的裝置,其中該過程控制數據是存儲的過程控制數據或實時過程控制數據中的至少之一。
15.根據權利要求12所述的裝置,其中該客戶對象通過應用程序裝載。
16.根據權利要求12所述的裝置,其中該指令使得該處理器系統能夠通過將與該客戶模式關聯的多個客戶角色元素映射到與該服務器模式關聯的服務器角色元素,來將該過程控制數據從該第一數據布局映射到該第二數據布局。
17.根據權利要求12所述的裝置,其中該指令使得該處理器系統能夠通過將與該客戶模式關聯的客戶對象映射到與該服務器模式關聯的多個服務器對象,來將該過程控制數據從該第一數據布局映射到該第二數據布局。
18.根據權利要求12所述的裝置,其中該指令使得該處理器系統能夠通過將與該客戶模式關聯的客戶角色元素映射到與該服務器模式關聯的多個服務器角色元素,來將該過程控制數據從該第一數據布局映射到該第二數據布局。
19.根據權利要求12所述的裝置,其中該指令使得該處理器系統能夠通過將客戶角色元素和客戶對象插入到該客戶模式中來將該過程控制數據從該第一數據布局映射到該第二數據布局,其中該服務器模式不包括對應于該客戶角色元素和該客戶對象的服務器角色元素和服務器對象。
20.根據權利要求12所述的裝置,其中該指令使得該處理器系統能夠通過以命令方式實現客戶角色元素來將該過程控制數據從該第一數據布局映射到該第二數據布局。
21.根據權利要求12所述的裝置,其中該指令使得該處理器系統能夠在將該映射的過程控制數據傳送給該應用程序之后卸載該客戶對象。
22.根據權利要求21所述的裝置,其中該指令使得該處理器系統能夠通過指定該客戶對象未被使用來卸載該客戶對象。
23.一種機器可訪問介質,其上存儲有指令,當執行該指令時使得機器裝載客戶對象;從該客戶對象向被配置為與服務器通信的實對象傳送數據訪問請求;根據該數據訪問請求從該實對象向該服務器傳送查詢;響應于該查詢,從該服務器獲得過程控制數據;將該過程控制數據從與服務器模式關聯的第一數據布局映射到與客戶模式關聯的第二數據布局;和將所映射的過程控制數據傳送給應用程序。
24.根據權利要求23所述的機器可訪問介質,其中該過程控制數據以可擴展標記語言形式從該服務器獲得。
25.根據權利要求23所述的機器可訪問介質,其中該過程控制數據是存儲的過程控制數據或實時過程控制數據中的至少之一。
26.根據權利要求23所述的機器可訪問介質,其中該客戶對象通過應用程序裝載。
27.根據權利要求23所述的機器可訪問介質,其中當執行該指令時,使得該機器通過將與該客戶模式關聯的多個客戶角色元素映射到與該服務器模式關聯的服務器角色元素,來將該過程控制數據從該第一數據布局映射到該第二數據布局。
28.根據權利要求23所述的機器可訪問介質,其中當執行該指令時,使得該機器通過將與該客戶模式關聯的客戶對象映射到與該服務器模式關聯的多個服務器對象,來將該過程控制數據從該第一數據布局映射到該第二數據布局。
29.根據權利要求23所述的機器可訪問介質,其中當執行該指令時,使得該機器通過將與該客戶模式關聯的客戶角色元素映射到與該服務器模式關聯的多個服務器角色元素,來將該過程控制數據從該第一數據布局映射到該第二數據布局。
30.根據權利要求23所述的機器可訪問介質,其中當執行該指令時,使得該機器通過將客戶角色元素和客戶對象插入到該客戶模式中來將該過程控制數據從該第一數據布局映射到該第二數據布局,其中該服務器模式不包括對應于該客戶角色元素和該客戶對象的服務器角色元素和服務器對象。
31.根據權利要求23所述的機器可訪問介質,其中當執行該指令時,使得該機器通過以命令方式實現客戶角色元素來將該過程控制數據從該第一數據布局映射到該第二數據布局。
32.根據權利要求23所述的機器可訪問介質,其中當執行該指令時,使得該機器在將該映射的過程控制數據傳送給該應用程序之后卸載該客戶對象。
33.根據權利要求32所述的機器可訪問介質,其中當執行該指令時,使得該機器通過指定該客戶對象未被使用來卸載該客戶對象。
34.一種用于訪問過程控制數據的方法,包括響應于用戶界面請求裝載第一和第二客戶對象,其中該第一和第二客戶對象與訪問基于客戶模式組織的過程控制數據關聯;裝載與該第一和第二客戶對象關聯的實對象,該實對象被配置用來獲得基于服務器模式組織的過程控制數據;將過程控制數據從該服務器模式組織映射到該客戶模式組織,并將該過程控制數據傳送到該第一和第二客戶對象;和通過與該第一客戶對象關聯的第一用戶界面和與該第二客戶對象關聯的第二用戶界面獲得該過程控制數據。
35.根據權利要求34所述的方法,其中基于至少一個掩碼將該過程控制數據從該服務器模式組織映射到該客戶模式組織。
36.根據權利要求34所述的方法,進一步包括在該第一用戶界面結束使用該第一客戶對象之后將該第一客戶對象指定為未活動狀態。
37.根據權利要求36所述的方法,進一步包括卸載該第一客戶對象句柄。
38.根據權利要求34所述的方法,進一步包括響應于更新通知,更新與該第一用戶界面或該第二用戶界面關聯的過程控制數據。
39.一種用于訪問過程控制數據的裝置,包括處理器系統;和與該處理器系統通信地連接的存儲器,該存儲器包括存儲的指令,所述指令使得該處理器系統能夠響應于用戶界面請求裝載第一和第二客戶對象,其中該第一和第二客戶對象與訪問基于客戶模式組織的過程控制數據關聯;裝載與該第一和第二客戶對象關聯的實對象,該實對象被配置用來獲得基于服務器模式組織的過程控制數據;將過程控制數據從該服務器模式組織映射到該客戶模式組織,并將該過程控制數據傳送給該第一和第二客戶對象;和通過與該第一客戶對象關聯的第一用戶界面和與該第二客戶對象關聯的第二用戶界面獲得該過程控制數據。
40.根據權利要求39所述的裝置,其中該指令使得該處理器系統能夠基于至少一個掩碼將該過程控制數據從該服務器模式組織映射到該客戶模式組織。
41.根據權利要求39所述的裝置,其中該指令使得該處理器系統能夠在該第一用戶界面結束使用該第一客戶對象之后將該第一客戶對象指定為未活動狀態。
42.根據權利要求41所述的裝置,其中該指令使得該處理器系統能夠卸載該第一客戶對象句柄。
43.根據權利要求39所述的裝置,其中該指令使得該處理器系統能夠響應于更新通知,更新與該第一用戶界面或該第二用戶界面關聯的過程控制數據。
44.一種機器可訪問介質,其上存儲有指令,當執行所述指令時使得機器響應于用戶界面請求裝載第一和第二客戶對象,其中該第一和第二客戶對象與訪問基于客戶模式組織的過程控制數據關聯;裝載與該第一和第二客戶對象關聯的實對象,該實對象被配置用來獲得基于服務器模式組織的過程控制數據;將過程控制數據從該服務器模式組織映射到該客戶模式組織,并將該過程控制數據傳送給該第一和第二客戶對象;和通過與該第一客戶對象關聯的第一用戶界面和與該第二客戶對象關聯的第二用戶界面獲得該過程控制數據。
45.根據權利要求44所述的機器可訪問介質,其中當執行該指令時使得該機器基于至少一個掩碼將該過程控制數據從該服務器模式組織映射到該客戶模式組織。
46.根據權利要求44所述的機器可訪問介質,其中當執行該指令時使得該機器在該第一用戶界面結束使用該第一客戶對象之后將該第一客戶對象指定為未活動狀態。
47.根據權利要求46所述的機器可訪問介質,其中當執行該指令時使得該機器卸載該第一客戶對象句柄。
48.根據權利要求44所述的機器可訪問介質,其中當執行該指令時使得該機器響應于更新通知,更新與該第一用戶界面或該第二用戶界面關聯的過程控制數據。
49.一種用于訪問過程控制數據的系統,包括預先產生的部分類,其包括與訪問過程控制數據關聯的預先產生的類元素;用戶產生的部分類,其與該預先產生的部分類關聯,并且具有能通過該預先產生的類元素來訪問過程控制數據的用戶定義的類元素;用戶界面,其被配置用來基于該預先產生的部分類和該用戶產生的部分類來實例化客戶對象,并且被配置用來根據該預先產生的類元素和用戶定義的類元素訪問過程控制數據;和客戶模型,其被配置用來裝載對象句柄和與該客戶對象關聯的實對象,并且在該客戶對象與服務器之間通過該對象句柄和該實對象傳送過程控制數據。
50.根據權利要求49所述的系統,其中該預先產生的部分類和該用戶產生的部分類形成完整類。
51.根據權利要求49所述的系統,其中該預先產生的部分類和該用戶產生的部分類的該預先產生的類元素和用戶產生的類元素通過繼承和聚集進行共用。
52.根據權利要求49所述的系統,其中該預先產生的部分類和該用戶產生的部分類被配置用來跨名字空間共用該預先產生的類元素和用戶定義的類元素。
53.根據權利要求49所述的系統,其中該用戶界面包括I/O控件,其被配置成被數據綁定到與所述預先產生的類元素或用戶定義的類元素關聯的屬性。
54.根據權利要求49所述的系統,其中該客戶模型被配置用來將與修改的過程控制數據關聯的更新信息傳送給客戶應用程序。
55.根據權利要求54所述的系統,其中該用戶界面被配置用來確定該更新信息中所指定的任何修改的過程控制數據是否與該客戶對象關聯。
56.根據權利要求54所述的系統,其中如果任何修改的過程控制數據與該客戶對象關聯,并且如果該用戶界面需要使用該客戶對象,那么該用戶界面被配置用來將該客戶句柄標記為已使用過。
57.根據權利要求49所述的系統,其中該客戶模型被配置用來基于該實對象與多個服務器通信。
58.根據權利要求57所述的系統,其中所述多個服務器包括與存儲的過程控制數據關聯的數據庫服務器或者與實時過程控制數據關聯的運行期服務器。
59.根據權利要求49所述的系統,其中該實對象被配置用來獲得基于服務器模式層次結構組織的過程控制數據。
60.根據權利要求49所述的系統,其中該客戶對象被配置用來獲得基于客戶模式層次結構組織的過程控制數據。
61.根據權利要求49所述的系統,其中該客戶模型被配置用來將該過程控制數據從服務器模式層次結構映射到客戶模式層次結構。
62.一種用于修改過程控制數據的方法,包括獲得與修改的過程控制數據相關聯的更新通知事件;根據該更新通知事件識別與該修改的過程控制數據相關聯的對象;檢索與該對象相關聯的修改的過程控制數據;確定該修改的過程控制數據是否不同于所裝載的與該對象關聯的過程控制數據;和如果該修改的過程控制數據不同于所裝載的過程控制數據,那么就根據該修改的過程控制數據來更新與客戶應用程序關聯的值。
全文摘要
用于訪問過程控制數據的方法、裝置和制品,包括裝載客戶對象,和從該客戶對象向被配置為與服務器通信的實對象傳送數據訪問請求。該實對象然后根據該數據訪問請求向該服務器傳送查詢,并且響應于該查詢從該服務器獲得過程控制數據。然后將該過程控制數據從與服務器模式關聯的第一數據布局映射到與客戶模式關聯的第二數據布局。然后將所映射的過程控制數據傳送給應用程序。
文檔編號H04L29/08GK1961288SQ200580014527
公開日2007年5月9日 申請日期2005年5月4日 優先權日2004年5月4日
發明者斯蒂芬·吉爾伯特, 斯蒂芬·G·漢莫克, 周玲, 邁克爾·J·盧卡斯, 馬克·J·尼克松 申請人:費舍-柔斯芒特系統股份有限公司