国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OpenPLC的醫(yī)療儀器通信協(xié)議轉換平臺設計

2019-10-11 11:24:36嚴意煒鄭建立
軟件導刊 2019年7期

嚴意煒 鄭建立

摘 要:醫(yī)療儀器信息集成已成為醫(yī)療衛(wèi)生信息化不可或缺的一環(huán)。由于非影像類醫(yī)療儀器信息傳輸標準滯后,使這類醫(yī)療儀器信息集成發(fā)展較為緩慢。通過分析多種通信協(xié)議,利用圖形化編程優(yōu)勢,基于OpenPLC設計實現(xiàn)了一種醫(yī)療儀器通信協(xié)議轉換軟件的組件化設計平臺。使用模塊拼接完成醫(yī)療儀器數(shù)據(jù)幀協(xié)議轉換配置,在保證協(xié)議轉換通用性、易用性的同時,降低了使用人員的技術門檻。

關鍵詞:醫(yī)療儀器;信息集成;數(shù)據(jù)轉化;協(xié)議轉換;組件化;OpenPLC

DOI:10. 11907/rjdk. 182726 開放科學(資源服務)標識碼(OSID):

中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2019)007-0133-04

Design of Communication Protocol Conversion Platform for

Medical Instrument Based on OpenPLC

YAN Yi-wei,ZHENG Jian-li

(School of Medical Instrument and Food Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)

Abstract: The information integration of medical devices has become an indispensable part of medical and health informatization. Because of the lag of information transmission standard, the development of non-imaging medical instruments information integration is relatively slow. By analyzing various communication protocols and taking advantage of graphical programming, this design realizes a component design platform of communication protocol conversion software for medical instruments based on OpenPLC. The splicing of the module is used to complete the configuration of the data frame protocol conversion of the medical instrument. It guarantees the universality and easiness of protocol transformation while lowering the technical threshold of users.

Key Words: medical instrument; information integration; data conversion; protocol conversion; component-based; OpenPLC

基金項目:上海市科委科技支撐項目(17-C-2)

作者簡介:嚴意煒(1993-),男,上海理工大學醫(yī)療器械與食品學院碩士研究生,研究方向為醫(yī)學儀器嵌入式技術;鄭建立(1965-),男,博士,上海理工大學醫(yī)療器械與食品學院副教授、碩士生導師,研究方向為醫(yī)學信息系統(tǒng)與集成技術、醫(yī)學儀器嵌入式控制系統(tǒng)。本文通訊作者:鄭建立。

0 引言

隨著醫(yī)療衛(wèi)生信息化的快速發(fā)展,數(shù)字化醫(yī)療儀器應用越來越廣泛。醫(yī)療儀器除了本身治療及診斷功能外,將采集到的數(shù)據(jù)有效而準確地輸出也是醫(yī)療儀器制造商所關心的問題。

目前,影像類醫(yī)療儀器集成已有較為成熟的信息傳輸標準DICOM。對于非影像類醫(yī)療儀器而言,雖然國際組織HL7、IHE提供了信息集成解決方案[1],但是并沒有被所有醫(yī)療儀器制造商所接受,使得非影像類醫(yī)療儀器信息集成發(fā)展較為緩慢[2],醫(yī)院使用的非影像類醫(yī)療儀器依然存在諸多廠商自定義的信息接口、數(shù)據(jù)通信協(xié)議以及通信方式[3],阻礙了醫(yī)療儀器信息集成的發(fā)展。

