0的狀態(tài)與匹配值134不對(duì)應(yīng)。因此,事件生成器131指示“假”或尚無(wú)事件發(fā)生。相比之下,第二示例狀態(tài)130b中的與掩碼132對(duì)應(yīng)的輸入端子110的狀態(tài)與匹配值134對(duì)應(yīng)。因此,事件生成器131指示“真”或者事件已經(jīng)發(fā)生。每個(gè)輸入模塊44可以具有存儲(chǔ)在存儲(chǔ)器裝置94中的掩碼132和匹配值134的多個(gè)集合,每個(gè)集合被配置成根據(jù)內(nèi)部狀態(tài)位和/或輸入信號(hào)的唯一集合來(lái)生成事件。可選地,事件生成器131可以被配置成讀取單個(gè)參數(shù),例如通過(guò)其中可以定義至少三個(gè)狀態(tài)的字符串來(lái)定義該參數(shù)中的每個(gè)位。串中的每個(gè)位置可以被定義為與輸入的三個(gè)狀態(tài)對(duì)應(yīng)的或“X”。
[0040]根據(jù)本發(fā)明的另一實(shí)施方式,事件生成器131可以被配置成將單個(gè)輸入直接映射至事件。參照?qǐng)D6,來(lái)自每個(gè)輸入端子110的輸入信號(hào)45被提供至事件生成器131。事件生成器131可以被配置成檢測(cè)狀態(tài)轉(zhuǎn)換,使得當(dāng)被映射至事件的信道的輸入進(jìn)入一個(gè)狀態(tài)(例如,“I”或“通”)時(shí),事件生成器131生成事件。當(dāng)同一輸入進(jìn)入另一狀態(tài)(例如,“O”或“斷”)時(shí),事件生成器131可以被配置成不生成事件、生成第二事件或觸發(fā)同一事件。存儲(chǔ)器裝置94可以存儲(chǔ)以下表格,該表格定義每個(gè)事件任務(wù)以及每個(gè)輸入端子110處的輸入信號(hào)45的哪個(gè)狀態(tài)或狀態(tài)轉(zhuǎn)換導(dǎo)致事件發(fā)生。構(gòu)想的是,在不背離本發(fā)明的范圍的情況下,其他序列和/或輸入信號(hào)45和輸入端子110的組合、來(lái)自輸出端子120的輸出信號(hào)47、或其組合可以被配置成生成事件。
[0041]仍然參照?qǐng)D6,提供了事件隊(duì)列155,事件隊(duì)列155從事件生成器131接收對(duì)每個(gè)事件的發(fā)生的指示。當(dāng)每個(gè)事件發(fā)生時(shí),處理器74、邏輯電路114或其組合生成每個(gè)事件發(fā)生時(shí)輸入模塊114中的數(shù)據(jù)的快照。例如,在所示數(shù)字輸入模塊44中,當(dāng)輸入轉(zhuǎn)換至高狀態(tài)或通狀態(tài)時(shí),分配輸入端子110之一以生成事件O。事件生成器131檢測(cè)相應(yīng)輸入端子110處的至高狀態(tài)的轉(zhuǎn)換并且將八個(gè)輸入端子110中的每個(gè)輸入端子的狀態(tài)復(fù)制進(jìn)存儲(chǔ)器的一個(gè)字節(jié)中并且生成事件O已經(jīng)發(fā)生的指示。事件O發(fā)生的指示被發(fā)送至事件隊(duì)列155,并且其中存儲(chǔ)有每個(gè)輸入端子110的狀態(tài)的字節(jié)被類似地傳送至事件隊(duì)列155。因此,事件發(fā)生時(shí)輸入端子110的狀態(tài)被存儲(chǔ)以用于控制程序的未來(lái)處理。除了每個(gè)輸入端子110的狀態(tài)之外,構(gòu)想的是,當(dāng)事件發(fā)生時(shí),模塊44內(nèi)的其他內(nèi)部狀態(tài)和/或控制標(biāo)志可以被存儲(chǔ)在存儲(chǔ)器中。
[0042]還參照?qǐng)D7和圖8,構(gòu)想的是,可以針對(duì)每個(gè)事件150來(lái)定義單獨(dú)的事件隊(duì)列155。如果如圖6中所示使用針對(duì)所有事件150的單個(gè)隊(duì)列155,則必須在隊(duì)列155中存儲(chǔ)標(biāo)識(shí)哪個(gè)事件被觸發(fā)以及模塊的當(dāng)前狀態(tài)的信號(hào)。通過(guò)針對(duì)每個(gè)事件150定義單獨(dú)的隊(duì)列155,當(dāng)事件發(fā)生時(shí)僅模塊的當(dāng)前狀態(tài)需要被存儲(chǔ)。模塊的當(dāng)前狀態(tài)被存儲(chǔ)在與事件150對(duì)應(yīng)的隊(duì)列155中并且可以由相應(yīng)事件任務(wù)160從隊(duì)列155中檢索。
[0043]接下來(lái)參照?qǐng)D7至圖14,示出了事件管理系統(tǒng)的各種實(shí)施方式。如圖7和圖8中所示,隊(duì)列155可以被實(shí)現(xiàn)在I/O模塊18、處理器模塊14或其組合中。連接170被建立在處理器模塊14和I/O模塊18上的端口之間。如上所述,當(dāng)兩個(gè)模塊位于同一機(jī)架中時(shí),可以經(jīng)由背板62和背板連接器60建立連接170,或者當(dāng)兩個(gè)模塊被遠(yuǎn)離地定位時(shí),可以經(jīng)由網(wǎng)絡(luò)介質(zhì)32、36、網(wǎng)絡(luò)端口 101至103以及位于模塊之間的任何附加網(wǎng)絡(luò)裝置34建立連接170。I/O模塊18可以將事件數(shù)據(jù)存儲(chǔ)在本地事件隊(duì)列155中或者經(jīng)由連接170將事件數(shù)據(jù)發(fā)送至處理器事件隊(duì)列165以用于隨后的處理。
[0044]針對(duì)要檢測(cè)的每個(gè)事件150來(lái)定義事件任務(wù)160。事件任務(wù)160定義當(dāng)檢測(cè)到事件150時(shí)要發(fā)生的一個(gè)或更多個(gè)操作。如圖5中所示,示例事件任務(wù)160是以“梯形邏輯”格式編程的。構(gòu)想的是,可以在不背離本發(fā)明的范圍的情況下以其他編程語(yǔ)言對(duì)事件任務(wù)160編程。事件任務(wù)160接收事件發(fā)生時(shí)的模塊狀態(tài)并且將這些狀態(tài)用作梯形邏輯中的輸入信號(hào)212。根據(jù)事件任務(wù)160中定義的梯形邏輯來(lái)設(shè)置/重新設(shè)置輸出信號(hào)214。所產(chǎn)生的輸出信號(hào)214然后可以從處理器模塊14被發(fā)送至輸出模塊46,或者,如果兩個(gè)模塊被配置用于對(duì)等通信,則所產(chǎn)生的輸出信號(hào)214可以在輸入模塊44與輸出模塊46之間傳輸。
[0045]如圖9和圖10中所示,事件任務(wù)160可以在處理器模塊14、I/O模塊18或其組合中執(zhí)行。其中,可以根據(jù)應(yīng)用需求確定執(zhí)行的事件任務(wù)160。當(dāng)事件隊(duì)列155、165中存在事件數(shù)據(jù)時(shí)(也參見圖7和圖8),隊(duì)列155、165所在的模塊的處理器啟動(dòng)對(duì)事件任務(wù)160的執(zhí)行。出于說(shuō)明的目的,將假設(shè)隊(duì)列155存在于其上檢測(cè)到事件150的I/O模塊18,然而本文所公開的概念等同地適用于遠(yuǎn)程隊(duì)列,例如上述的處理器隊(duì)列165。根據(jù)本發(fā)明的又一實(shí)施方式,可以使用I/O模塊18上的隊(duì)列155和處理器模塊14上的隊(duì)列165兩者來(lái)執(zhí)行排隊(duì)。參照?qǐng)D7和圖9,事件150被存儲(chǔ)在I/O模塊18上的隊(duì)列155中。當(dāng)事件150發(fā)生或者事件150被排隊(duì)時(shí),事件150和事件數(shù)據(jù)被經(jīng)由模塊之間的連接170發(fā)送至處理器模塊
14。處理器模塊14包括存儲(chǔ)在存儲(chǔ)器中的表格,該表格標(biāo)識(shí)針對(duì)每個(gè)事件150要執(zhí)行的事件任務(wù)160。每個(gè)事件150可以關(guān)聯(lián)至特定事件任務(wù)160。然而,如所示的,還構(gòu)想的是,多個(gè)事件150如事件I和事件2可以啟動(dòng)對(duì)單個(gè)事件任務(wù)160如事件任務(wù)I的執(zhí)行。參照?qǐng)D10,構(gòu)想的是,事件任務(wù)160在I/O模塊18中執(zhí)行。由于模塊之間的掃描時(shí)間延遲以及網(wǎng)絡(luò)連接和/或背板上的傳輸延遲可以限制在接收到事件150之后啟動(dòng)事件任務(wù)160的速率,所以希望將事件任務(wù)160存儲(chǔ)在I/O模塊18中。當(dāng)事件150發(fā)生或被排隊(duì)時(shí),事件150觸發(fā)事件任務(wù)160。事件任務(wù)監(jiān)視器例程162可以存在于處理器模塊14中以監(jiān)視何時(shí)在I/O模塊18上執(zhí)行事件任務(wù)160。I/O模塊18可以經(jīng)由連接170將事件150發(fā)生的指示、事件數(shù)據(jù)、事件任務(wù)160的輸出或其組合發(fā)送至事件任務(wù)監(jiān)視器例程162,使得處理器模塊14意識(shí)到事件150已發(fā)生。
[0046]接下來(lái)參照?qǐng)D11,一個(gè)事件150可以啟動(dòng)多個(gè)事件任務(wù)160。根據(jù)所示的實(shí)施方式,事件O和事件N各自被配置成啟動(dòng)單個(gè)事件任務(wù)160。然而,事件I被配置成啟動(dòng)三個(gè)事件任務(wù)160。除了定義由每個(gè)事件150執(zhí)行哪個(gè)事件任務(wù)160之外,存儲(chǔ)在處理器模塊14中的表格還可以包括由單個(gè)任務(wù)150啟動(dòng)的多個(gè)事件任務(wù)160的執(zhí)行順序。可選地,可以向每個(gè)事件任務(wù)160分配優(yōu)先級(jí)并且事件任務(wù)160可以根據(jù)所分配的優(yōu)先級(jí)來(lái)執(zhí)行。還構(gòu)想的是,事件任務(wù)標(biāo)識(shí)符可以與事件數(shù)據(jù)一起存儲(chǔ)在事件隊(duì)列165中??蛇x地,可以針對(duì)事件任務(wù)和針對(duì)事件來(lái)定義單獨(dú)的隊(duì)列。當(dāng)由單個(gè)事件150啟動(dòng)多個(gè)事件任務(wù)160時(shí),需要執(zhí)行的事件任務(wù)160或針對(duì)每個(gè)事件任務(wù)160的標(biāo)識(shí)符然后可以被加載至預(yù)定義隊(duì)列之一中。
[0047]接下來(lái)參照?qǐng)D12,一個(gè)事件150可以啟動(dòng)多個(gè)處理器模塊14中的事件任務(wù)160??梢栽贗/O模塊18與可以位于分離的工業(yè)控制器10中的兩個(gè)處理器模塊14中的每個(gè)處理器模塊之間建立連接170。根據(jù)應(yīng)用需求,發(fā)生在一個(gè)I/O模塊18上的事件150可能需要啟動(dòng)兩個(gè)處理器模塊14上的事件任務(wù)160。再次參照?qǐng)D8,也可以在I/O模塊18中定義單獨(dú)的事件隊(duì)列155以將事件發(fā)送至每個(gè)處理器模塊14。每個(gè)處理器模塊14可以啟動(dòng)如上關(guān)于單個(gè)處理器模塊14所述的單個(gè)事件任務(wù)160或多個(gè)事件任務(wù)160的執(zhí)行。
[0048]根據(jù)本發(fā)明的另一方面,如圖13和圖14中所示,可能需要事件150的組合來(lái)啟動(dòng)事件任務(wù)160。事件任務(wù)邏輯電路152可以用于定義為了啟動(dòng)事件任務(wù)的執(zhí)行所必須發(fā)生的事件150的組合或序列。在圖13中,例如“與(AND) ”門指示事件0、事件I和事件N必須均發(fā)生以啟動(dòng)事件任務(wù)O的執(zhí)行。事件任務(wù)邏輯電路152可以被實(shí)現(xiàn)在I/O模塊18中或處理器模塊14中。構(gòu)想的是,事件任務(wù)邏輯電路152可以由實(shí)現(xiàn)在相應(yīng)模塊14、18的處理器中的離散邏輯元件或其組合構(gòu)成。事件任務(wù)邏輯電路152可以定義要求事件150的組合發(fā)生(即,“與(AND) ”)、多個(gè)事件150之一發(fā)生(即,“或(OR),,)或其組合的事件150的多個(gè)組合。還構(gòu)想的是,事件任務(wù)邏輯電路152可以要求事件150的序列發(fā)生以啟動(dòng)事件任務(wù)160。例如,如果事件O先發(fā)生并且接下來(lái)事件I發(fā)生,則事件任務(wù)邏輯電路152可以啟動(dòng)對(duì)事件任務(wù)O的執(zhí)行。然而,如果事件I先發(fā)生并且接下來(lái)事件O發(fā)生,則事件任務(wù)邏輯電路152可以不使事件任務(wù)160啟動(dòng)或者啟動(dòng)不同的事件任務(wù)例如事件任務(wù)I。
[0049]接下來(lái)轉(zhuǎn)向圖15至圖17,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于管理工業(yè)控制器中的多個(gè)事件的步驟。在步驟220,在工業(yè)控制器10中的I/O模塊18之一上檢測(cè)到事件150。如步驟222中所示,事件150被存儲(chǔ)在檢測(cè)到事件的I/O模塊18中或工業(yè)控制器10上的處理器模塊14中的事件隊(duì)列155、165中。當(dāng)存儲(chǔ)事件150時(shí),包括其中檢測(cè)到事件150的I/O模塊18上的一些端子或所有端子的狀態(tài)的事件數(shù)據(jù)可以被存儲(chǔ)在隊(duì)列中。事件數(shù)據(jù)也可以包括I/O模塊18的標(biāo)識(shí)I/O模塊18的當(dāng)前狀態(tài)的內(nèi)部狀態(tài)標(biāo)志。出于說(shuō)明的目的,將關(guān)于I/O模塊18中