0引言
医学上针对腰椎间盘突出症等腰脊椎病,通常采取物理牵引的保守治疗方法。本牵引床系统是以两段式床体为治疗平台,采用ARM等嵌入式处理器并结合计算机对床体各自由度运动实现分布式控制,并由直流电机实施外力快、慢速牵引及床体的任意角度的快慢速旋转,从而实现腰脊椎病的物理治疗。
1系统功能与总体设计
牵引床以两段式床体为治疗平台。其床体分为前、后两段,供病人躺卧。前段有固定带将病人腰上部固定,利用牵引带与活动床头相连。牵引运动是前后方向的平动。床头在电机驱动下可向前牵出一定距离,而病人腰部则是被固定着,这样牵引带对腰椎就有了一定的作用力。床头安装“S”型拉力传感器检测牵引力。后段床体也有固定带将病人的腰下部至胯骨处固定,并可在电机带动下以腰部处为轴心做水平平面的摆动、垂直轴向的倾斜升降转动、以及向左右两侧的旋转共三个自由度的转动。前段床体的牵引速度可调,后段床体的旋转角度与旋转速度也可任意设定。
牵引床为医师提供四个自由度可调节的物理运动,充分满足腰椎病物理治疗的需要。实际治疗中,医生根据患者的病理情况,将后床面的左、右旋转结合慢牵基础上的快牵功能进行合理使用能够起到“正脊”作用。
牵引床的总体设计采取分布式控制体系,如图1所示。计算机作为上位机通过RS-485总线与三个嵌入式控制器(下位机)组成分布式总线网络实现对床体运动的控制。计算机实现系统总体操作控制界面。系统复杂的控制任务被分解为三部分,分别由三个嵌入式控制器并行实时执行完成。其中,牵引运动及牵引力的检测与控制由一片STC89C52RD+单片机完成;三个旋转运动的角度检测及控制由Samsong公司的32位ARM核RISC处理器S3C44B0X处理;床体上各类限位开关等开关量检测及输出则由另一片STC89C52RD+实现。
图1 系统总体设计框图
2 系统硬件设计
2.1 基于STC89C52RD+的牵引控制
快慢牵引治疗是通过直流电机驱动床头向前运动从而拉伸固定在患者腰间的固定带,产生一定的牵引作用力施加在腰椎。牵引力大小及快慢由医生设置,并保持一段时间。保持期间可配合床体旋转等动作进行物理治疗。
牵引力可由床头的S型应变式拉力传感器转换为模拟信号。该信号大小与加在传感器上的激励直流电压大小有关。传感器灵敏度为2mV/V,若DC激励电压为5V,则传感器输出最大信号为10mV。如果力传感器的量程为0-200Kg,则对应传感器输出模拟信号为0-10mV。该信号经仪表放大器AD623放大500倍后为0-5V,经“Л”型电感、电容无源网络滤波后输入给10位A/D转换器TLC1549。牵引力信号频率很低,处理器每秒钟采样20次。采用一个专用的STC89C52RD+的片内硬件定时器,每隔50ms进入定时器中断服务程序通过SPI串行接口进行一次A/D转换,并将转换后的数据由UART经接口芯片74LBC176转换为485信号发送至上位机。由上位机判断后发出控制指令控制牵引电机及牵引过程。
STC89C52RD+是STC公司生产的增强型51单片机,可靠性高,抗干扰性强。在产品注册对控制器做电磁兼容性试验时,发现采用AT89C52通不过的电源脉冲干扰试验以及高压放电干扰试验项目,STC89C52RD+可轻易通过。STC单片机的可靠性由此可见一斑。
2.2 基于STC89C52RD+的开关量检测与控制
床体采用行程开关为各个运动行程进行限位,避免系统失控造成牵引力过大拉伤病患,或旋转、摆动角度过大将病患甩出床体。当出现碰触行程限位开关的情况时,继电器控制电路将直接切断电机电源使电机停转。控制器STC89C52RD+实时检测这些信号,并迅速将此信息通过485串行总线传至上位机。系统软件将停止该进程并将系统复位。单片机将系统的23个输出开关量状态锁存在3片74HC377中,确保状态可靠输出。各路输出经由光电耦合器隔离、ULN2803放大,驱动继电器的开关来控制各个电动机的启停及组合动作。
设置“急退”按钮,在病患自己感觉不舒适的时候可自行按下,系统将迅速解除牵引力并将床体旋平。当病人按下“急退”按钮,单片机检测到后即通过485总线将此消息传至上位机。系统软件接收到后,立即停止当前的牵引进程,并发出命令,单片机随即控制牵引电机反转解除牵引力。如果床面处于旋转倾斜状态,则控制将床体旋平。这些措施大大提高了牵引治疗系统的安全性与可靠性,对于一台医疗器械而言是必须要考虑的。
选用一片STC89C52RD+作为专用的开关量检测与控制处理器。这样可使这部分控制程序更简洁、纯粹,易于实现,可确保系统可靠无误的动作。若将这部分任务合并到其他控制器中,会增加软件的编程难度,流程会更复杂,势必将降低系统运行的可靠性、安全性。
2.3 基于ARM处理器S3C44B0X的旋转运动控制
医疗设备的运行要求低噪音。系统采用高效率、低噪声的新型220V高压大功率直流电机作为床体运动的执行机构,来实现床体机械系统多维、多轴、多自由度的运动。对直流电机的控制采用PWM方式。PWM驱动采用高效率大功率VMOS管功放电路。在嵌入式电机控制处理器选择上,采用Samsong公司的32位ARM核RISC处理器S3C44B0X。该处理器具有双串行口、5个PWM定时器、8通道10位ADC、最高主频66MHz,完全胜任运动控制要求。
上位机经485总线发出的转动运动指令中包含有速度参数及角度参数数据。三个自由度的旋转运动分别各对应一个PWM定时器的输出。旋转电机的调速由PWM占空比参数调节。速度控制是开环的。角度传感器选用高精度单圈电位计。电位器外接5V激励,即0-360度对应0-5V。实际上,只采用了0-30度范围。这样,ARM控制器、PWM执行器与角度传感器的测量环节构成角度位置闭环调节回路,实现旋转角度的调节。
考虑到目前市场上存在欠款问题并为了更好地回收资金并保护知识产权,结合S3C44B0X的内部资源设计了独特的硬件加密功能。通常加密是利用计算机的日历以及计算机中的硬盘序列号来实现的。计算机的运算能力强,算法实现也容易,但是往往也容易被解密。好的方法是利用电路硬件来做加密。首先,利用S3C44B0X内部的RTC设计日历定时器做硬件注册时间加密。第二,利用DS18B20中全球唯一的序列号作为注册序列号来做加密。DS18B20是DALAS公司生产的数字温度传感器,但在这里并不用其测温,而是利用其中全球唯一的序列号。它与ARM处理器的连接仅用一根数据线作串行数据传输。
图2 旋转运动控制框图
3软件设计
系统控制任务与算法按照二级拓扑分布在各个嵌入式控制器以及上位机的软件中。STC89C52RD+单片机采用汇编语言编程,效率高,可靠性高。S3C44B0X为ARM7内核,采用C语言加汇编语言进行混合编程。上位机软件则采用功能强大的DELPHI6.0Windows应用程序开发工具开发,运用Object Pascal语言编写程序代码。这使得软件对床体的控制更加灵活、可靠和高效,界面简洁友好,操作方便、可靠性高。在开发过程中采用了一些新的技术,最主要的是控件技术,特别是在串行通信中采用了控件技术,大大提高了串行通信的可靠性,保障了系统的可靠性。其软件结构功能总体框图如图3所示。
3.1 通讯协议
上位机对牵引运动、旋转运动与开关量动作的控制与协调指挥是通过一定协议的数据通讯传达至各嵌入式处理器执行的。通讯指令依照异步串行数据通讯格式制定,包括字头、下位机地址、指令数据和结束符三部分。字头与结束符用于数据同步。指令、数据传达参数设置与控制等信息。
上位机通过485总线主动发出询问指令来获取数据并进行控制。各下位机嵌入式控制器平时处于被动接收状态,当确认查询地址是自己时,即上传数据或执行命令。实践中发现由于信道的问题,首先及最后发送的字符往往会出现错误,从而造成一定的误码。这会影响到系统的可靠性。为了解决这一问题,在字头发送前及结束符发送后,多发送几个无关的字节“0xFF”。实验证明,大大降低了误码率。
3.2 基于Spcomm控件的串口通信实现
用Delphi 实现串口通信,常用的方法有:第一,使用控件。如Mscomm和Spcomm控件等。第二,使用API函数在Delphi 中调用其它串口通信程序。使用API方法的优点是适合编写较为复杂的低层次通信程序,但缺点是编写串口通信程序较为复杂。本系统选用Spcomm。它是Small-Pig Team开发的一个第三方Delphi串口控件,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,且编程简单、通用性强、可移植性好。在Delphi软件开发中成为一个被广泛应用的串口通信开发控件。Spcomm串行通信控件为多线程。接收和发送数据分别在两个线程内完成,接收线程负责收到数据时触发OnReceiveData事件。WriteCommData()函数将待发送的数据写入输出缓冲器,发送线程在后台完成数据发送。在接收和发送数据前需要初始化串口,用StartComm打开串口,退出程序时用StopComm关闭串口。
4 总结
医疗设备产品特别是理疗设备直接作用于病人身体,可靠性是第一位,不能出差错。因此,系统的优化设计是关键。将控制任务与算法分布在不同的嵌入式处理器中并行运行,可使每个处理器的程序都明确、清晰,并且方便上位机进行控制。本系统已交付厂家(河南腾远医疗设备有限公司)生产,并已在多家医院投入治疗,反映效果良好,并已产生约一百万元经济效益。已经专家会议鉴定评审为河南省科技成果。
创新点:在复杂的嵌入式系统中采用多个嵌入式处理器结合上位计算机来并行分担系统的复杂任务与算法,为医疗设备的研制获得了难得的可靠性。