APP下载

生化分析仪的ARM-SoC控制系统设计

2012-12-01张海江黎海文吴一辉于正林

自动化仪表 2012年3期
关键词:下位上位串口

张海江 黎海文 吴一辉 于正林

(长春理工大学机电工程学院1,吉林 长春 130028;中国科学院长春光学精密机械与物理研究所2,吉林 长春 130033)

0 引言

生化分析仪是一种集光、机、电、液于一体的大型检验设备,主要用于检验人体体液的各项生化指标。目前,关于这方面的研究主要集中在两个方面:一是采用较低档次处理器(单片机)的小型产品,这类产品成本低,但硬件结构复杂、测试速度慢、人机交互性能差;二是搭配PC上位机的大型产品,这类产品的数据存贮和查询方便,人机交互界面友好,但系统成本较高、体积大、运动控制实时性差[1-3]。针对以上问题,提出基于ARM-双单片机系统的小型全自动生化分析仪。该方案采用S3C2440A(ARM)为上位机、C8051F060单片机为下位机的双系统架构,可实时多任务并行处理。采用该方案设计的产品具有成本低、体积小、处理速度快等优点,适用于小型全自动生化分析系统。

1 系统的硬件设计

1.1 系统的总体架构

系统框架如图1所示。

图1 系统结构框图Fig.1 Structure of the system

由图1可知,系统由上位机模块和下位机模块两部分组成。

上位机模块主要负责数据的分析处理、病人信息的存储查询、人机交互和向下位机发送命令等工作;下位机模块主要负责加样、混合、数据采集、转盘转动、清洗系统的控制和接收上位机的命令等工作。上位机模块与下位机模块之间采用异步串行通信。为实现多任务并行处理,下位机模块采用双单片机结构。

系统上位机模块的核心是三星公司推出的基于ARM920T架构的S3C2440A处理器。这是一款专门针对低价格、低功耗、高性能应用推出的32位RISC指令集处理器,其最高主频可达400 MHz,并具有加强的ARM体系内存管理单元(memory management unit,MMU),用于支持 WinCE、EPOC32和嵌入式 Linux系统、三通道UART、两端口USB主机、LCD控制器等丰富的资源。S3C2440A共有130个I/O口和24路外部中断,足以满足小型全自动生化分析仪上位机的要求[4]。

系统下位机模块的核心采用美国Silab公司的C8051F060单片机。该单片机内核采用流水线结构,速度比普通的51系列单片机快10倍,其指令和标准系列51单片机兼容,芯片支持在线调试。片上有64 kB的Flash、4352 B内部RAM、59个I/O口;片内集成有两个UART、一个SM(兼容I2C)和一个SPI等丰富的资源,完全满足下位机的要求[5]。

为快速完成复杂的测试动作并缩短测试时间,提出了双单片机系统的设计方案。该方案将复杂的测试动作分配给两个单片机,其中一个单片机负责转盘定位和数据采集等工作,另一个单片机负责加样臂旋转、样品加样混合和清洗系统控制等工作。该方案大大提高了测试速度,减轻了单片机的工作任务。

下位机采用C8051F060单片机的优点主要有以下几点:单片机实时性好;速度比普通的单片机快,大大提高了测试速度;采用双单片机结构(两个下位机),可实现多任务并行处理,提高了工作效率;上位机与下位机之间采用串口通信传输指令与数据,提高了系统的抗干扰能力。

1.2 上位机与下位机之间的串口通信

系统上位机模块与下位机模块之间、下位机模块中两个单片机之间都采用异步串行通信。在异步通信中,数据是以字符为单位组成字符帧进行传送的。发送端与接收端分别按字符帧规定的格式和波特率来协调数据的发送和接收。字符帧和波特率可由用户根据实际情况选择。字符帧由起始位、数据位、停止位和空闲位四部分组成[6-7]。

ARM与单片机之间的串口通信电气连接如图2所示。ARM与单片机之间使用MAX3232SOP芯片,提高了系统的抗干扰能力和稳定性。

图2 串口通信电气连接图Fig.2 Electrical connections of the serial communications

2 系统的软件设计

2.1 总体结构

系统软件分为上位机程序和下位机程序两部分。上位机程序部分采用模块化设计,由主程序、显示子程序、数据处理子程序和命令发送接收子程序等部分组成。

下位机程序部分主要负责接收上位机命令、加样、混合、转盘的转动、控制微型光谱仪采集数据以及将数据发回给上位机等工作。

该系统的软件流程如图3所示。

2.2 串口通信

在系统中,上位机与下位机之间主要通过串口传送数据与命令。因此,串口通信是系统的核心。本系统以嵌入式Linux系统为应用平台,这是由于嵌入式Linux具有内核精悍、运行稳定所需资源少及支持硬件数量庞大等优点[8]。在嵌入Linux系统中添加串口通信,首先将串口的设备驱动程序添加进内核,然后编写测试程序。

编译串口设备文件的内核,其主要步骤如下。

① 将串口驱动保存为 serial.c,并保存在目录linux-2.6.32.2/drivers/char下。

② 在 linux-2.6.32.2/drivers/char目录下,打开Kconfig文件,在文件中添加以下语句:

