一种数据监控设备的实时通道日志记录方案设计

2023-09-25 13:04姚豪立汪芳君李天一孙苏钦李章昊
现代信息科技 2023年16期
关键词:通道日志串口

姚豪立 汪芳君 李天一 孙苏钦 李章昊

摘  要:数据监控设备通常具有丰富的采集模块及通信模块,因此在当前工业中起到至关重要的作用。然而,这些模块经常在应用过程中出现问题,目前最常用的是通过拆卸设备来获取控制信号,以判断问题根源。文章介绍一种基于此类设备的实时通道日志方案,通过共享设备其中的一种或者两种通信接口,把所需通道的调试数据实时展现出来,同时不影响设备正常应用功能。目前这个方法已经成功应用于多种设备,并且取得良好的使用效果。

关键词:数据监控设备;通道;日志;串口

中图分类号:TP368.1   文献标识码:A   文章编号:2096-4706(2023)16-0006-05

Design of a Real-time Channel Logging Scheme of Data Monitoring Equipment

YAO Haoli, WANG Fangjun, LI Tianyi, SUN Suqin, LI Zhanghao

(Zhejiang Water Meter Research Institute, Ningbo Water Meter (Group) Co., Ltd., Ningbo  315032, China)

Abstract: Data monitoring equipment is usually rich in acquisition modules and communication modules, so it plays a vital role in the current industry. However, these modules often have problems during the application, and the most commonly used one is to disassemble the equipment to obtain control signals to determine the root cause of the problem. This paper introduces a real-time channel log scheme based on such type of equipment. By sharing one or both of the communication interfaces of the equipment, the debugging data of the required channel is displayed in real time without affecting the normal application function of the equipment. At present, this method has been successfully applied in a variety of equipments, and has achieved good use effect.

Keywords: data monitoring equipment; channel; log; serial port

0  引  言

數据监控设备为集数据采集与远程通信技术为一体的终端产品,该设备功能强大并且具有丰富的外围接口,其中GPS、有线采集、无线通信、红外、蓝牙等功能往往需要占用监控设备处理器的串口资源。处理器与外围设备经过串口通信,实际应用过程中难免会出现运行问题,维护人员难以通过现象来分析原因,他们往往需要拆卸设备,通过截取其中的交互码流数据,来判断问题的根源。

本文提出了一种新的数据监控设备实时通道日志记录方案,可极为便利地获取外围设备操作的日志信息,有效地解决终端维护不便的问题,大大降低维护成本,提高维护效率。

1  方案介绍

以应用于水务终端的数据监控设备为例,它通过NB-IoT、GPRS和4G等无线通信单元,可实现水务终端数据监控设备的无线通信网络与数据服务器的数据交换;通过GPS定位单元,实现设备的精确定位和跟踪;有线采集单元则可使用RS485、M-Bus作为通信方式,实现水表的流量、流速、水压等数据采集;此外,还可利用蓝牙、红外通信单元作为维护通道,实现手机端、上位机的调试维护,从而降低维护成本。

数据监控设备系统框图如图1所示。设备外围接口丰富,比如红外通信、蓝牙通信、GPS定位、有线采集、无线通信等单元,这些功能单元占用了监控设备处理器的串口资源。监控设备在控制外围设备的通信过程中,经常会出现各种问题,维护人员难以通过现象来分析原因,在极端情况下他们往往需要拆卸设备,通过截取其中的串口交互码流数据,来判断问题的根源。例如当无线通信失败时,维护人员看到的现象是水务平台没有接收到设备终端数据。而引起该现象的因素包括:通信模组与主控单元的通信原因、模组供电电压原因、设备无线信号问题、运营商网络服务问题,等等。问题的确定需要拆卸设备,监控无线通信单元与数据监控仪AT交互信息,例如使用AT+CSQ指令查看返回的信号强度。

传统的方案中每个通道的监控都需要不同监控工装进行不同操作,极大提高了运维人员操作烦琐程度,且拆卸后的设备破坏了产品的密封性,需要返家重新更换外壳灌胶,既提高了维护成本,又降低了问题解决效率,带来极坏的产品使用体验。

