APP下载

数字式X线机操作控制台电路检测设计

2011-01-26王艳莫国民王居儒周涛余建国

中国医疗器械杂志 2011年5期
关键词:线机键值指示灯

【作 者】王艳,莫国民,王居儒,周涛,余建国

1 上海医疗器械高等专科学校,上海理工大学医疗器械与食品学院,上海,200093

2 上海医疗器械厂有限公司,上海,200090

3 复旦大学,上海,200433

在欧美等发达国家,高频高压的数字式X线机已成为医疗机构的主导机型,而我国在此领域起步较晚,因此实现自主生产将带来很大的经济效益和社会效益。

本文针对引进美国Quantum公司Odyssey HF系列的高频高压发生器,在其国产化进程中,由于元器件的国产化,出现较多问题,尤其是操作控制台面板(Operator Control Panel,以下简称OCP板)存在较多故障,严重影响了产品的生产进度。按照以往的方法,是在Flash程序烧录或是整机运行时,根据故障现象再判断问题的发生处,由于系统中存在诸多电路系统,很难根据一些故障现象进行准确定位,且过于依赖测试人员的经验水平。因此,对OCP板进行有效的在线检测,指明故障部位,成为该X线机国产化的首要问题。

1 OCP控制台硬件结构及功能

OCP控制台是X线机的人机接口,控制X线发生器的曝光设置和程序执行,以及液晶屏的设置显示,并通过两个串口与下位机控制逻辑板和上位机PC机进行通信,其结构框图如图1所示。

图1 OCP控制台结构框图Fig.1 The diagram of OCP Control Panel

在X线机正常运行状态下,Flash中存放内容除程序代码外,还包括球管曲线等常数表格;用户通过键盘输入曝光参数并控制曝光信号;曝光参数经过Flash中的曲线计算后,存入永久性随机存取存储器(Nonvolatile RAM,NVRAM)中;LCD屏通过LCD控制器显示操作界面、曝光参数信息等;就绪(READY),预备(PREP)和曝光(EXPOSE)三个LED指示灯用来显示曝光的状态;曝光启动前,将相关曝光参数通过RS-485串行通信发送给控制逻辑板LB(Logic Board),并由LB板控制高压的发生以及曝光信息的反馈;PC机通过RS-232连接OCP,可下载程序和数据至Flash,并上传NVRAM数据信息。

OCP面板的CPU选用Microchip公司PIC17系列的一款16位单片机。它有50个I/O口,内置16K×16Bit的PROM,10位A/D转换器,2个异步串行口和2个同步串行口等[1]。

OCP板外接的LCD屏选用320×240的16级灰度单色液晶,不含内嵌的液晶控制器,故选用EPSON的LCD控制器SED1374控制液晶显示。SED1374内部有28个8位的控制寄存器,还配置了20 K×16 bit的静态RAM作为内置的显示存储器,存放显示的像素点阵[2-3]。由于液晶为16级灰度,则显示屏上的每个像素都需要用4位二进制来表示,即内置RAM中的一个字节表示2个像素。

键盘和LED指示灯的硬件电路相对简单。键盘共有28个按键,其中按键控制准备和曝光的PREP和EXPOSE是由单独的输出线送入CPU的,其余26个按键通过5行×6列的行列扫描判断键值。LED指示灯共有三个,分别为READY、PREP和EXPOSE,采用共阳极接法,低电平控制点亮。对于EXPOSE的指示灯,不仅需要输出低电平控制信号,还需要同时有EXPOSE按键按下来控制继电器吸合,才能点亮。

NVRAM由于其芯片内部带有电池,即使外部电源关闭,其数据仍能保留,使用寿命高达10年以上[4]。系统中采用的NVRAM容量为32K×8bit,储存了X线发生器操作过程中所有的数据改变、配置数据、校准数据以及解剖学程序控制区域(Anatomical Programmed Regions,APR)的技术数据。

系统中片外扩展的Flash选用Am29F400BB,容量为256 K×16 bit,储存了程序代码、球管原始曲线以及所有液晶显示屏的数据。

在电路的连接上,键盘和LED指示灯是通过锁存器、缓冲器直接与CPU的I/O口相连,控制I/O口的读写,即可读取键值和控制指示灯的状态。

CPU对LCD控制器、NVRAM和Flash操作,实际上都是对其内部的存储单元进行读写访问,故连接均采用三总线结构,连接示意图如图2所示。CPU通过8位或16位的I/O口直接与三个器件相连构成双向数据线,这些I/O口线通过锁存器锁存输出构成地址线,对器件的控制信号直接由CPU的I/O线给出。

图2 NVRAM电路框图Fig.2 The diagram of NVRAM