目前解決該問題的辦法就是針對已知協(xié)議編寫對應的通信程序。為解決重復編寫協(xié)議轉化程序,基于JS引擎的醫(yī)療儀器協(xié)議轉換方案[4],通過腳本調(diào)用生成轉換程序,支持不同的醫(yī)療儀器協(xié)議。也有基于程序生成技術的解決方案[5],只需通過網(wǎng)頁端對幀格式進行配置即可自動生成轉化函數(shù)。在非醫(yī)療儀器領域,有通過協(xié)議模版進行轉化的集成網(wǎng)關案例[6-7],通過將協(xié)議分成幀頭、幀尾、位處理以及函數(shù)處理4部分對協(xié)議模版進行定義,也有通過各個數(shù)據(jù)元素映射實現(xiàn)數(shù)據(jù)幀格式轉換[8]。上述解決方案對于結構復雜協(xié)議或是牽涉到復雜的計算或單位轉化,需要編寫額外的程序或是腳本進行適配,技術門檻較高。

在工業(yè)控制方面,面對復雜而重復的設計,PLC可以有效降低開發(fā)和維護成本[9]。PLC具備IEC61131-3規(guī)范的編程語言標準,對使用者技術門檻要求較低,使用起來較為方便[10]。其中的功能塊圖作為一種圖形化的編程語言,通過模塊之間的相互連接即可完成配置。對使用者而言,只需要知道模塊的外部特性即可,不需要了解其內(nèi)部結構和原理[11]。

本文基于OpenPLC設計了一種通用的醫(yī)療儀器通信協(xié)議轉換軟件平臺。根據(jù)醫(yī)療儀器數(shù)據(jù)協(xié)議轉換流程,歸納分析通信協(xié)議數(shù)據(jù)轉換所必要的模塊,通過OpenPLC編輯器實現(xiàn)這些功能模塊。技術人員只需對模型進行連接配置,無需編程即可完成醫(yī)療儀器集成網(wǎng)關協(xié)議轉換的配置。對輸入或輸出協(xié)議沒有限制,可以是HL7等標準格式,也可以是廠商自定義的格式。

1 通信協(xié)議轉換模型

1.1 通信協(xié)議轉換框架

醫(yī)療儀器通信協(xié)議轉換的根本目的是將輸入的字節(jié)流中醫(yī)療儀器中的數(shù)據(jù)提取出來,并將之轉換成符合目標格式規(guī)范的數(shù)據(jù)幀輸出,其流程如圖1所示。

輸入、輸出通訊組件是在硬件接口及通信參數(shù)與協(xié)議上提供支持。輸入通訊組件將醫(yī)療儀器數(shù)據(jù)通過字節(jié)流形式傳入到解析組件,而輸出通訊組件則是將轉化組件所得到的數(shù)據(jù)幀傳至醫(yī)療信息系統(tǒng)中。

解析組件目的是從輸入通訊組件傳入的字節(jié)流中提取所需的數(shù)據(jù)項,并將這些數(shù)據(jù)項傳入轉化組件,主要流程是:對傳入的字節(jié)流進行同步、校驗等處理,得到正確的數(shù)據(jù)幀。再根據(jù)輸入數(shù)據(jù)幀格式,將原有數(shù)據(jù)項提取出來。

解析原始數(shù)據(jù)項的難度在于,不同制造商的私有協(xié)議可能具有不同的校驗、幀同步方式,有的數(shù)據(jù)幀甚至含有多個層[12],這時的處理方式如圖1解析組件部分所示。對于多個層次的數(shù)據(jù)幀,需要用數(shù)據(jù)處理層提取出下一層協(xié)議數(shù)據(jù)單元(protocol data unit,PDU),再通過下一層的數(shù)據(jù)處理層,如此循環(huán),最終提取出原始數(shù)據(jù)項。

圖1 通信協(xié)議轉換框架

轉化組件將解析組件所傳入的原始數(shù)據(jù)項轉換成符合輸出通訊組件格式的數(shù)據(jù)幀進行輸出。對輸入的數(shù)據(jù)項,轉化組件根據(jù)輸出數(shù)據(jù)項的格式對原始數(shù)據(jù)項進行格式或數(shù)值轉化。最后根據(jù)獲得的數(shù)據(jù)項進行計算校驗,以及補充輸出數(shù)據(jù)幀的控制碼,將所有項目合并起來得到輸出數(shù)據(jù)幀。輸出通訊組件的數(shù)據(jù)幀可含有多個層,其處理方式如圖1中轉化組件部分所示。

