本研究開發了一種基于坐姿的下肢康復運動控制系統,該系統包括下肢外骨骼機構、電機驅動控制電路、運動控制程序等。通過 6 個電機為髖、膝、踝關節轉動提供動力,采用 PCI-1240 運動控制卡作為控制核心,實現了下肢各關節重復性轉動訓練和步態康復訓練的速度、角度和運動時間的精確控制和調節。本文試驗結果表明,該運動控制系統能很好地滿足下肢功能障礙患者重復性康復訓練運動的需求。本文為康復訓練機器人中運動控制系統提供了更多的方法數據,可促進工業自動化設備向醫療領域轉變,有利于康復機器人的更進一步研究。
引用本文: 朱文超, 徐秀林, 胡秀枋, 安美君. 基于 PCI-1240 運動控制卡的肢體康復訓練控制系統的實現與軟件設計. 生物醫學工程學雜志, 2017, 34(3): 377-387. doi: 10.7507/1001-5515.201612053 復制
引言
肢體功能性障礙是指患者肢體完全或不能完全按照其思維控制運動[1]。近年來,由于快節奏、高壓力的現代生活方式、不健康飲食習慣以及自然災害等原因,肢體功能性障礙的發病率逐年上升,據《中國腦卒中防治報告(2015)》顯示[2],我國腦卒中發病率正以每年近 9% 的速率上升,40 歲以上人群腦卒中患病率約2%,并呈年輕化趨勢,而腦卒中患者的致殘率則高達 80%[3]。
現代康復醫學對肢體功能性障礙普遍采用運動療法,即通過大量進行重復性訓練可刺激受損的中樞神經系統的代償功能,增強大腦可塑性[4]。將自動化技術應用于醫療康復領域,由此應運而生的醫用康復機器人因其精準高效、沒有人力的經驗不足和精力有限等缺點,越來越多地受到人們的重視[5]。
現有的下肢康復訓練系統主要有懸掛站立式步態訓練系統和床板支撐式關節訓練系統兩類,前者為站立姿勢訓練,對步態訓練更貼合實際人體行走狀態,但不支持關節重復性訓練,且懸掛支撐方式使得長時間的訓練易使患者疲憊和被支撐部位不適;而后面這種床板支撐式訓練系統則由于患者采取躺臥姿勢在床板上訓練,雖然訓練輕松,適于長時間訓練,但只能進行關節屈伸重復性訓練,無法實現步態訓練,且對踝關節無法進行有效訓練。
PCI-1240 運動控制卡(PCI-1240U,研華科技)可實現 4 軸步進/脈沖伺服馬達的精準運動控制。本研究基于其高效的上位機編程開發的優點,設計并開發了一種基于坐姿的人體下肢功能康復訓練系統的運動控制系統,用于對下肢功能性障礙患者進行高效精準的康復訓練。該系統能克服現有的下肢康復訓練系統的缺點,既可以進行模擬人體行走的步態訓練,也能用于關節屈伸重復性訓練,且使用坐姿姿態訓練,不易疲勞,可長時間訓練。其運動部件為兩條機械腿外骨骼支架,其上由雙側髖、膝、踝 6 個關節組成,各關節均能實現外骨骼方向上的獨立旋轉運動,轉動的速度、角度和時間可調,可滿足不同患者各關節的訓練需求。
1 運動控制系統的設計
1.1 患者訓練方式
本文研制的下肢康復訓練系統實物如圖 1 所示,使用其訓練時,患者坐于座椅上,雙手放于扶手上,雙腳放于下肢外骨骼支架的腳踏板上;根據患者體型調節好座椅位置、兩側下肢的寬窄;外骨骼支架的大腿部分和腳踏板部分具有綁帶,可用其將患者下肢同外骨骼支架固定;訓練時控制機械腿的運動模式,以綁定的機械腿帶動患者下肢按設定方式運動,達到訓練目的。訓練時以腳踏板、小腿、大腿與地面角度分別呈 0°、65°、20°為初始位置,各關節運動以如圖 1 所示的順時針方向為正方向,反之為負方向。

1.2 功能及性能指標
本研究設計的運動控制系統,其功能包括下肢單關節重復性運動和多關節聯合運動,其中單關節運動需要實現各關節運動速度、角度和運動時間可調等功能,多關節聯合運動需要實現步態軌跡規劃、運動速度和運動時間可調等功能:
(1)雙腿的髖、膝、踝 6 個關節分別由 6 個電機驅動,彼此獨立以實現各關節角速度、運動角度可調。
(2)為實現不同患者的訓練速度要求,單關節訓練和多關節聯合訓練速度均設置慢速、中速、快速三檔可調,其中單關節運動慢速對應的髖、膝、踝關節每秒旋轉角度分別為 4°、7.5°、5°,中速對應髖、膝、踝關節每秒旋轉角度分別為 5°、10°、6°,快速對應髖、膝、踝關節每秒旋轉角度分別為 6.5°、15°、8°;多關節聯合運動的慢速、中速、快速對應的一個運動周期分別為 10 s、15 s 和 20 s。
(3)為實現不同患者的訓練時間要求,單關節訓練和多關節聯合訓練速度均設置為三個固定時間檔 10 min、20 min、30 min,并可設置自定義時間,以供不同患者選擇。
(4)為實現不同患者訓練角度需求,單關節訓練角度針對髖關節可設置 0°~26°;針對膝關節可設置 0°~68°;針對踝關節可設置 0°~42°,均無極可調。
(5)根據不同患者的訓練要求,多關節訓練可設置左腿運動訓練、右腿運動訓練、雙腿同步運動訓練和雙腿交替運動訓練四種模式。
上述各參數的實現及其控制精度均由上位機編程實現。
1.3 控制系統總體結構設計
本文設計的運動控制系統由 PCI-1240 運動控制卡、關節驅動電機、電機驅動器等硬件及運動控制軟件組成,控制系統如圖 2 所示。

