全向扫描条码识读器的译码硬件系统设计
条码技术为快速准确的数据采集、数据录入提供了有效、可靠的手段,它与计算机、网络通讯等一起构成了现代商业自动化的基础,在发达国家得到了非常普通的应用,如在超级市场中大量使用的激光全向扫描识读器。全向识读器一方面能帮助商场提高工作效率而产生效益,另一方面,它具有高的附加值能使制造者获利。随着国际市场一体化的趋势,我国商品条形码的普及率越来越高,条码输入设备作为信息化技术之一受到高度重视。
高速译码是全向扫描识读器的关键。全向扫描识读器在工作时有它的特殊性,一方面,光点扫描速度很高,条码的最小条、空对应的脉冲宽度仅为1~2μs;另一方面,在扫描信号中可能会有大量杂散背景存在,如扫描到的文字、图案、或未被完整扫描的条码,再考虑到自动码制识别,这意味着译码系统在真正译码前有大量的预处理工作。按照我国目前的微电子工艺水平,还无力研制全集成的高速硬件译码芯片,而仅基于单片机的软件译码系统的速度不能满足译码要求,下面我们采用了用硬件预处理结合软件译码的方法实现高速译码。
1 识读器原理
光学系统包括半导体激光器发射系统和光学转镜扫描机构,它们在工作区域产生所需的多线扫描图案,保证当条码以任何方向移过工作区时必定被扫描到。当光点扫描一条码时,漫反射光强随光点落在条(低反射率)或空(高反射率)上的反射率不同而变化。这个信号幅度变化的时间间隔反映条码的条空的宽窄,光电接收系统接收从条码上漫反射回来的光信号,经整形后转换成可供译码的脉冲信号。高速译码器将脉冲信号翻译成为被扫描的条码所代表的值,并通过输出接口电路输出该条码值
2 高速译码系统设计
我们目前的研制主要针对常用商品条码,每种条码都有自已的特征。以EAN码(EAN-13码,EAN-8码)为例,码串由起始符、数据符、中间符、数据符和结束符组成。起始符由一个宽空和三个等宽度(单位宽度)的条空条组成,宽空的宽度应至少8倍于单位宽度;中间符由五个等宽度(单位宽度)的空条空条空组成;结束符由三个等宽度(单位宽度)的条空条和一个宽空组成。在数据符中,每个数据由四个条空组成,宽度比在1~4之间,总宽度为7个单位宽度,码串的总长度也是确定的。这些特征是EAN码信号区别于背景信号的根据。
在光学系统中,光点扫描的线速度约为60~120m/s。一般,条码条空的最小宽度约0.25mm,最宽约2.5mm左右,因此,最小脉冲宽度约2μs,最大脉冲宽度40μs。当商品移过扫描区时,扫描到的文字,图案和未被完整扫描的条码形成杂散背景,再考虑到自动码制识别,如果只用简单的单片机系统,则译码速度太慢,不能满足要求。因此,在我们的设计中,译码硬件系统包括预处理单元和单片机译码单元两部分。
2.1 预处理单元
预处理单元完成从信号序列中实时提取条码信号并保存在数据缓冲区的功能,对条码的译码由单片机完成。
输入信号为已经整形的脉冲数字信号,脉冲宽度对应于条码条、空及杂散线条的宽度,为模拟量。在预处理中首先用非线性计数器对该宽度进行模数转换,分辨率为9位,当宽度超过9位时,计数值锁定在满度。用非线性除法器计算相邻条、空或空、条的宽度比。考虑到条码印刷、扫描光点及电子电路等环节会给宽度带来误差,宽度比不会是理论上的整数,因此,非线性除法器设计成误差包容,且输出经过取整和分类,仅为多个有效比值1、2、3、4、8和一个异常比值0。比值进入一系列状态机进行状态计算,状态机的数量与条码种类数及每类条码的特征数有关。每类条码占用独立的一组状态机,对EAN码,有三个状态机,分别检测起始符、中间符和结束符。当以空起头的连续四个条空其宽度比满足7:1:1时,判断为一个有效的起始符,起始符状态机输出为真;当以空起头的连续五个条空其宽度比满足1:1:1:1时,判断为一个有效的中间符,中间符状态机输出为真;当以条起头的连续四个条空其宽度比满足1:1:7时,判断为一个有效的结束符,结束符状态机输出为真。因此,根据状态机的输出真假及顺序判断一段信号是否是条码,作出的判断产生缓冲区的控制信号,决定是否把当前的输入信号保存。当找出一组条码信号后,产生联络信号通知单片机进行译码。输出信号包括数字化的条、空的宽度和联络信号。由于状态计算及状态判断是实时和并行的,所以可实现实时判断条码种类、阻止非条码信号进入缓冲区等功能。
预处理单元采用可编程逻辑器件实现,具有高的集成度和可靠性。用硬件描述语言进行设计,在软件开发环境下用测试矢量进行100%的设计功能测试,测试通过后硬件不需要再调试,因此研制效率很高。预处理响应时间应不大于最小条码宽度所对应的时间,我们取1μs。按框图,预处理分6个步骤,其中非线性除法器延时不大于200ns,其余每个步骤延时不大于50ns,总延时不大于500ns。我们采用美国Atmel公司的EPLD器件ATV2500,用2片芯片实现了上述功能。经使用表明预处理响应时间小于1μs,达到设计要求。
2.2 单片机译码单元
条码值的翻译用单片机完成。单片机采用美国Dallas公司的80C320,它是内核改进型的51系列单片机,有中等的运算速度。系统原理如图3所示,整个电路以单片机为核心,包括存放程序的存储器、预处理器接口电路、激光二极管控制电路、RS-232串行通讯接口电路、仿键盘输出接口电路、电机控制电路和用以指示译码成功的发声发光电路。输入数据来自数据缓冲区,由于缓冲区的数据已基本上是条码数据,单片机只须进行单一的码值译码,对运算速度要求大大降低。软件设计包括对信号的进一步筛选,码值的确定,奇偶校验;转镜电机与激光二极管的自动开启和关闭,任选的RS-232串行通讯或仿健盘输出方式与主机通讯,以及表明译码成功的声光指示等。程序用C-51语言编写,无纠错的一次译码约需10ms,一位纠错的一次译码约需40ms。最终输出采用3取2策略,以提高正确率。
总之,把高速译码系统与光学扫描系统连用后组成的识读器,经实测具有良好的性能,其译码速度和成功率达到了实际使用要求。
作者单位:杭州市浙江大学光电系(310027)
参考文献
[1]John A.Boles and Randall K. Hems. Analysis of bar code digitization technique.SPIE Proc. 1990;1384:195-204
评论