对于Flash的扩展,采用了CPU本身的16根地址/数据分时复用I/O总线,这是由于在X线机的大系统中,Flash中还存有程序,为实现取指而进行的设计,访问时采用字模式。另外,该Flash的地址线有18根,其中高3位由CPU的I/O口直接送出,低15位才由锁存器锁存输出;2位控制线包括Flash的输出允许OE和写允许WE,均为低电平有效;Flash的片选信号直接接地,保持有效。

访问LCD控制器和NVRAM时,选用了同一个8位I/O口,通过控制片选来对两个器件分别进行操作。访问NVRAM时,先锁存送出地址,然后CPU控制片选信号和读信号或写信号有效,通过数据总线读入NVRAM送出的数据或输出数据至NVRAM。访问LCD控制器时,设置总线接口为通用总线#2,8位的I/O口须分两次送出16位的地址或数据,先送低字节,再送高字节[2-3]。控制寄存器内容和显示数据送入LCD控制器后,经缓冲器送入LCD显示屏显示。

2 OCP检测方法

由于OCP板在整个X线机系统中相对独立,不涉及曝光控制等内部模块,可直接利用CPU对各个单元进行检测,同时将检测结果显示于LCD上。这样,只需在原有硬件系统上增加测试软件,省却另行制作测试系统的成本。

测试软件采用模块化设计,对各个部件逐一访问测试,同时显示测试结果及交互信息给测试人员。测试功能包括LCD显示检测、键盘检测、LED指示灯检测、NVRAM检测和Flash检测五大部分。具体程序流程如图3所示。

图3 OCP板检测总流程Fig.3 The fl ow chart of OCP testing

(1) LCD检测

LCD检测程序流程框图如图4所示。首先,设定SED1374的内部寄存器,控制工作方式;然后,进行清屏,即给液晶屏的每个像素写入背景色(0x00)到SED1374内部RAM相应单元中;接着,逐行点亮每行像素,即每个像素都写入非0的值,为了与背景色对比最明显,写入最大灰度值0x0F到每个像素,点亮一行320个像素后,延时一段时间,便于调试人员肉眼观察液晶屏是否存在坏点;最后,再次清屏,显示“LCD OK”在屏幕指定位置表示LCD测试完毕。

图4 LCD检测流程Fig.4 The fl ow chart of LCD testing

表1 和AB0的选择表[2]Tab.1 Truth table of nd AB0 [2]

表1 和AB0的选择表[2]Tab.1 Truth table of nd AB0 [2]

LCD显示ASCII字符时,每个字符占用16×8个像素,须将字符点阵做成常数表格放入程序中,供调用。

(2) 键盘检测

键盘检测时,程序中不断循环检测键值,并显示在LCD上,直至按下AEC键后键盘检测结束。每次循环中,先读入键值,判断数据高两位,以确定是否有PREP或EXPOSE按下。若有键按下,则在LCD显示屏指定位置显示按键定义,然后通过行列扫描获取键值;若没有键按下,则继续循环判断,在有键按下时则在显示屏指定位置显示按键定义。若按下的键为AEC,则退出循环,同时显示按键检测结束,提示进行下一项LED测试。

(3) LED检测

LED检测时,当检测到按键LEFT1按下时,CPU送出数据,经控制锁存器锁存输出,从而点亮发光二极管,此时可以观察到PREP和READY指示灯点亮。若要点亮EXPOSE指示灯,还需将EXPOSE按键按下,同时可以听到继电器的吸合声。当检测到按键LEFT2按下时,所有指示灯均熄灭,同时提示进行下一项NVRAM的测试。

(4) NVRAM检测

NVRAM检测时,程序先判断按键LEFT3被按下时,开始对NVRAM进行检测。先是将部分数据写入,写入地址为0x0001~0x4000,共15个,规律为保证每根地址线上均出现一次1,其余地址线为0,写入数据为0x11~0xff;15个数据写完后,再读这些地址单元,将读出的数据与写入的数据进行比较,如果所有数据都相同,则认为NVRAM电路正常,否则存在问题。由LCD显示测试结果,并提示下一项Flash测试。

(5) Flash检测

Flash测试流程如图5所示。由于Flash必须擦除后才能写入数据,测试流程需先进行Flash片擦除,然后写入相应单元相应数据,再从这些单元中读取数据,与写入数据进行比较,从而判断Flash部分电路是否能正常工作。

图5 Flash测试流程Fig.5 The fl ow chart of Flash testing

