DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 939|回复: 0
打印 上一主题 下一主题

[工仪] 基于ARM9的电梯缓冲器复位时间测试仪的设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 15:31:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  0 引言
  随着《电梯监督检验规程》的发布,对检验机构的电梯检验质量提出了新的要求。但在《检规》的实施过程中,不断发现现有的检验项目缺乏必要的、科学的检测手段。为此,探索研制一些检测仪器,设法满足特种设备检验的需要势在必行。
  本研究针对电梯缓冲器复位时间的检测要求而展开。《检规》中是这样描述的:"对耗能型缓冲器需进行复位试验,复位时间应不大于120s。"对应的检验方法是:"轿厢在空载情况下,以检修速度下降,将缓冲器全压缩,从轿厢开始离开缓冲器瞬间起,直到缓冲器回复原状。观察并用秒表计时。"
  上述检测手段主观性太大,造成实际的检验结果不具有科学性、准确性,应当开发一套成本相对较低,但检验精度高、效率高,安装容易,可靠性好的系统,用于缓冲器复位时间的检验。考虑到上述要求和用户的易用性,我们提出了基于ARM9的嵌入式Windows CE平台方案。
  1 系统功能特点
  采用三星S3C2410芯片,基于ARM-Windows CE的电梯缓冲器复位时间测试仪具备以下功能特点:精确性:采用轿厢运动过程中的缓冲器受力变化状态信号以及缓冲器复位状态信号的实时采集、分析方式,达到检测结果精确,瞬时性好的目标。
  实用性:应用数据通信接口规范,使检验结果判断和检验结果输出自动进行,达到有效提高检验的安全性和工作效率的目标。
  易用性:采用便携式设计,提供彩色图文界面和触摸屏操作,直观方便易用。
  2 系统硬件实现方案
  2.1 总体设计方案
  电梯缓冲器复位时间测试仪三星S3C2410的ARM芯片为核心,采用TFT彩色液晶图文显示和触摸屏操作。预留各种通信接口。系统主要有控制部分,数据采集部分,数据存储部分,输入输出部分等4个主要组成部分。硬件上主要有上位机和下位机两部分组成,之间采用串口标准RS232通讯,具体硬件框图如下图1所示:



  系统的下位机部分主要负责前端的传感器数据采集存储以及和上位机的有关通讯,有关数据的分析和算法处理及用户程序设计主要有上位机的S3C2410来完成。其通过串口接收下位机上传的数据包,负责向下位机发送包含采样参数的信息包,并承担数据的处理,算法分析以及静态参数的计算和显示等工作。
  2.2 数据采集方案
  下位机是一个基于高性能AVR单片机的超声波测距系统,具有温度校正和软件补偿,承担现场缓冲器恢复状态的实时数据检测采集,并按照一定的协议打包成数据包通过串口传给上位机。测量最小距离4cm,最大距离500cm,分辨率为1cm。图2为数据采集的硬件框图:



  3 系统软件部分:
  Windows CE主要分为四个模块,如图所示,这四个模块提供最重要的操作系统功能:内核,对象存储模块,网络与通讯模块和GWES模块。
  Windows CE还包含其它可选模块,支持如管理可安装设备驱动程序和支持COM的任务,图3为系统结构图:



  3.1 定制操作系统
  为了把Windows CE移植到特定的目标平台上,微软提供了一套完整的开发工具Platform Builder。该工具以对象库格式提供给操作系统,以便开发人员可以将其作为特定操作系统平台的组件。
  首先,选择造作系统的基本配置,并且为特定的平台选择相应的微处理器和板级支持包BSP(Board Suppor Packet)。本测试仪采用S3C2410处理器,因此我们改造了微软提供的基于S3C2410的BSP,自定义了符合我们要求的BSP。
  其次,制定平台,在此阶段可开发设备驱动,适当地裁剪、添加组件。然后,封装所需的各功能模块,编译生成OS镜像文件。接着,把镜像文件下载到目标设备,进行调试。在此阶段,我们主要进行了串口和触摸屏程序系统相关组件的添加和裁剪,编译生成符合我们测试仪硬件要求的OS镜像。
  最后,导出定制操作系统的SDK(Soltware Development Kit)软件开发工具包,安装到EVC中,便可以进行基于我们定制的测试仪硬件平台的应用程序开发。如图4所示为操作系统移植流程图:



  3.2 应用软件开发
  操作系统的主要任务是为了管理所有硬件资源,并且提供应用软件一个合适的操作环境。将Windows CE操作系统移植到ARM平台上以后,下一步工作就是进行应用软件的开发。本系统的上位机软件主要在EVC的环境下开发完成,使用C语言为主要编程语言。主函数主要包含以下几个模块:用户界面模块、上下位机串口通讯模块、算法分析处理模块。
  3.2.1 串口通讯协议说明
  模块串口波特率9600,无奇偶效验,一位停止位。控制命令通过一致的帧结构通讯,帧长度4字节:命令+数据0+数据1+校验和。效验和=命令+数据0+数据1的相加和的低8位。系统通过上位机串口直接对下位机模块进行操作。上位机向下位机发送启动16位距离读取命令:Ox22+度数+NC+SUM。当测量完毕时,这时返回的数据是:Ox22+距离高+距离低+SUM;当测量无效时返回的距离高位和低位数据都是Oxff。(注:NC代表任意数据,SUM代表效验和)串行端口在Windows CE下属于流接口设备,是串行设备接口常规I/O驱动程序的调用与通信相关的具体函数的结合。串行设备被视为用于打开、关闭和读写串行端口的常规的可安装的流设备。Windows CE的串口函数和Windows的串口函数基本相同,但有几点值得注意:Windows CE只支持Unicode字符集,在编程时必须特别注意; Windows CE不支持重叠的I/O操作。在所有的流设备驱动程序中,均使用CreateFile来打开串行端口设备,如果这个端口不存在,CreateFile返回ERROR_FILE_NOT_FOUND。因此,用户指定的端口必须是存在并且可用的,而且要遵循Windows CE流接口设备驱动程序的命名规则,即COM后接要打开的端口号再紧跟一个冒号。




  关闭串行端口比较简单,调用CloseHandle函数就能关闭一个打开的串行端口。CloseHandle只有一个参数,即调用CreateFile函数打开端口时返回的句柄,方法如下:
