天天看點

用jxTMS開發智能轉運箱(1)

本系列以開發管控類危化品的智能轉運箱為例講述了jxTMS的智能硬體支援下的業務管控體系:

用jxTMS開發智能轉運箱(2)

用jxTMS開發智能轉運箱(3)

jxTMS目前已打包為docker容器,可以下拉jxTMS的docker鏡像并按jxTMS使用示例嘗試使用。

開發背景

管控類化學品按公安部門的要求,必須集中保管,但其使用卻是分布在各使用機關的,有的大學的化學實驗室高達上千個,是以管控類化學品在使用時,必須從集中保管處運輸到使用點,投料後再運輸回集中保管處。相比可以嚴密設防的存儲與使用地,管控類化學品的在途安全就成為公安部門要求補上的一個空白環節。

管控類化學品在途安全的核心訴求就是提高機防水準以彌補傳統過于依賴人防的缺陷,確定:在化學品安全風險日益增大的當下,管控類化學品在途的人防加機防的綜合防護水準足以打消潛在攻擊者的攻擊欲望。

也就是說,管控類化學品的在途安全不僅僅隻是一個硬體防護的問題,還必須要納入到管控類化學品安全使用流程的閉環管理中,和申領、投料、回庫、計量等作業環節無縫銜接、互相驗證、不留安全空隙,確定管控類化學品的使用安全。這方面恰好可以充分發揮jxTMS在業務管理、流程管控方面的強大能力,大家可參考jxTMS使用示例進行了解,本文不複贅述。

針對智能轉運箱在轉運過程的安全防護,我們的思路是把集中保管處和使用處等可按要求提前部署相當水準的安全防護系統的固定點,稱為安全堡壘區,通過基站發送藍牙信标進行标記。然後智能轉運箱根據基站發送的安全堡壘區信标,實作對安全堡壘區的識别,進入轉運目的地的安全堡壘區後自動解除保險,全程實作自動控制以避免人來開鎖所具有的天然的高風險。

根據這一思路,我們分解出主要的工作任務:

  • 用基站來标記安全堡壘區,在核驗安全堡壘區符合相關制度所規定的安全防護标準後,必須在系統中通過審批流程的審批後自動指派基站進入工作狀态。此後如掉電、斷網等可能導緻基站移動的情況出現後,基站自動切換到故障狀态并告警,必須現場再次核驗後才能在系統中複位其工作狀态

注:在管理制度中分别對應基站開通流程與基站修複流程,jxTMS銜接這兩個流程自動設定基站工作狀态,以避免人為設定的風險

  • 基站進入工作狀态後,廣播一個藍牙信标,用于智能轉運箱的測距,以判定智能轉運箱是否處于安全堡壘區中;同時提供無線AP功能,用于智能轉運箱登入後通路系統伺服器,來走完整個轉運流程
  • 智能轉運箱自動識别安全堡壘區的出區事件和【到達轉運目的地的】入區事件,将兩事件之間視為高危的在途狀态,并自動布防:箱門鎖閉,全程錄像,開門與逾時則高音警号報警;進入指定的安全堡壘區後,自動撤防:電鎖開啟、取消定時器、回庫後自動上傳錄像檔案等
  • 智能轉運箱沒有手控操作點,報警後高音警号鳴叫,這時需要執行一系列專業而繁瑣的消警處置動作,以增加攻擊者的暴露時間
  • 以轉運和使用的分工界面為安全責任轉移點,圍繞安全責任的轉移來設計轉運流程,實作以智能硬體來保障管理制度的落地

注:本文主要講解智能轉運箱的軟體實作,箱體防護與硬體設計不涉及。

jxTMS智能硬體支援下的業務管控體系

jxTMS的智能硬體支援下的業務管控體系是:

用jxTMS開發智能轉運箱(1)

即jxTMS的智能硬體支援下的業務管控分為兩個系統:

  • 業務系統,即之前介紹過的jxTMS的業務管理部分,主要處理業務辦理、業務流轉、業務管控等管理制度落地的部分
  • 智能硬體的控制系統,即對智能硬體的裝置管理、事件報告、控制等

兩者以目錄服務為紐帶進行勾連,可在業務過程中嵌入智能硬體的操作與回報,進而強制規範操作以推動管理制度的落地、業務合規。

也就是說,jxTMS智能硬體支援下的業務管控的立足點是以智能硬體的防卡控來落地管理制度,即将智能硬體嵌入到業務過程中,確定資料采集、卡口防控、責任交接清晰準确而且不可繞過,進而以不可繞過、可追溯、可審計、責任明确來推動業務合規。

業務系統和智能硬體控制系統以目錄服務進行勾連,前端智能硬體系統以事件的形式報告到jxTMS中,jxTMS以指令的方式下達管理指令。

智能硬體向的jxTMS報告的事件包括兩類,一類是系統事件,包括:

  • checkRegister:前端系統向jxTMS注冊時觸發,可在本事件的響應函數中對待注冊的前端系統執行準入審查,如未通過審查,則可拒絕其注冊
  • register:jxTMS準許前端系統注冊時觸發本事件
  • stateChange:前端系統報告狀态變化時觸發本事件
  • del:前端系統失聯時觸發本事件

另一類是使用者自定義事件。

這兩類事件的響應處理都隻需在用myModule.initAtLoad修飾的函數中用listenStateChange注冊就好:

#使用者自定義的transTaskReport事件的響應函數
def dualTransTaskReport(self,db,c,param):
	......

#initAtLoad修飾的函數在組織加載本子產品【系統啟動、管理者執行熱機重新整理操作】時,會被自動調用
@myModule.initAtLoad('initDevDual')
def initDevDual(self, org):
	#擷取本組織的目錄服務,沒有則建立
	cs = catalogService.addCS2Org(org.getAbbr())
	#在此目錄服務中注冊事件響應函數dualTransTaskReport函數,用以響應transBox類型的裝置報告的transTaskReport事件
	cs.listenStateChange('transBox','transTaskReport',self.dualTransTaskReport)
           

智能硬體向jxTMS報告transTaskReport也非常簡單:

def _inform(self,active,msg=None):
	#ps是自定義的參數,就是響應函數dualTransTaskReport中所接收到的param
	ps = {}
	ps['type'] = self._type
	ps['name'] = self._name
	ps['taskOrder'] = self.taskOrder
	ps['active'] = active
	......
	#調用基礎服務所提供的inform2CatalogService函數向jxTMS報告transTaskReport事件
	self.inform2CatalogService('transTaskReport',ps)
           

智能硬體系統主要包括三個部分:

  • 裝置管理,即該硬體所管理的前端軟硬裝置,如智能轉運箱中的輸入輸出裝置【Modbus RTU】、時鐘等
  • 作為目錄服務的前端實作的系統管理子產品,事件和jxTMS下達的指令執行都在這一部分實作,是以這一部分是智能硬體的主要與驅動子產品。同時還提供了基礎服務,如消息服務、shell調用、本地日志、遠端日志、系統狀态等
  • 邏輯控制部件,主要用于實作本硬體的控制邏輯,jxTMS提供了狀态機、模糊推理、序列捕獲/模式識别、決策表等邏輯部件,智能轉運箱隻用到了狀态機

智能硬體系統的實作包括兩個層面:

  • 裝置管理【包括具體的裝置功能實作】、消息、日志、邏輯部件等主要功能都是用go實作的,然後編譯為so庫
  • 目錄服務的前端以及系統管理等基本架構,是用python實作的,以CTypes方式調用so庫加以整合後提供了智能硬體的系統架構