0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于光保护设备的跨平台数据采集服务的设计与实现

电子工程师 来源:现代电子技术 作者:武汉理工大学 计算 2021-03-24 16:22 次阅读

0引言

随着光纤保护系统在通信领域的广泛运用,建立一整套软、硬齐全的光层保护监控系统尤其重要。系统通过数据采集服务可以实时快速地获得各个光保护设备的及时数据,然后交给上层进行相应的处理。

数据采集服务是惟一面向光纤设备的接口服务层,每秒有相当大的数据吞吐量,因此数据采集服务的设计尤为关键,必须兼顾考虑设计的合理性、高效性和一致性。面对大量的数据交流,采集服务分多个模块,主要采用多点采集多线程的模式构建方式。各个模块分别完成不同的功能,通过由主线程创建许多与子模块对应的子线程,由单独的一个线程来分发数据给各个子线程,实现数据的同步处理,提高系统的效率和网元容量。

1 TCP/IP,UDP协议

数据采集服务需要大量的数据处理工作,从光设备中采集数据以及将数据转交给上层服务都需要一定的协议来完成。根据TCP和UDP不同的特点,选取可靠的TCP/IP通信方式连接采集服务与上层服务;选取效率较高的UDP通信方式连接采集服务及下层设备。以UDP为例,UDP通信模块在发送的时候,只是需要从UDP发送队列获取数据发给设备,而在接收的时候,将设备数据存放到UDP接收队列。

数据的发送和接收分别由两个不同的线程来完成。此外,还有一个单独的线程对接收队列的数据进行解包和分发,并根据返回的UDP命令代码或索引(track)的不同将数据分别放置到数据轮询返回队列、阈值轮询返回队列和读写设备返回队列,其模块结构如图1所示。

基于光保护设备的跨平台数据采集服务的设计与实现

2数据轮询

由于光保护设备都是非智能的设备,只能被动地采集性能数据,不会主动地上报性能变化给管理软件,基于此,在软件设计中采用了数据轮询机制,独立出一个轮询模块来捕捉网络中的性能变化,弥补了设备的不足。在这个模块中要进行处理,去掉一些重复的数据,以减少与上层服务通信的数据量。在轮询过程中,要进行超时控制,对于超时的请求需要补叫。因此,对于所有的轮询都需要有缓冲列表存储,只有当得到回应后才删除请求。

数据轮询模块包括数据轮询线程、数据轮询返回处理线程、阈值轮询返回处理线程和切换命令超时处理线程。数据轮询模块结构图如图2所示。

基于光保护设备的跨平台数据采集服务的设计与实现

2.1数据轮询线程

数据轮询线程是负责对设备进行轮询的线程。通过定时地发出读数据和读阈值命令来采集设备的性能、状态、告警和阈值信息,因此,轮询时间间隔必须很小,而且对性能和阈值轮询的周期要求有所不同,因为阈值的变化较少。该线程在轮询模块启动后,判断是否获得配置信息树的初始信息,如果是就开始轮询。

2.2阈值轮询返回处理线程

数据轮询线程按照阈值轮询的周期定期发送读光保护设备阈值的命令,设备在收到命令包后定期返回设备的阈值,这些阈值通过UDP模块的数据分发线程发送到阈值轮询返回队列,等待阈值轮询返回处理线程来处理。

阈值轮询返回处理线程则接收这些返回的阈值,通过比较全局配置信息树的前次轮询结果与当前返回结果来捕捉阈值的变化,并将这些变化写入告警队列,通过性能和告警模块将阈值变化事件发送到上层服务器。

2.3数据轮询返回处理线程

与阈值的轮询相似,数据轮询线程按照系统设定的轮询周期定期发送读光保护设备数据的命令,轮询周期一般为500 ms或1 s。设备在收到读数据的命令包后定期返回设备数据,这些数据通过UDP模块的数据分发线程发送到数据轮询返回队列,等待数据轮询返回处理线程来处理。数据轮询返回处理线程在接收到这些返回的数据后,通过比较全局配置信息树的前次轮询结果与当前返回结果来捕捉告警信息、状态变化事件及其他信息,并将这些变化写入告警队列,通过性能和告警模块将告警和事件发送到上层服务器。

在该线程中,对线路切换的处理比较特殊,由于发生线路切换时用户需要察看切换前整个过程中性能值的变化情况,并且需要该信息尽快返回到用户界面,因此,当发生线路切换时需要立即发送8个数据包读取40帧切换过程的性能信息,通过数据分析后取出最近一次切换前的性能信息作为切换事件的附加数据添加到告警队列。

2.4读切换命令超时处理线程