CloseHandle(hPort);
  正如使用CreateFile打开串行端口一样,可以使用ReadFile和WriteFile函数来读写串行端 口。假设已经调用CreateFile成功地打开了串行端口,那么只需调用ReadFile即可从串行端口读取数据:



  如果从主线程读、写大量的串行数据,主线程就会因为等待相对较慢的串行读或串行写操作而阻塞,不能即时处理其他的消息,因此这里用单独的线程来读写串行端口。对于串行端口来说,还必须配置超时值,否则程序可能陷入到一个等待来自串口字符的死循环。通常,配置超时值和配置串口类似。首先用GetCommTimeouts函数获取当前串口的超时值,然后修改CommTimeouts成员变量的值,最后用SetCommTimeouts设置新的超时值。
  3.2.2 算法分析
  根据电梯检测规程要求,缓冲器从全压缩到复位的时间应不大于120秒。上位机从上电检测开始每隔0.1秒发送一次数据采集命令,并将返回的距离值和开关量信号存储于不同的数组待分析。数组s(m)和F(n)分别存储采集到的距离值和开关信号值(0或1),t为每次数据采集循环时间,T为缓冲器回复时间。软件的算法流程图如5所示:



  4 结束语
  基于ARM技术和Windows CE系统的电梯缓冲器复位时间测试仪功能齐备,精确性高,实用性强,满足了新的检测规程的要求。本设计方案首次实现了缓冲器复位过程中瞬时脱离点的检测,实现了各种状态时刻的精确计时和状态识别,解决了信号同步,结果自动判断和输出等问题。随着技术的进一步发展,必将向着多功能、智能化的方向发展。
                                
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-4-28 08:19 , 耗时 0.102258 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表