新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM-LINUX的物流复检系统设计

基于ARM-LINUX的物流复检系统设计

作者:时间:2016-09-12来源:网络收藏

摘要:分拣环节在现代物流中的作用显得尤为重要。为了确保分拣的准确度,提出了一种基于的物流复检系统设计方案。该系统采用的主从架构方式,通过总线互联,通过在上采用结构和接收终端节点上的条码数据来达到处理比对条码数据库信息的目的。实际应用表明,该复检系统能够保证分拣机构精准高效运行,测试时达到了设计的要求。

本文引用地址:http://www.eepw.com.cn/article/201609/305180.htm

关键词:;终端节点;;

随着电子商务的快速发展,物流的重要性也日益凸显,而分拣环节在物流系统中是十分关键的。因此,要有效的保证分拣机构的精准高效运行。目前分拣的识别方式主要靠条形码识别,通过光电开关触发条形码扫描设备等捕获条形码信息,然后由光电开关信号以及延时控制分拣机完成最终的分拣。但是由于光电开关的灵敏度,货物的位置以及条形码粘贴的质量等原因,会造成物流成本的增加和物流效率的降低,给企业造成严重的损失。

可见,提高物流分拣的准确度变得尤为重要。为了解决分拣系统中的分拣错误,提高物流的效率,在做了需求分析的基础上,提出了一种基于ARM-LINUX的物流复检系统设计方案。该复检系统能够提高物流分拣的准确度,解决系统的分拣错误。

1 总体设计

该复检系统通过将安放终端节点在分拣系统的各个出线口,通过总线将各个终端节点与主控节点进行通信,通过以太网主控节点可以访问远端数据库服务器,图1所示即是整个复检系统的架构。终端节点采用的是居于Cortex—M3内核架构的STM32F103RBT6处理器,移植RT-Thread作为软件平台,通过RS232接口获取激光扫码头读取到的一维条码,然后由接口将条码上报到主控节点,利用不同的CAN数据包ID号来标识不同的下线口号。主控通过CAN总线得到不同下线口所对应的终端节点上报的条码信息后,通过以太网查询局域网内的数据库服务器,并将所查询项标识为已查询。在查询完数据库之后,主控节点需要根据结果刷新图形界面的显示,发出报警信号,并通知分拣系统的控制系统分拣出错以实现联动。

基于ARM-LINUX的物流复检系统设计

主控节点还要将查询结果返回给对应的终端节点,由其来控制下线口的输送装置,执行相应的动作,比如伸缩皮带机的运停。

2 终端节点的设计

2.1 终端节点的硬件设计

终端节点被安装在分拣系统的末端,可以根据实际下线口数配置多个。终端节点主要负责采集前期分拣后货物的条码信息,然后再通过CAN总线上传给主控节点。系统结构框图如图2所示,它显示了终端节点主要的硬件模块,STM32处理器负责控制各个模块,对于终端接口使用的STM32F103RBT6,为了使其正常工作,至少应具备供电电路、复位电路、时钟电路、电源滤波电路、JTAG程序调试下载电路以及启动模式选择电路这几个部分。STM32需要3.3 V供电,而条码扫描器和CAN物理层驱动器需要5 V供电,供电模块的任务就是为系统提供稳定优质的电源。条码扫描器使用高速率高精度的激光条码扫描器,它在下线口处重新采集分拣系统分拣后货物的条码信息,通过RS232总线发送给STM32处理器。CAN模块是为了和主控节点取得可靠的通信,传输终端节点上传的条码等信息以及主控节点发送的控制信息,CAN接口设计如图4所示。皮带机模块是为了根据主控节点发送的控制信息控制下线口出皮带机的运行。无线模块和数据采集模块是为了扩展系统的功能,无线模块可以辅助人工控制皮带机,方便操作人员;数据采集模块可以帮助采集末端设备工作状态、环境温度等信息。

基于ARM-LINUX的物流复检系统设计

2.2 RT-Thread在STM32F103RBT6上的移植

RT-Thread采用模块化设计,不仪仪包禽一个稳定高效的实时内核,更是一套完备的嵌入式系统软件平台。移植过程中采用ARM公司推出的RealView MDK作为系统的开发工具。目前RealView MDK已经集成了业内最领先的技术,囊括了Vision3集成开发环境以及RealView编译器。支持最新的Cortex—M3核处理器,集成Flash烧写模块,配有Simulation设备模拟,性能分析等功能,使之十分适合RTOS的开发。

2.3 CAN接口程序设计

为了使CAN模块能够正常工作,还要对其编程来控制其完成指定的任务。对CAN的控制通过对其一系列的寄存器的操作来完成,为了方便对寄存器组的操作,按照各个寄存器在内存中的相对地址定义了一个结构体CAN_TypeDef,将CAN寄存器组基地址CAN_BASE强制类型转换为

(CAN_TypeDef*)指针后宏定义为CAN,然后通过CAN指向CAN_TypeDef结构的成员来访问CAN控制器的相关寄存器。在硬件复位以后,CAN控制器进入休眠模式以节省电能。为了正常使用CAN,就需要对其进行初始化,对CAN的初始化需要在初始化模式中进行,通过对CAN->MCR的INRQ位编程为1来进入初始化模式,与此同时硬件会置位CAN->MSR的INAK来应答。在完成初始化后,复位CAN->MCR的INRQ位,在CAN与总线取得同步后,进入正常模式。正常模式中就可以完成报文的正常收发。为发送报文,首先要查询CAN-TSR寄存器,选择一个空的邮箱,设置标识符,数据长度,和待发送数据,然后将TXRQ置位来请求发送。由条码扫描器通过串口发送过来的条码格式为ASSIC码,并且条码长度也有差异,而一个CAN数据报文最多发送八个字节的数据,所以要分多次发送,最后在条码数据的结尾加入‘/r’和‘/n’字符表示一次完整的条码传输。

2.4 系统应用程序的设计

在完成RT-Thread到STM32F103RBT6目标平台的移植之后,接下来的工作就是开发系统应用程序,来实现所需要的功能。应用程序开发的第一步就是完成相关硬件或者外设的初始化。存RT-Thread中,相关的初始化工作可以有两种方法来完成。一种是同一的在board.c文件中编写对应模块的初始化函数,并将其放在rt_hw_board_init函数内调用。另一种方式是放在线程函数中完成。然后进行应用线程的开发,采用多线程技术可以以较小的系统开销,降低应用程序开发的复杂度,提高系统的可靠性。RT-Thread以线程为最小的调度单位,采用基于优先级的全抢占式调度算法。针对本应用,创建了CAN线程、barcode线程、daemon及deal线程这四个主要线程,并通过线程问同步和通信方法进行它们之间的协调。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