在解析組件與轉化組件中,根據(jù)協(xié)議復雜程度的不同存在多個數(shù)據(jù)處理層,每個數(shù)據(jù)處理層由不同的功能塊拼接而成。解析組件中每個數(shù)據(jù)處理層的任務是將該層協(xié)議數(shù)據(jù)單元中的信息提取出來,成為上一層數(shù)據(jù)處理層的輸入。而轉化組件中的數(shù)據(jù)處理層作用與解析組件恰恰相反,是將上一層的協(xié)議數(shù)據(jù)單元封裝起來,與本層的其它控制信息一起組成本層協(xié)議數(shù)據(jù)單元輸出給下一層。

上述醫(yī)療儀器通信協(xié)議轉換中的解析組件和轉化組件,均在OpenPLC平臺上通過組件拼接實現(xiàn),組件化的自由性使其對于分層處理以及復雜的數(shù)值或格式轉化運算都有良好的適應性。

1.2 數(shù)據(jù)處理層

OpenPLC主要應用在控制領域,沒有為文本信息處理提供適用的組件,因此圖2所示的數(shù)據(jù)處理層所需的多數(shù)功能模塊需要自行編寫。不同的數(shù)據(jù)處理層處理功能可以不同,但總體處理步驟是相似的。

數(shù)據(jù)處理層主要對下一層協(xié)議數(shù)據(jù)單元進行處理,提取出其中正確完整的數(shù)據(jù)單元,或是將本層數(shù)據(jù)單元封裝起來,與本層其它控制信息一起組成新的協(xié)議數(shù)據(jù)單元。在這個過程中,為了保證數(shù)據(jù)幀的正確性與完整性,常用到分幀/組幀、校驗和轉義功能,以及從協(xié)議數(shù)據(jù)單元中取出數(shù)據(jù)單元,或?qū)?shù)據(jù)單元與控制信息合并成一個完整的協(xié)議數(shù)據(jù)單元,這時需要用到編碼、解碼功能[13]。在從數(shù)據(jù)項到轉化組件的數(shù)據(jù)處理過程中,進行數(shù)值格式轉化以及一些基礎運算時,OpenPLC自帶的庫函數(shù)功能不可或缺。

圖2 數(shù)據(jù)處理層功能結構

通過對多種通信協(xié)議分析,可以定義出以下通用的功能模塊:

(1)分幀/組幀:分幀模塊從字節(jié)流中識別出協(xié)議數(shù)據(jù)單元的開始和結束,組幀模塊則是在傳送前對協(xié)議數(shù)據(jù)單元加上幀的封裝。支持兩種封裝方法:①規(guī)定特殊字符或字符序列作為一幀的開始,并以固定的字段標識幀的長度;②規(guī)定一些特殊字符或字符序列作為一幀的開始與結束[14-15]。

(2)校驗:驗證協(xié)議數(shù)據(jù)單元傳送的正確性,常用方式有CRC校驗以及累加和。CRC校驗包含寬度、生成項、預設值、輸入輸出反轉等配置項。校驗部分除了編寫幾種常見的校驗模式外,還包括比較判斷這類校驗所需的功能模塊。

(3)解碼/編碼:解碼模塊從協(xié)議數(shù)據(jù)單元中將上一層的協(xié)議數(shù)據(jù)單元或數(shù)據(jù)項取出,由上一層數(shù)據(jù)處理層進一步處理。主要方式一般分為以標識符分割以及以固定長度兩種。編碼模塊則與解碼相反,是將上一層的協(xié)議數(shù)據(jù)單元加入額外信息合并起來。

(4)轉義:由于幀同步時所規(guī)定的特殊字符不能出現(xiàn)在數(shù)據(jù)內(nèi)容之中,因此會對含有特殊字符的字節(jié)進行轉義[16],用特定的換碼序列表示該字符。