本研究采用的 PCI-1240 運動控制卡是基于外設組件互連標準(peripheral component intercon-nect,PCI)設計,主控為運動控制芯片(MCX314,NOVA 公司);將其作為上位機向下位機發送控制命令的橋梁:利用其封裝的應用程序編程接口(application programming interface,API),將上位機指令通過運動控制卡轉化為脈沖等信號輸入電機驅動器,實現單電機的點到點、運動速度和用于定位的復位等運動控制;以及實現多電機聯動控制多軸直線、曲線和路徑等。
軟件開發在 Window7 系統下,使用開發工具軟件 Visual Studio 2010,調用微軟基礎類庫(micro-soft foundation classes,MFC)和研華科技運動控制類庫。通過編程向運動控制卡發送控制指令,對運動控制卡及所需功能進行初始化,在單軸操作初始化后即可控制單電機運動距離、速度等,實現單關節運動編程控制;在多軸操作初始化后,即可對多電機組設置速度、路徑等,實現多關節步態運動編程控制。
2 運動控制系統的實現
考慮機械腿自重分布等因素設計所需的動力,髖關節動力使用電動缸(SEC61-L015,格吉)(額定輸出載荷 1.4 kN,有效行程 100 mm)和伺服電機(MADKT2510CA1,松下)(功率 400 W);膝關節動力使用電動缸(SEC50-L011,格吉)(額定輸出載荷 1.4 kN,有效行程 100 mm)和伺服電機(MADKT-1507CA1,松下)(功率為 200 W);踝關節動力使用步進電機驅動器(Sw5040,澤野電機)和步進電機(SW2311N30A,澤野電機)。
各關節電機安裝和驅動方式如圖 3 所示,其中踝關節由步進電機直接帶動轉動軸實現轉動;膝關節電動缸安裝在大腿外骨骼支架下側,電動缸推桿推動小腿外骨骼支架的上部實現繞膝關節轉動軸轉動;髖關節電動缸安裝在機械腿支架內,電動缸推桿推動大腿外骨骼支架實現繞髖關節軸轉動。轉軸處均安有角度傳感器[6],可檢測或預設關節角度的大小。

2.1 控制系統電路
本研究中 PCI-1240 運動控制卡引腳擴展端子板與電機驅動器連接如圖 4 所示,控制信號有四個輸出引腳,正脈沖 P 結(pulse positive p junction,P+P)、正脈沖 N 結(pulse positive n junction,P+N)、負脈沖 P 結(pulse negative p junction,P-P)、負脈沖 N 結(pulse negative n junction,P-N);步進電機采用脈沖方向信號作為驅動信號輸入,即 P+P、P+N 輸出脈沖信號(pulse signal,PUL),P-P、P-N 輸出方向信號(directional signal,DIR);伺服電機采用輸入正負向差分脈沖信號驅動,即 P+P、P+N 輸出正向脈沖信號(clockwise pulse signal,CW)和 P-P、P-N 輸出反向脈沖信號(counter clockwise pulse signal,CCW);第 6 通用輸出(common output 6,OUT6)引腳外接伺服驅動器的使能信號;正向限位(limit plus,LMT+)引腳和負向限位(limit minus,LMT-)引腳輸入限位信號;外接直流 24 V 電源。

控制電路如圖 5 所示,PCI-1240 運動控制卡的核心芯片為 MCX314 運動控制芯片。其中,脈沖指令的輸出信號電路如圖中①部分所示,用于輸出脈沖命令,根據所選電機選擇 CW/CCW 模式或 PUL/DIR 模式。通用輸出電路如圖中②部分所示,外接達林頓電路,輸出馬達驅動器使用的通用輸出訊號,可用作清除錯誤計數器、重置警報等;本研究中將 OUT6 外接伺服驅動器使能信號端口,用于開啟/關閉伺服驅動器使能。行程限位電路如圖中③部分所示,用于系統保護和復位定位,通過光耦合器和相移電路(resistance-capacitance circuits,RC)將限位信號傳送至 MCX314 運動控制芯片。

整個控制系統硬件部分由兩個運動控制卡控制雙側的髖、膝、踝 6 個關節軸轉動,由步進電機控制座椅左右和前后移動。系統由 220 V、50 Hz 交流電源供電,通過電源轉換器將其轉換為 24 V 直流電源對控制系統供電,每個 PCI-1240 運動控制卡端子板各接一個伺服驅動器和步進驅動器,均匯總于運動控制卡。
2.2 復位運動的實現
系統在運行停止后,需要進行復位,使其回到初始位置。實現的方式為由上位機發送控制指令,控制外骨骼機械腿各關節運動至極限位置,再反向運動至初始位置,編程流程圖如圖 6 所示。使用 API 函數 Acm_AxHome 實現復位運動的控制,而函數 Acm_AxMoveRel 實現負向脈沖進行點到點運動,函數 Acm_AxGetState 獲取運動狀態。然后采用多線程方式,同時打開 6 個關節的復位線程,控制機器復位。