在数据轮询线程中读切换信息命令发生工作模式改变(即发生线路切换)时,连续发送8个数据包(即8个读切换命令)读取40帧与线路切换相关的性能数据,每个命令读取5帧数据。返回的40帧数据通过索引号来判别数据的先后关系,与数据帧的位置无关。在实际过程中可能还需要反复发送数据包才能完整地获得40帧数据。因此,在读切换命令超时处理线程中,在命令超时之前还要对未返回的数据包反复发送取切换命令,直到完全获得全部40帧数据才能分析处理。

读切换命令超时时间设置为5 s,5 s内反复读取切换信息直到全部40帧数据返回或者超时,如果超时则仅向告警队列添加切换事件而不附带性能数据。

在返回数据的分析处理中,首先找到40帧数据中4个索引号的最大值,并在索引号最大的一组(共10个)数据中找到刚发生切换之前的性能数据——即找到这组数据中工作模式与切换后的当前工作模式相同的一帧数据,这帧数据的前一帧数据就是刚刚发生切换之前的性能数据,将这些性能数据作为切换事件的附带数据,和切换事件一起写入告警队列,发往性能和告警模块,等待处理并发送到上层服务器。

3多线程的应用

数据轮询模块自身就属于一个单独的线程,用来完成数据采集模块中的性能和告警数据主动采集功能,为了保证对众多网元设备的快速采集,数据轮询模块内部又用了多个子线程分工协作。

虽然多个线程同时工作,可以在不占用大量CPU资源的情况下提高模块的执行效率,但是模块也存在着一个隐患,它有一个潜在问题,即数据采集服务中有许多共享资源,可能在某个时刻,某一个线程修改某一个信息,正好第二个线程的时间片也到了,也试图去修改同一个信息,此刻就发生了数据冲突,那么后果比较严重。

上述问题的出现主要是两个线程同时访问了一个共享的变量,为了避免这种问题的发生,要求在多个线程之间进行同步处理,保证一个线程访问共享资源时,其他线程不能访问该资源。为了达到该目的,这里最初使用Sleep函数,让线程睡眠片刻,避免多个线程同时访问同一资源,但经过实践发现,这样不仅浪费时间,依然没有解决同步的问题。

为了实现这种同步,系统采用了同步队列技术,即构造了一个队列,让多个线程分别向其中存人数据和取出数据。例如,通过数据轮询从下层设备得到多种性能数据,这是UDP接收线程的工作。该线程将接收到的UDP包添加到同步队列的队尾,然后再去接收新的数据,反复做同样的操作。存放在同步队列中的数据等待命令处理线程将其一一取出并加以分析,然后分派到各个模块类。

命令处理线程每次从队列头部取出数据,一次只能取出一个数据。同一时刻,只能有一个线程对同步队列进行操作。否则会出现操作不同步的问题,影响数据获得的正确性。例如,当接收线程向队尾写数据时,处理线程也从队头取数据,可能取出的数据正好是接收线程当前所写入的,这样得到的数据不但不完整,也破坏了原始得到的性能数据。解决的方法就是给同步队列设置一个互斥量(mutex),当某个线程对同步队列进行操作时,就设置互斥。

这样,其他线程想要使用队列资源时就会因为互斥量已被设置而处于等待中,直到共享资源得到释放。另外,同步队列还采用了生产者一消费者模型,保证向同步队列添加新数据时,队列有空间;向队列取数据时,队列中有数据,避免产生内存泄露等问题。实现方式是在队列中添加信号量spProducer和spConsumer,每当向队列添加数据时,调用spConsumer-》post();取出数据的时候,调用spProducer-》post()。

同步队列定义了一个基类CMosSynQueue,里面封装了同步互斥的基本操作。在采集服务中各个模块都运用了多线程,所以每个模块都定义了一个同步队列,全部派生于CMosSynQueue。

4跨平台的实现

为了加强系统的通用性,系统将平台的相关性转变为无关性。利用stlport库的可移植性,封装了普通类,使所有类都能够跨平台使用。这些类包括CMosDirec-tory,CMosSynQueue,CMosEvent,CMosFile,CMos-MutexLock,CMosRunThread,CMosReadWriteLock,CMosSemaphore,CMosSimpleLock,CMosThread,CMosTimedMutex,CMosTryMurex。

每个类中,通过宏来选择程序运行在哪个操作平台,例如,#if defined(_MoS_WIN32_)则在Windows操作系统中使用,#elif defined(_MOS_POSIX_)则表示在Linux系统中使用。经过封装,系统中所有的类都派生自这些类,这样就可以在多个平台上使用了。

5结语

数据采集模块在整个网络管理系统中占据着十分重要的地位。这里主要介绍了采集模块中一个很重要的模块,即数据轮询模块。轮询模块采用了多线程,针对多线程,提出了一种同步的方式,采用同步队列。为了使软件更具有移植性,系统主要采用了stlport类库,实现了跨平台。该模块已在实际的网管系统中得到了应用,取得了较好的效果。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211105
  • UDP
    UDP
    +关注

    关注

    0

    文章

    322

    浏览量

    33870
