引用
López, Joaquín, Diego Pérez, Alejandro Santana-Alonso, and Enrique Paz. "A Suite of Petri net based Tools for Monitoring and Debugging Distributed Autonomous Systems."
一、摘要本文介紹了Petri網在一套工具中的應用,用以設計、分析、監控、記錄和除錯分散式控制系統的執行時協調。使用Petri網對分散式元件之間的互動進行建模。在執行應用程式之前,可以使用不同的Petri網分析工具對系統進行分析。在執行時,可以通過觀察不同Petri網的演化過程,方便地監視分散式系統中不同元件之間的互動。除了監視之外,還可以檢測系統以記錄具有不同詳細級別的狀態更改。最後,圖形化工具可用於逐步或以相同的執行速度視覺化系統的演進。這些工具還允許轉到特定的執行點並可視化全域性系統的狀態。
二、分散式控制系統在分散式控制系統中,控制器元素不在位置中央。相反,它們分佈在整個系統中,每個元件子系統都由一個或多個控制單元控制。整個控制器系統通過網路連線,以進行通訊和監視。
圖2顯示了本文介紹的分散式控制單元以及協調和除錯系統。有四個不同的控制單元,可以自主控制系統的不同元素:機器人,建築裝置,使用者介面和拾取單元(傳送帶和工業機器人)。中央伺服器負責分散式控制單元的協調,以執行不同的任務。
中央伺服器上執行著三個模組:
Petri網編輯器:該模組允許將任務定義為Petri網。這些任務包括可能由四個控制單元執行的命令。我們使用分層Petri網,其中Petri網中的命令可以是另一個命令的執行。事件可以由任何控制單元和任何其他任務(Petri網)產生。 最後,可以分析Petri網的安全性,有界性和活動性等屬性。
Petri網排程器。任務由排程程式執行,該排程程式從XML定義檔案載入Petri網路。然後根據當前標記解釋執行命令的Petri網,並訂閱可能演變載入的Petri網的事件。
Petri網路偵錯程式。在執行任務時,可以使用此偵錯程式監視相關Petri網的發展。
三、不同控制單元間的協調Petri網已被廣泛用於建模、設計、執行和評估動態製造系統中的任務。作為一個簡單的示例,圖3顯示了可用於“GET NEW BOX”任務的Petri網。即使圖3中沒有,也可以新增不同的Petri網機制(例如計時器)來處理一些常見問題。
在編輯器模式下,使用者可以使用簡單直觀的Petri網圖形編輯器建立新任務。 圖3顯示了編輯任務時的GUI。Petri網結構是通過選擇並拖動不同的元素來建立的:位置,過渡,弧和標記。然後,必須定義動作(與位置和過渡相關)和條件(與過渡相關)。
動作可以是在圖2的分散式控制體系結構中的任何控制單元中實現的命令。可以從GUI自動生成的選單列表中選擇這些命令。每個命令都是一條訊息,使用者必須定義命令引數,當在編輯器中選擇該命令時,這些引數將自動出現在新的對話方塊視窗中。
條件可以是圖2中任何模組產生的事件。這些事件也可以從GUI自動生成的選單列表中選擇。事件可以是訊息的簡單到達、可以是某個訊息引數的條件、也可以是相同或不同訊息上多個引數的任何邏輯表示式。
四、除錯方法1、模型檢查
分析petri網的能力通常被認為是最重要的活動。通過對petri網的分析,設計者可以深入了解建模系統的行為和特性。有兩種主要型別的分析可以在petri網上執行。第一個涉及到可達樹的建立,第二個涉及到矩陣方程。由於可達樹方法能夠有效地解決安全性和有界性問題,所以首先選擇了可達樹方法。
如果網中的所有庫所均安全,則Petri網被宣佈為安全。 如果對於所有可能的標記,該庫所的令牌數量從未超過一個,則該位置被稱為安全。如果對於所有可能的標記,網中任何單個位置的令牌數量均不超過k,則Petri網為k界。
關於控制系統的一個有趣特性是活性,它與完全沒有死鎖有關。活性表示針對所有可能的可達狀態遷移的能力。這意味著,無論選擇哪種觸發順序,Petri網都可確保無死鎖操作。
我們對行為分析實施的分析模組包括:
•狀態空間分析:通過構建所有可到達標記的樹來分析Petri網。然後可以分析可達樹以確定Petri網的屬性,例如可達性、有界性、死鎖和安全性。
•不變分析:分析Petri網以確定P不變和T不變向量。
2、在執行期間監視系統
即使程式基於無故障演算法,其實現也可能包含由於編碼錯誤而引起的錯誤。分散式系統協調中也會出現類似情況。這就是說,我們可能會使用安全且實時的Petri網,但仍需要除錯工具。
排程程式排程不同的控制單元動作和執行動作(其他Petri網),以及與產生的事件的同步。通過釋出和訂閱訊息來執行與體系結構中其他控制單元的互動。啟動時,排程程式同意任務執行或取消請求。在接收時無法執行的執行請求根據其優先順序儲存在不同的佇列中。
新任務的執行是開始從pnml檔案中載入被解釋的petri網。然後,排程程式訂閱事件中引用的所有訊息。最後,設定初始標記,並執行與標記位置相關的行為。Petri網只能隨著訊息的到達或計時器的結束而發展。
每當Petri網的狀態(啟動,停止,演進)或等待佇列的狀態(新增或刪除新請求)發生變化時,都會發出一條新訊息,報告已發出更改以進行監視(圖2中的偵錯程式模組)。並存儲在日誌檔案中以進行離線除錯。
監視程式模式下的偵錯程式模組訂閱不同的排程程式訊息,這些訊息顯示不同的正在執行或正在等待的Petri網路的狀態。每個正在執行的Petri網都顯示在一個帶有當前標記的不同選項卡中,如圖4所示當排程程式演變一個Petri網標記時,將發出新訊息,並且偵錯程式將更新Monitor選項卡。帶有排隊任務(Petri網)和訊息的資訊視窗也可以顯示在圖4所示的左側選項卡式窗格中。
3、離線除錯
除錯分散式系統的一般方法是在系統執行時建立日誌,然後離線分析日誌,以減少對執行的干擾。
當日志資料量很大時,除錯將以離線方式進行。對bug的搜尋必須採用有效的策略來選擇哪些是相關的,哪些不是。然後,系統管理員可以在播放記錄器模式下執行偵錯程式,開啟日誌檔案並以與實際執行相同的速度播放它。正在執行的Petri網的不同選項卡將顯示為監視模式。使用者還可以逐步監視日誌檔案。最後,使用者可以看到有關IPC(程序間通訊)訊息的不同詳細資訊,包括訊息欄位中包含的資訊。
圖4顯示了重播已記錄的執行時的主要偵錯程式。圖4左側的面板包括幾個選項卡:一個選項卡中的Petri網資訊,而另一個選項卡中的訊息資訊。右側的面板顯示了兩個選項卡,它們對應於圖中所示執行點處處於活動狀態的兩個Petri網。
直接從日誌資料除錯系統可能相當困難。然而,使用petri網偵錯程式是一種很容易找到執行點的方法,在執行點上,系統的演化與它的設計不一致。此外,大量的bug最終會導致petri網被固定的標記所卡住。找到這一點並從中除錯應用程式是很容易的。
五、總結和結論本文的主要貢獻是展示在分散式系統協調的設計和實現中使用Petri網的除錯優勢。
首先,它們可用於模型檢查,以深入了解建模系統的行為和屬性。其次,使用Petri網監視系統非常有幫助,我們可以在快照中觀察系統狀態。第三,分析執行期間記錄的資料,用視覺化介面描述petri網的演化過程,還可以跳到執行過程中的特定點並檢視每條訊息的資料。第四種是使用日誌重播協調系統,同時除錯其中一個單元,而不需要執行所有其他單元,只有當控制單元之間交換的所有訊息都通過協調單元時,才能執行此操作。
在此分散式應用程式中,使用了三種不同型別的控制單元:
1、移動機器人控制單元管理移動機器人導航和監視自主任務。它通過Wi-Fi連線到Intranet。
2、建築物控制單元管理建築物裝置,包括安全感測器和警報。
3、使用者介面管理與使用者的互動,從而允許他們監視移動機器人的活動並命令新的監視任務。
感謝國家自然科學基金專案(重點專案)智慧軟體系統的資料驅動測試方法與技術(61932012)資助