许 悦,左小五
(上海理工大学光电信息与计算机工程学院,上海 200090)
自动扶梯是一种用于在层与层之间运输乘客的电力驱动设备,在城市轨道交通、商业购物中心以及政府办公机构中随处可见,为人们带来了很大的便利[1]。但随着生活水平的提高和科技的进步,人们对扶梯的乘坐舒适性及安全性的评价标准也越来越严格。梯级在扶梯运行时,过大的振动幅度会给乘客造成不好的乘坐体验;同时,扶梯启动及停止时过大的加速度则会造成乘客因惯性后仰或者前倾,产生安全隐患。目前,扶梯在速度变化时的加速度测试步骤较为繁琐,检测效率低下,测试设备无法实时、准确地反映扶梯的加速度[1]。扶梯相关的标准中对加速度却有十分明确的要求,如:EN115-1:2017中明确要求扶梯启动时的加速度不得超过0.3 m/s2;GB 16899中明确要求扶梯的附加制动器在单独工作时[2],扶梯制动时沿运行方向的减速度不应超过1 m/s2。因此,本文研究、开发了一套基于μC/OS-II的扶梯加速度检测系统。
测试系统分为机械部分和电气部分。机械部分主要用于保证在扶梯启动的过程中,测试系统可以牢固地黏附在梯级踏板上,从而避免因测试模块移位而影响测试精度。电气控制结构选用了STM32F103ZET6单片机作为主控芯片,并且移植了μC/OS-II实时操作系统,以保证测试系统数据处理的实时性和准确性。μC/OS-II是由Jean J.Labrosse在1999年编写的一个嵌入式多任务实时操作系统,在2000年得到了美国联邦航空管理局对于商用飞机的、符合RTCA DO-178B标准的认证,从而证明了μC/OS-II具有足够的稳定性和安全性。 加速度传感器选用ADXL345[3],并配置了TFT-LCD屏幕[4]作为操作界面,为测试人员提供了较好的人机交互体验。在测试过程中,测试系统调用了FatFS文件系统模块。FatFS是一个完全免费、开源的FAT文件操作系统,专为小型嵌入式系统而设计。其完全用标准的C语言编写,具有良好的硬件平台独立性,可支持FAT32,支持多个存储媒介,具有独立的缓冲区,可以对多个文件进行读写。本文通过FatFS模块的底层接口(如存储媒介读/写接口、供给文件创建修改时间的实时时钟)的编写,成功将FatFS系统移植到STM32平台上。测试时,屏幕会实时显示测试数据。测试人员可以通过按键启动测试、停止测试、保存测试数据到SD卡,也可以查看SD卡的剩余容量等。同时,该测试模块还支持将测试的原始数据导出至SD卡中,为后续的测试以及分析提供数据基础。
电气控制结构如图1所示。
图1 电气控制结构Fig.1 Electrical control structure
随着压铸工艺的发展及普及,市场上大部分扶梯的梯级使用了铝合金材质,无法被磁铁吸附。因此,磁吸式的固定方式很难被广泛应用于目前的大部分扶梯之上。但加速度模块必须牢固地黏附在梯级上,才能保证测试数据的准确性。为此,本文设计了一种尼龙材质的可拆卸固定装置。机械固定方式如图2所示。
图2 机械固定方式Fig.2 Mechanical fixation
由图2可知,通过与梯级踏板梳齿间距的过盈啮合,可保证测试模块牢固地黏附在梯级踏板上;而尼龙的材质也不会对梯级踏板外表面造成任何的损伤和变形。对于不同尺寸的梯级齿间距,可以定制不同的固定装置。
扶梯加速度检测系统的测试流程如下。
测试系统固定在梯级上。系统上电进入main函数后,会有一系列的初始化过程。其功能主要是实现μC/OS-II的初始化。
首先,系统调用OSInit()初始化所需的所有变量和数据结构,并建立一个最低优先级的空闲任务。
其次,是AXDL345数据采集传感器初始化,以及TFT-LCD屏幕驱动的初始化。待初始化完成后,测试屏幕即显示一部分测试准备信息,并调用STM32自带的SDIO驱动接口初始化函数。当检测到SD卡已插入卡槽后,则调用FatFS文件系统的f_mount函数挂载到SD卡的逻辑盘符。若检测到SD卡未插入,则在测试屏幕上作出文字提示。
最后,创建了start_stask线程,并调用OSStart()函数启动多任务模式。值得注意的是,main函数是一个应用程序的主函数,是程序运行的入口点。它不调用任务,但要负责任务的创建,并将它们交给μC/OS-II系统。本系统将这部分工作放到了main函数创建的线程start_task中。在start_task线程中,系统初始化了统计任务。该任务每秒计算一次CPU在单位时间内被使用的时间,并把计算结果以百分比的形式存放在变量OSCPUasge中,以便实时调用该变量,并将测试系统的CPU使用率显示在测试屏幕上。
除此之外,本系统还创建了消息邮箱,即在内存中创建了一个存储空间。本系统以传递该存储空间指针的形式来实现任务与任务间的数据传递。操作系统在有异步事件发生时会引发中断请求,而大部分的任务线程的创建并不希望被中断干扰。μC/OS-II提供了OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏封装了与系统硬件相关的关中断指令和开中断指令,而处在关中断与开中断之间的代码段就是临界段。CPU在中断关闭期间不响应中断请求。临界段的代码不会受到中断的干扰。在临界区,创建了LED灯闪烁线程led_task、按键扫描线程key_scan、SD卡信息检测函数sdio_task,以及主任务函数main_task。led_task线程让电路板上的LED灯不停地间隔闪烁,以提示系统正在运行。按键扫描线程key_task用于检测相关功能的物理按键是否按下,并将按键值以消息邮箱的形式发送给主任务函数main_task。SD卡信息检测函数sdio_task用于查询SD卡的类别、总容量和剩余容量,并将这些信息实时显示在测试屏幕上。系统主要支持的SD卡类型为SDHC(SD2.0高容量卡)、SDSD(SD2.0标准容量卡)、SD1.x卡和MMC卡。在主任务函数main_task中创建了两个软件定时器。软件定时器定义了一个单独计数的OSTmrTime。系统会创建一个高于应用程序中其他所有任务优先级的定时器管理任务OSTmr_Task,并在这个任务中进行定时器的到时判断和处理。软件定时器缩短了中断服务程序的执行时间,但也使得定时器到时处理函数(定时器回调函数)的响应受到中断退出时恢复线程和任务切换的影响。软件定时器适用于具有较高精度要求、较低资源占用要求、较小处理器开销的任务处理。软件定时器1的回调函数主要用于AXDL345的数据采集,并将三轴加速度的实时值和最大值显示到测试屏幕上。软件定时器2的回调函数主要调用了FatFS的mf_opendir和mf_write函数,在SD卡根目录中打开测试路径,创建测试文件,并将AXDL345采样得到的三轴实时加速度值以.CSV格式存储到测试文件中。值得注意的是,在具体的调试过程中,软件定时器1的在周期定时模式下的定时时间dly值必须短于软件定时器2的定时时间,否则可能会导致数据重复读取的现象发生。同时,主任务函数main_task还用于接收key_scan发过来的信号量信息并作出对应的反馈。启动测试按键用于打开软件定时器1,保存数据按键用于打开软件定时器2,停止测试按键用于关闭软件定时器1与软件定时器2。最后,系统调用OSStart()函数,运行整个测试系统。
在测试过程中,系统会在SD卡根目录的TEST的文件夹中创建一个名为000.CSV的测试文件。按下测试按钮后,测试模块会将三轴的加速度实时值及三轴的加速度最大值实时显示在显示屏上,以便测试人员进行观察确认。同时,系统会调用FatFS的相关API,将三轴的加速度的实时值写入刚新建的000.CSV文件中。在测试结束后再次按下测试按钮,则系统停止检测。
测试屏幕的显示内容依次是单片机CPU及内存信息、SD卡的剩余存储容量、三轴的最大加速度值、三轴的实时加速度值以及测试文件的存储目录。考虑到需要保证数据的采样时间,系统创建了2个μC/OS软件定时器[5]。软件定时器1的回调函数用于AXDL345采集测试数据并实时显示。软件定时器2的回调函数用于将测得的三轴加速数据写入SD卡根目录的CSV格式文件中[6]。同时,在主任务中,分别设置了软件定时器1与软件定时器2的周期定时时间。当第二次测试任务结束后,再次按下启动测试按键,系统会再次调用FatFS[7]的相关API在SD卡根目录建立名为001.CSV的测试文件,以此类推。系统中创建的按键处理任务的按键值通过消息邮箱发送给主任务,由主任务进行处理,作出相应的反馈。
本系统加速度计选用的ADXL345是一款小而薄的超低功耗3轴加速度计。其测量范围为±16 g,分辨率3.9 mg/LSB,数字输出数据为16位二进制补码格式,可通过SPI4线接口访问,非常适用于移动设备。该加速度可以在倾斜检测应用中测量静态加速度,还可以测量运动或冲击导致的动态加速度;能够测到不到1.0°的倾斜角度变化,并且支持低功耗模式。ADXL345加速度计内部为机械结构,包含可以自由移动的元件。这些运动元件对机械应力非常灵敏,程度远超一些固态电子产品。传感器参数中的0 g偏移为重要的加速度计指标。因为它定义了了用于测量加速度的基线,组装测试系统时可能会因原件焊接、电路板应力等给这些加速度计内部的运动元件施加额外的应力。因此,在每次测试系统上电后,都加入了一段用于对加速度计进行上电校准的校准补偿程序,以补偿这些应力带来的测试误差。
本文实测的对象为迅达电梯(中国)有限公司测试中心的一台测试梯,梯速为0.5 m/s。为了验证自动扶梯加速度检测装置的测试精度和可靠性,将本装置与美国PMT公司的EVA625电梯/扶梯振动噪音分析仪同时进行现场实测并进行结果对比。EVA625电梯/扶梯振动和噪音分析仪是一款测试自动扶梯与电梯运行状态的专业产品。该仪器可以对自动扶梯和电梯的多项特性参数进行测量,如速度、运行距离、加(减)速度、扶梯梯级与扶手带的插值等,并将测得的数据传输到计算机上进行保存;能对数值进行分析,从而发现扶梯运行过程中存在的问题。目前,国内多数的电梯、扶梯厂家已经将该测试系统作为扶梯验收、检测的标准,具有权威性。同时,采用本文设计的测试装置与EVA625对该扶梯的加速度测试和记录可以验证本文测试系统的有效性。在此,截取了扶梯启动加速阶段ADXL345加速度计测得的连续20个数据。ADXL345实测值如表1所示。
表1 ADXL345实测值
通过在整个测试阶段对从SD卡导出的ADXL345采集的原始数据[8],按式(1)取均方根,作离散程度分析[9]。
(1)
将ADXL345与EVA625的均方根进行对比,结果如表2所示。由表2的结果可知,EVA625测得的扶梯的三轴加速度均方根值与本文加速度测试系统测试处理得出的加速度均方根值基本一致,因此表明本文设计的加速度检测系统满足设计要求。
表2 ADXL345与EVA625的均方根对比结果
本文采用μC/OS实时操作系统及FatFS通用文档管理系统,设计了一种准确、高效的自动扶梯加速度检测系统。该系统简化了扶梯加速度的检测步骤、通过在扶梯梯级上固定检测装置,实现了对扶梯加速度值的有效检测,为扶梯加速度检测提供了一种新的解决方案。通过与EVA625测试仪在同一台扶梯上的测试数据的比对,表明本文设计为扶梯的稳定、舒适运行提供了一个评价方案。该研究具有重要的实用意义。