(5)轉換:轉換模塊包括浮點型、整型與字符等數(shù)據(jù)類型之間的轉換,以及ASCII碼與十六進制數(shù)之間的轉換。

(6)運算:主要是加、減、乘、除、取余等借助于庫函數(shù)的基礎運算。

2 軟件設計與實現(xiàn)

2.1 運行環(huán)境與數(shù)據(jù)傳輸過程

OpenPLC作為第一個全功能標準化的開源PLC,其目的是為自動化研究提供低成本的工業(yè)解決方案[17-18]。OpenPLC項目是根據(jù)IEC 61131-3標準創(chuàng)建的,該標準支持5種編程語言。其中功能塊圖語言可由用戶事先編寫,再通過拼接的方式組成程序。本文通過功能塊圖生成主程序完成數(shù)據(jù)的解析與轉換,從而實現(xiàn)組件化設計,如圖3所示。

圖3 OpenPLC系統(tǒng)體系結構

在環(huán)境支持方面,OpenPLC支持Linux下運行軟PLC,使用Modbus-TCP協(xié)議訪問軟PLC寄存器,可以通過訪問本地網(wǎng)頁控制軟PLC、上傳配置文件。OpenPLC以“順序掃描,不斷循環(huán)”的方式執(zhí)行任務[19]。運行時,系統(tǒng)不斷掃描寄存器狀態(tài),按照順序執(zhí)行每條指令。

本文測試硬件使用裝有Linux操作系統(tǒng)及OpenPLC的樹莓派。測試時由上位機串口發(fā)送模擬數(shù)據(jù),下位機由網(wǎng)口發(fā)送處理后的數(shù)據(jù),返回至上位機。具體數(shù)據(jù)幀轉換的讀取在軟PLC的寄存器上實現(xiàn)。在軟PLC寄存器上設立4個標志位:輸入數(shù)據(jù)位、輸入標志位、輸出數(shù)據(jù)位以及輸出標志位。

在本地運行讀寫軟PLC中寄存器程序:將外部輸入的數(shù)據(jù)寫入軟PLC的輸入數(shù)據(jù)位后,修改輸入標志位,完成數(shù)據(jù)輸入;通過讀取輸出數(shù)據(jù)位,修改輸出標志位,完成數(shù)據(jù)輸出。

2.2 模塊定義與編寫

模塊定義及編寫大致分成4個步驟,以下以CRC模塊為例逐一說明。

(1)按照需求新建一個程序組織單元,如圖4所示,命名為D00CRC,類型為功能塊圖,語言為ST語言,同時OpenPLC支持在ST語言中內(nèi)嵌C語言程序,可通過GetFbVar以及 SetFbVar函數(shù)讀取輸出端口數(shù)據(jù)。

圖4 CRC模塊設置

(2)定義程序組織單元的輸入輸出參數(shù)。CRC模塊輸入輸出部分參數(shù)按CRC校驗中所需的所有參數(shù)進行設定[20],如圖5所示。DATA:輸入待檢測的字節(jié)流;CRC:輸出的校驗結果;RESET:重置控制;POLY:生成項的多項式;WIDTH:寬度,即CRC比特數(shù);INIT:算法開始時寄存器的初始化預置值;REFIN:待測數(shù)據(jù)的每個字節(jié)是否按位反轉;REFOUT:在計算之后,異或輸出之前,整個數(shù)據(jù)是否按位反轉;XOROUT:計算結果與此參數(shù)異或后得到最終的CRC值。

圖5 CRC模塊輸入輸出部分設置

(3)輸入?yún)?shù)設定后,還需完成具體模塊功能的程序編寫。這里為了方便,使用C語言程序內(nèi)嵌在ST語言中,部分代碼如下:

(4)完成程序編寫后,對模塊進行測試,測試模塊連接方式如圖6所示。測試參數(shù)使用CRC16配置:寬度16位,多項式為1021,初始值為0000,結果異或值為0000,輸入、輸出值反轉。使用send模塊發(fā)送數(shù)據(jù),使用receive模塊進行接收。變量Data為待檢測數(shù)據(jù),F(xiàn)lag為輸入標志位,變量CRC為輸出數(shù)據(jù),對模塊輸出結果與計算校驗結果進行核對,模塊通過多種參數(shù)測試后可視作完成編寫。

圖6 CRC模塊測試

3 數(shù)據(jù)幀協(xié)議測試

選擇某公司某型號血透機若干組現(xiàn)場采集數(shù)據(jù)進行測試,測試能否正確校驗數(shù)據(jù)幀,并將得到的數(shù)據(jù)以特定格式輸出。該血透機數(shù)據(jù)幀部分測試數(shù)據(jù)如表1所示。

表1 某型號血透機數(shù)據(jù)幀數(shù)據(jù)及說明

由表1可知,該數(shù)據(jù)幀以0×02位固定幀頭、以0×04為固定幀尾分幀。該數(shù)據(jù)幀非幀頭、幀尾部分也會出現(xiàn)0×02,0×04,因此需要進行轉義。轉義方式是將原字符增加0×20,前置增加一位轉義符0×1b。

根據(jù)輸入數(shù)據(jù)幀協(xié)議,可將解析組件分成三層:第一層為分幀、轉義,第二層累加和校驗,第三層為CRC16的校驗與數(shù)據(jù)項提取。第三層內(nèi)容如圖7所示。將數(shù)據(jù)位中4~14位數(shù)據(jù)計算CRC校驗后與原有校驗進行比較,如果校驗通過,將數(shù)據(jù)幀中13及14位的數(shù)據(jù)取出,傳入轉化組件。

轉化組件將輸入的數(shù)據(jù)以JSON格式輸出,屬性名為Amounts of Heparin,值為數(shù)據(jù)具體內(nèi)容。

圖7 數(shù)據(jù)幀協(xié)議配置第三層數(shù)據(jù)處理層

將配置文件上傳至裝有OpenPLC的嵌入式端,由串口接收模擬數(shù)據(jù),由網(wǎng)口發(fā)送處理后的數(shù)據(jù)。通過輸入三組數(shù)據(jù)判斷配置效果:第一組及第三組為正確的數(shù)據(jù)幀,第二組為校驗不通過的數(shù)據(jù)幀。嵌入式端完成解析后將校驗正確數(shù)據(jù)輸出,結果如圖8及圖9所示。返回了兩組校驗正確符合格式的數(shù)據(jù)幀,沒有返回校驗不通過的數(shù)據(jù)幀,表明該方案可以將數(shù)據(jù)幀中的正確數(shù)據(jù)提取出來,符合設計的基礎要求。

圖8 模擬血透機輸入數(shù)據(jù)

圖9 返回接收數(shù)據(jù)

4 結語

本文設計了一種通用醫(yī)療儀器通信協(xié)議轉換的組件化平臺,通過構建通信協(xié)議轉換模型,提取必要組件,借助OpenPLC編輯器實現(xiàn)各個組件。該設計無需編寫程序,只需通過拼接組件即可針對目標醫(yī)療儀器生成配置文件,實現(xiàn)醫(yī)療儀器通信協(xié)議轉換。與同類型的解決方案相比,該設計技術門檻較低。經(jīng)過實際數(shù)據(jù)測試,該方案對于復雜的數(shù)據(jù)幀格式具有較好的適配性。

參考文獻:

[1] IHE. Patient care devices[EB/OL]. https://wiki.ihe.net/index.php/PCD_Schedule_Archive.

[2] 鄭建立,廖蕓,楊勇勇. 基于醫(yī)療健康信息集成規(guī)范的醫(yī)療儀器信息集成技術的研究[J]. 生物醫(yī)學工程學雜志,2014,31(3): 671-677.