当检测到用户按下按键LEFT4时,进行Flash的片擦除。可以进行片擦除,也可以进行段擦除,由于需要测试Flash的各段,此处采用片擦除。擦除和写Flash用的都是命令控制方式,如表2所示。其中RA表示要读数的存储器地址,RD表示从RA地址读出的数据;PA表示要写入数据的存储器地址,PD表示写入PA地址的数据;SA为要擦除的段地址,该Flash共分11个段,段地址由A17~A12决定[5]。进行片擦除时,只要按照表2往Flash相应地址依次写入相应内容,即可执行擦除操作。执行完毕后,需延迟一定时间,等待擦除完毕才能进行后面的读写操作,这个时间大约在数秒之内。

表2 Am29F400BB字操作命令定义[5]Tab.2 Word program command de fi nition [5] of Am29F400BB

片擦除完毕后,提示用户按下按键LEFT5,进行Flash写操作。写入地址共选取18个,位于0x04000~0x3ffff中,保证每一地址线上均出现过一次高电平,同时保证范围内的每个段都进行过写操作。由于地址0x00000~0x03fff已由片内程序存储器占用,不需要访问,系统中Flash不对该段地址进行读写,故不作读写测试。

写操作执行完毕后,再对这些地址进行读操作,且将读出的数据与写入数据进行比较,若所有数据均相等,则表示Flash部分电路正常,否则存在问题。LCD显示测试结果,并提示所有测试完毕。

结合图6的时序可以看出写Flash字的流程:先送出18位地址信号,给锁存器的ALE送入正向脉冲控制锁存输出地址,然后置读信号RD禁止,写信号WE有效,随后送出16位数据信号,延时一定时间再关闭写信号WE,最后查询DQ7位,判断写操作是否完成。图6中的标记的时间为信号需维持的最小时间,整个字写入需要的时间典型值为12μs,最大值为500μs,本系统中实际字写入花费的时间为20μs,比典型值略大,这是主要是由C代码编译效率较低引起的。

这里的DQ7位于数据线中,为数据查询位(data polling),表示编程操作(即写操作)正在进行还是已经完成。当编程操作正在进行中,读DQ7位将得到写入数据D7位的反码;当编程操作完成时,读DQ7位将得到写入数据D7位的原码。另外,也可以通过Flash的RY/位来判断编程操作是否完成,但硬件中为节省I/O口线,并未连接该信号。

图6 Flash写操作的时序图Fig.6 Write operation timing diagram of Flash

下面是对Flash地址为MSBAdr(高2位) +Adr(低16位)的单元写入16位数据Val的一段代码。其中,在送出16位数据后,延迟了一段时间,再去判断数据DQ7位是否翻转。

3 结果和讨论

若所有部件检测完毕且全部正常,LCD显示的检测结果如图7所示。当测试部件存在问题时,对应测试部分的“OK”就显示为“ERROR”;若是按键失灵,则该按键对应键值显示无按键定义。

本测试系统采用自动在线检测的方法,经调试成功,已用于OCP板的实际生产检测中,方便有效的协助了测试人员的工作,解决了该X线机国产化进程中的一大障碍。

在本系统的开发过程中,还曾遇到CPU仿真困难、Flash访问困难等问题,在合作单位的帮助下一一得以解决。但由于时间仓促,本检测系统中还存在较多的不足之处,如系统微处理器为PIC17系列,应用较少,可参考的资料较少,且开发成本和硬件成本都较高。但当初在引进该发生器系统时,为保证研发进度,保留了原有的硬件设计,包括处理器的选型。因为处理器改型,需要重新设计电原理图、重制硬件电路板,软件中大量对底层硬件的访问也都需要调整。在今后的开发设计中,可考虑选用国内使用较多的PIC18系列,它的资源比PIC17要丰富,程序代码可以全部放入片内程序存储器。

图7 屏幕显示的检测结果及说明Fig.7 The results and analysis of testing

[1] PIC17C7XX Data Sheet[EB]. Microchip网站, 2000-10-01.

[2] 郭强, 等编. EPSON图形液晶显示控制器系列SED135X和SED1374[M]. 北京: 北京航空航天大学出版社, 2000, 178-179.

[3] SED1374 TECHNICAL MANUAL[EB]. EPSON网站,1999-05-05.

[4] DS1644LPM Nonvolatile Timekeeping RAM[EB]. DALLAS Semiconductor网站. 2004-08-05.

[5] Am29F400B Data Sheet[EB]. Spansion网站, 2004-06-04.

猜你喜欢

线机键值指示灯
肘内侧小切口C形臂X线机透视下治疗老年人肱骨髁上骨折的可行性
基于单片机的自动缠线装置系统设计
非请勿进 为注册表的重要键值上把“锁”
一键直达 Windows 10注册表编辑高招
浅析医用X 线机的故障及论证
上海大众POLO充电指示灯点亮
美国邦纳 工业智能指示灯
2013年波罗车充电指示灯异常点亮
浅议X线机故障及其维修方法
注册表值被删除导致文件夹选项成空白