收藏 人收藏

    评论

    相关推荐

    PLC数据采集IoT平台是什么

    PLC数据采集IoT平台是一种集成了传统PLC(可编程逻辑控制器)控制技术和现代物联网(IoT)技术的综合性系统。这种平台不仅具备PLC的基本控制功能,如监控和控制工业设备,还通过物联
    的头像 发表于 10-28 14:44 168次阅读

    IOT数据采集平台的功能特点

    的深远影响。 IOT数据采集平台的定义 IOT数据采集平台是一种专门用于物联网数据采集、处理和分析的平台
    的头像 发表于 09-25 13:28 383次阅读

    西门子PLC数据采集物联网平台是什么

    西门子PLC数据采集物联网平台是西门子公司提供的一个解决方案,用于将可编程逻辑控制器(PLC)和其他工业设备连接到云端,实现数据
    的头像 发表于 08-07 14:04 378次阅读

    工控数据采集物联网平台是什么

    工控数据采集物联网平台是一种集成化的软件系统,它主要用于在工业环境中收集、处理、分析和管理来自各种设备和传感器的数据。这种平台结合了物联网(
    的头像 发表于 07-23 15:29 324次阅读

    水利数据采集远程监控平台是什么

    水利数据采集远程监控平台是一种基于现代信息技术的管理系统,用于对水资源、水环境、水利工程等进行实时的数据采集和远程监控。这个平台通常包括硬件设备
    的头像 发表于 07-22 15:36 319次阅读

    Modbus数据采集物联网平台可以采集什么设备?有什么功能?

    实现PLC、仪器仪表、工业机器人、数控机床、传感器等设备数据采集与远程监控,为生产管理提供可视化、网络化、信息化等可靠支持。 功能特点 1、实时数据采集 通过Modbus
    的头像 发表于 07-22 13:29 193次阅读
    Modbus<b class='flag-5'>数据采集</b>物联网<b class='flag-5'>平台</b>可以<b class='flag-5'>采集</b>什么<b class='flag-5'>设备</b>?有什么功能?

    plc物联网数据采集平台是什么

    PLC物联网数据采集平台是基于物联网技术,将多个PLC设备连接到云端的数据采集与管理系统。通过采集和分析PLC产生的
    的头像 发表于 06-24 15:18 692次阅读

    plc物联网数据采集平台是什么

    PLC(可编程逻辑控制器)物联网数据采集平台是一种结合了传统PLC控制技术和现代物联网技术的系统。它不仅能够执行传统的PLC控制功能,如监控和控制工业设备,还能将这些设备与互联网连接,
    的头像 发表于 06-21 16:43 481次阅读
    plc物联网<b class='flag-5'>数据采集</b><b class='flag-5'>平台</b>是什么

    工控数据采集平台是什么?

    工控数据采集平台是一种用于工业控制和监测领域的系统,该平台能够收集来自传感器、执行器、机械设备以及其他系统的信息,并对这些数据进行处理、存储
    的头像 发表于 06-14 15:29 377次阅读

    工业数据采集平台的功能和作用

    数据采集平台,可以实现与各种工业设备(PLC、仪器仪表、传感器、CNC机床、机器人等等)连接,实现对现场的各种工业
    的头像 发表于 06-05 13:33 262次阅读

    数据采集处理设备是什么?数据采集处理设备的功能

    数据采集处理设备(工业智能网关),是现代工业物联网(IIoT)中的关键组件,它们在连接工业现场设备与云端或上层管理系统中起到桥梁作用。 以下是关于
    的头像 发表于 05-31 14:11 481次阅读

    工业设备连接数据采集平台的功能

    得以一窥运行效率提升的秘密,产品质量的脉络以及生产环境的整体健康状况,从而制定科学合理决策。 数之能推出的工业设备连接数据采集平台负责接入PLC、仪器仪表、传感器、数控机床、工业机器人等设备
    的头像 发表于 05-31 11:02 286次阅读
    工业<b class='flag-5'>设备</b>连接<b class='flag-5'>数据采集</b><b class='flag-5'>平台</b>的功能

    工业设备互联数据采集平台是什么?有什么功能?

    实现制造业网络化、数字化、智能化转型升级是实体制造业高质量发展的重要途径。其中工业设备互联数据采集平台发挥重要作用。工业设备互联
    的头像 发表于 03-29 13:47 319次阅读

    关于PLC数据采集上传,系统平台对接、设备数据转发

    设备数据采集上报与系统平台对接 PLC与SQLServer,MySQL,PostgreSQL,Oracle数据库双向通讯;HTTP协议GET/POST/PUT请求上报,解析返回
    发表于 03-26 14:15

    如何实现更有效率的产线各工业设备数据采集

    ,提供智能化的管理平台。 工业数据采集分析系统支持多种测控应用场景,可平台部署,支持二次开发,具备丰富的接口设计,支持多设备接入,可自定义
    发表于 12-12 17:12