③ 在 linux-2.6.32.2/目录下执行 make menuconfig命令。在出现的界面中,将光标下调至Device Drivers,按回车键进入另一界面。在这个界面中,将光标下调至Character Devices,按回车键进入另一界面。最后用方向键选中"Support for Serial(new)",并按空格键使该行最前面的符号变为<* >(<M>表示为编译成Module形式,默认<* >为编译入内核)。配置完成后,退出并保存。

④ 在 linux-2.6.32.2/drivers/char目录下,修改Makefile文件,添加如下语句并保存。

obj-$(SERIAL_NAME)+=serial.o

⑤最后执行命令make zImage生成内核文件。

编写串口测试程序,其主要步骤如下。

①使用open()函数打开串口设备文件。CommFd=open(DeviceName,O_RDWR,0),其中DeviceName为串口设备名。

②设置串口,TryATttr为存储串口设置参数的结构体名称,设置波特率、数据位、停止位、奇偶校验位等相关参数,然后使用下面的函数进行设置:tcsetattr(CommFd,TCSANOW,&TtyAttr)。

③ 使用read()、write()函数对串口进行读写。

④最后关闭串口设备文件,与关闭其他设备文件相同,使用close()函数,close(CommFd)。

至此,上位机模块中含有串口驱动的内核以及测试程序全部完成。

2.3 应用程序的实现

友好的人机交互界面简化了复杂的操作,降低了操作人员的工作强度,提高了自动化水平。上位机系统软件结构如图4所示。

图4 上位机系统软件结构图Fig.4 Software structure of the host computer system

系统采用嵌入式Linux作为操作系统,管理软硬件资源;采用QT/E来完成对图形化界面和应用程序的开发。QT/E是挪威Trolltech公司专门为嵌入式系统开发的基于C++的应用框架和窗口系统,它可在含有ARM处理器的嵌入式Linux操作系统跨平台运行,且支持多线程编程[9]。

该应用程序主要分为参数的读取与设置、命令的发送与接收、数据接收与处理、结果的显示与查询四大部分。首先使用 QT Creator界面,然后遵循 Qt/Embedded编程一般规则编写代码,最后编译并通过网络文件系统(network file system,NFS)进行板上测试。

由于图形用户界面应用程序都只有一个执行线程,且一次只执行一个操作。而系统中的数据处理或串口通信都是较耗时的操作。当这些操作被执行时,虽然实际上该操作正在进行,但用户界面通常会被冻结而不再响应。在QT/E应用程序中,子类化QThread并重新实现它的run()函数,实现多线程,从而解决以上问题[10]。根据系统要求,创建两个新的线程类,分别用于与两个下位机进行通信。创建语句如下。

class Thread_master_SCM:public QThread;

class Thread_slave_SCM:public QThread;

两个线程类在主界面类MainWindow类中创建对象,线程创建后通过QThread::run()函数开始执行。要实现两个不同的线程对共有数据的互斥访问,还需使用互斥锁QMutex mutex来进行线程间的协调与同步工作。

3 结束语

针对小型全自动生化分析仪产品体积小、处理速度快以及人机交互友好等需求,提出了基于ARM-双单片机系统的设计方法。该系统采用以ARM为上位机、单片机为下位机的双系统架构,提高了测试速度与测试效率。在上下位机之间使用串口传送数据与命令,增强了系统的抗干扰能力。上位机系统模块采用嵌入式Linux系统为操作系统,应用程序使用QT/E开发,并使用液晶触摸屏使人机交互更加方便快捷。试验结果表明,控制系统人机交互方便快捷、运动控制实时性好、运算处理能力强、性能稳定可靠。

[1]钱超.全自动生化分析仪机械系统研究[D].哈尔滨:哈尔滨工业大学,2009.

[2]陈东.基于嵌入式Linux的全自动生化分析仪的研究与设计[D].长沙:湖南大学,2006.

[3]吴海波.全自动生化分析仪电子控制系统的设计与实现[D].沈阳:东北大学,2006.

[4]侯冬晴.基于ARM9的指纹识别器的设计[J].自动化仪表,2007,28(11):29 -31.

[5]潘琢金,施国君.C8051FXXX高速SOC单片机原理及应用[M].北京:北京航空航天大学出版社,2002.

[6]张洪辉,黎海文,高春海,等.面向小型全自动生化分析仪的同步可靠的 UART 通信[J].电子技术应用,2010,36(1):128-131.

[7]莫易敏,覃君恺.应用ARM920T的S3C2410A与PC间的异步串行通信设计[J].现代制造工程,2008(6):96-98.

[8]陈佳男,李欣,张海燕.基于ARM+Linux的异步串行通信设计[J].微计算机信息,2009,25(3):139 -140.

[9]岑海洪,杨艳娟.基于ARM和Linux的注塑机上位控制器设计[J].工业仪表与自动化装置,2010(6):23-26.

[10]Jasmin Blanchette,Mark Summerfield++GUI Programming with QT 4[M].2nd edition.闫锋欣,译.北京:电子工业出版社,2008:255-269.

猜你喜欢

下位上位串口
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
浅谈AB PLC串口跟RFID传感器的通讯应用
基于EM9000工控板高性能双串口通信模型设计与实现
提高火力发电厂自动电压控制系统投入率的措施
发射机房监控系统之下位机
要攻城略地关键要有好筹码,这匹水产动保“黑马”如何能迅速上位?
特斯拉 风云之老阿姨上位
船舶电子设备串口数据的软件共享方法
基于ZigBee和VC上位机的教室智能监测管理系统
围观党“下位”,吐槽帝“登基”