这类设备产品通常存在以下特点:

1)通信速率低。低功耗设备单片机主频低,支持波特率低,通常在1 200~9 600 bit/s之间,这样会影响数据传输效率和实时性。

2)串口数量少。举例产品仅有两路串口可用于通信,其中串口1用于无线通信单元,串口2通过片选芯片用于其他四路通道进行通信,没有监控专用通信口。

3)密封要求高。防水要求较高,拆卸影响防水功能,因此如果采用传统的拆卸方案,会影响产品防水性能,进而影响二次使用。

4)硬件存储不足。铁电存储区空间有限,无法存储大量日志数据,因此如果采用故障日志先存储方案,不仅存不了太多日志信息,还会影响后期扩展空间。

本方案采用分时复用方案,将一个串口资源分配给多个应用程序,将红外或者蓝牙通信通道作为日志监控通道,并按需要选择无线通信、有线采集、GPS通道进行实时监控。方案过程包括监控日志存储与读取,即当需监控的通道有信息交互时,把交互信息存入实时缓冲区,待红外或者蓝牙通道空闲时,从缓冲区读出日志信息输出到PC上位机或手机APP,通过维护软件进行数据可视化后供维护人员查看。整体方案如图2所示。

2  具体实现方案

由于日志系统是非常严谨的事情,因此本方案中采用了大量的安全机制来保证日志方案的可靠性和稳定性。具体实现过程包括日志分组管理、日志收集、日志输出和日志可视化等几个部分,技术人员仅需通过PC上位机和手机APP,便可监控内部通道日志信息。

针对本产品的特点,我们设计了几项措施,以确保系统的可靠性和稳定性:

1)设计日志分组及开关控制机制,减少日志记录对系统的额外开销。

2)采用数据实时输出模式,设计一套日志数据缓存机制,以避免数据丢失。

3)設计维护通道相关的机制,以避免维护通道日志与常规功能冲突。

4)通过维护PC上位机和手机APP展示日志。

2.1  日志分组管理

本方案主要记录内部通道交互信息。由于采用单片机方案的嵌入式设备无法大量输出日志,因此将日志分为不同类型,按需输出指定类型日志以减少系统压力;在应用现场出现的问题,在其他环境中很难复现,通过维护人员的操作,调试日志输出可使设计人员第一时间获取尽可能多的信息,定位问题。

当需要在现场定位问题时,可以随时修改日志输出类型,配合现场运行情况,获得更多日志信息[1,2]。

对此设计一种嵌入式日志管理方法,包括:根据通道及功能不同,将日志信息赋予不同类型;接收用户的指令,解析出允许输出哪些类型的日志;确定待处理日志的类型,根据允许输出的日志类型,判断是否输出该日志;日常使用时全部关闭,降低运行功耗。

具体类别如表1所示。其中编号1、2、3、4、9、10属于无线通信通道,编号5、6属于有线采集通道,编号7、8属于GPS定位通道。

2.2  缓冲区设计

本方案仅针对内部通道信息进行监控,由于存储资源受限,因此最理想的方案是监控的日志数据不做物理存储,而是实时输出。由于维护通道与其他通道共用一个串口,当串口正处于其他功能通道通信时,无法及时输出日志,容易丢失数据。采取的方式为首先将日志写入缓存,在空闲时进行发送。由于接口缓存大小本身非常有限,所以此技术也会受到日志大小、日志产生速度的影响,并不能达到实时的日志记录[3,4]。

当前传统的技术方案是通过动态分配内存方式,即接收到一个数据分配一个内存保存数据。这种方式简单但需要较多的系统资源,对轻量级应用不适合[5]。因日志数据长度不定长,为避免空间浪费,特别引入环形缓冲区机制,可以有效利用缓存,实现较为灵活的记录[6]。

