天天看點

用PythonPi實作門禁系統-場景

在分布式智能控制系統中,我們介紹了控制邏輯元件。該元件可以完成智能控制的功能。但控制邏輯元件存在一個問題:它不具備基于個體識别然後據此進行管控的能力,控制邏輯元件并不關心參與者是誰,它對所有人都是一視同仁的,是以控制邏輯元件是無法用來進行門禁管控的。

為了實作門禁控制,我們将具有個體識别能力的識别點、基于角色的權限管理和一個事件驅動的控制邏輯元件組裝到一起就成為一個場景。和控制邏輯相比,場景具有針對特别的人來執行不同功能的能力。它包括:

  • 個體識别,根據卡片或生物特征對場景中的參與者進行個體識别
  • 權限管理,根據識别出的個體進行基于角色的權限裁決
  • 控制邏輯,實作具體的控制功能

由于控制邏輯是基于狀态機的事件驅動,是以将權限裁決可視為出現特定事件,這樣控制邏輯不需做任何修改即可引用。

考慮到一個應用場景中可能會存在多個識别點(如進出都需要刷卡的門禁),是以個體權限的裁決是和識别點的位置相關的,比如要求單向行進的參觀路徑上,遊客是不允許後向出門的,但從業人員則可以,是以遊客角色在反向(門後,相當于行進方向)的識别點是沒有權限開門的,在正向(門前)的識别點是有權限開門的;而從業人員角色則不管正反向都有開門的權限。

考慮到傳統門禁系統人員和角色隻能單一映射會限制智能控制系統随動業務系統的管控能力,是以允許一個人可以映射為多個角色,但由于控制系統的特點,隻要在這些角色中有一個在識别點得到了授權許可即視為有通過權限并終止後繼的檢查。

在上述的實作中意味着:

預設沒有授權

,隻有顯式的将某角色在某識别點的出現綁定為某特殊事件才是一個特定的授權。但這個所謂的授權也并不就一定意味着開門動作。比如,在很多的資金交接區域,開門是一個有很多限制前提的動作,如需雙門互鎖(一個封閉的資金交接區域有兩道門,各自有門禁管控,兩門隻能同時打開一道)、遠端确認(刷卡得到授權後還需保安通過視訊進行确認并在安保中心按下同意按鈕才能開門,單一刷卡或遠端按下按鈕都不能開門)等等。

從雙門互鎖、遠端确認這些功能我們可以看到狀态機相比産生式在控制領域的優勢:

  • 狀态機的輸入源隻是發出一個事件,無論要實作的功能有多複雜,它就是簡單的發出一個事件通知
  • 複雜些的功能都是一系列連貫的動作,對狀态機來說這是天然的,而産生式是平行的條件檢測,哪個滿足執行哪個,執行路徑難以控制
  • 我們想象的智能系統要具備随動環境變化而變化,這就可能經常需要對各種複雜功能進行調整、更新與新增。狀态機可以通過圖上作業,甚而我們在有了足夠的積累之後,可以開發圖形化的輔助設計工具來幫助分析、自動推導來降低設計難度。但産生式的功能是分布在非常多的規則中的,這些規則的彼此平行,需要非常強的專家知識來提供幫助

====================================================================================================

關注我的公衆号及時擷取推送的最新文章

用PythonPi實作門禁系統-場景