一款新型烟草称重读卡定级器的设计与实现
扫描二维码
随时随地手机看文章
摘要:长期以来烟草称重定级系统自动化程度不高引起了相当多的关注,因此设计了一款新型的烟草称重读卡定级器来解决这一问题。该烟草称重读卡定级器采用ARM最新一代Cortex-M3内核的STM32F103VC为主控制器,并将嵌入式实时多任务操作系统μC/OS-II引入系统软件设计部分。本设计极大提高了烟草定级系统的自动化程度,同时又增强了系统的实时性与可靠性。目前,本烟草称重读卡定级器已成功运用于某烟草定级系统中。
关键词:STM32F103VC:μC/OS-Ⅱ;任务调度
0 引言
在传统的烟草收购系统中,烟叶分拣、称重、定级都是依靠人工完成的,由于人工操作效率低下以及人力成本的逐年提高,近年来国内的烟草收购站陆续引入了自动化设备。例如烟农信息由IC卡感应器获取,烟叶的称重与打包由原烟打包机完成,定级由专门的定级器完成,烟叶数据的存储与处理由独立的电脑管理。但这些自动化设备往往是离散的,在完成称重、定级等基本功能的同时也给管理带来巨大困难。如何将称重、定级、分拣自动化设备的功能整合在一起,如何真正实现烟草称重定级统的智能化控制,已经成为烟草行业所要面临的重要问题。
本文提出了一种全新的烟草称重定级智能控制的解决方案,此方案采用嵌入式系统的设计思想,硬件部分采用ARM最新一代Cortex-M3内核的STM32F103VC为主控制器,配合外围电路工作,软件部分引入实时多任务操作系统μC/OS-II,实现多任务的并行运行,不仅实现了烟草称重、读卡、定级功能的三合为一,又进一步提高了系统的可靠性。
1 系统结构及功能概述
烟草称重读卡定级系统总体结构如图1所示,系统由RFID读卡模块、烟草称重读卡定级器以及机械传动部分组成。烟草称重读卡定级器具有读卡控制、烟草定级、重量锁定、电子标签读写、记录保存查询等一系列功能。若干台烟草称重读卡定级器可通过RS485总线连接组成网络,与上位机进行数据通讯。
系统启动后,贴有电子标签的烟叶筐通过传送带送到指定位置,传动带停止,烟草称重读卡定级器显示当前烟叶重量,并控制读卡模块中的RFID读卡器发出一特定频率的无线电波,烟叶筐上的电子标签接收电波,将标签内的初始数据(烟农信息、烟叶产地、采摘时间等)发送给读卡器,此时,烟草称重读卡定级器将获取的重量信息、烟叶信息传送至上位机进行存储。定级员根据烟草的各项指标确定烟叶等级,选择烟草称重读卡定级器上相应的等级按钮,将等级信息传至上位机中,完成烟叶的定级等功能。同时通过电子大显示屏与喇叭播报此筐烟叶的等级和总量等信息,向烟农展示烟叶收购信息。
2 硬件设计方案
烟草称重读卡定级器以微控制器STM32F103VC为核心,并在其周围扩展外设构成系统。微控制器STM32F103VC使用高性能的ARM Cortex-M3 32位的RISC内核,内置高速存储器(高达128k字节的闪存和20k字节的SRAM),具有丰富的硬件接口资源,以其为中心构建的烟草称重读卡定级器硬件框图如图2所示。
2.1 A/D转换部分
烟叶筐放置到秤台上后,秤台上的电阻应变式传感器将重量信号转变为电压信号,该电压信号传送给CS5532完成A/D转换。CS5532芯片是美国Cirrus Logic公司推出的一种具有极低噪音的、多通道△-∑型ADC,可达到24位分辨率的输出结果,精度高、动态特性宽。转换后的数据从CS5532的同步串行接口输出至微控制器STM32F103VC,同时可在240×64点阵式液晶显示器上显示当前烟草的重量。
2.2 读卡处理部分
系统采用FNUHFD2180读卡器进行RFID数据采集,该读卡器可对符合ISO18000-6C协议的电子标签进行读写。读卡器通过UART2与烟草称重读卡定级器通讯,烟草称重读卡定级器控制读卡器发射一特定频率的无线电波能量给烟叶框上的电子标签,用以驱动标签电路将内部的数据送出,读卡器依序接收解读数据,送至烟草称重读卡定级器进行相关处理。
2.3 串行通讯部分
STM32F103VC利用串行口与外围设备进行数据通讯,其中与上位计算机通讯使用UART1,串行数据通讯格式采用波特率9600b/s;1位起始位8位数据位,无校验,1位停止位。根据程序里预先定义好的协议,上位计算机与控制器进行数据通讯。控制器与读卡器通讯使用UART2,与LCD显示屏通讯使用UART3。
2.4 存储部分
存储部分采用铁电存储器M31256,该存储芯片具有非易失性、读卡速度快以及读写功耗极低等诸多优点,提供256kb的存储空间。FM31 256采用I2C总线形式与STM32F103VC通信,芯片上的时钟线SCL、数据线SDA与STM32F103VC上的I2C接口相连,严格按照I2C总线协议进行命令写入与数据交换。
3 管理软件设计
烟草称重读卡定级器的软件设计引入嵌入式实时操作系统μC/OS-II,μC/OS-II是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量、邮箱、消息队列)和内存管理等功能。操作系统内核的主要工作是对任务(ta sk)进行管理和调度。操作系统将整个应用系统程序分解为多个小任务,系统并发运行多个任务,从而提高处理器的利用率,加快程序的执行速度,提高系统的实时响应。
3.1 任务划分与设计
根据烟草称重读卡定级系统所要实现的功能,考虑系统实时性、可靠性的要求,进行任务的划分并创建任务,按其优先级从高到低分别是初始化任务、键盘扫描任务、ADC任务、主串口通讯任务、读卡串口任务、空闲任务。每个任务在4种不同的状态中转换:休眠态、就绪态、挂起态和运行态。在运行状态下,还可能由于发生中断而转向中断服务子程序。任务管理函数的调用将引起各任务状态间的转换,系统软件流程图如图3所示。
系统上电复位后,首先进行嵌入式处理器与外设的初始化,完成系统时钟、GPIO口以及中断相关参数的配置。系统使用外部中断2读取A/D转换结束信号,定时器中断2为μC/OS-II系统提供时钟节拍,串行口中断1用于上位机通讯,串行口中断2用于读卡器通讯。然后是初始化μC/OS-II操作系统,同时液晶显示开始画面。接着创建初始化任务,完成应用任务(包括键盘扫描任务、ADC任务、主串口通讯任务、读卡串口任务)以及空闲任务的创建,信号量与互斥量的创建,邮箱消息的建立,窗口看门狗初始化。最后启动多任务,此时,任务交由操作系统管理与调度。
程序代码大体如下所示:
3.2 任务调度与实现
嵌入式实时操作系统μC/OS-II任务的调度由任务调度器控制,任务调度器的主要工作有两项:一是在任务就绪表中查找具有最高优先级的就绪任务;二是实现任务的切换。
本系统启动多任务后,所有应用任务都处于就绪状态,并在任务就绪表中登记。任务调度器选择当前优先级最高的任务开始执行。以键盘扫描任务为例,键盘被设定为150ms扫描一次,若有键盘按下,进行键处理,若无键按下,继续扫描。在150ms延时的过程中,键盘扫描任务交出CPU使用权,由调度器查询剩下就绪状态任务的优先级,选择当前优先级最高的任务开始执行。150ms延时结束,若无更高级的任务就绪,程序将回到键盘扫描任务继续执行。CPU在不同任务之间轮换,保证近似每时每刻让优先级最高的就绪任务处于运行状态。
在μC/OS-II操作系统中,某些任务需要特定的信号量,任务只有取得相应的信号量才能继续执行下去。例如,ADC任务必须等待A/D转换完成信号量ADCSem就绪方能执行,因此,当ADC任务得到CPU使用权时,若该信号量未能就绪,则该任务挂起,并交出CPU控制权。若该信号量就绪,则执行任务。
在任何时刻,若有中断发生,系统将当前任务挂起,转而执行中断服务子程序(ISR)。以串口中断1(上位机通讯)为例,当串口中断发生时,意味着上位机有命令要发送给控制器,系统将中断当前正在执行的任务,转入串口中断1服务程序执行。在中断程序中,系统先判断是发送中断还是接收中断,然后进行相应的处理。
程序代码大体如下所示:
上位机通讯中断程序执行完毕后,调度器查询当前就绪任务,若无更高级的任务就绪,程序将回到断点处继续执行原先被中断的任务。若有更高级的任务就绪,系统转而执行优先级高的任务。
4 结语
本系统将烟叶收购过程中烟农信息采集、烟叶自动过磅、烟叶等级设置、烟叶数据处理整合在一起,真正实现了烟草收购的智能化管理,在保证收购质量的同时极大地提高了收购速度,缩短了收购周期,降低了收购成本。本文介绍的烟草称重读卡定级器先后在各地的基层烟站进行推广实施,实践证明,本烟草称重读卡定级器精度高、实时性好、运行稳定、可靠性高、抗干扰能力强,可以在同类行业中推广应用。