實現復位的關鍵代碼:
//運動至極限位置
ulErrorCode = Acm_AxHome(m_hAxis-Handle[0][2], MODE2_Lmt, DIR_POSITIVE);
do{
ulErrorCode = Acm_AxGetState(m_hAxis-Handle[0][2], &uState);
}while(STA_AX_READY != uState);
//相對運動至初始位置
ulErrorCode = Acm_AxMoveRel(m_hAxis-Handle[0][2], p->m_ulHomeDistance[0]);
do{
ulErrorCode = Acm_AxGetState(m_hAxis-Handle[0][2], &uState);
}while(STA_AX_READY != uState);
//命令位置歸零
ulErrorCode = Acm_AxSetCmdPosition(m_hAxis-Handle[0][2], 0.0);
//實際位置歸零
ulErrorCode = Acm_AxSetActualPosition(m_hAxis-Handle[0][2], 0.0);
2.3 單關節運動的實現
2.3.1 速度調節 使用 API 函數 Acm_SetProperty 設置各電機運動參數。首先建立一個用于存放各關節轉軸運動參數的結構體 structAxisParam,通過對結構體內對象賦值來設置啟動速度、運行速度等參數,再由 Acm_SetProperty 函數將值傳遞給電機。
其關鍵代碼如下:
typedefstructAxisParam
{
F64m_lfAxLowVel; //啟動速度
F64m_lfAxHighVel; //運行速度
F64m_lfAxAcc; //加速度
F64m_lfAxDec; //減速度
F64m_lfMaxVel; //最大速度
F64m_lfMaxAcc; //最大加速度
F64m_lfMaxDec; //最大減速度
}
//設置運行速度
ulErrorCode = Acm_SetProperty(m_hAxis-Han-dle[m_ulCurDev][m_ulCurAxis],PAR_AxVel-High,&m_AxisParam.m_lfHighVel,ulBufferLen);
2.3.2 角度調節 關節轉動的角度是由電機獲得的控制指令的脈沖值決定的,因此需要確定關節運動角度與輸入脈沖的關系。通過關節角度傳感器對每個關節分別測量 10 個點(從零位到極限位置),得到 10 組關節轉動角度和輸出脈沖的對應值,如圖 7 所示為下肢各關節方程線性規劃。

據此得出脈沖數—關節角度線性規劃方程:
$\text{髖關節}:y = 6\;347.4x + 145.56$ |
$\text{膝關節}:y = 6\;930.0x - 8\;333.1$ |
$\text{踝關節}:y = 2\;485.3x + 575.69$ |
如式(1)–式(3)所示,即可設置運動程序中的脈沖數來控制各關節轉動角度。
2.3.3 運動時間與運動功能 單關節訓練程序流程如圖 8 所示。首先通過標志位和已進行的時間判斷是否已完成訓練,是則關閉訓練線程,否則進入循環訓練模式,采用點到點的運動方式,首先設置需要訓練的關節角度,將角度值通過如式(1)–式(3)所示換算為輸出脈沖,使用 API 函數 Acm_AxMove-Rel 實現運動。

