999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenPLC的醫療儀器通信協議轉換平臺設計

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

嚴意煒 鄭建立

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

關鍵詞:醫療儀器;信息集成;數據轉化;協議轉換;組件化;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-),男,上海理工大學醫療器械與食品學院碩士研究生,研究方向為醫學儀器嵌入式技術;鄭建立(1965-),男,博士,上海理工大學醫療器械與食品學院副教授、碩士生導師,研究方向為醫學信息系統與集成技術、醫學儀器嵌入式控制系統。本文通訊作者:鄭建立。

0 引言

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

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

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

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

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

1 通信協議轉換模型

1.1 通信協議轉換框架

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

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

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

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

圖1 通信協議轉換框架

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

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

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

1.2 數據處理層

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

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

圖2 數據處理層功能結構

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

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

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

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

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

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

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

2 軟件設計與實現

2.1 運行環境與數據傳輸過程

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

圖3 OpenPLC系統體系結構

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

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

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

2.2 模塊定義與編寫

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

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

圖4 CRC模塊設置

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

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

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

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

圖6 CRC模塊測試

3 數據幀協議測試

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

表1 某型號血透機數據幀數據及說明

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

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

轉化組件將輸入的數據以JSON格式輸出,屬性名為Amounts of Heparin,值為數據具體內容。

圖7 數據幀協議配置第三層數據處理層

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

圖8 模擬血透機輸入數據

圖9 返回接收數據

4 結語

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

參考文獻:

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

[2] 鄭建立,廖蕓,楊勇勇. 基于醫療健康信息集成規范的醫療儀器信息集成技術的研究[J]. 生物醫學工程學雜志,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引擎的醫療儀器協議轉換技術研究[J]. 信息技術,2013,37(3):66-69,73.

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

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

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

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

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

[10] 王蔚庭. 解析工業編程語言國際標準IEC61131-3[J]. 國內外機電一體化技術,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] 劉希遠,沈國敏,李峰,等. 編譯原理在通信協議轉換中的應用[J]. 甘肅工業大學學報,2000(3):69-72.

[13] 田祥雨. 基于用戶接口協議的數據包編解碼軟件開發[D]. 哈爾濱:哈爾濱工業大學,2017.

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

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

[16] 梁家政,薛質. 網絡數據歸一化處理研究[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編程系統的設計[J]. 數字技術與應用,2017(12):9-11.

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

(責任編輯:杜能鋼)

主站蜘蛛池模板: 国产精品视频第一专区| 国产精品亚洲天堂| 婷婷六月天激情| JIZZ亚洲国产| 国产精品刺激对白在线| 欧美成人午夜视频| 91亚洲视频下载| 欧美成人午夜视频| 毛片免费试看| 亚洲第一区欧美国产综合| 亚洲一区二区三区麻豆| 欧美性精品| 欧美午夜网| 精品综合久久久久久97超人| 中文字幕伦视频| 亚洲精品国产精品乱码不卞 | 欧美综合中文字幕久久| 97se亚洲| 中文字幕乱码中文乱码51精品| 六月婷婷精品视频在线观看| 亚洲成A人V欧美综合| 伊人成人在线| 丰满人妻中出白浆| 国产欧美成人不卡视频| 1769国产精品视频免费观看| 免费无码在线观看| 麻豆国产在线不卡一区二区| 大学生久久香蕉国产线观看| 亚洲动漫h| 秋霞国产在线| 亚洲日本精品一区二区| 国产一区自拍视频| 国产精品人莉莉成在线播放| 熟妇人妻无乱码中文字幕真矢织江 | 波多野结衣无码AV在线| 狠狠色丁香婷婷综合| 欧美精品另类| 国产成人久久综合777777麻豆 | 久热中文字幕在线| 无码中文字幕乱码免费2| 热99re99首页精品亚洲五月天| 亚洲一区二区三区在线视频| 9久久伊人精品综合| 午夜国产理论| 99在线视频网站| 国产精品欧美亚洲韩国日本不卡| 偷拍久久网| 在线a视频免费观看| 中文字幕在线免费看| 伊人激情综合网| 超级碰免费视频91| 最新国产精品鲁鲁免费视频| 国产精品原创不卡在线| 国产91在线|日本| 久草网视频在线| 成人在线不卡| 91无码国产视频| 综合色亚洲| 综合天天色| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 久久这里只有精品66| 国产欧美中文字幕| 欧美黄网站免费观看| 久草国产在线观看| 亚洲日本精品一区二区| 国产原创演绎剧情有字幕的| 广东一级毛片| 一本大道AV人久久综合| 福利一区在线| 国产尤物jk自慰制服喷水| 18禁影院亚洲专区| 五月天丁香婷婷综合久久| 色综合久久88| 亚洲va在线观看| 永久天堂网Av| 成人午夜网址| 久久青草免费91线频观看不卡| 亚洲成a∧人片在线观看无码| 午夜人性色福利无码视频在线观看| 深夜福利视频一区二区| 啪啪啪亚洲无码| 国产精品冒白浆免费视频|