环形缓冲区是嵌入式系统中十分重要的一种数据结构,通常包含一个读指针和一个写指针。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区。通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。在通常情况下,环形缓冲区的读用户仅仅会影响读指针,而写用户仅仅会影响写指针。

图3、图4和图5是一个环形缓冲区的运行示意图。图3是环形缓冲区的初始状态,此时读指针和写指针都指向缓冲区的入口地址1;图4是向环形缓冲区中添加了一个数据后的情况,此时写指针已经移动到数据块2的位置,而读指针没有移动;图5是环形缓冲区进行了读取和添加后的状态,此时环形缓冲区中已经添加了两个数据,已经读取了一个数据。

通过固定长度的环形缓存区接收和保存数据,是很好的选择。其中核心是申请一段内存,通过特殊方法让其首尾相连,形成一个闭环的内存地址。这样既可以继续处理源源不断的数据,又不用再去申请新的内存空间暂存新的数据,效率大大提高。

但是对于环形缓存区需要注意的问题包括:环形缓冲区写的速度和读速度匹配性问题,即数据还未被读取,便写入数据,就会造成数据还未被读取便被新的数据覆盖,造成数据的丢失。同样原理,读的指针不能超过写的位置,否则就会读到已经被读取过的数据,造成数据的重复。如果存储空间设置得太大,会造成内存的浪费,有些内存一直处于空闲状态,如果设置得太小,可能会造成读的速度快于写的速度,读的过程中会有短暂的等待时间,造成效率不是最高。

由于缓存方案的重要性,我们在本方案中采用了大量安全机制,以确保缓存方案的可靠性,避免数据丢失和影响系统正常运行。

2.2.1  日志缓存协议

因为日志信息不定长,为便捷进行读取存储,在保证日志数据完整前提下记录更多信息,设计日志缓存协议,日志根据协议进行缓存协议进行打包存储。协议如表2所示。

为了确保日志完整性,当剩余空间不足以容纳新日志信息时,存储将被暂停。按照先进先出原则,读取时从头开始,每次只读一个完整日志,以供日志输出使用。

2.2.2  日志缓存写入

设计一个日志环形缓冲区的存入逻辑,首先根据日志分组控制,判断哪些类型的日志需要监控,然后检查日志缓存区域有效存储空间是否足够,如果未使用空间小于待记录日志数据的长度(包括起始帧2字节、长度帧2字节、日志类型1字节、日志时间戳6字节、校验帧1字节和结束帧1字节),则根据日志缓存协议将日志数据扩充成长度为L的完整码流,最后使用环形缓冲区写入接口将打包后的数据存入环形缓冲区,缓冲区有效存储空间长度减少L。

2.2.3  日志缓存读取

为了高效安全地从缓冲区中取出日志信息,设计一个日志环形缓冲区的读取逻辑。首先,在满足存入数据长度条件的情况下,遍历缓冲区,寻找起始帧,然后依次取出后续数据内容,如果数据域长度、校验位和结束帧均符合缓存协议,则取出日志信息记录。接着,将得到的信息解包,获取日志数据、日志类型和日志时间戳,以供日志输出模块使用。最后,更新缓存区指针,继续检查下一条日志信息,直到缓存区空间不足,结束读取。

2.3  日志输出

为了避免影响本地串口的日常工作,设计了一套串口通道共用机制,在不影响功能的前提下,充分考虑功耗。该机制采用了通信互斥锁和空闲输出机制,以减少对功耗的影响,并降低日志任务调用频率,避免无效遍历环形缓冲区(仅在打开日志监控开关后才可遍历)。具体操作流程如下:

1)流程开始,每隔200 ms处理一次日志输出。

2)仅需要监控时(日志监控开关至少打开一个)跳转步骤3),否则结束。

3)满足本地串口为维护通道(红外,蓝牙)且空闲跳转步骤4),否则结束。

4)从缓冲区取出完整日志数据,若无完整日志直接结束。

5)解包后提取日志信息解包后提取日志信息,包括类型、发生时间、内容。

6)日志相关信息根据维护协议二次组包。

7)将二次组包日志信息通过串口维护通道输出给PC上位机、手机APP。

