本發(fā)明大體上涉及用于使用三維圖形接口來對自動化系統(tǒng)進行編程的方法、系統(tǒng)和設(shè)備,該三維圖形接口采用緊密耦合邏輯和物理仿真技術(shù)。
背景技術(shù):
在傳統(tǒng)的自動化軟件編程環(huán)境中,程序員使用大量單獨工具,每個工具具有用于對自動化行為的一方面進行編程的特定目的。例如,一個工具設(shè)置網(wǎng)絡(luò)協(xié)議,另一個為輸入和輸出裝置分配存儲器,以及又一個用于對指令進行編碼。這些工具完全是單獨的并且必須手動配置;在一個工具中使用的編碼之間的任何失配將造成其他工具或者大體上自動化的失效。此外,幾乎沒有給定工具的語言與用于完成自動化的實際物理硬件之間的映射。在自動化工具內(nèi)定義的許多邏輯元件用于在工具自身的構(gòu)造之間建立映射,并且僅僅間接綁定以執(zhí)行任意種類的機器行為。
一些傳統(tǒng)應(yīng)用宣稱,雖然它們共同用于仿真,但是它們也可以通過將它們的指令轉(zhuǎn)移到控制裝置來產(chǎn)生運行時間功能。例如,在基于模型的控制領(lǐng)域中,人們使用由仿真系統(tǒng)提供的各種等式來寫控制程序。在這一情形下,通常沒有物理裝置的實際仿真。而是,人們通常用于對仿真進行編程的編程方法用于對控制功能進行編程。其他系統(tǒng)將它們的仿真代碼轉(zhuǎn)譯為低級別語言,諸如c,使得其可以在環(huán)境中運行而無需特別的運行時間。然而,仿真代碼仍然經(jīng)被用作通用編程語言,而不是對裝置以及自動化被部署其中的環(huán)境進行仿真。
一些傳統(tǒng)的控制器和數(shù)據(jù)采集板是使用非標(biāo)準(zhǔn)或?qū)S姓Z言進行編程的。這些控制器具有廣泛的種類并且一些將在測試期間能夠手動控制指定i/o狀態(tài)的意義上執(zhí)行某類仿真。例如,家庭自動化裝置可以允許用戶經(jīng)由某類web接口對燈進行編程以點亮或關(guān)斷。然而,這樣的傳統(tǒng)技術(shù)并未超越能夠提供例如使用所仿真的對象的屬性而指定的物理仿真的簡單開關(guān)和手動編程行為。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施例通過提供用于使用物理仿真在三維圖形接口中對自動化進行編程的方法、系統(tǒng)和設(shè)備,解決并且克服了以上不足和缺陷中的一個或多個。在此公開的技術(shù)可以用于例如設(shè)計、仿真和實施各種工業(yè)環(huán)境和機器。
簡言之,本發(fā)明的各種實施例描述了圖形仿真環(huán)境,其中邏輯和物理組件駐留在相同的工作空間中并且可以以特別方式進行編輯、修改和執(zhí)行。例如,在一個實施例中,仿真可以在設(shè)計過程期間的任意時間點運行——即使該設(shè)計未完成或?qū)е率?。邏輯可以用于修改組件的狀態(tài),以及創(chuàng)建新組建,以例如代表可以與其他組件交互的工作項目。組件的物理仿真可以根據(jù)物理約束的交互而使工作項目移動和改變。例如,傳送器可以通過提供碰撞支持和施加推動箱子向前的力來移動箱子。傳感器可以基于所仿真對象的幾何形狀或其他物理屬性來檢測并且產(chǎn)生值。邏輯可以傳送值并且基于它們的功能來發(fā)起或以其他方式控制活動。一般地,自動化可以如物理裝配一樣在仿真環(huán)境中運行。用戶可以在其運行時檢查仿真的操作以找出錯誤并且以其他方式檢驗系統(tǒng)功能。用戶可以在任意時間停止仿真以恢復(fù)對象的初始狀態(tài)并且繼續(xù)編輯正在設(shè)計的自動化。
根據(jù)本發(fā)明的一些實施例,一種用于基于來自用戶的輸入來設(shè)計自動化應(yīng)用的系統(tǒng)包括庫接口、三維工作空間、仿真引擎和控制器代碼生成單元。庫接口配置為從組件庫接收用戶選擇的多個組件。在一些實施例中,庫可以部分基于從遠程市場服務(wù)器下載的裝置模型而填充。三維工作空間顯示組件,以及基于用戶提供的一個或多個指令、使用組件來創(chuàng)建系統(tǒng)設(shè)計。仿真引擎可以隨后基于系統(tǒng)設(shè)計來生成仿真代碼,以及響應(yīng)于來自用戶的命令而執(zhí)行仿真代碼。在一些實施例中,仿真代碼可以在虛擬機環(huán)境中執(zhí)行。在一些實施例中,在三維工作空間中的一個或多個組件在仿真代碼的執(zhí)行期間被動畫化。包括在前述系統(tǒng)中的控制器代碼生成單元配置為識別與在三維工作空間中的組件相對應(yīng)的物理控制器(例如,基于從控制器接收的裝置宣告消息),以及基于系統(tǒng)設(shè)計來生成用于那些控制器的控制器可執(zhí)行代碼。
根據(jù)前述系統(tǒng)的一些實施例,三維工作空間可以配置為執(zhí)行附加功能性。例如,在一些實施例中,由用戶選擇的組件可以包括與物理裝置模型相關(guān)聯(lián)的物理組件以及與邏輯操作相關(guān)聯(lián)的邏輯元件。三維工作空間可以隨后基于一個或多個用戶指令來創(chuàng)建邏輯元件與物理組件之間的關(guān)聯(lián)。替代地(或附加地),三維工作空間可以基于第一用戶請求來創(chuàng)建包括邏輯元件中的一個或多個的邏輯元件容器。可以隨后基于第二用戶請求在邏輯元件容器與物理組件的至少一個之間創(chuàng)建關(guān)聯(lián)。各種技術(shù)可以用于創(chuàng)建這一關(guān)聯(lián)。例如,在一個實施例中,通過以下來創(chuàng)建關(guān)聯(lián):基于第一用戶選擇來識別第一物理對象;將邏輯元件容器的邏輯輸入端口對象連接至第一物理對象的裝置輸出端口對象;基于第二用戶選擇來識別第二物理對象;以及將邏輯元件容器的邏輯輸出端口對象連接至第二物理對象的裝置輸入端口對象。在一些實施例中,三維工作空間還可以配置為接收用于物理組件中的至少一個的一個或多個屬性值的用戶配置。這些屬性值可以例如與至物理模型的輸入相對應(yīng),所述物理模型用于在仿真代碼的執(zhí)行期間仿真物理組件中的一個或多個的行為。
根據(jù)本發(fā)明的另一方面,如由一些實施例描述的,一種用于基于來自用戶的輸入來設(shè)計自動化應(yīng)用的系統(tǒng)包括工作空間、仿真引擎和控制器代碼生成單元。工作空間配置為允許工業(yè)環(huán)境的三維模型的用戶創(chuàng)建和操縱。仿真引擎配置為仿真三維模型的物理行為。在一個實施例中,仿真引擎在仿真的執(zhí)行期間使三維模型動畫化??刂破鞔a生成單元配置為生成用于與包括在三維模型中的物理組件相對應(yīng)的一個或多個物理控制器的控制器可執(zhí)行代碼。在一些實施例中,系統(tǒng)還包括市場接口,其配置為從市場服務(wù)器檢索新物理裝置模型。市場接口可以隨后使用新物理裝置模型來創(chuàng)建供三維模型中使用的新物理組件。在一個實施例中,市場接口還可以促進與新物理裝置模型相對應(yīng)的物理裝置(例如經(jīng)由市場服務(wù)器)的用戶購買。
根據(jù)本發(fā)明的其他實施例,一種基于來自用戶的輸入來設(shè)計自動化應(yīng)用的計算機實施方法包括:計算機從組件庫接收用戶選擇的多個組件。計算機基于用戶提供的一個或多個指令、使用組件在三維工作空間中創(chuàng)建系統(tǒng)設(shè)計。接下來,計算機基于系統(tǒng)設(shè)計來生成仿真代碼以及響應(yīng)于來自用戶的命令而執(zhí)行這一代碼。計算機識別與三維工作空間中的多個組件相對應(yīng)的物理控制器,以及基于系統(tǒng)設(shè)計來生成用于這些物理控制器的控制器可執(zhí)行代碼。
根據(jù)以下參照附圖進行的說明性實施例的詳細描述,本發(fā)明的附加特征和優(yōu)點將變得清楚。
附圖說明
在結(jié)合附圖閱讀時,從以下詳細描述最好地理解本發(fā)明的前述以及其他方面。出于說明發(fā)明的目的,各圖中僅示出目前優(yōu)選的實施例,然而應(yīng)理解,本發(fā)明不限于特定的詳細描述:
圖1提供根據(jù)本發(fā)明的一些實施例的用于對自動化進行編程的系統(tǒng)的概觀;
圖2示出根據(jù)本發(fā)明的一些實施例的工程工具的示例;
圖3提供根據(jù)本發(fā)明的一些實施例的示例控制器架構(gòu);
圖4提供根據(jù)本發(fā)明的一些實施例的在仿真環(huán)境中在自動化運行時間執(zhí)行的過程的概觀;以及
圖5圖示本發(fā)明的實施例可以在其中實施的示例性計算環(huán)境。
具體實施方式
以下公開內(nèi)容根據(jù)若干實施例描述了本發(fā)明,這些實施例涉及用于在具有緊密耦合邏輯和物理仿真的圖形環(huán)境中對自動化進行編程的方法、系統(tǒng)和設(shè)備。在此描述的本發(fā)明的各種實施例將仿真和控制編程一起合并在同一工具中,使得它們相互混合并且不再是單獨實踐。在此描述的技術(shù)特別適用于但不限于工業(yè)應(yīng)用中的系統(tǒng)設(shè)計和實施。
圖1提供了根據(jù)本發(fā)明的一些實施例的用于對自動化進行編程的仿真環(huán)境100的概觀。簡言之,組件提供商105和110將裝置模型經(jīng)由網(wǎng)絡(luò)125供應(yīng)至市場服務(wù)器115。在生產(chǎn)商地點120處的用戶120a隨后可以從市場服務(wù)器115經(jīng)由網(wǎng)絡(luò)125下載這些模型,以供在用戶計算機120b上執(zhí)行的仿真環(huán)境中使用。用戶計算機120b允許用戶120a生成控制器代碼120f,控制器代碼120f隨后可以上傳到與物理裝置120d和120e相關(guān)聯(lián)的控制器。
組件供應(yīng)商105和組件供應(yīng)商110分別將用于物理傳送器和電機的模型經(jīng)由網(wǎng)絡(luò)125提供給市場服務(wù)器115。每個模型使用諸如可擴展標(biāo)識語言(xml)的標(biāo)準(zhǔn)化語言來提供有關(guān)裝置的詳細信息。模型可以設(shè)計為是功能上自含的以及按照需要是智能的。模型可以代表諸如傳感器或致動器的物理裝置、諸如可編程邏輯控制器的控制裝置,并且可以代表可以在無物理物質(zhì)的應(yīng)用中應(yīng)用的功能。模型的內(nèi)容可以包括例如有關(guān)對應(yīng)的物理裝置的幾何形狀、運動學(xué)和行為的詳細信息。模型還可以包括用于與其他模型對接以及提供不同配置的指示。計算機輔助設(shè)計軟件擴展可以用于通過合并機械設(shè)計來生成模型。市場服務(wù)器115托管用于由組件供應(yīng)商生成的模型的儲存庫。市場服務(wù)器115提供與該儲存庫的接口,所述接口允許用戶瀏覽和下載模型。例如,在一些實施例中,市場服務(wù)器115使用網(wǎng)頁接口,其提供可用于下載的各種模型的目錄。接口可以包括有關(guān)每個模型的詳細信息,包括例如所建模的物理裝置的圖像、輸入和輸出端口的列表、可配置的屬性以及模型行為的描述。在一些實施例中,市場服務(wù)器115也可以處置用戶與各種組件供應(yīng)商之間的交易。例如,在一個實施例中,用戶被針對從市場服務(wù)器115下載的每個模型收取費用。在另一實施例中,市場服務(wù)器115促進用戶與組件供應(yīng)商之間的交易,以購買與特定模型相對應(yīng)的物理裝置。
在生產(chǎn)商地點120,用戶120a利用用戶計算機120b來執(zhí)行工程工具120c(以下參照圖2更詳細地描述),其允許用戶120a將電機模型以及傳送器模型下載到用戶計算機120b。工程工具120c隨后可以在仿真環(huán)境中使用所下載的模型,所述仿真環(huán)境執(zhí)行模擬所建模的項目的物理活動的計算。簡言之,工程工具包括嵌入在3d圖像編輯器和可視化環(huán)境內(nèi)的動態(tài)仿真。仿真包括硬件裝置以及裝置操縱和變換的工作產(chǎn)品的物理仿真。被仿真的物理對象代表實際硬件裝置。對于給定裝置的仿真被公式化以匹配該裝置的行為并且在仿真的能力內(nèi)的相同輸入條件下執(zhí)行相同動作。仿真可以跟蹤對象的幾何形狀、位置、運動學(xué)聯(lián)結(jié)以及動力學(xué)。仿真還可以包括動態(tài)地添加對象以及從仿真去除對象的能力。這一能力可以用于仿真對象的變換,諸如剪切、擠壓和成形。其也可以用于仿真工作產(chǎn)品從過程的引入和去除。
通過仿真工業(yè)環(huán)境,用戶120a可以容易地識別使能特定過程所需的必要物理組件和布局。一旦布局已經(jīng)被確定,工程工具120c可以生成附加細節(jié)(例如,零件列表和/或藍圖),使得必要的物理組件可以被訂購(如果它們還未購買的話)并且在所期望的布局中被配置。附加地,在一些實施例中,工程工具120c生成控制器代碼,其可以在諸如可編程邏輯控制器的物理組件上直接使用。例如,在圖1中,工程工具可以生成控制器代碼120f,其可以在與物理電機120d和物理傳送器120f相關(guān)聯(lián)的控制器上直接利用。因此,物理裝置的安裝是流水線化的,因為控制器代碼120f準(zhǔn)備好在設(shè)計完成后立即使用。
圖2示出根據(jù)本發(fā)明的一些實施例的工程工具200的示例。簡言之,工程工具200包括嵌入在3d圖形編輯器和可視化環(huán)境內(nèi)的3d多體動力學(xué)仿真。工程工具200包括3d工作空間205、工具條210以及用戶可以在3d工作空間205中放置的邏輯元件的畫冊215。注意,在圖2中,設(shè)計的大多數(shù)方面是在3d工作空間205中可視地可用的。因此,布局、可視化、編程、仿真可以在單個接口中執(zhí)行,無需工具之間的切換。此外,如以下解釋的,3d組件和邏輯在同一空間中一起操作。
為了使用容易和高效編輯,工程工具200提供設(shè)計用于獨立運行的潛在低成本的工具。工程工具200中的組件如它們在真實世界中那樣運行,其中行為被動畫化以示出其如何工作。物理系統(tǒng)的組件可以從銷售者提供的選擇來創(chuàng)建,其中圖形復(fù)雜性由銷售者來解決(即,用戶不需要重新畫出)。物理系統(tǒng)可以通過將來自傳感器的輸入掛鉤到邏輯以及輸出裝置,來“接線”以描述組件的行為。附加地,在一些實施例中,仿真通過提供內(nèi)部值和其他狀態(tài)的立即反饋而提供即時調(diào)試。同樣,仿真可以通過示出物理交互并不如意圖時的情況來利用自動化闡明問題。工程工具200給工業(yè)設(shè)計提供了若干益處。在仿真的3d環(huán)境中直接編程減少了在設(shè)計和實施過程期間可能發(fā)生的間接性水平。附加地,3d物理仿真允許快速設(shè)計檢驗。這一寬容的工程模型鼓勵在測試環(huán)境中直接探索想法。
包括在圖2中示出的示例工程工具200中的畫冊215包括庫接口區(qū)段215a和物理性質(zhì)區(qū)段215b。庫接口區(qū)段215a包括可以添加到3d工作空間205的各種組件。用戶可以與包括在庫接口區(qū)段215a的頂部的標(biāo)簽(tab)交互以觀看可用于供3d工作空間205中使用的各種物理組件和邏輯組件。3d工作空間中每個組件的物理性質(zhì)可以經(jīng)由物理性質(zhì)區(qū)段215b來觀看和調(diào)整。
為了利用工程工具200來開發(fā)設(shè)計,用戶從畫冊215拖出裝置模型并且將其放置在3d工作空間205中??商娲?,可以使用用于選擇和定位對象的其他方法。將裝置模型放置在3d工作空間中創(chuàng)建了代表模型的視覺組件。每個組件可以具有相關(guān)組件或其他對象可以附著在的連接點。在一些實施例中,所連接的對象自動對齊并且可以具有利用周圍模型的幾何形狀核查的其間隙。3d工作空間205中的位置意圖代表裝置在過程中的物理位置并且應(yīng)該保持類似的幾何相關(guān)性。例如,如果在過程中存在兩個傳送器,使得一個通過將材料掉落在另一個上來饋送材料,則傳送器應(yīng)該在仿真空間中端對端地放置,使得所仿真的行為將遵循模式。圖2包括簡單的示例設(shè)計,其中電機組件205f操作傳送帶組件205a以在兩個光傳感器組件205b與205d之間移動箱子組件205i。電機組件205f的激活使傳送帶組件205a以指定速率操作。
每個裝置模型可以包括端口對象,其提供輸入值并且接收來自模型的輸出值。例如,在圖2中,電機組件205f包括接收輸入值的電機端口對象205g?;谶@些輸入值,電機組件205f相應(yīng)地設(shè)定其操作速率。光傳感器組件205b和205d分別包括光傳感器端口對象205c和205e。每個光傳感器端口對象205c和205e在其各自的光傳感器被觸發(fā)時產(chǎn)生輸出值。
邏輯元件被連接至裝置模型的端口對象以向裝置模型提供功能性。邏輯元件被描繪為具有端口的塊,其中一個塊可以連接至另一個塊。裝置模型可以通過將裝置模型的端口對象與邏輯元件的端口連接而鏈接至邏輯塊。類似地,用戶可以通過將一個塊的端口連接至另一個塊的端口而鏈接兩個塊。在一些實施例中,端口可以分類為輸入和輸出類型。輸入端口連接至輸出端口,其中僅一個鏈路可以連接至給定輸入端口,但多個鏈路可以連接至輸出端口。在其他實施例中,端口可以是雙向的,在這種情況下,它們可以同時為輸入和輸出二者并且可以任意連接。端口也可以是不同式樣和類型的混合。在一些實施例中,端口可以支持不同值類型,諸如布爾、整數(shù)、值陣列以及具有多個域的結(jié)構(gòu)化值。如果每個端口的類型不兼容,則端口之間的連接可能受限制。在一些實施例中,端口可以產(chǎn)生對于組件或其他邏輯元件的參考的值,使得可以針對不同種類的組件一般性地執(zhí)行操作,或者針對應(yīng)用的邏輯執(zhí)行操縱,諸如禁用或重復(fù)各種組。
可以使用各種類型的邏輯元件,包括例如且不限于,算術(shù)、選擇、信號、存儲器狀態(tài)、容器以及對象影響器。在一些實施例中,邏輯可能超載。例如,加算術(shù)可以用于浮點數(shù)、整數(shù)相加,以及對布爾值進行邏輯or操作。邏輯可以影響仿真對象、物理裝置的行為,或者兩者以及其他邏輯。如同組件的情況,一般地,邏輯元件具有屬性。改變這些屬性改變了邏輯元件的語義學(xué)和/或拓撲。在邏輯元件容器中的邏輯的行為傳播到連接至容器的(多個)仿真對象。
用戶可以使用與添加裝置相同的方法,將邏輯添加到系統(tǒng)設(shè)計。工程工具200包括用戶可以從其選擇的邏輯元件的畫冊(圖2中未示出)。邏輯元件一般用于代表功能或操作。用戶從畫冊拖出邏輯元件并且將其放置在3d工作空間中。在物理組件上放置邏輯可以改變該組件的行為。在組件移動時,附著于組件的邏輯與其在一起。用戶可以使用邏輯來增強仿真,諸如生成其他組件可與其交互的工作產(chǎn)品。邏輯元件可以放置在空閑空間中,或者裝置對象上或者邏輯元件容器中。放置在3d空間中和3d裝置模型上的邏輯元件具有3d位置。工程工具200可以使用邏輯元件附著于的組件來執(zhí)行特定于該組件的行為。編程和位置可以相互關(guān)聯(lián)。邏輯元件的類型確定其目的以及任意附著的裝置模型是否將用作其功能的部分。在邏輯元件中計算的值沿著鏈路路徑傳送。在用戶旋轉(zhuǎn)以及平移異或以其他方式變換工作空間視角時,邏輯元件的位置將顯示在新視角位置。
圖2中的邏輯元件容器205h提供了容器可以如何用于包含邏輯元件的組的示例。對于作用在3d世界中的所附著對象的邏輯元件,容器中的元件作用在容器附著于的對象上,或者如果容器被放置在容器本身內(nèi)則遞歸地向前作用到其容器。至從外部到容器內(nèi)的塊的鏈路可以自動地在容器以及按照需要在其他嵌套的容器上創(chuàng)建接口端口。例如,參照圖2,邏輯元件容器205h包括邏輯元件,其用于基于從光傳感器端口對象205c和205e接收的輸入來控制電機組件205f。具體地,邏輯元件容器205h取決于光傳感器組件205b、205d中的哪個被觸發(fā)而在-5與5之間調(diào)整電機組件205f的速率。在一些實施例中,邏輯元件容器可以由工程工具200中的二維場代表。然而,在其他實施例中,可以使用三維容器。用戶可以在邏輯元件容器內(nèi)(或電路之間)移動塊,以按照需要重新布置接口端口。在一些實施例中,由局部元件容器在3d工作空間中占據(jù)的空間可以是開放的和封閉的,以在用戶滿意內(nèi)容并且想減少混亂時隱藏電路內(nèi)部。容器也可以復(fù)制為單個單元,因此使特定容器的內(nèi)容可用于不同的輸入和輸出連接。注意,原始容器和復(fù)制容器可以獨自地工作。例如,至不同容器的不同輸入可以導(dǎo)致不同輸出,不同狀態(tài)可以被儲存,以及非確定性操作可以產(chǎn)生不同結(jié)果。如果用戶不希望修改內(nèi)容或者如果用戶想要內(nèi)容保持鏈接使得修改被共享,則用于復(fù)制的邏輯元件容器的邏輯的存儲可以潛在地被共享。邏輯元件容器也可以從外部裝置導(dǎo)入,使得復(fù)雜的功能可以被封裝并且在應(yīng)用之間被共享。邏輯元件容器也可以提供控制容器本身的狀態(tài)的連接。容器可以提供輸入端口,其激活以及解激活包括嵌套容器的容器的整個內(nèi)容的行為。在容器解激活時,容器內(nèi)容可以不更新,并且容器的輸出端口可以設(shè)定為缺省狀態(tài),諸如零或假。其他種類的容器可以支持不同種類的操作,這樣的分組邏輯要在序列中執(zhí)行或者像有限狀態(tài)自動機那樣動作或者使一組邏輯在單個時間周期內(nèi)重復(fù)執(zhí)行。
工程工具200的工具條210包括使用戶能夠與模型交互的各種子區(qū)段。剪切板子區(qū)段210a包括接口組件,其允許用戶通過將工作空間205的一部分(例如,組件)剪切(或復(fù)制)到用戶的剪切板而編輯3d工作空間205。該部分可以隨后粘貼回到工作空間205中或者一起粘貼到另一工作空間中。工具條210中的光標(biāo)子區(qū)段210b包括允許用戶在3d工作空間205中選擇、移動和旋轉(zhuǎn)組件的接口組件。雖然大多數(shù)組件是通過現(xiàn)存的裝置模型提供給用戶,但用戶可以與幾何形狀子區(qū)段210c交互,以將各種形狀添加至3d工作空間205。以這一方式,用戶可以定制設(shè)計布局,從而超越通過單獨使用預(yù)先生成的裝置模型而可用的設(shè)計布局。類似地,式樣子區(qū)段210d提供允許用戶調(diào)整放置在3d工作空間205中的各種組件的視覺外觀(例如,顏色、線寬等)的接口組件。如以下更詳細描述的,工具條210包括運行子區(qū)段210e和物理性質(zhì)子區(qū)段210f,它們提供用于創(chuàng)建和與放置在3d工作空間205中的組件相關(guān)聯(lián)的仿真交互的接口組件。最后,觀看子區(qū)段210g允許用戶選擇工程工具200中的特定項目是否應(yīng)該顯示。
工程工具200包括硬件裝置以及裝置操縱和變換的工作產(chǎn)品的物理仿真。工具條210中的運行子區(qū)段210e允許用戶在系統(tǒng)設(shè)計正在3d工作空間205中開發(fā)時激活以及停止仿真。工具條210中的物理性質(zhì)子區(qū)段210f包括允許用戶調(diào)整仿真的時序以及其他屬性以及觀看由仿真生成的任何錯誤的接口組件。在仿真運行時,工作空間維持、計算以及動畫化用戶已經(jīng)添加到工作空間的各種組件。例如,物理對象將基于它們的動態(tài)屬性而移動和變換,感測對象將檢測它們相關(guān)聯(lián)的目標(biāo),行為對象將讀、寫以及計算值等。在用戶停止仿真時,3d工作空間205可以恢復(fù)到其原始配置,使得用戶可以繼續(xù)編輯。在一些實施例中,用戶被允許在仿真正在運行時編輯系統(tǒng)設(shè)計。在這種情況下,可以考慮運行或暫停仿真并且用戶可以在任意時間添加、刪除和編輯對象。在一些實施例中,與運行子區(qū)段210e接口的交互允許仿真立即運行而無需顯式編譯。此外,應(yīng)注意,3d工作空間205中的設(shè)計不要求被完全開發(fā)并且仿真可以在設(shè)計過程期間的任意時間運行。在一些實施例中,視覺提示、諸如顏色變化或者閃動用于示出邏輯是活動的。用戶可以在邏輯運行時對其進行檢查并且可以改變值以試驗場景。
原則上,由工程工具200生成的仿真可以具有任何水平的復(fù)雜性。然而,在本發(fā)明的許多實施例中,工程工具200配置為使得用戶能夠通過指定裝置和工作產(chǎn)品的高水平屬性來設(shè)置和運行所仿真的對象。仿真可以生成視覺工作產(chǎn)品,通過由自動化裝置實行的各種過程來跟蹤它們的流動,以及計算在工作產(chǎn)品中產(chǎn)生的任何變化和這些變化將如何影響裝置。仿真還能夠?qū)ψ詣踊b置的狀態(tài)和行為進行仿真并且知曉它們對工作產(chǎn)品產(chǎn)生什么影響。仿真的保真度應(yīng)該充分,使得自動化的關(guān)鍵功能在虛擬世界中實行并且自動化的編程可以被檢驗??梢杂煞抡鎸嵭械钠渌袨楸徽J為是有用的,只要那些行為是現(xiàn)實的并且并不難以指定即可。仿真的容差和精度可以取決于自動化的尺寸、速度和一般需要來調(diào)整。仿真可以被提供用于匹配自動化的域。例如,機器人的自動化將可能使用三維的、運動學(xué)的以及可能使用動力學(xué)的仿真。相反地,煉油廠的自動化可以使用代表如管道的流體網(wǎng)絡(luò)的壓力、流動和拓撲的一維功能和值。
圖3提供了根據(jù)本發(fā)明的一些實施例的示例控制器架構(gòu)300。這一控制器架構(gòu)300是概念性的并且假定網(wǎng)絡(luò)將工程工具305連接至一個或多個連接的物理裝置。其他種類的裝置、諸如物理端口或接線連接也是可用的。工程工具305將一般化請求發(fā)送至網(wǎng)絡(luò),請求任意連接的裝置的身份。裝置以經(jīng)由裝置宣告消息315提供的裝置信息310做出響應(yīng)?;谒邮盏难b置信息310,工程工具305可以創(chuàng)建以及存儲虛擬組件與物理裝置之間的虛擬連接。在一些實施例中,虛擬連接包括組件標(biāo)識符和應(yīng)用標(biāo)識符。因此,如果在相同應(yīng)用中存在多個物理裝置,則它們可以在經(jīng)由不同組件標(biāo)識符與不同虛擬裝置相關(guān)聯(lián)的同時,與應(yīng)用標(biāo)識符相關(guān)聯(lián)在一起。
繼續(xù)參照圖3,一旦工程工具305已經(jīng)識別裝置以及它們的對應(yīng)虛擬連接,其將工程功能傳輸給web服務(wù)器320。工程功能包括有關(guān)針對特定物理裝置實施邏輯功能性的指令。基于所接收的工程功能,web服務(wù)器320創(chuàng)建程序并且將其存儲在程序存儲部325中。在一些實施例中,工程工具305配置為直接創(chuàng)建程序,而不是具有由web服務(wù)器320執(zhí)行的該功能。在這一場景下,web服務(wù)器320將簡單地將從工程工具305接收的任意程序傳送至程序存儲部325,而有或者沒有程序代碼的附加預(yù)先處理。程序隨后由(多個)物理控制器執(zhí)行,如由邏輯執(zhí)行箭頭330概念性地代表的。工程工具305和/或web服務(wù)器320可以與(多個)物理控制器通信,以執(zhí)行諸如開始、停止和重置程序的功能。每個控制器使用本領(lǐng)域已知的任意技術(shù)與一個或多個物理裝置通信。例如,在一些實施例中,控制器具有與它們對應(yīng)的物理裝置的直接電連接并且使用諸如通用串行總線(usb)或脈寬調(diào)制(pwm)的協(xié)議進行通信。在其他實施例中,控制器可以與它們的物理裝置在有線(例如,以太網(wǎng))或者無線(例如,ieee802.11)通信網(wǎng)絡(luò)上進行通信。
狀態(tài)存儲部335主要用于在多個聯(lián)網(wǎng)控制器之間傳送共享狀態(tài),但是也允許工程工具305在程序正在由控制器執(zhí)行時對其執(zhí)行狀態(tài)檢查。即,工程工具305可以確定在每個控制器上運行的代碼的當(dāng)前狀態(tài)。在一些實施例中,狀態(tài)存儲部335經(jīng)由網(wǎng)絡(luò)數(shù)據(jù)共享部350在不同的物理控制器之間被共享。附加地,網(wǎng)絡(luò)數(shù)據(jù)共享部350可以用于與其他實體共享狀態(tài)信息,所述其他實體諸如例如監(jiān)控及數(shù)據(jù)采集(scada)服務(wù)器或者統(tǒng)一工廠知識倉庫??梢越邮諗?shù)據(jù)的各種實體在此稱為“伙伴”。網(wǎng)絡(luò)伙伴尋找器355可以用于找到請求或要求狀態(tài)信息的伙伴。在分布式控制場景中,伙伴可以是其上已經(jīng)分布了邏輯的其他控制器。網(wǎng)絡(luò)伙伴尋找器355為每個找到的伙伴提供地址。狀態(tài)存儲部335可以隨后使用這些地址,以使用i/o通信api360將狀態(tài)信息分布給伙伴。
圖4提供了根據(jù)本發(fā)明一些實施例的在仿真環(huán)境100中執(zhí)行的過程400的概觀。在405處,用戶從市場服務(wù)器下載一個或多個物理裝置模型。每個物理裝置模型對應(yīng)于物理裝置。例如,物理裝置模型可以包括用于創(chuàng)建物理傳送帶的三維模型的指令,連同可以與這樣的裝置相關(guān)聯(lián)的各種屬性。物理裝置模型中的信息用于創(chuàng)建供工程工具中使用的物理組件。在一些實施例中,工程工具自動地執(zhí)行這一創(chuàng)建。例如,在一個實施例中,工程工具包括對于市場服務(wù)器的接口。通過與這一接口的用戶交互,用戶可以本地地下載物理裝置模型并且允許工程工具創(chuàng)建對應(yīng)的物理裝置模型。創(chuàng)建過程可以是自動的或者其可以要求用戶顯式地請求模型的創(chuàng)建。附加地,應(yīng)注意,在一些實施例中,物理裝置模型可以在市場服務(wù)器外部下載。因此,例如,用戶可以通過電子郵件共享物理裝置模型以供在它們各自的工程工具中使用。
繼續(xù)參照圖4,在410處,用戶通過在三維工作空間中添加和調(diào)整組件而在該工作空間中創(chuàng)建系統(tǒng)設(shè)計。在一些實施例中,工程工具向工作空間提供并排的可用組件的庫,從而允許用戶通過諸如點擊和拖動(用于基于鼠標(biāo)的環(huán)境)或者觸摸和拖動(用于具有基于觸摸顯示的環(huán)境)的交互,來選擇組件和將其放置在工作空間中。接下來,在415處,用戶將邏輯組件添加到環(huán)境。如以上討論的,每個邏輯組件與邏輯操作相關(guān)聯(lián)并且用戶可以創(chuàng)建包括多個邏輯組件的容器。一旦邏輯組件已經(jīng)添加到工作空間,它們用于通過在組件的輸入與輸出之間創(chuàng)建關(guān)聯(lián)來將邏輯添加到物理組件。例如,如以上參照圖2討論的,代表傳感器的物理裝置組件的輸出可以綁定到邏輯容器的輸入,所述邏輯容器繼而具有其綁定到代表電機的物理裝置組件的輸入的輸出。物理和邏輯組件之間的關(guān)聯(lián)可以用類似于以上討論的用于將組件添加到工作空間的技術(shù)來執(zhí)行。例如,可以通過點擊(或觸摸)組件的輸出并且將其拖到另一組件的輸入來創(chuàng)建關(guān)聯(lián)。
在420處,基于工作空間中的組件來運行仿真。這一仿真對組件的物理和電氣行為進行仿真。在一些實施例中,組件中的一個或多個可以在仿真的執(zhí)行期間被動畫化。例如,傳送帶組件可以響應(yīng)于附著的電機組件的激活而旋轉(zhuǎn)。應(yīng)注意,仿真可以在設(shè)計過程期間的任意點執(zhí)行。因此,在仿真被執(zhí)行之后,用戶確定其是否正在提供所期望的結(jié)果。如果否,則步驟410、415、420可以迭代地執(zhí)行,從而允許用戶在工作空間中添加物理組件和相關(guān)邏輯。用戶隨后可以評價每個迭代的結(jié)果,直到實現(xiàn)所期望的結(jié)果。
接下來,在425處,基于三維工作空間中的系統(tǒng)設(shè)計來生成控制器代碼。更具體地,工程工具識別與物理裝置相對應(yīng)的物理控制器并且生成這些裝置可執(zhí)行的代碼。各種技術(shù)可以用于識別控制器。例如,在一些實施例中,每個控制器具有由用戶提供給工程工具的固定硬件地址。在其他實施例中,工程工具可以執(zhí)行裝置發(fā)現(xiàn)過程,其中其處理接收自物理裝置的裝置宣告消息以探明它們各自的地址和其他相關(guān)信息。這些物理裝置可以被要求具有與用戶在工程工具中選擇的裝置模型相同的類型,或者可替代地,物理裝置可以僅需要能夠執(zhí)行由應(yīng)用限定的某個功能集。在一些實施例中,工程工具基于邏輯元件和仿真代碼來創(chuàng)建和編譯用于每個控制器的代碼。在其他實施例中,工程工具包括在仿真執(zhí)行期間執(zhí)行控制器代碼的虛擬機。因此,在仿真中使用的代碼可以直接在控制器上使用,而無需任何附加編譯。
一旦生成了代碼,在430處,其下載到物理控制器。在一些實施例中,代碼可以由工程工具經(jīng)由網(wǎng)絡(luò)連接直接發(fā)送至控制器。在其他實施例中,工程工具可以用作與物理控制器通信的中間服務(wù)器或者存儲介質(zhì)。
圖5圖示本發(fā)明的實施例可以在其內(nèi)實施的示例性計算環(huán)境500。例如,計算環(huán)境500可以用于實施圖1中示出的仿真環(huán)境100的一個或多個組件。計算機和計算環(huán)境、諸如計算機系統(tǒng)510和計算環(huán)境500對于本領(lǐng)域技術(shù)人員是已知的并且因此在此簡要描述。
如圖5所示,計算機系統(tǒng)510可以包括通信機構(gòu),諸如系統(tǒng)總線521或者用于在計算機系統(tǒng)510內(nèi)傳輸信息的其他通信機構(gòu)。計算機系統(tǒng)還包括與系統(tǒng)總線521耦合的用于處理信息的一個或多個處理器520。
處理器520可以包括一個或多個中央處理單元(cpu)、圖形處理單元(gpu)或者本領(lǐng)域已知的任意其他處理器。更一般地,如在此使用的處理器是用于執(zhí)行存儲在計算機可讀介質(zhì)上的機器可讀指令的裝置,用于執(zhí)行任務(wù)并且可以包括硬件和固件中的任一個或組合。處理器還可以包括存儲可執(zhí)行來用于執(zhí)行任務(wù)的機器可讀指令的存儲器。處理器通過操縱、分析、修改、轉(zhuǎn)換或傳輸供由可執(zhí)行過程或信息裝置使用的信息,和/或通過將信息路由至輸出裝置,來作用于信息。處理器可以使用或者包括例如計算機、控制器或微處理器的能力,并且使用可執(zhí)行指令來調(diào)節(jié)以執(zhí)行不由通用計算機執(zhí)行的專用功能。處理器可以與使能兩者之間的交互和/或通信的任意其他處理器耦合(電氣地和/或作為包括可執(zhí)行組件)。用戶接口處理器或生成器是已知的元件,其包括電子電路或軟件或兩者的組合,用于生成顯示圖像或顯示圖像的部分。用戶接口包括使能與處理器或其他裝置的用戶交互的一個或多個顯示圖像。
繼續(xù)參照圖5,計算機系統(tǒng)510還包括耦合于系統(tǒng)總線521的系統(tǒng)存儲器530,用于存儲要由處理器520執(zhí)行的信息和指令。系統(tǒng)存儲器530可以包括呈易失性和/或非易失性存儲器形式的計算機可讀存儲介質(zhì),諸如只讀存儲器(rom)531和/或隨機存取存儲器(ram)532。系統(tǒng)存儲器ram532可以包括(多個)其他動態(tài)存儲裝置(例如,動態(tài)ram、靜態(tài)ram以及同步dram)。系統(tǒng)存儲器rom531可以包括(多個)其他靜態(tài)存儲裝置(例如,可編程rom、可擦除prom以及電可擦除prom)。另外,系統(tǒng)存儲器530可以用于在由處理器520執(zhí)行指令期間存儲臨時變量或其他中間信息。包含諸如在啟動期間有助于在計算機系統(tǒng)510內(nèi)的元件之間傳送信息的基本例程的基本輸入/輸出系統(tǒng)533(bios)可以存儲在系統(tǒng)存儲器rom531中。系統(tǒng)存儲器ram532可以包含數(shù)據(jù)和/或程序模塊,其可由處理器520立即訪問和/或當(dāng)前在處理器520上操作。系統(tǒng)存儲器530可以附加地包括例如操作系統(tǒng)534、應(yīng)用程序535、其他程序模塊536和程序數(shù)據(jù)537。
計算機系統(tǒng)510還包括耦合于系統(tǒng)總線521的盤控制器540,用于控制用于存儲信息和指令的一個或多個存儲裝置,諸如磁硬盤541和可移除介質(zhì)驅(qū)動542(例如,軟盤驅(qū)動、致密盤驅(qū)動、磁帶驅(qū)動和/或固態(tài)驅(qū)動)。存儲裝置可以使用合適的裝置接口(例如,小型計算機系統(tǒng)接口(scsi)、電子集成驅(qū)動(ide)、通用串行總線(usb)或火線)添加到計算機系統(tǒng)510。
計算機系統(tǒng)510還可以包括耦合于系統(tǒng)總線521的顯示器控制器565,用于控制用于向計算機用戶顯示信息的顯示器566,諸如陰極射線管(crt)或者液晶顯示器(lcd)。計算機系統(tǒng)包括輸入接口560以及一個或多個輸入裝置,諸如鍵盤562和定點裝置561,用于與計算機用戶交互并且將信息提供給一個或多個處理器520。定點裝置561例如可以是鼠標(biāo)、光筆、軌跡球或定點搖桿,用于將方向信息和命令選擇傳輸給一個或多個處理器520以及用于控制光標(biāo)在顯示器566上的移動。顯示器566可以提供觸摸屏接口,其允許通過定點裝置561輸入來補充或更換方向信息和命令選擇的傳輸。
計算機系統(tǒng)510可以響應(yīng)于一個或多個處理器520執(zhí)行包含在諸如系統(tǒng)存儲器530的存儲器中的一個或多個指令的一個或多個序列,而執(zhí)行本發(fā)明實施例的處理步驟的一部分或全部。這樣的指令可以從另一計算機可讀介質(zhì)(諸如磁硬盤541或者可移除介質(zhì)驅(qū)動542)讀入到系統(tǒng)存儲器530中。磁硬盤541可以包含由本發(fā)明的實施例使用的一個或多個數(shù)據(jù)存儲和數(shù)據(jù)文件。數(shù)據(jù)存儲內(nèi)容和數(shù)據(jù)文件可以加密以改進安全性。處理器520也可以以多處理布置來采用,以執(zhí)行包含在系統(tǒng)存儲器530中的指令的一個或多個序列。在可替代實施例中,硬接線電路可以用于替代軟件指令或者與軟件指令組合。因此,實施例不限于硬件電路和軟件的任何特定組合。
如上所述,計算機系統(tǒng)510可以包括至少一個計算機可讀介質(zhì)或者存儲器,用于保持根據(jù)本發(fā)明實施例編程的指令以及用于包含數(shù)據(jù)結(jié)構(gòu)、表格、記錄或在此描述的其他數(shù)據(jù)。如在此使用的術(shù)語“計算機可讀介質(zhì)”指的是參與將指令提供給一個或多個處理器520以供執(zhí)行的任意介質(zhì)。計算機可讀介質(zhì)可以采取許多形式,包括但不限于,非暫時性、非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。非易失性介質(zhì)的非限制性示例包括光盤、固態(tài)驅(qū)動、磁盤和磁光盤,諸如磁硬盤541或可移除介質(zhì)驅(qū)動542。易失性介質(zhì)的非限制示例包括動態(tài)存儲器,諸如系統(tǒng)存儲器530。傳輸介質(zhì)的非限制示例包括同軸電纜、銅線和光纖,包括構(gòu)成系統(tǒng)總線521的導(dǎo)線。傳輸介質(zhì)也可以采取聲波或光波的形式,諸如在無線電波和紅外數(shù)據(jù)通信期間生成的那些。
計算環(huán)境500還可以包括使用至一個或多個遠程計算機(諸如遠程計算機580)的邏輯連接而在聯(lián)網(wǎng)環(huán)境中操作的計算機系統(tǒng)510。遠程計算機580可以是個人計算機(膝上型或臺式)、移動裝置、服務(wù)器、路由器、網(wǎng)絡(luò)pc、對等裝置或其他公共網(wǎng)絡(luò)節(jié)點,并且典型地包括以上相對于計算機系統(tǒng)510描述的許多或全部元件。當(dāng)在聯(lián)網(wǎng)環(huán)境中使用時,計算機系統(tǒng)510可以包括調(diào)制解調(diào)器572,用于在諸如因特網(wǎng)的網(wǎng)絡(luò)571上建立通信。調(diào)制解調(diào)器572可以經(jīng)由用戶網(wǎng)絡(luò)接口570或者經(jīng)由另一合適機構(gòu)連接至系統(tǒng)總線521。
網(wǎng)絡(luò)571可以是本領(lǐng)域公知的任意網(wǎng)絡(luò)或系統(tǒng),包括因特網(wǎng)、內(nèi)部網(wǎng)、局域網(wǎng)(lan)、廣域網(wǎng)(wan)、城域網(wǎng)(man)、直接連接或串聯(lián)連接、蜂窩電話網(wǎng)絡(luò),或者能夠促進計算機系統(tǒng)510與其他計算機(例如,遠程計算機580)之間的通信的任意其他網(wǎng)絡(luò)或介質(zhì)。網(wǎng)絡(luò)571可以是有線的、無線的或其組合的。有線連接可以使用以太網(wǎng)、通用串行總線(usb)、rj-6或本領(lǐng)域公知的任意其他有線連接來實施。無線連接可以使用wifi、wimax和藍牙、紅外、蜂窩網(wǎng)絡(luò)、衛(wèi)星或本領(lǐng)域公知的任意其他無線連接方法來實施。附加地,若干網(wǎng)絡(luò)可以單獨工作或者彼此通信地工作以促進網(wǎng)絡(luò)571中的通信。
如在此使用的可執(zhí)行應(yīng)用包括代碼或機器可讀指令,用于例如響應(yīng)于用戶命令或輸入而調(diào)節(jié)處理器以實施諸如操作系統(tǒng)、上下文數(shù)據(jù)采集系統(tǒng)或其他信息處理系統(tǒng)的那些的預(yù)確定功能。可執(zhí)行程序是代碼或機器可讀指令的片段、子例程,或者其他不同代碼段,或者用于執(zhí)行一個或多個特定過程的可執(zhí)行應(yīng)用的部分。這些過程可以包括接收輸入數(shù)據(jù)和/或參數(shù)、對所接收的輸入數(shù)據(jù)執(zhí)行操作和/或響應(yīng)于所接收的輸入?yún)?shù)而執(zhí)行功能,以及提供所得到的輸出數(shù)據(jù)和/或參數(shù)。
如在此使用的圖形用戶接口(gui)包括一個或多個顯示圖像,其由顯示器處理器生成并且使能與處理器或其他裝置的用戶交互以及相關(guān)聯(lián)的數(shù)據(jù)采集和處理功能。gui還包括可執(zhí)行程序或可執(zhí)行應(yīng)用??蓤?zhí)行程序或可執(zhí)行應(yīng)用調(diào)節(jié)顯示器處理器以生成代表gui顯示圖像的信號。這些信號被供應(yīng)至顯示圖像以供用戶觀看的顯示裝置。在可執(zhí)行程序或可執(zhí)行應(yīng)用的控制下,處理器響應(yīng)于接收自輸入裝置的信號而操縱gui顯示圖像。以這一方式,用戶可以使用輸入裝置與顯示圖像交互,從而使能與處理器或其他裝置的用戶交互。
這里的功能和過程步驟可以響應(yīng)于用戶命令而自動地、全部地或部分地執(zhí)行。自動執(zhí)行的(包括步驟)活動響應(yīng)于一個或多個可執(zhí)行指令或裝置操作而執(zhí)行,無需該活動的用戶直接發(fā)起。
各圖的系統(tǒng)和過程是非排他性的。其他系統(tǒng)、過程和菜單可以根據(jù)本發(fā)明的原理而得出來完成相同目的。雖然本發(fā)明已經(jīng)參照具體實施例進行描述,但應(yīng)理解,在此示出和描述的實施例和變型僅出于說明目的。在不偏離本發(fā)明范圍的情況下,本領(lǐng)域技術(shù)人員可以實施對于當(dāng)前設(shè)計的修改。如在此描述的,各種系統(tǒng)、子系統(tǒng)、代理、管理器和過程可以使用硬件組件、軟件組件和/或其組合來實施。這里沒有主張的要素在35u.s.c112第六段的規(guī)定下構(gòu)造,除非要素明確使用短語“用于……的裝置”來記載。