判斷是否完成訓練的代碼如下:
unsignedlongm_ulStartTime = GetTickCount();
while(p->m_bPTPRunning&&(p->m_ulTrainning-Time> (GetTickCount()-m_ulStartTime)/1000))
運動實現的關鍵代碼如下:
//向正方向運動
ulErrorCode = Acm_AxMoveRel(m_hAxis-Handle[p->m_ulCurDev][p->m_ulCurAxis],p->m_AxisParam.m_lfPosDistance);
//確定訓練正向運動已完成
do{
ulErrorCode = Acm_AxGetState(m_hAxis-Handle[p->m_ulCurDev][p->
m_ulCurAxis],&uState);
}while(STA_AX_READY != uState);
//向負方向運動至零位置
ulErrorCode = Acm_AxMoveRel(m_hAxis-Handle[p->m_ulCurDev][p->m_ulCurAxis],-p->m_AxisParam.m_lfNegDistance);
2.4 多關節聯合運動的實現
2.4.1 步態軌跡 以踝關節的運動軌跡進行人體工程學建模,利用三次樣條插值法求出踝關節運動軌跡的方程[7-8],步態的軌跡方程式如式(4)所示:
$y(x){\rm{ = }}\left\{ {\begin{array}{*{20}{l}}\!\!\! {- 5.04 \times {{10}^{ - 4}}{x^3} + 4.66 \times {{10}^{ - 2}}{x^2} + 0.5x + 80}&{\left( {0 < t < 0.36} \right)}\\\!\!\! {2.20 \times {{10}^{ - 5}}{x^3} - 1.46 \times {{10}^{ - 2}}{x^2} + 2.88x + 49.24}&{\left( {0.36 < t < 0.6} \right)}\\\!\!\! { - 6.78 \times {{10}^{ - 6}}{x^3} + 6.10 \times {{10}^{ - 3}}{x^2} - 2.09x{\rm{ + }}446.60}&{\left( {0.6 < t < 0.84} \right)}\\\!\!\! {3.86 \times {{10}^{ - 4}}{x^3}{\rm{ - }}0.55{x^2} + 256.62x - 3.99 \times {{10}^4}}&{\left( {0.84 < t < 1.2} \right)}\end{array}} \right.$ |
其中,y 為踝關節豎直方向上的位移量(單位:mm),x 為踝關節水平方向的位移量(單位:mm),t 為時間(單位:s)。
通過數學軟件 MATLAB 2010b 求解獲得連續平滑的軌跡曲線,軌跡實際周期為 1.2 s,但考慮到電機正反轉時,快速的加減速會影響運動的穩定性,同時為便于后期實現不同運動速度時軌跡的處理,仿真時將運動周期擴大到 5 s。將軌跡導入機械設計軟件 SolidWorks 2014 中的 Motion 插件進行仿真[9],可獲得機械腿各關節電機的路徑參數,調整參數規劃出機械腿上踝關節的實際軌跡路徑。再用 Motion 分析反推出膝關節和髖關節電動缸位移和時間的關系,所得位移—時間曲線如圖 9 所示,將位移轉換為脈沖,并通過如式(5)所示
$V = S/t$ |
其中 S 為位移對應脈沖數(單位:個),t 為時間(單位:s),計算出每段路徑的速度 V(單位:個/s),即可用于路徑文件編寫。

2.4.2 運動速度 多關節聯合運動的速度、時間的設置與單關節訓練方式相同,運動控制使用 API 函數 Acm_GpLoadPath 加載路徑文件,Acm_GpMove-Path 函數實現軸組按指定的路徑運動,用于多個關節的運動控制。
使用 PCI-1240 運動控制卡測試軟件 Common Motion Utility 中路徑編輯模塊,將軌跡編寫為路徑文件,將計算的速度等倍數減小即可得到 10 s、15 s、20 s 不同速度的模式。
多關節運動的關鍵代碼:
//讀取路徑文件
ErrorCode= Acm_GpLoadPath(m_hGroup-Handle[m_uCurGroup],“../Path/middlepath.bin”,
&m_hPathHandle[m_uCurGroup],&ulTotal-Count);
//按路徑文件執行運動
ErrorCode=Acm_GpMovePath(p->m_hGroup-Handle[p->m_uCurGroup],p->m_hPathHandle[p->m_uCurGroup]);
按左、右腿設置為兩個軸組,完成多關節聯合運動 4 種不同的形式,即左腿運動、右腿運動、雙腿同步運動、雙腿交替運動。多關節運動控制編程流程如圖 10 所示。

2.5 座椅移動動作的實現
座椅可實現前后移動和髖關節寬窄調節,電路圖如圖 11 所示。按下按鍵后,端子板輸入接口電平為高電平,座椅控制線程讀取信號后,即執行座椅前后移動或髖關節寬窄調節操作。編程中通過 API 函數 Acm_AxDiGetBit:獲取 In 端口數字信號,0 為低電平,1 為高電平。

座椅控制的關鍵代碼:
//獲取通道電平變化
Acm_AxDiGetBit(m_hAxisHandle[1][0],channel,&uchBitIn[channel]);
switch(channel){
case 1:
Acm_AxMoveVel(m_hAxisHandle[1][0],DIR_POSITIVE);
break;
case 2:
Acm_AxMoveVel(m_hAxisHandle[1][0],DIR_NEGATIVE);
Break;}
2.6 控制安全性設計
針對訓練過程中的安全性,設計包括硬件電路和軟件界面均具備急停開關,各關節運動分別具有電子限位和機械限位。硬件急停電路如圖 12 所示,急停開關位于患者右側扶手外側;軟件中在各運動線程內均有急停標志判斷語句,點擊界面急停按鈕,訓練運動立即停止;髖、膝關節電動缸上安裝的磁感應式行程開關,踝關節角度傳感器設置最大角度限位信號,超過極限位置后運動立即停止,同時各關節極限位置均設有機械定死位置,弱電子限位失效后仍能保證患者安全性。

2.5 軟件功能設計開發
本文系統中的軟件操作分為單關節訓練和多關節訓練兩種模式,單關節訓練使用時可選擇雙側髖、膝、踝 6 個關節中任意一個;訓練角度范圍分別為髖關節 0°~26°、膝關節 0°~68°、踝關節 0°~42°;訓練速度設有快速、中速、慢速三個檔位;訓練時間可選 10 min、20 min、30 min,也可自定義訓練時間;訓練界面中設有訓練倒計時顯示和急停按鈕;界面右側為足底壓力值的實時顯示。
多關節訓練與單關節訓練不同的是運動的控制只有速度選擇和運動時間選擇,運動模式可選擇左腿運動、右腿運動、雙腿同步運動和雙腿交替運動。單關節訓練操作界面如圖 13 所示。

3 可靠性測試分析
召集 6 名志愿者作為測試對象,均為健康受試者,身高(168±10)cm,體重(60±15)kg,使受試者按照訓練要求分別乘坐機器并調整好機械腿長度。對所有受試者進行兩次測試,測試時間間隔 1 天,測試環境為室內,基本視為無環境影響因素。
對單關節運動控制,選擇左踝、左膝和左髖關節進行重復性訓練,測量時間為 20 min,速度選擇快速,每個關節選擇三種常用角度。時間到達 20 min 時,讀取并記錄角度傳感器數據,計算兩次測量數據的組內相關系數(intraclass correlation coeffi-cient,ICC)如表 1–表 3 所示:



對多關節聯合運動控制,選擇左腿三個關節進行聯合步態運動測試,運動時間 20 min,速度選擇快速。時間到達 20 min 時,讀取三個關節角度傳感器數據,記錄運動最大角度,兩次測量數據如表 4 所示:

將實驗數據導入數據統計分析軟件 SPSS 19,進行可靠性分析,單關節測試中髖關節三個不同角度的 ICC 值分別為 0.955、0.860、0.811,膝關節三個不同角度的 ICC 值為 0.846、0.843、0.811,踝關節三個不同角度的 ICC 值為 0.806、0.956、0.909;多關節測試中髖關節 ICC 值為 0.918,膝關節的 ICC 值為 0.898,踝關節的 ICC 值為 0.814。以上數據組內相關系數均大于 0.75,說明該系統具有很好的可靠性[10],能夠準確完成設定的重復性訓練,保證訓練精度。
4 討論
本研究設計的下肢康復訓練運動控制系統由機械外骨骼、電機驅動電路和軟件控制程序組成,實現了下肢功能障礙患者單一關節重復性訓練和多關節聯合步態軌跡訓練等多種模式的訓練,其中單關節訓練的速度、角度和時間可調,多關節訓練分左腿運動、右腿運動、雙腿同步運動和雙腿交替運動 4 種模式,訓練速度和時間可調。利用人體工程學建模及 MATLAB、SolidWorks 等軟件規劃了下肢步態運動軌跡,設計開發了人機交互的控制模式,本文通過該系統對 6 名健康受試者進行測試,結果表明,該控制系統具有良好的可靠性。
運動療法能幫助患者維持關節活動度、增強肌力,提升大腦神經突觸可塑性,改善患者平衡功能及運動功能[11],廣泛用于腦卒中患者等運動功能障礙的康復治療。現有的智能化下肢康復訓練系統存在訓練模式單一、支撐性不足以滿足較長時間訓練或無法針對每個關節進行訓練的缺點。本研究設計的下肢訓練系統能克服現有的下肢康復訓練系統的缺點,既可以進行模擬人體行走的步態訓練,也能用于關節屈伸重復性訓練,且使用坐姿姿態訓練,不易疲勞,可長時間訓練。而該下肢訓練系統運動模式的合理性和運動過程的準確性關鍵取決于其運動控制系統,其中又包括軟件功能的合理性、整個傳動系統的協調性和運動算法的準確性。本研究采用了合理的關節驅動的傳動方式,設計了一整套包括軟件控制界面、電機驅動電路、機械運動規劃和步態軌跡算法等的下肢康復訓練控制系統,實現坐姿情況下下肢訓練的精準控制,為運動控制系統的設計開發提供了新的方法和數據,可促進工業自動化設備向醫療領域轉變,有利于康復機器人的更進一步研究。
引言
肢體功能性障礙是指患者肢體完全或不能完全按照其思維控制運動[1]。近年來,由于快節奏、高壓力的現代生活方式、不健康飲食習慣以及自然災害等原因,肢體功能性障礙的發病率逐年上升,據《中國腦卒中防治報告(2015)》顯示[2],我國腦卒中發病率正以每年近 9% 的速率上升,40 歲以上人群腦卒中患病率約2%,并呈年輕化趨勢,而腦卒中患者的致殘率則高達 80%[3]。
現代康復醫學對肢體功能性障礙普遍采用運動療法,即通過大量進行重復性訓練可刺激受損的中樞神經系統的代償功能,增強大腦可塑性[4]。將自動化技術應用于醫療康復領域,由此應運而生的醫用康復機器人因其精準高效、沒有人力的經驗不足和精力有限等缺點,越來越多地受到人們的重視[5]。
現有的下肢康復訓練系統主要有懸掛站立式步態訓練系統和床板支撐式關節訓練系統兩類,前者為站立姿勢訓練,對步態訓練更貼合實際人體行走狀態,但不支持關節重復性訓練,且懸掛支撐方式使得長時間的訓練易使患者疲憊和被支撐部位不適;而后面這種床板支撐式訓練系統則由于患者采取躺臥姿勢在床板上訓練,雖然訓練輕松,適于長時間訓練,但只能進行關節屈伸重復性訓練,無法實現步態訓練,且對踝關節無法進行有效訓練。
PCI-1240 運動控制卡(PCI-1240U,研華科技)可實現 4 軸步進/脈沖伺服馬達的精準運動控制。本研究基于其高效的上位機編程開發的優點,設計并開發了一種基于坐姿的人體下肢功能康復訓練系統的運動控制系統,用于對下肢功能性障礙患者進行高效精準的康復訓練。該系統能克服現有的下肢康復訓練系統的缺點,既可以進行模擬人體行走的步態訓練,也能用于關節屈伸重復性訓練,且使用坐姿姿態訓練,不易疲勞,可長時間訓練。其運動部件為兩條機械腿外骨骼支架,其上由雙側髖、膝、踝 6 個關節組成,各關節均能實現外骨骼方向上的獨立旋轉運動,轉動的速度、角度和時間可調,可滿足不同患者各關節的訓練需求。
1 運動控制系統的設計
1.1 患者訓練方式
本文研制的下肢康復訓練系統實物如圖 1 所示,使用其訓練時,患者坐于座椅上,雙手放于扶手上,雙腳放于下肢外骨骼支架的腳踏板上;根據患者體型調節好座椅位置、兩側下肢的寬窄;外骨骼支架的大腿部分和腳踏板部分具有綁帶,可用其將患者下肢同外骨骼支架固定;訓練時控制機械腿的運動模式,以綁定的機械腿帶動患者下肢按設定方式運動,達到訓練目的。訓練時以腳踏板、小腿、大腿與地面角度分別呈 0°、65°、20°為初始位置,各關節運動以如圖 1 所示的順時針方向為正方向,反之為負方向。

1.2 功能及性能指標
本研究設計的運動控制系統,其功能包括下肢單關節重復性運動和多關節聯合運動,其中單關節運動需要實現各關節運動速度、角度和運動時間可調等功能,多關節聯合運動需要實現步態軌跡規劃、運動速度和運動時間可調等功能:
(1)雙腿的髖、膝、踝 6 個關節分別由 6 個電機驅動,彼此獨立以實現各關節角速度、運動角度可調。
(2)為實現不同患者的訓練速度要求,單關節訓練和多關節聯合訓練速度均設置慢速、中速、快速三檔可調,其中單關節運動慢速對應的髖、膝、踝關節每秒旋轉角度分別為 4°、7.5°、5°,中速對應髖、膝、踝關節每秒旋轉角度分別為 5°、10°、6°,快速對應髖、膝、踝關節每秒旋轉角度分別為 6.5°、15°、8°;多關節聯合運動的慢速、中速、快速對應的一個運動周期分別為 10 s、15 s 和 20 s。
(3)為實現不同患者的訓練時間要求,單關節訓練和多關節聯合訓練速度均設置為三個固定時間檔 10 min、20 min、30 min,并可設置自定義時間,以供不同患者選擇。
(4)為實現不同患者訓練角度需求,單關節訓練角度針對髖關節可設置 0°~26°;針對膝關節可設置 0°~68°;針對踝關節可設置 0°~42°,均無極可調。
(5)根據不同患者的訓練要求,多關節訓練可設置左腿運動訓練、右腿運動訓練、雙腿同步運動訓練和雙腿交替運動訓練四種模式。
上述各參數的實現及其控制精度均由上位機編程實現。
1.3 控制系統總體結構設計
本文設計的運動控制系統由 PCI-1240 運動控制卡、關節驅動電機、電機驅動器等硬件及運動控制軟件組成,控制系統如圖 2 所示。

本研究采用的 PCI-1240 運動控制卡是基于外設組件互連標準(peripheral component intercon-nect,PCI)設計,主控為運動控制芯片(MCX314,NOVA 公司);將其作為上位機向下位機發送控制命令的橋梁:利用其封裝的應用程序編程接口(application programming interface,API),將上位機指令通過運動控制卡轉化為脈沖等信號輸入電機驅動器,實現單電機的點到點、運動速度和用于定位的復位等運動控制;以及實現多電機聯動控制多軸直線、曲線和路徑等。
軟件開發在 Window7 系統下,使用開發工具軟件 Visual Studio 2010,調用微軟基礎類庫(micro-soft foundation classes,MFC)和研華科技運動控制類庫。通過編程向運動控制卡發送控制指令,對運動控制卡及所需功能進行初始化,在單軸操作初始化后即可控制單電機運動距離、速度等,實現單關節運動編程控制;在多軸操作初始化后,即可對多電機組設置速度、路徑等,實現多關節步態運動編程控制。
2 運動控制系統的實現
考慮機械腿自重分布等因素設計所需的動力,髖關節動力使用電動缸(SEC61-L015,格吉)(額定輸出載荷 1.4 kN,有效行程 100 mm)和伺服電機(MADKT2510CA1,松下)(功率 400 W);膝關節動力使用電動缸(SEC50-L011,格吉)(額定輸出載荷 1.4 kN,有效行程 100 mm)和伺服電機(MADKT-1507CA1,松下)(功率為 200 W);踝關節動力使用步進電機驅動器(Sw5040,澤野電機)和步進電機(SW2311N30A,澤野電機)。
各關節電機安裝和驅動方式如圖 3 所示,其中踝關節由步進電機直接帶動轉動軸實現轉動;膝關節電動缸安裝在大腿外骨骼支架下側,電動缸推桿推動小腿外骨骼支架的上部實現繞膝關節轉動軸轉動;髖關節電動缸安裝在機械腿支架內,電動缸推桿推動大腿外骨骼支架實現繞髖關節軸轉動。轉軸處均安有角度傳感器[6],可檢測或預設關節角度的大小。

2.1 控制系統電路
本研究中 PCI-1240 運動控制卡引腳擴展端子板與電機驅動器連接如圖 4 所示,控制信號有四個輸出引腳,正脈沖 P 結(pulse positive p junction,P+P)、正脈沖 N 結(pulse positive n junction,P+N)、負脈沖 P 結(pulse negative p junction,P-P)、負脈沖 N 結(pulse negative n junction,P-N);步進電機采用脈沖方向信號作為驅動信號輸入,即 P+P、P+N 輸出脈沖信號(pulse signal,PUL),P-P、P-N 輸出方向信號(directional signal,DIR);伺服電機采用輸入正負向差分脈沖信號驅動,即 P+P、P+N 輸出正向脈沖信號(clockwise pulse signal,CW)和 P-P、P-N 輸出反向脈沖信號(counter clockwise pulse signal,CCW);第 6 通用輸出(common output 6,OUT6)引腳外接伺服驅動器的使能信號;正向限位(limit plus,LMT+)引腳和負向限位(limit minus,LMT-)引腳輸入限位信號;外接直流 24 V 電源。

控制電路如圖 5 所示,PCI-1240 運動控制卡的核心芯片為 MCX314 運動控制芯片。其中,脈沖指令的輸出信號電路如圖中①部分所示,用于輸出脈沖命令,根據所選電機選擇 CW/CCW 模式或 PUL/DIR 模式。通用輸出電路如圖中②部分所示,外接達林頓電路,輸出馬達驅動器使用的通用輸出訊號,可用作清除錯誤計數器、重置警報等;本研究中將 OUT6 外接伺服驅動器使能信號端口,用于開啟/關閉伺服驅動器使能。行程限位電路如圖中③部分所示,用于系統保護和復位定位,通過光耦合器和相移電路(resistance-capacitance circuits,RC)將限位信號傳送至 MCX314 運動控制芯片。

整個控制系統硬件部分由兩個運動控制卡控制雙側的髖、膝、踝 6 個關節軸轉動,由步進電機控制座椅左右和前后移動。系統由 220 V、50 Hz 交流電源供電,通過電源轉換器將其轉換為 24 V 直流電源對控制系統供電,每個 PCI-1240 運動控制卡端子板各接一個伺服驅動器和步進驅動器,均匯總于運動控制卡。
2.2 復位運動的實現
系統在運行停止后,需要進行復位,使其回到初始位置。實現的方式為由上位機發送控制指令,控制外骨骼機械腿各關節運動至極限位置,再反向運動至初始位置,編程流程圖如圖 6 所示。使用 API 函數 Acm_AxHome 實現復位運動的控制,而函數 Acm_AxMoveRel 實現負向脈沖進行點到點運動,函數 Acm_AxGetState 獲取運動狀態。然后采用多線程方式,同時打開 6 個關節的復位線程,控制機器復位。

實現復位的關鍵代碼:
//運動至極限位置
ulErrorCode = Acm_AxHome(m_hAxis-Handle[0][2], MODE2_Lmt, DIR_POSITIVE);
do{
ulErrorCode = Acm_AxGetState(m_hAxis-Handle[0][2], &uState);
}while(STA_AX_READY != uState);
//相對運動至初始位置
ulErrorCode = Acm_AxMoveRel(m_hAxis-Handle[0][2], p->m_ulHomeDistance[0]);
do{
ulErrorCode = Acm_AxGetState(m_hAxis-Handle[0][2], &uState);
}while(STA_AX_READY != uState);
//命令位置歸零
ulErrorCode = Acm_AxSetCmdPosition(m_hAxis-Handle[0][2], 0.0);
//實際位置歸零
ulErrorCode = Acm_AxSetActualPosition(m_hAxis-Handle[0][2], 0.0);
2.3 單關節運動的實現
2.3.1 速度調節 使用 API 函數 Acm_SetProperty 設置各電機運動參數。首先建立一個用于存放各關節轉軸運動參數的結構體 structAxisParam,通過對結構體內對象賦值來設置啟動速度、運行速度等參數,再由 Acm_SetProperty 函數將值傳遞給電機。
其關鍵代碼如下:
typedefstructAxisParam
{
F64m_lfAxLowVel; //啟動速度
F64m_lfAxHighVel; //運行速度
F64m_lfAxAcc; //加速度
F64m_lfAxDec; //減速度
F64m_lfMaxVel; //最大速度
F64m_lfMaxAcc; //最大加速度
F64m_lfMaxDec; //最大減速度
}
//設置運行速度
ulErrorCode = Acm_SetProperty(m_hAxis-Han-dle[m_ulCurDev][m_ulCurAxis],PAR_AxVel-High,&m_AxisParam.m_lfHighVel,ulBufferLen);
2.3.2 角度調節 關節轉動的角度是由電機獲得的控制指令的脈沖值決定的,因此需要確定關節運動角度與輸入脈沖的關系。通過關節角度傳感器對每個關節分別測量 10 個點(從零位到極限位置),得到 10 組關節轉動角度和輸出脈沖的對應值,如圖 7 所示為下肢各關節方程線性規劃。

據此得出脈沖數—關節角度線性規劃方程:
$\text{髖關節}:y = 6\;347.4x + 145.56$ |
$\text{膝關節}:y = 6\;930.0x - 8\;333.1$ |
$\text{踝關節}:y = 2\;485.3x + 575.69$ |
如式(1)–式(3)所示,即可設置運動程序中的脈沖數來控制各關節轉動角度。
2.3.3 運動時間與運動功能 單關節訓練程序流程如圖 8 所示。首先通過標志位和已進行的時間判斷是否已完成訓練,是則關閉訓練線程,否則進入循環訓練模式,采用點到點的運動方式,首先設置需要訓練的關節角度,將角度值通過如式(1)–式(3)所示換算為輸出脈沖,使用 API 函數 Acm_AxMove-Rel 實現運動。

判斷是否完成訓練的代碼如下:
unsignedlongm_ulStartTime = GetTickCount();
while(p->m_bPTPRunning&&(p->m_ulTrainning-Time> (GetTickCount()-m_ulStartTime)/1000))
運動實現的關鍵代碼如下:
//向正方向運動
ulErrorCode = Acm_AxMoveRel(m_hAxis-Handle[p->m_ulCurDev][p->m_ulCurAxis],p->m_AxisParam.m_lfPosDistance);
//確定訓練正向運動已完成
do{
ulErrorCode = Acm_AxGetState(m_hAxis-Handle[p->m_ulCurDev][p->
m_ulCurAxis],&uState);
}while(STA_AX_READY != uState);
//向負方向運動至零位置
ulErrorCode = Acm_AxMoveRel(m_hAxis-Handle[p->m_ulCurDev][p->m_ulCurAxis],-p->m_AxisParam.m_lfNegDistance);
2.4 多關節聯合運動的實現
2.4.1 步態軌跡 以踝關節的運動軌跡進行人體工程學建模,利用三次樣條插值法求出踝關節運動軌跡的方程[7-8],步態的軌跡方程式如式(4)所示:
$y(x){\rm{ = }}\left\{ {\begin{array}{*{20}{l}}\!\!\! {- 5.04 \times {{10}^{ - 4}}{x^3} + 4.66 \times {{10}^{ - 2}}{x^2} + 0.5x + 80}&{\left( {0 < t < 0.36} \right)}\\\!\!\! {2.20 \times {{10}^{ - 5}}{x^3} - 1.46 \times {{10}^{ - 2}}{x^2} + 2.88x + 49.24}&{\left( {0.36 < t < 0.6} \right)}\\\!\!\! { - 6.78 \times {{10}^{ - 6}}{x^3} + 6.10 \times {{10}^{ - 3}}{x^2} - 2.09x{\rm{ + }}446.60}&{\left( {0.6 < t < 0.84} \right)}\\\!\!\! {3.86 \times {{10}^{ - 4}}{x^3}{\rm{ - }}0.55{x^2} + 256.62x - 3.99 \times {{10}^4}}&{\left( {0.84 < t < 1.2} \right)}\end{array}} \right.$ |
其中,y 為踝關節豎直方向上的位移量(單位:mm),x 為踝關節水平方向的位移量(單位:mm),t 為時間(單位:s)。
通過數學軟件 MATLAB 2010b 求解獲得連續平滑的軌跡曲線,軌跡實際周期為 1.2 s,但考慮到電機正反轉時,快速的加減速會影響運動的穩定性,同時為便于后期實現不同運動速度時軌跡的處理,仿真時將運動周期擴大到 5 s。將軌跡導入機械設計軟件 SolidWorks 2014 中的 Motion 插件進行仿真[9],可獲得機械腿各關節電機的路徑參數,調整參數規劃出機械腿上踝關節的實際軌跡路徑。再用 Motion 分析反推出膝關節和髖關節電動缸位移和時間的關系,所得位移—時間曲線如圖 9 所示,將位移轉換為脈沖,并通過如式(5)所示
$V = S/t$ |
其中 S 為位移對應脈沖數(單位:個),t 為時間(單位:s),計算出每段路徑的速度 V(單位:個/s),即可用于路徑文件編寫。

2.4.2 運動速度 多關節聯合運動的速度、時間的設置與單關節訓練方式相同,運動控制使用 API 函數 Acm_GpLoadPath 加載路徑文件,Acm_GpMove-Path 函數實現軸組按指定的路徑運動,用于多個關節的運動控制。
使用 PCI-1240 運動控制卡測試軟件 Common Motion Utility 中路徑編輯模塊,將軌跡編寫為路徑文件,將計算的速度等倍數減小即可得到 10 s、15 s、20 s 不同速度的模式。
多關節運動的關鍵代碼:
//讀取路徑文件
ErrorCode= Acm_GpLoadPath(m_hGroup-Handle[m_uCurGroup],“../Path/middlepath.bin”,
&m_hPathHandle[m_uCurGroup],&ulTotal-Count);
//按路徑文件執行運動
ErrorCode=Acm_GpMovePath(p->m_hGroup-Handle[p->m_uCurGroup],p->m_hPathHandle[p->m_uCurGroup]);
按左、右腿設置為兩個軸組,完成多關節聯合運動 4 種不同的形式,即左腿運動、右腿運動、雙腿同步運動、雙腿交替運動。多關節運動控制編程流程如圖 10 所示。

2.5 座椅移動動作的實現
座椅可實現前后移動和髖關節寬窄調節,電路圖如圖 11 所示。按下按鍵后,端子板輸入接口電平為高電平,座椅控制線程讀取信號后,即執行座椅前后移動或髖關節寬窄調節操作。編程中通過 API 函數 Acm_AxDiGetBit:獲取 In 端口數字信號,0 為低電平,1 為高電平。

座椅控制的關鍵代碼:
//獲取通道電平變化
Acm_AxDiGetBit(m_hAxisHandle[1][0],channel,&uchBitIn[channel]);
switch(channel){
case 1:
Acm_AxMoveVel(m_hAxisHandle[1][0],DIR_POSITIVE);
break;
case 2:
Acm_AxMoveVel(m_hAxisHandle[1][0],DIR_NEGATIVE);
Break;}
2.6 控制安全性設計
針對訓練過程中的安全性,設計包括硬件電路和軟件界面均具備急停開關,各關節運動分別具有電子限位和機械限位。硬件急停電路如圖 12 所示,急停開關位于患者右側扶手外側;軟件中在各運動線程內均有急停標志判斷語句,點擊界面急停按鈕,訓練運動立即停止;髖、膝關節電動缸上安裝的磁感應式行程開關,踝關節角度傳感器設置最大角度限位信號,超過極限位置后運動立即停止,同時各關節極限位置均設有機械定死位置,弱電子限位失效后仍能保證患者安全性。

2.5 軟件功能設計開發
本文系統中的軟件操作分為單關節訓練和多關節訓練兩種模式,單關節訓練使用時可選擇雙側髖、膝、踝 6 個關節中任意一個;訓練角度范圍分別為髖關節 0°~26°、膝關節 0°~68°、踝關節 0°~42°;訓練速度設有快速、中速、慢速三個檔位;訓練時間可選 10 min、20 min、30 min,也可自定義訓練時間;訓練界面中設有訓練倒計時顯示和急停按鈕;界面右側為足底壓力值的實時顯示。
多關節訓練與單關節訓練不同的是運動的控制只有速度選擇和運動時間選擇,運動模式可選擇左腿運動、右腿運動、雙腿同步運動和雙腿交替運動。單關節訓練操作界面如圖 13 所示。

3 可靠性測試分析
召集 6 名志愿者作為測試對象,均為健康受試者,身高(168±10)cm,體重(60±15)kg,使受試者按照訓練要求分別乘坐機器并調整好機械腿長度。對所有受試者進行兩次測試,測試時間間隔 1 天,測試環境為室內,基本視為無環境影響因素。
對單關節運動控制,選擇左踝、左膝和左髖關節進行重復性訓練,測量時間為 20 min,速度選擇快速,每個關節選擇三種常用角度。時間到達 20 min 時,讀取并記錄角度傳感器數據,計算兩次測量數據的組內相關系數(intraclass correlation coeffi-cient,ICC)如表 1–表 3 所示:



對多關節聯合運動控制,選擇左腿三個關節進行聯合步態運動測試,運動時間 20 min,速度選擇快速。時間到達 20 min 時,讀取三個關節角度傳感器數據,記錄運動最大角度,兩次測量數據如表 4 所示:

將實驗數據導入數據統計分析軟件 SPSS 19,進行可靠性分析,單關節測試中髖關節三個不同角度的 ICC 值分別為 0.955、0.860、0.811,膝關節三個不同角度的 ICC 值為 0.846、0.843、0.811,踝關節三個不同角度的 ICC 值為 0.806、0.956、0.909;多關節測試中髖關節 ICC 值為 0.918,膝關節的 ICC 值為 0.898,踝關節的 ICC 值為 0.814。以上數據組內相關系數均大于 0.75,說明該系統具有很好的可靠性[10],能夠準確完成設定的重復性訓練,保證訓練精度。
4 討論
本研究設計的下肢康復訓練運動控制系統由機械外骨骼、電機驅動電路和軟件控制程序組成,實現了下肢功能障礙患者單一關節重復性訓練和多關節聯合步態軌跡訓練等多種模式的訓練,其中單關節訓練的速度、角度和時間可調,多關節訓練分左腿運動、右腿運動、雙腿同步運動和雙腿交替運動 4 種模式,訓練速度和時間可調。利用人體工程學建模及 MATLAB、SolidWorks 等軟件規劃了下肢步態運動軌跡,設計開發了人機交互的控制模式,本文通過該系統對 6 名健康受試者進行測試,結果表明,該控制系統具有良好的可靠性。
運動療法能幫助患者維持關節活動度、增強肌力,提升大腦神經突觸可塑性,改善患者平衡功能及運動功能[11],廣泛用于腦卒中患者等運動功能障礙的康復治療。現有的智能化下肢康復訓練系統存在訓練模式單一、支撐性不足以滿足較長時間訓練或無法針對每個關節進行訓練的缺點。本研究設計的下肢訓練系統能克服現有的下肢康復訓練系統的缺點,既可以進行模擬人體行走的步態訓練,也能用于關節屈伸重復性訓練,且使用坐姿姿態訓練,不易疲勞,可長時間訓練。而該下肢訓練系統運動模式的合理性和運動過程的準確性關鍵取決于其運動控制系統,其中又包括軟件功能的合理性、整個傳動系統的協調性和運動算法的準確性。本研究采用了合理的關節驅動的傳動方式,設計了一整套包括軟件控制界面、電機驅動電路、機械運動規劃和步態軌跡算法等的下肢康復訓練控制系統,實現坐姿情況下下肢訓練的精準控制,為運動控制系統的設計開發提供了新的方法和數據,可促進工業自動化設備向醫療領域轉變,有利于康復機器人的更進一步研究。