[3] HOFMANN R M. Modeling medical devices for plug-and-play interoperability[EB/OL]. http://xueshu.baidu.com/usercenter/paper/show?paperid=3fc577204b4d115ef825e50b8-site.

[4] 廖蕓,鄭建立. 基于JS引擎的醫(yī)療儀器協(xié)議轉換技術研究[J]. 信息技術,2013,37(3):66-69,73.

[5] 鄭建立,麥龍華,金嘉偉. 基于程序生成技術的醫(yī)療儀器通信協(xié)議轉換研究[J]. 中國醫(yī)學物理學雜志,2017,34(2):188-193.

[6] 佟立飛,李龍華. 通用網(wǎng)關協(xié)議數(shù)據(jù)轉換軟件開發(fā)[J]. 自動化技術與應用,2012,31(1):16-18.

[7] 宋志剛,蔡偉周,李劍波,等. 基于組件式軟件平臺架構的通用協(xié)議轉換器設計[J]. 機電工程技術,2018,47(7):97-99,159.

[8] 黃敬禮. 通用協(xié)議轉換設備研制[D]. 哈爾濱:哈爾濱工業(yè)大學, 2011.

[9] 楊金鴻,肖豐霞. PLC在工業(yè)自動化控制中的應用研究[J]. 科技傳播,2016,8(9):203-204.

[10] 王蔚庭. 解析工業(yè)編程語言國際標準IEC61131-3[J]. 國內(nèi)外機電一體化技術,2007(2):47-62.

[11] MEDVIDOVIC N,TAYLOR R N. A classification and comparison framework for software architecture description languages[J]. IEEE Transactions on Software Engineering,2000,26(1):70-93.

[12] 劉希遠,沈國敏,李峰,等. 編譯原理在通信協(xié)議轉換中的應用[J]. 甘肅工業(yè)大學學報,2000(3):69-72.

[13] 田祥雨. 基于用戶接口協(xié)議的數(shù)據(jù)包編解碼軟件開發(fā)[D]. 哈爾濱:哈爾濱工業(yè)大學,2017.

[14] 胡莉,張力偉,周希元. 幀同步檢測技術的研究進展[J]. 無線電工程,2009,39(2):12-15.

[15] TANENBAUM A S. 計算機網(wǎng)絡[M]. 第3版. 北京:清華大學出版社,1997.

[16] 梁家政,薛質(zhì). 網(wǎng)絡數(shù)據(jù)歸一化處理研究[J]. 信息安全與通信保密,2010(7):47-48,51.

[17] ALVES T R,BURATTO M,SOUZA F M D,et al. Openplc: an open source alternative to automation[C]. Global Humanitarian Technology Conference,2014:585-589.

[18] TANG Z Y,DONG J C,QIAO Z F,et al. Research of the soft PLC based on the open PLC[J]. Applied Mechanics & Materials,2012(141):424-428.

[19] 練淼森. 分析嵌入式軟PLC編程系統(tǒng)的設計[J]. 數(shù)字技術與應用,2017(12):9-11.

[20] 彭偉. 嵌入式系統(tǒng)CRC循環(huán)冗余校驗算法設計研究[J]. 南京信息工程大學學報:自然科學版,2012,4(3):258-265.

(責任編輯:杜能鋼)

普洱| 鹤岗市| 都兰县| 南木林县| 阿瓦提县| 浦江县| 泗洪县| 文水县| 阿巴嘎旗| 外汇| 盐源县| 烟台市| 托克托县| 娄烦县| 长沙市| 泊头市| 武夷山市| 乐东| 苍南县| 铜梁县| 密山市| 湖南省| 唐河县| 临澧县| 桃江县| 淳安县| 南京市| 龙井市| 绥中县| 静海县| 镇江市| 疏勒县| 镇安县| 水富县| 建阳市| 普洱| 江口县| 台北县| 桦甸市| 鄂州市| 桓台县|