用于改善工業(yè)控制系統(tǒng)的工業(yè)控制器的制造方法
【專利摘要】本公開內容涉及一種工業(yè)控制器。提供了針對用于工業(yè)控制器的“可加載模塊”架構的系統(tǒng),其中,可以在不更新固件以及不中斷或以其他方式損害工業(yè)控制器保持對受控過程的連續(xù)控制的能力的情況下,加載提供已更新功能或組件的新控制程序模塊以擴展或修改底層操作系統(tǒng)和/或其他服務??梢砸詫ο蟠a格式將控制程序模塊和庫遞送至工業(yè)控制器,且工業(yè)控制器中的嵌入式鏈接器可以用于有效地本地創(chuàng)建完全鏈接的可執(zhí)行文件??梢栽谶\行時間期間將可加載庫提供給工業(yè)控制器以擴展功能和/或提供期望的安裝。結果,提供了一種在添加新能力方面更加有效且具有顯著靈活性的系統(tǒng)。
【專利說明】
用于改善工業(yè)控制系統(tǒng)的工業(yè)控制器
技術領域
[0001]本發(fā)明涉及工業(yè)控制系統(tǒng),并且更特別地涉及用于改善工業(yè)控制系統(tǒng)的技術。
【背景技術】
[0002]工業(yè)控制器是用于控制工廠自動化等的專用計算機。在存儲的程序的指導下,工業(yè)控制器的處理器檢查反映受控過程的狀態(tài)的一系列輸入以及改變影響對受控過程的控制的輸出??梢砸砸幌盗袌?zhí)行循環(huán)連續(xù)地執(zhí)行、周期性地執(zhí)行或者基于事件而執(zhí)行所存儲的控制程序。
[0003]由工業(yè)控制器從受控過程接收的輸入以及由工業(yè)控制器傳輸至受控過程的輸出,通常通過用作控制器與控制過程之間的電氣接口的一個或更多個輸入/輸出(I/O)模塊。輸入和輸出被記錄在處理器存儲器中的I/O數(shù)據(jù)表中作為控制層數(shù)據(jù)。輸入值可以由專用電路系統(tǒng)從受控過程異步地讀取。輸出值由處理器直接寫入I/O數(shù)據(jù)表,并且然后由專用通信電路系統(tǒng)傳送至受控過程。工業(yè)控制器可以相應地經(jīng)由在受控過程環(huán)境中的傳感器和致動器與受控過程交互。
[0004]相比更傳統(tǒng)的計算機系統(tǒng)而言,工業(yè)控制系統(tǒng)通常規(guī)定了抵抗環(huán)境污染的更堅固的結構。此外,工業(yè)控制系統(tǒng)通常提供有提供了更大靈活性的模塊化架構以及硬件配置(以與各種不同的控制應用匹配),這通常包括對多個程序的分布式處理。對此,可以將工業(yè)控制系統(tǒng)裝配在連接至任意數(shù)量的I/O模塊的多個可編程控制器(通常是加強的且容錯的硬件)之中。
[0005]可以借助于高速“控制網(wǎng)絡”、利用確??刂茢?shù)據(jù)的可預測的、及時且可靠的傳送的各種專用協(xié)議來將工業(yè)控制系統(tǒng)的各種部件連接在一起。通常在工業(yè)控制器領域使用的許多不同的控制網(wǎng)絡包括例如ControlNet(控制網(wǎng))、DeviceNet(設備網(wǎng))和EtherNet/IP,其規(guī)范已被公布并且其協(xié)議被許多制造商和供應商廣泛地使用。
[0006]控制網(wǎng)絡通常還采用用于“連接的消息傳送(connected messaging)”的協(xié)議,在該協(xié)議中,網(wǎng)絡的帶寬和緩沖空間被預分配給至特定硬件單元的專用“連接”以防止會單獨在諸如以太網(wǎng)這樣的標準網(wǎng)絡協(xié)議中發(fā)生的丟失、不可預測地延遲數(shù)據(jù)傳送或方向錯誤的數(shù)據(jù)傳送。連接的消息傳送的示例包括通用工業(yè)協(xié)議(“CIP”)連接的消息傳送,包括如在公開號為PUB00123R0,版權為2006的 “The Common Industrial Protocol (CIP?)and theFamily of CIP Networks”中所描述的,其全部內容通過引用合并至本文。
[0007]在典型的實現(xiàn)流中,使用獨立計算設備的設計環(huán)境被用于創(chuàng)建用于實現(xiàn)受控過程的“項目”。設計環(huán)境包括關于要使用的特定工業(yè)控制器及其特定配置的知識,該特定配置例如是其物理1/0地址。然后,控制程序在設計環(huán)境中被準備、在傳送至工業(yè)控制器之前作為在模塊中被傳遞的完整可執(zhí)行文件而被編譯且被鏈接。隨后,改變控制程序通常需要在設計環(huán)境中重建控制程序和固件且在工業(yè)控制器中進行更新。因此,在傳遞已更新的控制程序和固件時,工業(yè)控制器通常被離線,這導致昂貴的停機時間。
[0008]然而,這導致一定的不靈活,其中,控制程序不能容易地被改變以適應工業(yè)控制器或控制過程的變化。例如,在不打斷預先建立的資源連接的情況下,不能夠將控制程序的模塊容易地從一個工業(yè)控制器移至另一工業(yè)控制器。此外,將控制程序傳送至工業(yè)控制器通常需要中斷或以別的方式損害控制系統(tǒng)保持連續(xù)工作的能力。
[0009]—些控制系統(tǒng)允許在線修改和添加控制程序模塊。然而,這些在線修改和添加通常受限于其僅可以使用由操作系統(tǒng)提供的暴露的接口和指令。這通常是期望在用戶應用與操作系統(tǒng)之間提供分隔以提高操作可靠性的后果。
[0010]一些控制系統(tǒng)還使用戶能夠構建其自己的“指令”。然而,這些指令通常也受限于其僅可以使用由操作系統(tǒng)提供的暴露的接口和指令。
[0011]還已知在其他系統(tǒng)中使用“虛擬化”以提供附加能力。虛擬化使操作系統(tǒng)或服務的多個實例能夠獨立于一個硬件平臺而進行操作。然而,由于每個虛擬環(huán)境具有其自己的操作系統(tǒng)服務的副本,因此虛擬化通常需要顯著更大的存儲器和處理能力以有效地運行。此夕卜,在虛擬化中,在不同的虛擬環(huán)境中的服務通常不能夠直接交互。
[0012]所需要的是提供增強的效率和靈活性而沒有現(xiàn)有技術缺點的工業(yè)控制系統(tǒng)。
【發(fā)明內容】
[0013]本發(fā)明提供了用于工業(yè)控制器的“可加載模塊”架構,在該工業(yè)控制器中,可以在不更新固件以及不中斷或以其他方式損害工業(yè)控制器保持對受控過程的連續(xù)控制的能力的情況下,加載提供已更新功能或組件的新控制程序模塊以擴展或修改底層操作系統(tǒng)和/或添加或修改作為工業(yè)控制器的一部分的其他服務。可以以對象代碼格式將控制程序模塊和庫遞送至工業(yè)控制器,以及工業(yè)控制器中的嵌入式鏈接器可以被用于有效地本地創(chuàng)建完全鏈接的可執(zhí)行文件??杉虞d控制模塊、服務模塊以及庫可以綁定至工業(yè)控制器的硬件、固件和/或操作系統(tǒng)資源并且使用它們??梢栽谶\行時間期間將可加載庫提供給工業(yè)控制器以擴展功能和/或提供期望的安裝。結果,提供了在添加新能力方面更加有效且具有顯著靈活性的系統(tǒng)。
[0014]可加載模塊管理器部件可以被用于確定是否可以在不影響控制系統(tǒng)的工作以及不影響受控制的設備的情況下,安全地加載、移除和/或替換模塊。管理器部件可以識別且管理對其他模塊的依賴關系,包括便利新加載的模塊定位且綁定至其所依賴的其他模塊以及當模塊被替代或移除時進行重新綁定。相應地,還可以提供可加載模塊的多個版本以通過重新綁定至更新的版本來實現(xiàn)對控制或服務模塊的更新版本的漸進式改變或其他移植。管理器部件還可以與其他模塊無關地從服務中取出模塊或者將模塊放置到服務中、執(zhí)行可加載模塊的有序地啟動和關閉以及重新啟動出故障的模塊。
[0015]管理器部件還可以確保加載的模塊所依賴的其他模塊存在且可操作,以及確保加載的模塊滿足可容許性標準。可容許性標準可以包括(PU利用率、存儲器利用率及諸如所需響應和/或執(zhí)行次數(shù)這樣的調度標準、資源鎖定和共享信息、以及其他硬件和軟件資源的利用率。可容許性標準還可以包括對加載模塊的管理許可權,以及確保兼容軟件版本就位。因此,可容許性標準可以確保新加載的模塊不損害控制系統(tǒng)的實時控制能力。
[0016]工業(yè)控制器中的嵌入式鏈接器可以執(zhí)行將應用代碼綁定至工業(yè)控制器中的現(xiàn)有應用資源。相應地,嵌入式鏈接器從設計環(huán)境中移除關于硬件部件被放置在哪里及硬件部件配置的知識需求,從而簡化了設計過程且增加了靈活性。該方法還利用開放格式,例如可執(zhí)行鏈接格式(ELF)文件,C/C++庫等,以與工業(yè)控制器領域中通常不使用的其他工具和環(huán)境兼容。此外,可以在不需要附加軟件工具的情況下從閃卡、USB或其他便攜式介質加載、鏈接以及開始應用的執(zhí)行。
[0017]可加載庫還實現(xiàn)了對工業(yè)控制器的新函數(shù)、指令等的漸進式添加;甚至在運行時間處也如此,而無需固件更新。包含函數(shù)的庫可以由其他庫使用,以及由應用代碼使用并且在不同的層處使用,例如運行時間庫;操作系統(tǒng)的擴展;實用工具庫,例如包含用于調試的函數(shù)的庫;用于共享的函數(shù)和接口的供應商庫;供應商基本指令庫和擴展庫;第三方庫;以及用戶庫。由于來自一個庫的函數(shù)可以被構建在另一庫或多個庫的頂部,因此可加載庫還可以米用層級。
[0018]作為加載庫過程的一部分,庫可以與其他庫和工業(yè)控制器固件鏈接,并且可以進行靜態(tài)綁定以優(yōu)化性能。在不中斷當前執(zhí)行控制應用代碼的情況下還可以用更新的版本替換庫,同時添加新能力。庫可以在不同的庫和模塊之中共享包含在庫中的執(zhí)行代碼。可以對庫進行唯一地識別、潛在地修訂、描述等,以及其函數(shù)的標識。庫的多個版本可以同時存在,這允許迀移到庫的更新版本,或者滿足不同的可加載模塊或其他庫對庫的不同版本的依賴關系。庫還可以具有安全性和許可管理方面,這包括為了認證而被“簽名”,要求用于部署或加載的證書??梢砸蟛煌臋嘞?證書以相應地運行庫??梢砸訣LF格式提供庫,從而支持開放且眾所周知的架構。
[0019]根據(jù)實施方式,工業(yè)控制器包括執(zhí)行下述操作的處理器:存儲在非暫態(tài)存儲器中的操作系統(tǒng),其用于管理工業(yè)控制器的硬件部件;存儲在非暫態(tài)存儲器中的第一應用模塊,其用于經(jīng)由操作系統(tǒng)控制受控過程的至少一部分;以及存儲在非暫態(tài)存儲器中的可加載模塊管理器,其被配置成接收第二應用模塊??杉虞d模塊管理器還可以被配置成識別第二應用模塊的依賴關系以及將第二應用模塊綁定至工業(yè)控制器的資源以解析所述依賴關系。第二應用模塊可以被配置成在第一應用模塊控制受控過程的至少一部分的同時擴展或修改操作系統(tǒng)的至少一部分。
[0020]操作系統(tǒng)可以被配置成在管理硬件部件之前與固件進行通信,以及第二應用模塊可以被配置成在不修改固件的情況下擴展或修改操作系統(tǒng)的至少一部分。
[0021]因此,至少一個實施方式的特征是在不改變固件的情況下給控制程序提供更新。
[0022]可加載模塊管理器還可以被配置成在第二應用模塊被準許擴展或修改操作系統(tǒng)的至少一部分之前確定是否滿足安裝要求。
[0023]因此,至少一個實施方式的特征是在修改控制程序之前提出用于驗證的標準。
[0024]工業(yè)控制器還可以包括存儲在非暫態(tài)存儲器中的嵌入式鏈接器,該嵌入式鏈接器被配置成接收包含符號引用的對象文件。嵌入式鏈接器還可以被配置成將符號引用綁定至工業(yè)控制器的資源以產(chǎn)生用于控制受控過程的至少一部分的第三應用模塊。
[0025]因此,與設計環(huán)境相反,至少一個實施方式的特征是在工業(yè)控制器中提供鏈接能力以提尚控制系統(tǒng)的靈活性。
[0026]工業(yè)控制器還可以包括存儲在非暫態(tài)存儲器中的庫管理器,該庫管理器被配置成接收庫模塊。庫管理器可以被配置成識別庫模塊的依賴關系以及將庫模塊綁定至工業(yè)控制器的資源以解析所述依賴關系。
[0027]因此,至少一個實施方式的特征是除應用模塊以外還給工業(yè)控制器靈活地提供新的庫。
[0028]根據(jù)另一實施方式,工業(yè)控制器包括執(zhí)行下述操作的處理器:存儲在非暫態(tài)存儲器中的操作系統(tǒng),其用于管理工業(yè)控制器的硬件部件;以及存儲在非暫態(tài)存儲器中的嵌入式鏈接器,其被配置成接收包含符號引用的對象文件。嵌入式鏈接器還被配置成將對象文件的符號引用綁定至工業(yè)控制器的資源以產(chǎn)生用于控制受控過程的至少一部分的應用模塊。
[0029]根據(jù)另一實施方式,工業(yè)控制器包括執(zhí)行下述操作的處理器:存儲在非暫態(tài)存儲器中的操作系統(tǒng),其用于管理工業(yè)控制器的硬件部件;存儲在非暫態(tài)存儲器中的應用模塊,其用于控制控制過程的至少一部分;存儲在非暫態(tài)存儲器中的第一庫模塊,其用于提供由應用模塊使用的信息;以及存儲在非暫態(tài)存儲器中的庫管理器,其被配置成接收第二庫模塊。庫管理器還被配置成識別第二庫模塊的依賴關系以及將庫綁定至工業(yè)控制器的資源以解析所述依賴關系。應用模塊被配置成在庫管理器將第二庫模塊綁定至工業(yè)控制器的資源的同時控制受控過程的至少一部分。
[0030]這些特定目的和優(yōu)點僅適用于落入權利要求范圍的部分實施方式,因此不限定本發(fā)明的范圍。
【附圖說明】
[0031]在附圖中示出了本發(fā)明的優(yōu)選示例性實施方式,在所有附圖中,相似的附圖標記表示相似的部件,其中:
[0032]圖1示出了根據(jù)本發(fā)明的實施方式的示例性工業(yè)控制系統(tǒng)的硬件部件;
[0033]圖2示出了根據(jù)本發(fā)明的實施方式的可能的工業(yè)控制系統(tǒng)架構層級;
[0034]圖3示出了根據(jù)本發(fā)明的實施方式的包括控制器的示例性工業(yè)控制系統(tǒng),其中示出了嵌入鏈接器和/或加載器、可加載模塊管理器以及庫管理器;
[0035]圖4A示出了根據(jù)本發(fā)明的實施方式的應用模塊依賴關系的圖,以及圖4B示出了根據(jù)本發(fā)明的實施方式的庫模塊依賴關系;
[0036]圖5A示出了根據(jù)本發(fā)明的實施方式的、被配置成擴展或修改操作系統(tǒng)的至少一部分的應用模塊,以及圖5B示出了根據(jù)本發(fā)明的實施方式的、被配置成擴展或修改操作系統(tǒng)的至少一部分的庫模塊的圖;
[0037]圖6是示出根據(jù)本發(fā)明的實施方式的、用于應用模塊或庫模塊的示例性字段的表;
[0038]圖7是示出根據(jù)本發(fā)明的實施方式的、識別工業(yè)控制器的資源的示例性數(shù)據(jù)結構的表;以及
[0039]圖8是示出根據(jù)本發(fā)明的實施方式的、識別依賴關系以及綁定至資源以解析所述依賴關系的流程圖。
【具體實施方式】
[0040]現(xiàn)在參照圖1,其示出了根據(jù)本發(fā)明的實施方式的示例性工業(yè)控制系統(tǒng)10的硬件部件。在下文中稱為“A”的第一工業(yè)控制器12和在下文中稱為“B”的第二工業(yè)控制器14經(jīng)由控制網(wǎng)絡16連接在一起,控制網(wǎng)絡16可以是EtherNet(以太網(wǎng))/IP網(wǎng)絡或者其他控制網(wǎng)絡并且可以實現(xiàn)通用工業(yè)協(xié)議(CIP)。工業(yè)控制器A和B可以是可編程邏輯控制器(PLC),然而如通常所理解的那樣也可以使用附加控制器以及其他類型的控制器和控制器的組合。
[0041 ] 工業(yè)控制器A和B均又分別連接至I/O模塊18和20。1/0模塊18和20可以實現(xiàn)在分離的硬件中或者可以集成在工業(yè)控制器A和B內。I/O模塊10和20又例如經(jīng)由傳感器和致動器連接至受控過程22的不同的方面,從而使工業(yè)控制器A和B能夠控制受控過程22。
[0042]工業(yè)控制器A和B的硬件部件均可以包括:例如,處理器30;用于與存儲器34和磁盤36或者其他形式的非易失性存儲裝置對接的系統(tǒng)芯片集32,該非易失性存儲裝置包括但不限于閃存和/或固態(tài)硬盤;用于與受控過程硬件單元40(其允許與一個或更多個I/O模塊連接且通信)、控制網(wǎng)絡接口單元42(其允許與控制網(wǎng)絡16和/或其他網(wǎng)絡連接且通信)以及本地接口單元44(其允許與人機接口(HMI)和本地I/O連接且通信,本地I/O例如是鍵盤、鼠標、視頻顯示器、CD/DVD、閃卡、USB或其他便攜式介質I/O)對接的I/O芯片集38;以及系統(tǒng)硬件46,其可以提供各種已知的系統(tǒng)功能,包括電源邏輯、實時時鐘(RTC)等。工業(yè)控制器A和B的實際硬件或許稍微不同,例如僅在序列號方面不同,或者會更顯著地不同,例如在整個硬件和/或軟件架構方面不同。
[0043]電子計算機50也連接至控制網(wǎng)絡16。電子計算機50以鍵盤、鼠標以及視頻顯示器的形式提供HMI。相應地,電子計算機50可以提供設計環(huán)境以創(chuàng)建、修改和/或更新實現(xiàn)受控過程22的項目。在其他實施方式中,電子計算機50可以通過分離的網(wǎng)絡與工業(yè)控制器A和B連接且通信,或者可以在工業(yè)控制器A和B 二者之一內執(zhí)行電子計算機50的功能。此外,可以將源代碼加載至工業(yè)控制器內,然后在工業(yè)控制器內對源代碼進行本機編譯。相應地,可以將源代碼模塊遞送至工業(yè)控制器內,然后在工業(yè)控制器內對源代碼模塊進行編譯以及鏈接以創(chuàng)建所產(chǎn)生的對象模塊。
[0044]現(xiàn)在參照圖2,其示出了根據(jù)本發(fā)明的實施方式的、用于工業(yè)控制系統(tǒng)10的可能的工業(yè)控制系統(tǒng)架構層級。工業(yè)控制器A和B均提供工業(yè)控制器所特有的硬件部件層60。例如,工業(yè)控制器A包括“硬件A”而工業(yè)控制器B包括“硬件B”。硬件A可以與硬件B非常類似或者顯著不同。
[0045]工業(yè)控制器A和B還均提供工業(yè)控制器所特有的固件層62。例如,工業(yè)控制器A包括“固件A”而工業(yè)控制器B包括“固件B”。與硬件部件層60類似,固件A可以與固件B非常類似或者顯著不同。固件層62通常被存儲在工業(yè)控制器A和B內包含的閃存中,然而也可以使用其他類型的非易失性存儲器。固件層62為工業(yè)控制器A和B的固件部件層60提供了最低層的設備指令。
[0046]工業(yè)控制器A和B還均提供工業(yè)控制器所特有的操作系統(tǒng)和服務層64。例如,工業(yè)控制器A包括“操作系統(tǒng)A”而工業(yè)控制器B包括“操作系統(tǒng)B”。與硬件部件層60和固件層62類似,操作系統(tǒng)A可以與操作系統(tǒng)B非常類似或者顯著不同。操作系統(tǒng)和服務層64通常被存儲在磁盤或其他非易失性存儲器中并且經(jīng)由在工業(yè)控制器A和B中所包含的諸如RAM這樣的存儲器來被存取,然而,還可以使用其他類型的非暫態(tài)存儲器。操作系統(tǒng)和服務層64與固件層62進行通信并且為工業(yè)控制器A和B的硬件部件層60提供了次低層的指令。
[0047]最后,工業(yè)控制器A和B還均提供工業(yè)控制器所特有的應用或控制程序層66。例如,工業(yè)控制器A包括“控制程序A”而工業(yè)控制器B包括“控制程序B”??刂瞥绦駻可以與控制程序B非常類似或者顯著不同??刂瞥绦驅?6通常被存儲在磁盤或其他非易失性存儲器中并且經(jīng)由在工業(yè)控制器A和B中所包含的諸如RAM這樣的存儲器來被存取,然而,還可以使用其他類型的非暫態(tài)存儲器??刂瞥绦驅?6為工業(yè)控制器A和B提供下一層指令以及實現(xiàn)由計算機50提出的項目。相應地,控制程序層66允許經(jīng)由工業(yè)控制器A和B的操作系統(tǒng)和服務層64來控制受控過程22的至少一部分。
[0048]現(xiàn)在參照圖3,其示出了根據(jù)本發(fā)明的實施方式的包括示例性工業(yè)控制器A的工業(yè)控制系統(tǒng)10,其中包括嵌入式鏈接器、加載器和/或編譯器、可加載模塊管理器以及庫管理器。電子計算機50包括設計和配置環(huán)境100,例如來自Rockwe 11 Automat1n,Inc的RSLogix5000。設計和配置環(huán)境100可以采用圖形用戶界面或只是一種高級計算語言,例如C++。用戶相應地設計、修改和/或更新項目以及產(chǎn)生源模塊102,源模塊102可以包括源應用代碼、源庫代碼和/或如本領域通常所理解的其他源數(shù)據(jù)。
[0049]然后,可以將源模塊102提供給電子計算機50上的交叉編譯器104。交叉編譯器104又根據(jù)工業(yè)控制器A和B的目標平臺要求以及項目實現(xiàn)要求來對源模塊102的一個或更多個版本進行編譯,以及產(chǎn)生具有“符號引用”的相應的對象代碼和庫。例如,交叉編譯器104可以產(chǎn)生針對工業(yè)控制器A的第一對象代碼106( “對象A3”)和第一庫108( “LIB A3” ),以及針對工業(yè)控制器B的第二對象代碼110( “對象B4”)和第二庫112( “LIB B4” )。對象文件可以以標準格式產(chǎn)生,例如可執(zhí)行鏈接格式(ELF)文件,并且對象文件可以包括用于允許后續(xù)調試操作的斷點或其他方案,包括在Bowers等人的美國專利N0.7,353,508中所描述的方案,其全部內容通過引用合并至本文。
[0050]在實施方式中,電子計算機50然后可以將對象代碼和庫傳送至目標工業(yè)控制器。例如,可以將第一對象代碼106( “對象A3”)和第一庫108( “LIB A3”)提供給存儲在工業(yè)控制器A中的非暫態(tài)存儲器中的嵌入式鏈接器/加載器/編譯器120。此外,工業(yè)控制器A中的資源管理器122可以引用工業(yè)控制器A中的數(shù)據(jù)結構124、庫管理器126以及本地固件128,以及將這樣的資源信息提供給嵌入式鏈接器/加載器/編譯器120。數(shù)據(jù)結構124可以是用于識別工業(yè)控制器A的資源以及在一些實施方式中識別工業(yè)控制系統(tǒng)10中的其他工業(yè)控制器(例如工業(yè)控制器B)的資源的表。庫管理器126引用工業(yè)控制器A中的所加載的庫130(例如“LIB_Al”和“LIB_A2”),以及將關于那些所加載的庫130的信息提供給嵌入式鏈接器/加載器/編譯器120。庫管理器126還可以利用在庫鏈接期間所創(chuàng)建的導出符號的哈希表132來提高性能。資源可以包括例如另一網(wǎng)絡接口或協(xié)議堆棧,包括但不限于傳輸控制協(xié)議(“TCP”)、用戶數(shù)據(jù)報協(xié)議(“UDP”)等,其可以由硬件支持且由基本操作系統(tǒng)或者由另一可加載模塊或庫所提供的操作系統(tǒng)的擴展來提供。
[0051]接著,嵌入式鏈接器/加載器/編譯器120將對象代碼和庫(例如第一對象代碼106(“對象43”)和第一庫108(118 A3”))的符號引用綁定至工業(yè)控制器的資源。相應地,嵌入式鏈接器/加載器/編譯器120產(chǎn)生完全鏈接的可執(zhí)行應用模塊和庫模塊,例如應用模塊134(“可執(zhí)行”)和庫模塊136( “庫”)。此外,嵌入式鏈接器/加載器/編譯器120可以使工業(yè)控制器12的源能夠對模塊進行編譯。相應地,可以加載源模塊以及可執(zhí)行文件和對象文件。此夕卜,嵌入式鏈接器/加載器/編譯器120還可以被配置成在未成功地試圖綁定應用模塊之后試圖將應用模塊綁定至資源。
[0052]接下來,存儲在工業(yè)控制器A中的非暫態(tài)存儲器中的可加載模塊管理器138接收完全鏈接的可執(zhí)行應用模塊,例如應用模塊134(“可執(zhí)行”)。可加載模塊管理器138又識別應用模塊134( “可執(zhí)行”)的一個或更多個依賴關系,例如標簽名稱或其他變量,以及將應用模塊134( “可執(zhí)行”)綁定至工業(yè)控制器A的資源以解析依賴關系,例如綁定至所加載的應用模塊140之中的另一應用模塊,或者物理或虛擬存儲器地址,或者綁定至工業(yè)控制系統(tǒng)10中的另一工業(yè)控制器的資源,例如工業(yè)控制器B的資源。標簽名稱可以指控制系統(tǒng)存儲器中的數(shù)據(jù)值,該數(shù)據(jù)值表示被控制的設備或控制應用自身的狀態(tài)的一個方面。相應地,可加載模塊管理器138將應用模塊134( “可執(zhí)行”)綁定且置入所加載的應用模塊140之中的服務中作為運行應用模塊142( “MOD_A3” )。運行應用模塊142( “MOD_A3”)又可以在所加載的應用模塊140中的一個或更多個繼續(xù)控制受控過程的同時擴展或修改操作系統(tǒng)的至少一部分。
[0053]類似地,庫管理器126接收完全鏈接的庫模塊,例如庫模塊136(“庫”)。庫管理器126又識別庫模塊136(“庫”)的一個或更多個依賴關系,例如標簽名稱或其他變量,以及將庫模塊136(“庫”)綁定至工業(yè)控制器A的資源以解析依賴關系,例如綁定至工業(yè)控制器A中的所加載庫130之中的另一庫,或者綁定至工業(yè)控制系統(tǒng)10中的另一工業(yè)控制器的資源,例如工業(yè)控制器B的資源。相應地,庫管理器126將庫模塊136( “庫”)綁定且置入所加載的庫130之中的服務中作為運行庫144(118_43”)。所加載的應用模塊140中的一個或更多個可以在庫管理器126將庫模塊136( “庫”)綁定至資源的同時繼續(xù)控制受控過程。
[0054]在另一實施方式中,電子計算機50可以替代地將對象代碼和庫傳送至設計環(huán)境鏈接器150。例如,可以將第一對象代碼106( “對象A3”)、第一庫108(“LIB A3”)、第二對象代碼110( “對象B4”)和第二庫112( “LIB B4”)提供給電子計算機50中的設計環(huán)境鏈接器150。此夕卜,設計環(huán)境鏈接器150可以引用設計環(huán)境數(shù)據(jù)結構152。設計環(huán)境數(shù)據(jù)結構152可以是用于識別工業(yè)控制器A和B的資源的表。
[0055]接著,設計環(huán)境鏈接器150將對象代碼和庫的符號引用綁定至工業(yè)控制器A和B的資源,對象代碼和庫例如是第一對象代碼106( “對象A3”)、第一庫108 ( “LIB A3”)、第二對象代碼110( “對象B4”)和第二庫112( “LIB B4”)。相應地,設計環(huán)境鏈接器150產(chǎn)生針對工業(yè)控制器A和B的完全鏈接的可執(zhí)行應用模塊和庫模塊,例如針對工業(yè)控制器A的應用模塊160(“可執(zhí)行A3”)和庫模塊162( “庫A3” ),以及針對工業(yè)控制器B的應用模塊164( “可執(zhí)行B4” )和庫模塊166(“庫B4”)。
[0056]接下來,可加載模塊管理器138接收完全鏈接的可執(zhí)行應用模塊,例如應用模塊160( “可執(zhí)行A3”)??杉虞d模塊管理器138又識別應用模塊160( “可執(zhí)行A3”)的一個或更多個依賴關系,例如標簽名稱或其他變量,以及將應用模塊160( “可執(zhí)行A3”)綁定至工業(yè)控制器A的資源以解析依賴關系,例如,綁定至所加載的應用模塊140之中的另一應用模塊,或者物理或虛擬存儲器地址,或者綁定至工業(yè)控制系統(tǒng)10中的另一工業(yè)控制器的資源,例如工業(yè)控制器B的資源。相應地,可加載模塊管理器138將應用模塊160( “可執(zhí)行A3”)綁定和置入所加載的應用模塊140之中的服務中作為運行應用模塊142( “M0D_A3”)。運行應用模塊142(“M0D_A3”)又可以在所加載的應用模塊140中的一個或更多個繼續(xù)控制受控過程的同時擴展或修改操作系統(tǒng)的至少一部分。
[0057]類似地,庫管理器126接收完全鏈接的庫模塊,例如庫模塊162(“庫A3” )。庫管理器126又識別庫模塊162( “庫A3”)的一個或更多個依賴關系,例如標簽名稱或其他變量,以及將庫模塊162( “庫A3”)綁定至工業(yè)控制器A的資源以解析依賴關系,例如綁定至工業(yè)控制器A中的所加載的庫130之中的另一庫,或者綁定至工業(yè)控制系統(tǒng)10中的另一工業(yè)控制器的資源,例如工業(yè)控制器B的資源。相應地,庫管理器126將庫模塊162( “庫A3”)綁定和置入所加載的庫130之中的服務中作為運行庫144( “LIB_A3”)。所加載的應用模塊140中的一個或更多個可以在庫管理器126將庫模塊162( “庫A3”)綁定至資源的同時繼續(xù)控制受控過程。
[0058]可以加載庫模塊的多個版本。這例如在更新庫和遞增地重新鏈接/綁定至新版本或者在滿足應用模塊的需求方面可能是有用的,應用模塊的需求可能需要相同庫的不同版本。
[0059]在另一實施方式中,電子計算機50可以將對象代碼和庫傳送至一個工業(yè)控制器,例如工業(yè)控制器A,以及將至少部分地鏈接的可執(zhí)行應用模塊和庫模塊傳送至另一工業(yè)控制器,例如工業(yè)控制器B。此外,電子計算機50和所描述的“設計環(huán)境”可以替代地由工業(yè)控制器A或B來實現(xiàn)。
[0060]現(xiàn)在參照圖4A和圖4B,其示出了根據(jù)本發(fā)明的實施方式的應用模塊依賴關系和庫模塊依賴關系。所加載的應用模塊180可以包括第一應用模塊182( “M0D_A1”)和第二應用模塊184( “M0D_A2”)。第一應用模塊182和第二應用模塊184可以是在用于控制受控過程的工業(yè)控制器上運行的控制程序的模塊。第一應用模塊182可以具有對第二應用模塊184的依賴關系,以及第二應用模塊184可以具有對第一應用模塊186的依賴關系,例如標簽名稱。當接收第三應用模塊186( “M0D_A3”)時,可加載模塊管理器可以確定第三應用模塊186具有對第一應用模塊182和第二應用模塊184的依賴關系,例如標簽名稱,以及可以將第三應用模塊186綁定至第一應用模塊182和第二應用模塊184以解析所述依賴關系。
[0061]類似地,所加載的庫模塊190可以包括第一庫模塊192(“LIB_A1”)和第二庫模塊194(“LIB_A2”)。第一庫模塊192和第二庫模塊194可以是由應用模塊180引用的庫。第二庫模塊194可以具有對第一庫模塊192的依賴關系,而第一庫模塊192可以根本不具有依賴關系。當接收第三庫模塊196(“LIB_A3”)時,可加載庫管理器可以確定第三庫模塊196具有對第一庫模塊192和第二庫模塊194的依賴關系以及可以將第三庫模塊196綁定至第一庫模塊192和第二庫模塊194以解析所述依賴關系。電子計算機50確保將所有必需的庫模塊和控制模塊加載至工業(yè)控制器。此外,庫可以包括針對不同的硬件架構所編譯的代碼。電子計算機50可以選擇僅加載庫的一部分,該部分用于工業(yè)控制器的特定硬件。
[0062]現(xiàn)在參照圖5A和圖5B,其示出了根據(jù)本發(fā)明的實施方式的、被配置成擴展或修改操作系統(tǒng)的至少一部分的應用模塊和庫模塊。操作系統(tǒng)和服務層198(“操作系統(tǒng)A”)可以由第三應用模塊186( “M0D_A3”)和/或第三庫模塊196( “LIB_A3”)來擴展或修改。
[0063]現(xiàn)在參照圖6,表200示出了根據(jù)本發(fā)明的實施方式的用于應用模塊或庫模塊的示例字段。對于多個模塊,在第一列202中,可以提供針對模塊的標識或名稱。在第二列204中,可以提供安全參數(shù),例如運行模塊的認證、許可/準許、用于對模塊進行解密的加密密鑰等。在第三列206中,可以提供針對模塊對其他模塊或其他資源的依賴關系的、例如以標簽名稱或變量的形式的列表。在第四列208中,可以提供循環(huán)冗余校驗(“CRC")、校驗和或其他數(shù)據(jù)完整性字段以確保模塊的完整性。
[0064]現(xiàn)在參照圖7,表220示出了根據(jù)本發(fā)明的實施方式的識別工業(yè)控制器的資源的示例性數(shù)據(jù)結構。對于多個資源,在第一列222中,可以提供虛擬存儲器地址。在第二列224中,可以提供物理存儲器地址。在第三列226中,可以提供CIP連接或實例。在第四列228中,可以提供函數(shù),例如存儲在應用模塊或庫模塊中的函數(shù)。在第五列230中,可以提供指令,例如存儲在應用模塊或庫模塊中的指令。在替選的實施方式中,可以根據(jù)現(xiàn)有技術已知的其他存儲和檢索機制(包括數(shù)據(jù)庫、指針、哈希表等)來保持或引用表220中的資源信息。
[0065]現(xiàn)在參照圖8,示出了根據(jù)本發(fā)明的實施方式的識別依賴關系且綁定至資源以解析依賴關系的流程圖300。第一塊302可以包括可能存在于控制程序應用模塊304、對象文件306和/或庫模塊308中的多個依賴關系。
[0066]在第二塊310中,工業(yè)控制器可以在繼續(xù)進行之前、針對底層模塊或文件確定是否滿足一個或更多個安裝要求。如果不滿足安裝要求,則工業(yè)控制器可以防止具有依賴關系的底層模塊或文件繼續(xù)進行。安裝要求可以基于當前或預期的處理器利用率、存儲器利用率和/或運行時間調度需要;運行模塊或文件的授權,例如許可權限;其他模塊、庫或文件的合適的軟件版本的預先安裝、或者操作系統(tǒng)或固件的合適的軟件版本的預先安裝;具有其他模塊、庫或文件的多個軟件版本、或者操作系統(tǒng)或固件的多個軟件版本(其可以允許例如支持相同服務的兩個版本以便利更新從而解決問題或添加能力,和/或實現(xiàn)可以要求相同服務的不同版本的外部客戶端);正確的CRC、校驗和或其他數(shù)據(jù)完整性計算等。
[0067]在第三塊312中,確定存在于工業(yè)控制器中或者工業(yè)控制器知道存在于工業(yè)控制系統(tǒng)中的多個資源。資源可以包括其他控制程序應用模塊314、其他庫模塊316、工業(yè)控制器的操作系統(tǒng)和服務318、工業(yè)控制器的本地固件320以及工業(yè)控制器的硬件322。
[0068]在第四塊330中,由于根據(jù)第一塊302已識別了依賴關系,根據(jù)第二塊310已驗證了安裝要求,以及根據(jù)第三塊312已得知了資源,因此工業(yè)控制器通過將第一塊302的依賴關系綁定至第三塊312的資源來解析依賴關系。在一些實施方式中,這還可以包括基于繼續(xù)更新、系統(tǒng)更改等來隨后“重新綁定”一次或更多次。
[0069]接下來,在第五處理塊332中,工業(yè)控制器可以繼續(xù)驗證所有資源已被正確地綁定以確保準確性和完整性。例如,工業(yè)控制器可以執(zhí)行內置式自測試或其他診斷以確保所有依賴關系綁定至合適的資源。
[0070]最后,在第六處理塊334中,加載和執(zhí)行完全綁定的模塊。在工業(yè)控制器繼續(xù)控制受控過程的同時,整個流程可以隨著提供附加模塊或文件而重復進行。相應地,可以連續(xù)地識別第一塊302中的依賴關系和第三塊312中的資源,以及第四塊330中的綁定/重新綁定可以繼續(xù)發(fā)生。
[0071]某些術語在本文中僅出于指代的目的而被使用并且因此不意在進行限制。這樣的術語可以包括上文特別提到的詞語、該詞語的派生詞以及相似引入的詞語。例如,除非通過上下文清楚地指明,否則涉及結構的術語“第一”、“第二”或其他這樣的數(shù)字型術語不意味著次序或順序。
[0072]當介紹本公開內容和示例性實施方式的元素或者特征時,表示單數(shù)的詞“一個”、“一”和“所述”意在表示存在一個或多個這樣的元素或特征。術語“包括”、“包含”和“具有”意思是非排他性的,并且表示可以存在除了那些特別指出的元素或特征之外的額外的元素或特征。還應當理解,除非特別地標識為執(zhí)行順序,否則本文中所描述的方法步驟、過程和操作不應當被看作是必須要求它們按照所討論或所示出的特定順序來執(zhí)行。還應當理解,可以采用附加的步驟或者替代的步驟。
[0073]提及的“微處理器”和“處理器”或者“所述微處理器”或者“所述處理器”可以理解為包括一個或更多個微處理器,其可以在獨立的和/或分布式的環(huán)境中進行通信,并且因此可以被配置成經(jīng)由有線或者無線通信與其他處理器進行通信,其中,這樣的一個或更多個處理器可以被配置成在一個或多個受處理器控制的裝置上工作,這些裝置可以是類似的裝置或者是不同裝置。此外,除非指明,否則提及的存儲器可以包括一個或者更多個處理器可讀且可存取的存儲器單元和/或部件,其可以在受處理器控制的裝置內部或者外部,并且可以經(jīng)由有線或者無線網(wǎng)絡來存取。
[0074]本發(fā)明不限于本文包含的實施方式和說明,且權利要求應當被理解為包括在所附權利要求范圍內的那些實施方式的修改形式,這包括實施方式的一部分以及不同實施方式的元素的組合。本文所描述的全部出版物的全部內容通過引用合并至本文,包括專利出版物和非專利出版物。
【主權項】
1.一種包括處理器的工業(yè)控制器,所述處理器執(zhí)行: 存儲在非暫態(tài)存儲器中的操作系統(tǒng),所述操作系統(tǒng)用于管理所述工業(yè)控制器的硬件部件; 存儲在非暫態(tài)存儲器中的第一應用模塊,所述第一應用模塊用于經(jīng)由所述操作系統(tǒng)來控制受控過程的至少一部分;以及 存儲在非暫態(tài)存儲器中的可加載模塊管理器,所述可加載模塊管理器被配置成接收第二應用模塊; 其中,所述可加載模塊管理器還被配置成識別所述第二應用模塊的依賴關系以及將所述第二應用模塊綁定至所述工業(yè)控制器的資源以解析所述依賴關系;以及 其中,所述第二應用模塊被配置成在所述第一應用模塊控制所述受控過程的至少一部分的同時,擴展或修改所述操作系統(tǒng)的至少一部分。2.根據(jù)權利要求1所述的工業(yè)控制器,其中,所述工業(yè)控制器在所述可加載模塊管理器將所述第二應用模塊綁定至所述資源的同時,連續(xù)地控制工業(yè)過程。3.根據(jù)權利要求1所述的工業(yè)控制器,其中,所述可加載模塊管理器還被配置成在嘗試綁定應用模塊不成功之后,嘗試將所述應用模塊綁定至資源。4.根據(jù)權利要求1所述的工業(yè)控制器,其中,所述操作系統(tǒng)被配置成在管理所述硬件部件之前與固件進行通信,其中,所述第二應用模塊被配置成在不修改所述固件的情況下擴展或修改所述操作系統(tǒng)的至少一部分。5.根據(jù)權利要求1所述的工業(yè)控制器,其中,所述可加載模塊管理器還被配置成在所述第二應用模塊被準許擴展或修改所述操作系統(tǒng)的所述至少一部分之前確定是否滿足安裝要求。6.根據(jù)權利要求5所述的工業(yè)控制器,其中,所述安裝要求是基于下述中至少之一的:所述工業(yè)控制器的處理器利用率、存儲器利用率以及運行時間調度。7.根據(jù)權利要求5所述的工業(yè)控制器,其中,所述安裝要求基于由所述工業(yè)控制器接收的關于運行所述第二應用模塊的授權。8.根據(jù)權利要求5所述的工業(yè)控制器,其中,所述安裝要求基于所述操作系統(tǒng)和所述第一應用模塊中至少一個的版本。9.根據(jù)權利要求8所述的工業(yè)控制器,其中,所述安裝要求基于具有所述操作系統(tǒng)和所述第一應用模塊中至少一個的多個版本。10.根據(jù)權利要求1所述的工業(yè)控制器,其中,所述可加載模塊管理器將所述第二應用模塊綁定至所述操作系統(tǒng)和所述第一應用模塊中至少一個。11.根據(jù)權利要求10所述的工業(yè)控制器,其中,所述資源是虛擬存儲器地址。12.根據(jù)權利要求10所述的工業(yè)控制器,其中,所述資源是通用工業(yè)協(xié)議CIP連接。13.根據(jù)權利要求10所述的工業(yè)控制器,其中,所述依賴關系是標簽名稱。14.根據(jù)權利要求1所述的工業(yè)控制器,還包括存儲在非暫態(tài)存儲器中的嵌入式鏈接器,所述嵌入式鏈接器被配置成接收包含符號引用的對象文件,其中,所述嵌入式鏈接器還被配置成將所述符號引用綁定至所述工業(yè)控制器的資源以產(chǎn)生用于控制受控過程的至少一部分的第三應用模塊。15.根據(jù)權利要求1所述的工業(yè)控制器,還包括存儲在非暫態(tài)存儲器中的嵌入式編譯器,所述嵌入式編譯器被配置成對源文件進行編譯。16.根據(jù)權利要求1所述的工業(yè)控制器,還包括存儲在非暫態(tài)存儲器中的庫管理器,所述庫管理器被配置成接收庫模塊,其中,所述庫管理器被配置成識別所述庫模塊的依賴關系,以及將所述庫模塊綁定至所述工業(yè)控制器的資源以解析所述依賴關系。17.一種包括處理器的工業(yè)控制器,所述處理器執(zhí)行: 存儲在非暫態(tài)存儲器中的操作系統(tǒng),所述操作系統(tǒng)用于管理所述工業(yè)控制器的硬件部件;以及 存儲在非暫態(tài)存儲器中的嵌入式鏈接器,所述嵌入式鏈接器被配置成接收包含符號引用的對象文件; 其中,所述嵌入式鏈接器還被配置成將所述對象文件的所述符號引用綁定至所述工業(yè)控制器的資源以產(chǎn)生用于控制受控過程的至少一部分的應用模塊。18.根據(jù)權利要求17所述的工業(yè)控制器,還包括數(shù)據(jù)結構,所述數(shù)據(jù)結構識別所述工業(yè)控制器的資源,其中,所述嵌入式鏈接器引用所述數(shù)據(jù)結構以綁定所述符號引用。19.根據(jù)權利要求17所述的工業(yè)控制器,其中,所述對象文件是可執(zhí)行鏈接格式ELF文件。20.根據(jù)權利要求17所述的工業(yè)控制器,其中,所述資源是通用工業(yè)協(xié)議CIP連接。21.根據(jù)權利要求17所述的工業(yè)控制器,其中,所述對象文件包括用于允許進行調試的斷點。22.根據(jù)權利要求17所述的工業(yè)控制器,其中,所述對象文件包括用于提供循環(huán)冗余校驗CRC和校驗和中至少一個的信息。23.根據(jù)權利要求17所述的工業(yè)控制器,其中,所述嵌入式鏈接器還用作用于所述應用模塊的加載器。24.根據(jù)權利要求17所述的工業(yè)控制器,其中,所述工業(yè)控制器經(jīng)由閃存裝置來接收所述對象文件。25.根據(jù)權利要求17所述的工業(yè)控制器,其中,所述嵌入式鏈接器還被配置成接收庫模塊,以及將所述庫模塊綁定至所述工業(yè)控制器的資源。26.一種包括處理器的工業(yè)控制器,所述處理器執(zhí)行: 存儲在非暫態(tài)存儲器中的操作系統(tǒng),所述操作系統(tǒng)用于管理所述工業(yè)控制器的硬件部件; 存儲在非暫態(tài)存儲器中的應用模塊,所述應用模塊用于控制受控過程的至少一部分; 存儲在非暫態(tài)存儲器中的第一庫模塊,所述第一庫模塊用于提供由所述應用模塊使用的信息;以及 存儲在非暫態(tài)存儲器中的庫管理器,所述庫管理器被配置成接收第二庫模塊; 其中,所述庫管理器還被配置成識別所述第二庫模塊的依賴關系以及將所述第二庫模塊綁定至所述工業(yè)控制器的資源以解析所述依賴關系,以及 其中,所述應用模塊被配置成在所述庫管理器將所述第二庫模塊綁定至所述工業(yè)控制器的資源的同時,控制所述受控過程的至少一部分。27.根據(jù)權利要求26所述的工業(yè)控制器,其中,所述操作系統(tǒng)被配置成在管理所述硬件部件之前與固件進行通信,其中,所述應用模塊被配置成在不修改所述固件的情況下,在所述庫管理器將所述第二庫模塊綁定至所述工業(yè)控制器的資源的同時控制所述受控過程的至少一部分。28.根據(jù)權利要求26所述的工業(yè)控制器,其中,所述庫管理器將所述第二庫模塊綁定至所述操作系統(tǒng)和所述第一庫模塊中至少一個。29.根據(jù)權利要求26所述的工業(yè)控制器,其中,所述第二庫模塊是所述第一庫模塊的不同版本。30.根據(jù)權利要求26所述的工業(yè)控制器,其中,所述庫管理器還被配置成在所述庫管理器將所述第二庫模塊綁定至所述工業(yè)控制器的資源之前確定是否滿足安裝要求。31.根據(jù)權利要求30所述的工業(yè)控制器,其中,所述安裝要求基于下述中至少一個:所述工業(yè)控制器的處理器利用率、存儲器利用率以及運行時間調度。32.根據(jù)權利要求30所述的工業(yè)控制器,其中,所述安裝要求基于由所述工業(yè)控制器接收的關于運行所述第二庫模塊的授權。33.根據(jù)權利要求30所述的工業(yè)控制器,其中,所述安裝要求基于所述操作系統(tǒng)和所述第一庫模塊中至少一個的版本。34.根據(jù)權利要求26所述的工業(yè)控制器,還包括存儲在非暫態(tài)存儲器中的嵌入式鏈接器,所述嵌入式鏈接器被配置成接收包含符號引用的對象文件,其中,所述嵌入式鏈接器還被配置成將所述符號引用綁定至所述工業(yè)控制器的資源以產(chǎn)生用于控制受控過程的至少一部分的第二應用模塊。
【文檔編號】G05B19/04GK105911885SQ201610089700
【公開日】2016年8月31日
【申請日】2016年2月17日
【發(fā)明人】查爾斯·M·里斯查爾, 拉迪斯拉夫·本巴萊克, 菲利普·馬庫瑞克, 邁克爾·維斯特, 彼得·皮特日內茨
【申請人】洛克威爾自動控制技術股份有限公司