丁廷洋,龔時(shí)華,鄧建春,馬 海,孫愷文
(華中科技大學(xué) 機(jī)械科學(xué)與工程學(xué)院,武漢 430074)
質(zhì)子治療裝置是國際上新型治愈腫瘤的大型醫(yī)療設(shè)備,是一套極其精密復(fù)雜的系統(tǒng),涉及加速器物理、磁鐵、真空、治療學(xué)、機(jī)械、輻射防護(hù)、軟件等多個(gè)學(xué)科領(lǐng)域,綜合性較強(qiáng)。旋轉(zhuǎn)機(jī)架是質(zhì)子放療設(shè)備中的關(guān)鍵部件,其具有結(jié)構(gòu)大的特點(diǎn)主要功能是對治療頭、束流輸運(yùn)線等關(guān)鍵部件進(jìn)行承重,承載重量從100~200噸不等。除此之外,質(zhì)子治療裝置在進(jìn)行放療時(shí),一般會(huì)從多個(gè)角度對腫瘤組織進(jìn)行放射。因?yàn)橘|(zhì)子治療如果只用一個(gè)照射方向,則皮膚與腫瘤間的正常細(xì)胞會(huì)受到較大的腫瘤輻射劑量,從而形成不同程度的傷害。所以為減少這部分損害帶來的負(fù)面影響和增加治療的焦皮比值,目前的治療療程采取從不同方向照射的方案,將總劑量分成多個(gè)輻射方向,使得腫瘤前部的正常細(xì)胞僅受到1/3左右的相對劑量,而腫瘤后的正常細(xì)胞基本上不會(huì)受到損傷。其中旋轉(zhuǎn)機(jī)架的作用就是支撐質(zhì)子束流從不同的角度照射至病灶的機(jī)械結(jié)構(gòu),因此幾乎所有的質(zhì)子治療中心都配置了多臺(tái)旋轉(zhuǎn)機(jī)架且對旋轉(zhuǎn)精度要求很高。
質(zhì)子治療旋轉(zhuǎn)機(jī)架僅自帶本地控制系統(tǒng),因此工作人員只能在機(jī)架周圍進(jìn)行人為操作控制。為了滿足與治療頭等設(shè)備的聯(lián)合調(diào)試的需求,需要工作人員在總控制室終端遠(yuǎn)程控制質(zhì)子治療旋轉(zhuǎn)機(jī)架,并對旋轉(zhuǎn)機(jī)架的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)跟蹤。同時(shí),旋轉(zhuǎn)機(jī)架周圍環(huán)境存在高壓和強(qiáng)輻射等因素的危險(xiǎn),會(huì)對工作人員的身體造成傷害。因此,亟需為工作人員提供更安全的且適用于化療過程的操作環(huán)境。目前,針對質(zhì)子治療系統(tǒng)的終端控制問題,文獻(xiàn)[1]中利用Pcaspy實(shí)現(xiàn)了遠(yuǎn)程控制計(jì)算機(jī)到上海質(zhì)子治療裝置中控室內(nèi),基于EPICS控制系統(tǒng)的接入并通過遠(yuǎn)程控制界面實(shí)現(xiàn)了對質(zhì)子注入器的實(shí)時(shí)狀態(tài)進(jìn)行監(jiān)控,以及對質(zhì)子注入器的重要參數(shù)進(jìn)行遠(yuǎn)程設(shè)置的功能。美國ProBeam質(zhì)子治療系統(tǒng)是監(jiān)控掃描治療頭動(dòng)態(tài)峰值的關(guān)鍵。該系統(tǒng)終端控制治療關(guān)鍵參數(shù),使所有功能都通過一個(gè)集成用戶控制臺(tái)實(shí)現(xiàn),讓用戶能夠直觀且高效地完成任務(wù)[2]。
同時(shí),由于醫(yī)護(hù)平臺(tái)與旋轉(zhuǎn)機(jī)架連接在一起,旋轉(zhuǎn)機(jī)架在運(yùn)動(dòng)狀態(tài)下及旋轉(zhuǎn)至一定角度時(shí),醫(yī)護(hù)平臺(tái)會(huì)隨旋轉(zhuǎn)機(jī)架一起旋轉(zhuǎn),無法使醫(yī)生在平臺(tái)上工作。因此需要開發(fā)一種同步運(yùn)動(dòng)控制模型,實(shí)現(xiàn)機(jī)架和醫(yī)護(hù)平臺(tái)的同步運(yùn)動(dòng)。沈榮[3]等提出了基于繼電器方法的PID自整定方法,使系統(tǒng)反應(yīng)迅速,超調(diào)量小。劉青正[4]等在傳統(tǒng)PID控制算式的基礎(chǔ)上引入了同步偏差調(diào)節(jié)項(xiàng)構(gòu)成新的PID閉環(huán)同步控制器,并驗(yàn)證了算法的有效性。張德政[5]等運(yùn)用交叉耦合控制策略,分別設(shè)計(jì)4臺(tái)轉(zhuǎn)向電機(jī)的位置補(bǔ)償器。
針對以上問題,本文以質(zhì)子治療旋轉(zhuǎn)機(jī)架作為控制對象,基于C/S模式開發(fā)一套從總控服務(wù)端到工控機(jī)客戶端,再由工控機(jī)客戶端到PLC控制器控制電機(jī)驅(qū)動(dòng)器的質(zhì)子治療旋轉(zhuǎn)機(jī)架控制系統(tǒng)。同時(shí),為了滿足旋轉(zhuǎn)機(jī)架運(yùn)動(dòng)狀態(tài)下醫(yī)護(hù)平臺(tái)水平的需求,設(shè)計(jì)了旋轉(zhuǎn)機(jī)架電機(jī)和醫(yī)護(hù)平臺(tái)踏板電機(jī)的同步運(yùn)動(dòng)模型。其中的系統(tǒng)總控服務(wù)端在TCP協(xié)議的基礎(chǔ)上采用了Socket通信接口和多線程架構(gòu)實(shí)現(xiàn)與工控機(jī)客戶端的通信。而工控機(jī)客戶端則基于S7.Net庫對PLC控制器發(fā)送指令。最后通過質(zhì)子治療旋轉(zhuǎn)機(jī)架的現(xiàn)場試驗(yàn)驗(yàn)證了該控制系統(tǒng)能夠滿足質(zhì)子治療過程中的控制需求。
集中控制方式曾廣泛應(yīng)用于工業(yè)控制系統(tǒng)中,所有的功能都在一個(gè)處理模塊中實(shí)現(xiàn),然而由于放射治療對其控制系統(tǒng)功能和性能的要求十分嚴(yán)格,若采用集中控制方式會(huì)使得系統(tǒng)的可靠性和功能擴(kuò)展能力受到很大的限制,并且會(huì)導(dǎo)致系統(tǒng)監(jiān)控對象過于復(fù)雜和龐大,使系統(tǒng)的運(yùn)行速度和可維護(hù)性受到一定的影響[6-7]。因此,質(zhì)子治療控制系統(tǒng)采用主從分布式控制方式,把系統(tǒng)模塊分為9個(gè)子系統(tǒng)模塊,分別為加速器系統(tǒng)、束流系統(tǒng)、機(jī)架系統(tǒng)、圖像引導(dǎo)系統(tǒng)、治療頭系統(tǒng)、治療床系統(tǒng)、附件系統(tǒng)、安全系統(tǒng)以及總控制臺(tái)。每個(gè)子模塊都具有自主處理能力,并由總控制中心通過系統(tǒng)網(wǎng)絡(luò)實(shí)現(xiàn)集中下發(fā)指令和實(shí)時(shí)監(jiān)控。這種控制方式符合放射治療控制系統(tǒng)的功能和性能要求,也為未來進(jìn)行功能模塊擴(kuò)展提供了便利。
本文著眼于研究總控制室到機(jī)架系統(tǒng)的控制系統(tǒng)??刂葡到y(tǒng)的硬件配置結(jié)構(gòu)如圖1所示,由總控服務(wù)端、上位工控機(jī)客戶端、PLC控制器和伺服驅(qū)動(dòng)器所組成。首先,總控服務(wù)端與工控機(jī)客戶端之間以TCP/IP協(xié)議為基礎(chǔ),采用了Socket通信接口和多線程架構(gòu)直接通訊,并在設(shè)計(jì)的人機(jī)交互界面上提供了參數(shù)設(shè)置、人機(jī)接口、數(shù)據(jù)顯示和故障診斷等功能。而工控機(jī)客戶端則采用以太網(wǎng)的方式連接PLC控制器,并基于S7.Net庫實(shí)現(xiàn)發(fā)送運(yùn)動(dòng)控制指令和讀取機(jī)架狀態(tài)數(shù)據(jù)的功能。PLC 控制器根據(jù)上位機(jī)發(fā)出的運(yùn)動(dòng)指令通過IO模塊分別向機(jī)架驅(qū)動(dòng)器和踏板驅(qū)動(dòng)器輸出脈沖和方向信號,驅(qū)動(dòng)器通過接收的脈沖頻率和數(shù)量控制伺服電機(jī)運(yùn)行的速度和角度,伺服電機(jī)上的編碼器將角度、速度信息反饋到PLC控制器,再由上位工控機(jī)讀取數(shù)據(jù)發(fā)送回總控服務(wù)端。
圖1 控制系統(tǒng)硬件配置結(jié)構(gòu)圖
對于總控系統(tǒng)的控制軟件,包含有“治療”模式和“物理師”模式兩種模式?!爸委煛蹦J绞歉鶕?jù)治療排程,完成病人質(zhì)子治療的整個(gè)過程?!拔锢韼煛蹦J筋愃朴谥委熌J?,但可以重復(fù)導(dǎo)入治療計(jì)劃文件執(zhí)行流程,且治療時(shí)的特定參數(shù)與指標(biāo)可以超越,是用于QA目的,物理師結(jié)合臨床經(jīng)驗(yàn),用真實(shí)的治療計(jì)劃數(shù)據(jù),驗(yàn)證治療過程的質(zhì)量,不影響真實(shí)的病人治療數(shù)據(jù)。其中模式之間是互斥性的,一種模式執(zhí)行完成后,另一種模式才可以執(zhí)行,不能混亂。執(zhí)行過程中,不能被另一種模式中斷。
在進(jìn)行質(zhì)子治療過程中,為了實(shí)現(xiàn)旋轉(zhuǎn)機(jī)架運(yùn)行狀態(tài)的實(shí)時(shí)跟蹤,軟件界面上應(yīng)當(dāng)顯示機(jī)架的實(shí)時(shí)狀態(tài),包括機(jī)架的當(dāng)前角度和當(dāng)前速度,踏板的狀態(tài)等關(guān)鍵信息。質(zhì)子治療設(shè)備一般從多個(gè)角度對腫瘤組織進(jìn)行放射,各角度放射劑量總和達(dá)到所需劑量即可,這樣皮膚和腫瘤之間的正常組織細(xì)胞只需接受較低的放射量,大大降低了放療給患者所帶來的額外傷害,因此,軟件需能夠控制旋轉(zhuǎn)機(jī)架以目標(biāo)速度轉(zhuǎn)動(dòng)到目標(biāo)角度,以保證質(zhì)子束能從各個(gè)角度對腫瘤進(jìn)行照射,同時(shí),軟件應(yīng)當(dāng)設(shè)置機(jī)架的步進(jìn)功能。在醫(yī)護(hù)平臺(tái)上,還有一個(gè)氣動(dòng)踏板裝置,踏板用于給醫(yī)生提供站立位置,因此軟件需能夠控制踏板的伸出或縮回,滿足治療過程的功能需求。為了保證工作人員和設(shè)備的安全,軟件應(yīng)當(dāng)設(shè)置急停功能,避免發(fā)生意外事故。在下位機(jī)PLC控制器中,需設(shè)計(jì)一種同步運(yùn)動(dòng)控制模型,使驅(qū)動(dòng)機(jī)架旋轉(zhuǎn)的電機(jī)和驅(qū)動(dòng)醫(yī)護(hù)平臺(tái)旋轉(zhuǎn)的電機(jī)保持同步運(yùn)動(dòng)狀態(tài),以保證醫(yī)護(hù)平臺(tái)在工作時(shí)的水平。
Socket可以看成是兩個(gè)網(wǎng)絡(luò)應(yīng)用程序進(jìn)行通信時(shí),各自通信連接中的端點(diǎn),用一個(gè)IP地址和一個(gè)端口號標(biāo)識[9]。其中,服務(wù)端至少需要?jiǎng)?chuàng)建兩個(gè)Socket對象,一個(gè)負(fù)責(zé)監(jiān)聽客戶端的連接請求,另一個(gè)則負(fù)責(zé)與客戶端的通信,這個(gè)Socket是在收到客戶端連接時(shí)創(chuàng)建??蛻舳送ㄟ^創(chuàng)建一個(gè)Socket對象來初始化一個(gè)到服務(wù)端的TCP連接,其中必須指定要連接的服務(wù)端的IP地址和端口[10]。
如圖2所示,Socket的通信基本流程為:總控制室先啟動(dòng)并初始化服務(wù)端程序。程序運(yùn)行后會(huì)先利用Bind函數(shù)綁定固定端口,再調(diào)用Listen函數(shù)在端口處監(jiān)聽客戶端的連接請求。一旦接收到客戶端的連接請求,服務(wù)端程序就會(huì)立即調(diào)用Accept函數(shù)接受客戶端的連接請求,達(dá)到與客戶端進(jìn)行連接的目的[11]。檢測到客戶端連接無誤,程序?qū)⒗^續(xù)進(jìn)行,否則將重復(fù)以上步驟。在服務(wù)端程序運(yùn)行期間,工控機(jī)將啟動(dòng)客戶端程序??蛻舳顺绦騿?dòng)后會(huì)先調(diào)用Connect函數(shù)向服務(wù)端遞交連接請求。服務(wù)端收到請求并與客戶端成功連接后,就可以實(shí)現(xiàn)向客戶端發(fā)送命令的功能。最后客戶端將讀取命令并回應(yīng)服務(wù)端,一次服務(wù)端與客戶端的交互就此結(jié)束。
圖2 旋轉(zhuǎn)機(jī)架控制系統(tǒng)通信流程圖
PLC內(nèi)部數(shù)據(jù)的傳統(tǒng)讀寫方式是利用觸摸屏組態(tài),和HMI建立連接并傳輸數(shù)據(jù)。而S7.Net提供了另一種連接方式,可以利用C#讀寫PLC內(nèi)部的數(shù)據(jù)。與傳統(tǒng)方式相比,使用S7.Net可以做出比WinCC更強(qiáng)大的界面,可以對數(shù)據(jù)更好的利用,可以更高頻率獲取PLC數(shù)據(jù)。
圖3為旋轉(zhuǎn)機(jī)架雙電機(jī)驅(qū)動(dòng)示意圖,在大多數(shù)工作情況下,為了保證醫(yī)護(hù)平臺(tái)處于水平狀態(tài),需將控制機(jī)架和踏板的電機(jī)設(shè)置為反向同步運(yùn)動(dòng)模式。
圖3 旋轉(zhuǎn)機(jī)架雙電機(jī)驅(qū)動(dòng)示意圖
2.3.1 同步運(yùn)動(dòng)控制模型組成
本同步運(yùn)動(dòng)控制模型采用主從式結(jié)構(gòu)的同步系統(tǒng),利用PROFINET方式實(shí)現(xiàn)主軸和從軸間的同步運(yùn)動(dòng)。這個(gè)過程需要運(yùn)用兩臺(tái)PLC進(jìn)行操作,使它們通過PROFINET進(jìn)行連接,分別負(fù)責(zé)驅(qū)動(dòng)旋轉(zhuǎn)機(jī)架運(yùn)動(dòng)的電機(jī)作和驅(qū)動(dòng)醫(yī)護(hù)平臺(tái)旋轉(zhuǎn)的電機(jī)的運(yùn)動(dòng)控制。其中驅(qū)動(dòng)旋轉(zhuǎn)機(jī)架運(yùn)動(dòng)的電機(jī)軸作為引導(dǎo)軸,負(fù)責(zé)其運(yùn)動(dòng)的PLC1作為主控制器,并采用Ethernet的方式與上位機(jī)進(jìn)行交互;驅(qū)動(dòng)醫(yī)護(hù)平臺(tái)旋轉(zhuǎn)的電機(jī)軸作為跟隨軸,負(fù)責(zé)其運(yùn)動(dòng)的PLC2為從控制器。模型結(jié)構(gòu)簡圖如圖4所示。
圖4 模型結(jié)構(gòu)簡圖
該模型使用的PLC1和PLC2控制器均采用當(dāng)今廣泛使用的西門子S7-1500PLC控制器。其使得用戶程序可通過運(yùn)動(dòng)控制指令啟動(dòng)引導(dǎo)軸和跟隨軸的運(yùn)動(dòng)控制工作,也可以根據(jù)運(yùn)動(dòng)控制指令的輸出參數(shù)實(shí)時(shí)反映運(yùn)行中作業(yè)的狀態(tài)。除此之外,其還可以使用工藝數(shù)據(jù)塊在運(yùn)行期間訪問運(yùn)動(dòng)軸的狀態(tài)信息及更改特定的組態(tài)參數(shù)。
2.3.2 同步運(yùn)動(dòng)控制模型原理
同步運(yùn)動(dòng)控制操作原理如圖5所示,將驅(qū)動(dòng)旋轉(zhuǎn)機(jī)架運(yùn)動(dòng)的電機(jī)作為跟隨軸和驅(qū)動(dòng)醫(yī)護(hù)平臺(tái)旋轉(zhuǎn)的電機(jī)作為引導(dǎo)軸相關(guān)聯(lián)。啟動(dòng)主控制器PLC1后,PLC1會(huì)將上位機(jī)輸入的運(yùn)動(dòng)控制指令解碼轉(zhuǎn)換成速度指令來控制引導(dǎo)軸運(yùn)動(dòng),然后將速度指令轉(zhuǎn)碼成指定的脈沖信息。脈沖信息再通過PROFINET傳遞至從控制器PLC2,最后由PLC2控制跟隨軸與引導(dǎo)軸同步運(yùn)動(dòng)。因此以上操作過程被稱為同步操作過程,按以下3個(gè)階段實(shí)現(xiàn):第一階段是將跟隨軸與主值進(jìn)行同步;第二階段是跟隨軸按照同步操作功能跟隨引導(dǎo)軸的位置進(jìn)行同步運(yùn)動(dòng);第三階段則是超馳同步操作,主動(dòng)同步操作會(huì)被跟隨軸上的運(yùn)動(dòng)控制工作超馳。在進(jìn)行同步操作過程中,由引導(dǎo)軸提供同步操作的主值,本文系統(tǒng)中引導(dǎo)軸和跟隨軸的耦合主值為1 144:500。
圖5 同步運(yùn)動(dòng)控制模型
總控系統(tǒng)與所有子系統(tǒng)基于TCP協(xié)議直接通訊,因此約定消息頭,發(fā)送固定消息體,不需要消息尾,通過解析數(shù)據(jù)包根據(jù)標(biāo)識屬性來進(jìn)行業(yè)務(wù)處理。約定消息頭為16字節(jié)。其中1~4字節(jié)約定傳遞8 888作為消息開始的標(biāo)識,5~8字節(jié)約定為消息的總長度。9~12字節(jié)約定為數(shù)據(jù)內(nèi)容的長度。13~16字節(jié)作為補(bǔ)位,后期考慮用于標(biāo)識消息類型,如圖片、文本、文件等。17字節(jié)開始為數(shù)據(jù)內(nèi)容,數(shù)據(jù)內(nèi)容應(yīng)遵循約定的數(shù)據(jù)格式。
質(zhì)子治療控制系統(tǒng)屬于醫(yī)療軟件系統(tǒng),對數(shù)據(jù)的實(shí)時(shí)性有較高要求,為了減少數(shù)據(jù)傳遞的大小并易于解析,故約定數(shù)據(jù)格式類型為Json格式。數(shù)據(jù)內(nèi)容包括6個(gè)字段,如表1所示,分別為MessageId、DevicedId、SessionId、ActionCode、ActionType和Data。其中MessageId是消息唯一Id,一般取GUID或UUID(保證唯一即符合條件),消息發(fā)送必須有回復(fù),MessageId作為消息回復(fù)確認(rèn)的標(biāo)識,一來一回表示一個(gè)完整的消息周期。DevicedId是設(shè)備Id,用來標(biāo)識子系統(tǒng),每個(gè)子系統(tǒng)都應(yīng)該有一份初始配置,記錄其他子系統(tǒng)的設(shè)備ID,或者約定使用子系統(tǒng)的標(biāo)識,例:TCS、GNT等。SessionId是會(huì)話Id,消息傳遞之間各端的會(huì)話Id,通訊開始時(shí)交換SessionId,一次完整的會(huì)話通訊中需要保持一致,不允許改變,每次通訊需要驗(yàn)證該會(huì)話是否存在,作為預(yù)留字段。ActionCode是動(dòng)作編碼,每次數(shù)據(jù)交互都有特定的意義,為每個(gè)需要通訊的業(yè)務(wù)場景進(jìn)行編碼,標(biāo)識動(dòng)作內(nèi)容,固定4個(gè)字符長度1 000~9 999共9 000個(gè)Code。ActionType是動(dòng)作類型,一共分為5個(gè):Inform(通知)、Command(指令)、Exception(異常)、Confirm(消息確認(rèn))、Heartbeat(心跳),用編號代替,與動(dòng)作編碼配合使用。Data是消息的具體內(nèi)容,需要序列化,根據(jù)不用業(yè)務(wù)場景內(nèi)容也不同,等待接口確定后,可具體約定。
表1 數(shù)據(jù)內(nèi)容字段信息
MFC通信功能基于Socket接口編程實(shí)現(xiàn),為多線程架構(gòu),分為界面線程和工作線程。前者用來獨(dú)立地處理用戶輸入和響應(yīng)用戶事件,后者用于后臺(tái)任務(wù)??偪胤?wù)端主要負(fù)責(zé)監(jiān)聽客戶端的連接與斷開,在界面線程創(chuàng)建套接字,獲取工控機(jī)的IP地址和端口號,在工作子線程完成接收數(shù)據(jù)工作,在檢測到連接成功的前提下會(huì)采用一問一答式與工控機(jī)交換信息,提高系統(tǒng)效率。
如圖6所示,左側(cè)為總控服務(wù)端工作流程,右側(cè)為工控機(jī)客戶端工作流程。其主要工作流程是:總控服務(wù)端開啟Socket服務(wù),調(diào)用Socket類中的Listen()方法負(fù)責(zé)監(jiān)聽,同時(shí)調(diào)用Accept()方法等待工控機(jī)發(fā)送連接請求。工控機(jī)客戶端調(diào)用Connect()方法每隔100 ms向服務(wù)端發(fā)送連接申請。成功連接后,程序設(shè)置了100 ms時(shí)鐘函數(shù),總控服務(wù)端每隔100 ms調(diào)用Send()方法向客戶端發(fā)送詢問當(dāng)前狀態(tài)指令,以獲取旋轉(zhuǎn)機(jī)架實(shí)時(shí)狀態(tài),并且設(shè)置旋轉(zhuǎn)機(jī)架工作模式,發(fā)送運(yùn)動(dòng)指令。并對工控機(jī)客戶端返回的數(shù)據(jù)進(jìn)行處理,在界面上顯示出當(dāng)前角度、當(dāng)前速度和踏板位置等關(guān)鍵信息。
圖6 通信功能工作流程圖
總控服務(wù)端界面如圖7。在收到工控機(jī)返回工作模式設(shè)置完成之后,工作人員便可以在服務(wù)端界面上設(shè)置設(shè)定角度和設(shè)定速度,以及踏板位置,程序則會(huì)將數(shù)據(jù)打包發(fā)送給工控機(jī),工控機(jī)程序解包數(shù)據(jù),將各個(gè)參數(shù)寫入PLC,并且啟動(dòng)電機(jī)時(shí)會(huì)向PLC發(fā)送一個(gè)上升沿,緩沖0.5 s之后,再給PLC一個(gè)下降沿,模擬一次0.5 s按鍵動(dòng)作??刂铺ぐ暹\(yùn)動(dòng)時(shí),設(shè)置按鈕關(guān)閉,待踏板運(yùn)動(dòng)完成之后,按鈕才會(huì)重新亮起,防止發(fā)生意外事故。此外,軟件在執(zhí)行的每個(gè)方法上使用S7.Net庫中的錯(cuò)誤處理的方法,以在運(yùn)行驅(qū)動(dòng)程序時(shí)捕獲錯(cuò)誤信息,并返回錯(cuò)誤代碼。
圖7 服務(wù)端界面
工控機(jī)客戶端界面如下圖8所示。界面上方為手動(dòng)連接Socket和PLC部分,在Socket連接區(qū)中設(shè)置總控服務(wù)端IP地址和端口號,在PLC中設(shè)置PLC的IP地址和PLC類型。界面下方則是本地機(jī)架控制部分,用于本地調(diào)試從工控機(jī)到PLC控制器的控制功能。右側(cè)則是顯示工控機(jī)客戶端收到的消息,用于調(diào)試總控服務(wù)端到工控機(jī)客戶端的Socket通信功能。
圖8 客戶端界面
如圖9所示,該P(yáng)LC控制系統(tǒng)主要設(shè)置有手動(dòng)模式和自動(dòng)模式兩種工作模式,由兩檔選擇開關(guān)進(jìn)行選擇。手動(dòng)模式主要用于調(diào)試系統(tǒng)在自動(dòng)模式下的控制功能,其中有控制氣動(dòng)踏板功能,設(shè)置機(jī)架的運(yùn)動(dòng)模式,有增量轉(zhuǎn)動(dòng)和連續(xù)轉(zhuǎn)動(dòng)功能,同時(shí),可以控制機(jī)架運(yùn)動(dòng)速度和設(shè)定目標(biāo)角度;自動(dòng)模式則是實(shí)際正常工作所使用的控制程序,其中控制機(jī)架和氣動(dòng)踏板的電機(jī)有兩種控制方式,分別為同步轉(zhuǎn)動(dòng)和異步轉(zhuǎn)動(dòng),大多數(shù)情況下都需要使用同步轉(zhuǎn)動(dòng),這樣可以在機(jī)架運(yùn)動(dòng)或者傾斜一定角度時(shí),醫(yī)護(hù)平臺(tái)始終保持水平,保證醫(yī)生在醫(yī)護(hù)平臺(tái)上操作的安全性。
圖9 PLC功能控制框
如圖10所示,首先將驅(qū)動(dòng)旋轉(zhuǎn)機(jī)架運(yùn)動(dòng)的電機(jī)作為引導(dǎo)軸,將驅(qū)動(dòng)醫(yī)護(hù)平臺(tái)旋轉(zhuǎn)的電機(jī)作為跟隨軸,通過運(yùn)動(dòng)控制指令“MC_Gearln”,在跟隨軸和引導(dǎo)軸之間啟動(dòng)齒輪傳動(dòng)操作,通過參數(shù)“Jerk”、“Acceleration”和“Deceleration”定義同步的跟隨軸的動(dòng)態(tài)行為,使用參數(shù)“RatioNumerator”和“RatioDenominator”將傳動(dòng)比指定為兩個(gè)整數(shù)之間的關(guān)系(分子/分母),其中分子的符號決定跟隨軸轉(zhuǎn)動(dòng)方向。在滿足上述要求之后,在“Master”和“Slave”參數(shù)中指定引導(dǎo)軸、跟隨軸,在參數(shù)“Execute”的上升沿開始作業(yè)。跟隨軸將與引導(dǎo)軸的主值同步。如果“InGear”參數(shù)的值為True,跟隨軸會(huì)同步并與引導(dǎo)軸同步運(yùn)動(dòng),完成了機(jī)架與醫(yī)護(hù)平臺(tái)的同步運(yùn)動(dòng)模式。
圖10 同步運(yùn)動(dòng)控制程序塊
圖11則表示跟隨軸和引導(dǎo)軸啟動(dòng)同步運(yùn)動(dòng)模式的信號時(shí)間圖。首先使用“Exe_1”,初始化“MC_Gearln”作業(yè)。然后給“Exe_1”一個(gè)上升沿信號,啟動(dòng)“MC_Gearln”作業(yè),同時(shí)“Busy_1”信號變?yōu)門rue,表示作業(yè)正在運(yùn)行。最后跟隨軸將與引導(dǎo)軸進(jìn)行同步,“InGear_1”則會(huì)在時(shí)間①處發(fā)出跟隨軸已同步并與引導(dǎo)軸同步運(yùn)動(dòng)的信號。
圖11 同步運(yùn)動(dòng)信號時(shí)間圖
質(zhì)子治療設(shè)備旋轉(zhuǎn)機(jī)架現(xiàn)場圖如圖12所示。系統(tǒng)調(diào)試完成后,將軟件服務(wù)端下載至控制室計(jì)算機(jī)中,軟件客戶端下載至工控機(jī)中,通過網(wǎng)線連接,用博圖軟件將算法上傳至PLC中。首先將客戶端軟件與PLC進(jìn)行連接,連接成功后將服務(wù)端與客戶端通過Socket連接。界面如圖13所示,連接成功后,服務(wù)端將會(huì)每隔100 ms給客戶端發(fā)送詢問狀態(tài)指令,當(dāng)客戶端返回狀態(tài)信息時(shí)。首先根據(jù)返回的狀態(tài)信息,檢測旋轉(zhuǎn)機(jī)架的工作模式,與設(shè)置的工作模式不同則向工控機(jī)發(fā)送更改工作模式指令,工控機(jī)則控制PLC重新設(shè)置旋轉(zhuǎn)機(jī)架的工作模式。
圖12 現(xiàn)場試驗(yàn)控制電機(jī)圖
圖13 軟件實(shí)現(xiàn)情況
在總控制室使用服務(wù)端程序遠(yuǎn)程進(jìn)行了多次測試。首先測試控制旋轉(zhuǎn)機(jī)架在運(yùn)動(dòng)范圍內(nèi)的運(yùn)動(dòng)功能。設(shè)置旋轉(zhuǎn)機(jī)架以6 °/s的運(yùn)動(dòng)速度旋轉(zhuǎn)至180度,再以同樣的速度旋轉(zhuǎn)至0度,之后繼續(xù)設(shè)置旋轉(zhuǎn)機(jī)架以6 °/s的運(yùn)動(dòng)速度旋轉(zhuǎn)至-180度,再以同樣的速度旋轉(zhuǎn)至0度。實(shí)驗(yàn)過程中軟件顯示旋轉(zhuǎn)機(jī)架都是在規(guī)定時(shí)間內(nèi)加速到設(shè)定速度,運(yùn)動(dòng)一段時(shí)間再以相同加速度減速,精準(zhǔn)停在設(shè)定角度。結(jié)果表明該系統(tǒng)可以終端控制旋轉(zhuǎn)機(jī)架以0.1~1 rpm在-180°~180°范圍內(nèi)運(yùn)動(dòng)。
然后是測試控制旋轉(zhuǎn)機(jī)架的步進(jìn)功能。設(shè)置步進(jìn)速度為2 °/s,步進(jìn)角度為2度,服務(wù)端不斷向客戶端發(fā)送以步進(jìn)速度旋轉(zhuǎn)步進(jìn)角度的命令,軟件顯示旋轉(zhuǎn)機(jī)架以設(shè)定速度精準(zhǔn)旋轉(zhuǎn)了步進(jìn)角度。結(jié)果表明該系統(tǒng)可以終端控制旋轉(zhuǎn)機(jī)架以步進(jìn)速度旋轉(zhuǎn)步進(jìn)角度。
最后則是測試控制氣動(dòng)踏板伸出和收回的功能。在控制室使用服務(wù)端程序分別發(fā)送踏板伸出、踏板收回指令。通過傳感器檢測出踏板都能夠伸出和收回至目標(biāo)位置,同時(shí)在踏板伸出或收回過程中服務(wù)端程序都不能中斷或下發(fā)下一個(gè)命令,保證醫(yī)生在踏板上工作的安全。結(jié)果表明該系統(tǒng)可以終端控制氣動(dòng)踏板的伸出或收回。
通過系統(tǒng)實(shí)踐測試,Socket服務(wù)端界面中的所有功能均能運(yùn)行正常,滿足質(zhì)子治療過程的控制需求。旋轉(zhuǎn)機(jī)架可以根據(jù)用戶自定義設(shè)定目標(biāo)角度和設(shè)定速度進(jìn)行旋轉(zhuǎn)。其中旋轉(zhuǎn)機(jī)架運(yùn)動(dòng)范圍可覆蓋-180°~180°,旋轉(zhuǎn)機(jī)架轉(zhuǎn)速能達(dá)到0.1~1 rpm,且自由可調(diào),滿足質(zhì)子治療過程中的常規(guī)轉(zhuǎn)速。氣動(dòng)踏板也可以通過界面上的伸出或收回按鈕進(jìn)行運(yùn)動(dòng)控制。
使用Scout軟件測試驅(qū)動(dòng)旋轉(zhuǎn)機(jī)架運(yùn)動(dòng)的電機(jī)和驅(qū)動(dòng)醫(yī)護(hù)平臺(tái)運(yùn)動(dòng)的電機(jī)的速度數(shù)據(jù),將測得的兩電機(jī)的設(shè)定速度和實(shí)際速度數(shù)據(jù)進(jìn)行處理,轉(zhuǎn)換為機(jī)架轉(zhuǎn)速和踏板轉(zhuǎn)速,處理結(jié)果如表2所示。表中機(jī)架和踏板的設(shè)定速度和實(shí)際速度的速度偏差幾乎為0,將表中機(jī)架和踏板的實(shí)際速度畫成圖14所示的速度時(shí)間圖,可以看出,踏板電機(jī)和機(jī)架電機(jī)在1 144:500的耦合比下進(jìn)行反向同步轉(zhuǎn)動(dòng),速度曲線幾乎一樣,速度偏差幾乎為零。據(jù)此可以判斷同步運(yùn)動(dòng)控制模型實(shí)現(xiàn)了旋轉(zhuǎn)機(jī)架和醫(yī)護(hù)平臺(tái)的反向同步運(yùn)動(dòng),符合質(zhì)子治療過程的控制要求。將機(jī)架和踏板的實(shí)際速度的差值作為誤差,如圖15誤差分析圖所示,機(jī)架和踏板的速度誤差在-0.015~0.01 °/s,相對誤差為0.01%~0.1%,同步性能較好,驗(yàn)證了PLC同步控制技術(shù)在旋轉(zhuǎn)機(jī)架自動(dòng)模式的要求下的可行性。
圖14 同步電機(jī)速度時(shí)間圖
圖15 誤差分析圖
本文針對質(zhì)子治療設(shè)備旋轉(zhuǎn)機(jī)架的控制需求,開發(fā)了一套基于Socket和S7.net的質(zhì)子治療旋轉(zhuǎn)機(jī)架終端控制系統(tǒng)。服務(wù)端總控室和客戶端工控機(jī)成功連接,以及客戶端工控機(jī)與PLC控制器連接后,先進(jìn)行設(shè)置工作模式和檢測機(jī)架狀態(tài)等預(yù)處理,然后服務(wù)端總控室實(shí)時(shí)監(jiān)控旋轉(zhuǎn)機(jī)架狀態(tài),按照治療方案不斷地向客戶端工控機(jī)發(fā)送運(yùn)動(dòng)指令,控制旋轉(zhuǎn)機(jī)架完成任務(wù)。通過現(xiàn)場試驗(yàn)表明該系統(tǒng)實(shí)現(xiàn)了終端控制旋轉(zhuǎn)機(jī)架運(yùn)動(dòng),實(shí)時(shí)監(jiān)控機(jī)架狀態(tài),適用于化療過程中的工作環(huán)境。
同時(shí),采用西門子S7-1500PLC控制器設(shè)計(jì)了一種同步運(yùn)動(dòng)模型,采用主從式結(jié)構(gòu),利用PROFINET方式實(shí)現(xiàn)旋轉(zhuǎn)機(jī)架和醫(yī)護(hù)平臺(tái)間的同步運(yùn)動(dòng)。通過測試驅(qū)動(dòng)旋轉(zhuǎn)機(jī)架運(yùn)動(dòng)的電機(jī)速度和驅(qū)動(dòng)醫(yī)護(hù)平臺(tái)運(yùn)動(dòng)的電機(jī)速度的實(shí)驗(yàn),驗(yàn)證了在1 144:500的耦合比下,機(jī)架電機(jī)和踏板電機(jī)同步轉(zhuǎn)動(dòng)能夠保證醫(yī)護(hù)平臺(tái)在機(jī)架工作狀態(tài)下保持水平。