電子發燒友網核心提示:一款電子醫療設備的設計、開發和上市準備可能比擁有同等技術復雜度的消費級設備要花費更多的時間、努力和成本。除了一般的開發和審批需求,醫療器械還有嚴格的功能安全和認證要求。這些要求都意味著醫療器械擁有嚴格定義和管理的設計、開發和審批環境,并需要對功能安全進行廣泛和精細的驗證。
當然,醫療器械在上市之前必須得到產品銷售地和使用地主管當局的相關認證,比如:FDA 510(k)上市前通告、醫療器械指令(MDD)和其他國際和國家機構頒發的認證。
本文描述了醫療數據聚合器和發布者(QNX公司醫療演示)中的PPS消息傳送。QNX醫療演示(MD)在便攜式演示應用中整合了血壓計、肺活量計、脈搏氧飽和度儀、心電圖和胰島素泵。這些設備連接至QNX康體佳互通性管理器上,并利用QNX PPS消息傳送與Qt HMI進行通信。PPS也為遠程管理器提供了消息傳送服務,以確保與基于云的數據庫和便攜式平板電腦之間進行安全互聯網通信。由于帶有PPS消息傳送功能的系統可以簡易地整合不同的組件,我們可以得出結論:PPS消息傳送功能非常適用于像QNX MD應用之類的系統。
圖1:QNX MD演示
異步消息傳送
異步消息已眾所周知并得到廣泛應用,這里不再贅述。它是很多系統可選的解決方案,但其一些特性使它難以成為需要集成大量器件和軟件的系統的理想解決方案。
圖2:采用異步消息傳送,進程無須等待目標接收進程的回復
對于復雜醫療設備的消息傳送模式,值得注意的是,異步消息傳送是一個低端的解決方案——它將錯誤處理、端到端語義和緩沖管理等負擔推高至應用程序級。因此,架構師在設計采用異步消息傳送模式的系統時,必須開發一個或多個協議,以確保在所有應用中消息傳送正確進行,因為它們必須保證這些應用程序在高負載條件下能夠獲得足夠的內存分配用于消息緩沖。
在簡單的系統中,完成這些任務可能不太費勁,但對于設計或升級復雜的系統,這些任務可能構成艱巨的挑戰。進一步來說,它們給應用程序級或者應用開發流程帶來的復雜操作不僅會影響設計和開發進程,也會影響設備的審批,進而影響設備認證。
發送/接收/回復
發送/接收/回復(或者同步)消息傳送不如異步消息傳送那樣常見。它的重要性主要體現在實時環境中——許多進程必須先響應其消息后才能繼續運行。此外,與異步消息傳送不同的是,采用發送/接收/回復消息傳送時,系統框架會承受處理消息傳送錯誤和消息緩沖的負擔。
每個服務器都與其客戶端直接通信,而且必須知道如何響應所有的客戶端消息。
同步消息傳送密切聯系著發送方和接收方,因此,更改一個軟件組件可能需要更改其他的軟件組件,這不僅延緩或阻礙了系統開發,還加劇了系統的脆弱性。
圖3:采用同步消息傳送,進程阻塞直到它接收到從目標接收進程發出的回復
總之,如果采用發送/接收/回復消息傳送,當系統不斷擴展并增加不同組件時,系統的復雜性會迅速加劇,變得不堪一擊,因此很難在確保性能和對醫療器械來說極為重要的可靠性的同時進行升級和擴展。
二進制還是可讀對象?
PPS服務可設計成使用二進制對象或可讀對象。
我們選擇將可讀對象和屬性用于QNX PPS,因為與較大對象的成本相比,其具有更大的開發和調試優勢。
可讀對象允許使用簡單的文件系統工具從命令行進行調試,比如cat命令用于訂閱,echo命令用于發布。
舉例來說:
cat /pps/media/PlayCurrent
cat /pps/media/.all?wait
或
echo “attr::value”》》/pps/objectfilename
同樣,調試信息(包括PPS對象和屬性)能夠通過訂閱一個對象并打印出來的簡單程序被檢索到。
持久發布/訂閱
對于實時操作系統(比如必須滿足嚴格的可靠性和可獲取性要求的QNX Neutrino RTOS)來說,發送/接收/回復消息傳送模式非常適用,甚至是有強制要求。但是,和異步消息傳送一樣,發送/接收/回復消息傳送也不是復雜系統的最佳選擇,特別是當這些系統必須輕松地集成不同的應用和功能時。發送/接收/回復消息傳送密切聯系著發送方和接收方。
發布/訂閱已經以各種形式存在了至少20年。1987年,K.P.Birman和T.A.Joseph將類似的消息傳送模式(虛擬同步)描述為“一種容錯的異步公告牌機制”。
二十年前,北電網絡公司應用了一種類似模型以在電話交換機(如DMS-100)上進行故障監測,并使用了網絡監測和報告系統的技術。只要在網上快速搜索,就能找到許多發布/訂閱的應用實例。再深入搜索,還能在美國計算機協會(ACM)的門戶網站上找到幾百份與發布/訂閱的某些方面或其他觀察者模式計算模型有關的文章。
我們將重點介紹,在重啟時也能確保持續性的發布/訂閱模型或PPS如何能夠幫助不僅支持各種設備和軟件組件、而且能與復雜人機界面進行通信的嵌入式應用程序進行開發和部署。
我們對QNX MD使用了基于Qt的HMI,但是PPS消息傳送模式的優勢也可以應用于由其他技術建造的HMI。實際上,在其他系統上已經應用了PPS,包括QNX CAR應用平臺和Smart Energy參考應用,這兩者都擁有基于Adobe Flash的HMI。
基于對象的系統
PPS是在松耦合消息傳送架構中針對發布者和訂閱者提供的一種基于對象的服務。根據實現服務的需要,任何PPS服務客戶端都既可以是單獨的發布者或訂閱者,也可以既是發布者又是訂閱者。
發布以異步方式進行。PPS對象集成在PPS文件系統的路徑名空間中。發布者可修改對象及其屬性并將其寫入到文件系統中。當任何發布者更改對象時,PPS服務都會通知訂閱該對象的所有客戶端。PPS客戶端能訂閱多個對象,PPS對象可以有多個發布者和多個訂閱者。因此,能訪問應用到不同對象屬性的數據的發布者可使用相同對象與該對象的所有訂閱者交流信息。
PPS客戶端必須知道感興趣的是哪些PPS對象。如果是發布方,他們需要知道在什么時候發布什么消息;如果是訂閱者,他們需要知道訂閱的對象種類和感興趣的對象屬性。然而,PPS客戶端不必管理錯誤,只需在使用open()、read()和write() POSIX API調用的范圍內緩沖,確認其理解讀取的內容以及是否希望讀取處于阻塞或非阻塞狀態。PPS服務會負責處理其他內容??蛻舳酥恍枰酪炎x取消息并且能分析讀取內容。同樣,由于PPS訂閱者使用read()調用檢索對象,他們無需管理這些對象的緩沖區。
推送還是提???
在默認狀態下,QNX PPS服務是作為推送式發布系統運行的;也就是說,發布者會將數據推送到對象中,訂閱者會根據通知或在閑暇時讀取數據。
但有些數據(如接口上的數據包計數)變化太快,因此無法通過使用默認推送發布的PPS有效地進行發布。
為此,QNX PPS還提供了一種選項,允許訂閱者將PPS變成提取式發布系統。當訂閱者打開具有該選項的對象并發出一個read()調用時,該對象的所有發布者會收到一個通知以在對象中寫入當前數據。訂閱者的讀取會一直阻塞直至對象的數據得到更新并返回新的數據。
利用這種提取機制,PPS訂閱者能按其需要的速度向發布者檢索數據,從而實現了真正意義上的按需發布。
語言獨立
PPS服務可以設計成使用標準POSIX文件系統,并能與所有編程語言或應用程序環境連用,包括C、C++、Java、Javascript、ksh腳本語言等。
以一種語言編寫的組件能與使用其他語言編寫的組件通信。無需具備其他組件的專門知識。
持久性
PPS服務可以在重啟時維護數據。它不僅能在運行時維護內存中的對象,而且能在運行時按照需要或在關機時將對象保存到永久性存儲器中。它能在系統啟動時或在首次訪問(延遲加載)時恢復對象。當然,底層永久性存儲器依賴于可靠的文件系統和存儲介質,如硬盤、NAND或NOR閃存或其他定制文件系統。
除了能在重啟時確保數據的持久性以外,PPS消息傳送模式還能簡化系統啟動。例如,在使用另一種消息傳送模式的系統中,如果客戶端緊隨服務器之后啟動,該客戶端必須向服務器請求最新數據,以防在服務器和客戶端啟動之間的時間段內發生某些變化。當客戶端與服務器失去聯系(無論何種原因導致)時會發出這種請求,系統中所有的客戶端都會發出這樣的請求,而且服務器必須做出響應。
采用PPS時,系統服務會在啟動時恢復對象并在其更改時進行維護。所有客戶端(無論何時啟動或者重新連接)只需讀取這些對象以獲取最新數據即可。
系統可擴展性
利用PPS服務,發布者與訂閱者之間并不認識;他們之間唯一的聯系是具有某種含義和用途的對象。這種消息傳送模式賦予了系統設計者極大的靈活性:如有必要,他們可以將關于模塊連接點和數據流的決策推遲到運行時間再做出。因為這些決定既非硬編碼,也沒有直接聯系,開發人員可以根據實際情況或要求的變化改變決定,甚至還能在系統運行時動態地更改決定。
松耦合PPS消息傳送模式還能簡化新軟件組件的集成。由于發布者和訂閱者不必認識對方,增加組件的開發人員只需要確定這些新組件的發布內容,以及他們需要其他PPS客戶端發布的數據內容。開發人員無需精確地調整應用程序接口;系統復雜性不會隨組件的增加而加劇。
醫療演示
作為QNX軟件系統公司開展的醫療器械開發計劃的一部分,運行QNX Neutrino RTOS的系統中設計和創建了QNX MD數據聚合和發布應用,以在便攜式醫療器械提供的有限的計算資源上運行。該應用利用基于康體佳標準的互通性管理器、PPS和用戶界面框架Qt創建的HMI,將一系列典型設備組合起來。
Qt和CESL
選擇Qt用戶界面和康體佳使能軟件庫(CESL)的互通性管理器是因為這兩種技術都在醫療器械行業享有盛譽。Qt在C++開發環境中提供了一套明確定義的UI組件,并且有著在獲得了FDA及其他規定認證的醫療器械上成功實現的悠久歷史。
圖5:帶有PPS消息傳送模式的QNX MD數據聚合和發布應用。需要注意,PPS為HMI和互通性管理器以及遠程管理器提供所有消息傳送
Qt提供了打造符合嚴格設計要求的清晰、高效的用戶界面所需的所有組件,包括布局、分層和多媒體支持。與之類似,康體佳軟件庫中的通信協議不僅提供了與完全不同的醫療器械進行通信的簡單方法,而且是一個早已在醫療器械中成功部署的標準化協議。簡而言之,Qt和康體佳技術滿足所有需求,并且為醫療器械行業所熟知和信任。
簡化的架構
QNX MD演示應用使用PPS服務的一個重要好處是松耦合的消息傳送模式可以實現靈活的架構。如果出于任何原因而必須要求這樣的改變,也僅需要極少量的工作來用另一個庫替代康體佳庫,或者替代HMI的Qt。
改變HMI技術無需改變互通性管理器或者遠程管理器,就像改變這些管理器不會要求改變HMI一樣。此外,PPS消息傳送模式也便于添加新的設備,可以利用標準的康體佳協議通過USB、藍牙甚至TCP將新的設備連接至系統。例如,僅需利用康體佳協議將一個EEG連接至互通性管理器,創建適當的PPS對象與數據庫、本地HMI和平板電腦上的遠程HMI交流數據,并在HMI中添加相關的顯示和控制功能,即可將該EEG添加到可行性論證模型中。
在使用其他消息傳送模式的系統中,組件彼此緊密聯系,也與人機界面密切聯系。每個組件都要了解需要與其交換數據的其他組件——在這種系統架構中更改或增加內容勢必會困難重重、耗費時間和充滿風險。PPS消息傳送模式的另一個優勢是它可以簡化測試和功能安全驗證,因為增加新的組件無需重新訪問其他所有組件之間的消息傳送。
最后,PPS消息傳送簡化了品牌重塑、本地化和用戶界面更新。因為HMI通過PPS對象與系統的其余組件進行通信,所以用戶界面設計者僅需確保新的或改變的HIMI所訂閱和發布的PPS對象與先前HMI的PPS對象相同。他們不需要改變HMI下面任一行代碼。在完全相同的基礎系統上,僅需通過不同的界面、實現不同的特性或者不同區域的不同HMI設計(例如支持不同的寫入系統或不同的顏色偏好和意義),即可打造出各種產品系列。
本文小結
QNX MD應用展現了PPS消息傳送可以如何應用于松耦合的醫療器械架構中。該設計實現了HMI和支持標準康體佳協議的互通性管理器之間靈活、強大的通信。這個互通性管理器還可與外部組件設備通信。由于組件僅僅根據實施需求來發布和訂閱PPS對象,他們不需要了解對方,因此不費吹灰之力就可以擴展或修改系統。實際上,PPS組件的松耦合架構使更改、升級和擴展任務變得更加輕松,從而減少了風險。
關于QNX軟件系統公司
QNX軟件系統公司是Research In Motion公司(RIM)的子公司,是嵌入式系統市場上操作系統、中間件、開發工具和專業服務的領軍者。包括思科、戴姆勒、通用電氣、洛克希德?馬丁和西門子在內的眾多全球知名技術領先企業,都將QNX技術應用在網絡路由器、車載遠程信息處理裝置、工業控制系統、醫療設備、安全防衛系統和其他任務關鍵性和生命關鍵型應用中。QNX軟件系統公司成立于1980年,總部位于加拿大渥太華,其產品銷售至全球100多個國家或地區。
評論
查看更多