3  实验结果分析

目前对于嵌入式设备而言,常规的监控方式为通过232串口线连接至宿主设备,宿主设备直接输出运行信息,显然嵌入式设备的运行信息的安全性非常低[7]。

为了提高安全性,我们设计了一种日志传输协议,主控设备将日志及相关信息按照一定的协议打包,通过维护通道输出。维护软件采用相同的协议对收到的数据进行解包[8],以防止直接监控通道得到一串乱码。为了查看实时日志输出,需要搭配专用的维护PC上位机或手机APP,从而有效地防止信息泄露,大大提高了安全系数。

维护软件支持蓝牙和红外连接终端设备,可以实时输出需要监控的日志类型。维护软件的日志界面支持调试日志分组的开启和关闭,以及日志的实时展示和一键导出。日志展示内容包括日志类型、发生时间和日志内容,如图6、图7所示,PC上位机与手机APP操作界面可以清晰地展示出来。

4  结  论

该方案一经推出,受到运维和开发人员一致好评,本方案极大地提高了维护的便捷性,处理现场问题时不必携带一堆设备安装大量软件,只需使用维护PC上位机或手机APP即可完成绝大多数维护工作,同时也减少了需要返厂破胶拆壳的情况。方案具有以下优点:

1)降低维护难度。运维人员经过简单培训,便可轻松上手,极大降低人工成本。

2)提升维护效率,避免返厂处理,现场可快速记录日志,大大降低处理时间。

3)简化开发难度,集成化日志记录功能,开发调试时无需大量外接设备。

4)提升客户满意度,提升产品口碑。

它具有良好的移植性,可以應用于绝大部分嵌入式产品,而且数据安全性较高,可以有效保护用户数据的隐私。该方案可以为开发和维护人员提供便利,已经在批量产品中得到应用,运行稳定,用户反馈良好。

参考文献:

[1] 张朋飞,周厚明.一种嵌入式日志管理系统及方法:2020111832990 [P].2021-02-02.

[2] 郭荣华,张建,胡成松.一种嵌入式系统及其日志管理方法:201911321118 [P].2022-04-12.

[3] 杨波波,李悦坤,陆发忠.一种嵌入式设备日志输出记录方法及系统:2020109824924 [P].2020-12-18.

[4] 宋恒利.一种嵌入式设备控制器的实时日志记录方法:201510984551.0 [P].2017-07-04.

[5] 裴文祥,张建新,汪先超,等.一种高可靠性异步环形缓存区存储、处理的实现方法:202111135622.1 [P].2021-12-31.

[6] 姚章俊,陈蜀宇,卢尧.一种高性能环形缓冲区的研究与实现 [J].计算机工程,2012,38(8):228-231.

[7] 汪俊伟.一种嵌入式设备运行信息的输出方法、装置及嵌入式设备:202011002664.3[P].2020-12-22.

[8] 李亚洲.基于串口通信的单片机日志系统设计[J].工业控制计算机,2009,22(11):44-45.

作者简介:姚豪立(1993—),男,汉族,浙江宁波人,嵌入式工程师,本科,研究方向:嵌入式系统设计;汪芳君(1981—),女,汉族,浙江宁波人,高级工程师,硕士,研究方向:无线远程通信与控制;李天一(1989—),男,汉族,浙江宁波人,助理工程师,本科,研究方向:有线通信技术与设备应用;孙苏钦(1994—),男,汉族,浙江宁波人,嵌入式工程师,本科,研究方向:无线远程通信与控制;李章昊(1997—),男,汉族,陕西宝鸡人,嵌入式工程师,本科,研究方向:嵌入式系统设计。

猜你喜欢
通道日志串口
一名老党员的工作日志
浅谈AB PLC串口跟RFID传感器的通讯应用
扶贫日志
游学日志
通道创建技术在Photoshop CS设计中的应用
客家朝祖单的个案研究
如何让中职学校的学生学好photoshop软件
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
基于并行控制的FPGA多串口拓展实现