杨昌群
(国家石油天然气管网集团有限公司华南分公司,广东 广州 510180)
磁致伸缩位移传感器是一种利用TOF(Time of Flight)法来测量物体绝对位移的非接触式传感器,具有精度高、重复性好、稳定可靠、无需定期标定等优势[1-2],因而被广泛应用于石油、化工、冶金等行业中的位置检测与控制系统[3],如火箭和导弹发射台架控制系统、液压控制系统、辊压机的压下机构等。
作为检测与控制系统的重要一环,为满足现场安装的空间限制以及位移检测的实时性、可靠性和稳定性要求,磁致伸缩位移传感器自身舍弃了显示操作功能以减小电子仓体积和故障发生率。而在正式应用前,为了确保测量准确性,传感器的工作参数必须根据现场的实际条件进行确定[4],如零点位置、测量方向、通讯参数等,因此需要配合手操器或工控机完成调试工作。目前市面上常见的手操器大多采用按键复用和数码管实现人机交互,使用十分不便,而采用传统C/S架构的工控机调试软件依赖于运行环境,易于出现兼容性问题[5]。并且由于传感器大多应用于具有冲击振动、污染等恶劣条件下的工业现场,调试人员不宜靠近安装工位,此时将传感器接入调试设备还需长距离布线,不利于调试工作的快速开展。
鉴于上述问题,本文设计了一种基于B/S 架构的磁致伸缩位移传感器手操器。用户通过手机、平板、移动PC 等便携式设备接入手操器的Wi-Fi 网络后即可使用Web 进行远程操作。相较于传统调试工具,无需预先安装调试程序,软件兼容性更好,可实现即连即用,并且通过无线通信和Web 技术以一种更加友好的方式实现交互,对磁致伸缩位移传感器的现场调试具有积极意义。
手操器需要具备远程操作以及良好的人机交互功能,以便于对应用于工业现场的磁致伸缩位移传感器进行快速调试,因此采用B/S架构并结合Web 技术以提供更加简便高效的操作方式,整体方案如图1所示。手操器采用RS485 接口与磁致伸缩位移传感器进行通信,其内部运行Web 服务器,用于接收来自便携式设备的前端请求并通过CGI(Common Gateway Interface)[6]和HTML实现请求响应和数据可视化。其中,Web 前端所需的资源文件均存储于本地,在用户首次访问后统一上传。通过Wi-Fi 模块将手操器拓展为无线网络接入点,使用户接入该网络后即可通过浏览器完成磁致伸缩位移传感器的现场调试。
手操器以ARM芯片为核心,硬件按功能可划分为最小系统电路、RS485接口模块、存储拓展模块和无线通信模块等,如图2所示。ARM 芯片的型号为STM32F429,主频180M,自带1M的FLASH和256K的SRAM,具有SD、SPI、USART 等多种外设接口。由于片内存储器大小无法满足系统需求,分别拓展了128M 的NOR FLASH 用于存储Web资源文件以及32M的SDRAM充当发送与接收缓冲区。无线通信模块选用型号为AP6181 的Wi-Fi模块,符合IEEE 802.11 b/g/n标准,启动后以AP模式工作,负责手操器与便携式设备之间的无线数据传输,该模块的外围电路设计如图3所示。RS485 接口则作为手操器的外部接口,负责与磁致伸缩位移传感器进行通信。
为降低不同功能模块之间的耦合度并提高实时性,手操器采用FreeRTOS 操作系统。FreeRTOS 是一款开源且实现多任务调度的轻量级实时操作系统[7],因此可将手操器整体功能划分为各个子任务并进行灵活调度。为满足手操器与浏览器之间的通信协议标准,在手操器中移植轻量级TCP/IP协议栈LWIP[8]并根据HTTP协议规范实现应用层数据解析及封装。根据需求分析,最终将整体功能划分为五个任务,分别为主程序、DHCP服务程序、HTTP 服务程序、无线通信程序和传感器通信程序,任务之间通过FreeRTOS 提供的消息邮箱和消息量实现协作。
主程序负责完成硬件初始化和任务创建,待所有任务进入就绪状态后,开启抢占式任务调度,此时程序的执行逻辑由操作系统根据各任务的优先级和阻塞状态决定。DHCP服务程序为每个接入无线网络的便携式设备分配临时的IP地址。HTTP服务程序阻塞监听本机IP地址上的80端口,判断是否有HTTP请求到达,根据协议规范解析请求并执行URL对应的CGI程序,然后按协议格式封装消息并返回。传感器通信线程负责按Modbus-RTU标准协议与传感器进行数据交换,根据响应码解析数据并生成相应信息。无线通信程序负责控制无线通信模块的底层数据发送和接收,通过消息邮箱与LWIP协议栈进行网络数据包传递。
传感器在调试过程中的位移实时检测需要Web前端不断向手操器发送请求并根据响应数据更新图表信息。若请求到达HTTP 服务程序后再与传感器进行通信,则该线程的阻塞时间将在较大程度上取决于传感器的响应时间,导致单次通信所耗费的时间延长。为了提高通信效率,本文采用生产者、消费者设计模式,将数据生产和消费任务分别交由传感器通信程序和HTTP服务程序完成,使数据在生产和消费速率不一致的情况下实现高效率的共享[9]。传感器通信程序负责将传感器数据按固定格式加工为对应的消息并投递至数据缓冲区,HTTP 服务程序则根据请求中携带的URL 直接从该缓冲区中取出指定类型的消息并返回给Web 前端,两者之间的数据缓冲区采用基于FIFO队列的消息邮箱。通过这种方式,HTTP服务线程在响应请求时可直接从邮箱中取出消息而无需在此期间等待传感器响应,实现了程序的进一步解耦,执行流程如图4所示。
Web前端负责在浏览器中控制和显示传感器的操作界面,由HTML、CSS 和JS 文件组成。Web 前端和手操器之间采用HTTP 协议进行通信并以JSON 作为数据交换格式。
SPA(Single-page Web Application)是指通过单个HTML界面完成用户交互与动态更新的应用程序。SPA的优势在于构建Web 界面所需的资源仅需加载一次,其后通过JS脚本和少量的数据交互即可完成页面内容的更新,从而提高了Web 界面的响应速度[10]。本文根据SPA规范设计了Web前端并使用AJAX(Asynchronous JavaScript and XML)完成数据的异步更新[11]及界面的局部刷新[12]。当便携式设备接入无线网络并访问指定IP地址后,手操器将存储其中的Web 资源上传并在浏览器成功加载后开始运行其中的JS 脚本。为了满足Web 界面与传感器的交互需求,JS脚本实现了以下几个功能:1)将Web 界面中的各个按钮与CGI 对应的URL 绑定。2)以固定频率向手操器发送位移请求,并将该请求对应的响应包作为心跳包以判断便携式设备与手操器的连接状态。3)根据协议规范解析响应包并通过DOM 操作调整Web 界面的显示内容。4)发生指定异常时,通过浏览器的弹窗显示异常信息,异常分类如表1所示。JS脚本的具体执行流程如图5所示。
表1 异常信息分类
由于接入设备的屏幕分辨率存在差异,采用单一页面布局可能会导致Web 页面在某些分辨率下出现内容缺失、显示比例不协调、无法正常操作等问题,对此采用Bootstrap开源框架对网页布局进行响应式设计,其原理为采用媒体查询(@media)控制网页的CSS样式。当设备的屏幕尺寸满足@media 中设置的尺寸范围时即采用对应的布局样式,使Web 页面在不同尺寸的屏幕中均可正常显示。为减小存储占用和传输耗时,对Bootstrap进行裁剪,仅保留栅格系统以实现适配功能。
为测试手操器的各项功能,以RS485 总线连接手操器和传感器,将便携式设备接入无线网络,通过浏览器访问指定IP 地址后显示手操器的Web 界面,如图6所示。通过该界面,用户可查看磁致伸缩位移传感器的运行状态并对其工作参数进行调整,如方向、分辨率、平滑次数等。其中,曲线图负责实时展示传感器的位移输出值。当模拟表1所示的指定异常后,浏览器中也可及时出现携带相应异常信息的弹窗警告。
将电脑接入手操器的无线网络中并通过Chrome 浏览器记录Web 前端与手操器通信时所产生的HTTP 报文,然后根据其生成的HAR文件[13]分析Web应用性能并统计通信的延时情况。在一段时间内对手操器进行连续测试,测试条件为手操器以每秒20 次的频率采集传感器的位移值并进行存储,然后由Web 前端以0.5 s 为间隔定时向手操器发送请求以获取位移数据,延时大小以从浏览器发出请求到接收响应包之间的时间差为准。测试结果如下:测试期间,Web 前端共发送8119 次HTTP请求,成功返回8015个响应包,丢包率约为1.3%,平均延时约为37.6 ms,具体情况如图7所示。由此可见,该手操器在测试期间运行较为稳定,延时大小可满足现场调试的需求。
本文基于B/S架构设计了一种应用于磁致伸缩位移传感器的手操器,以ARM 作为控制核心进行拓展,选用Wi-Fi作为无线通信方式并结合一系列Web技术完成数据可视化,使人机交互性能得到较大提升。最后对所设计的仪器进行功能测试,验证了该方案的可行性,为相关手操器的开发提供了一种设计思路。