CN107992367A - 一种Modbus串口数据处理方法 - Google Patents

一种Modbus串口数据处理方法 Download PDF

Info

Publication number
CN107992367A
CN107992367A CN201710987416.0A CN201710987416A CN107992367A CN 107992367 A CN107992367 A CN 107992367A CN 201710987416 A CN201710987416 A CN 201710987416A CN 107992367 A CN107992367 A CN 107992367A
Authority
CN
China
Prior art keywords
thread
serial
modbus
data
serial ports
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710987416.0A
Other languages
English (en)
Other versions
CN107992367B (zh
Inventor
张旭
刘逸凡
陈富国
尹军华
寇新民
秦晓焕
周瑞敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Corp of China SGCC
Pinggao Group Co Ltd
Henan Pinggao Electric Co Ltd
Original Assignee
State Grid Corp of China SGCC
Pinggao Group Co Ltd
Henan Pinggao Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Grid Corp of China SGCC, Pinggao Group Co Ltd, Henan Pinggao Electric Co Ltd filed Critical State Grid Corp of China SGCC
Priority to CN201710987416.0A priority Critical patent/CN107992367B/zh
Publication of CN107992367A publication Critical patent/CN107992367A/zh
Application granted granted Critical
Publication of CN107992367B publication Critical patent/CN107992367B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Programmable Controllers (AREA)

Abstract

本发明提供了一种Modbus串口数据处理方法,主线程解析串口配置文件;串口线程用于根据主线程的命令启动,进入事件消息循环;协议线程启动,根据配置串口信息确定串口号,将串口线程的Modbus列表中存储的Modbus命令存入协议线程的QModbusComList列表中;数据线程启动,解析响应信息,实时检测QComDataList列表是否存储有数据,当检测到有数据存在时进行处理。本发明基于Qt应用程序框架,采用多串口并行,对硬件的利用率更高,系统耗费的资源更少,能够保证应用程序长时间采集、解析和存储多串口Modbus数据,确保变电站主设备状态信息及时、高效、准确的呈现给用户。

Description

一种Modbus串口数据处理方法
技术领域
本发明属于变电站一次设备在线监测技术领域,特别涉及一种Modbus串口数据处理方法。
背景技术
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,特别适用于远距离通信,串口通信是变电站智能组件产品的重要研究课题,如在基于ARM的嵌入式系统开发应用中,对于系统程序的调试及上位机和下位机的沟通等,串口通信都是必不可少的功能实现。
在变电站监测系统中,经常会处理多个串口发送过来的Modbus数据,而且数据量较大,若串口采用9600波特率,则每秒需要进行1200字节的数据处理,由于串口通信的传输速度较慢,不能保证长时间稳定采集、解析和存储多串口数据,进一步导致变电站主设备状态信息不能及时、高效、准确的呈献给用户,因此,可能继续采用传统的串口通信的方式不再适用,随着科学技术的发展,慢慢出现了一系列的基于开发平台的串口通信研究,比如基于LabView的串口通信研究、基于VC++的串口通信研究、基于Qt的串口通信研究和基于QT_E的串口平台研究,研究主要针对某些产品,且有些产品已经成功推向市场。可以看出,基于Qt开发串口通信等应用程序已成为一个热点。Qt是一个多平台的C++图形用户界面应用程序框架,它通过信号和槽的方法,使对象之间在彼此不知道对方信息的情况下实现信息交互,由于其面向对象、易扩展,可实现组件编程等特点,已成为嵌入式领域的重要开发工具。
发明内容
本发明的目的在于提供一种Modbus串口数据处理方法,用于解决现有技术的方法不能将变电站数据及时、高效、准确的呈现给用户的问题。
为实现上述目的,本发明的技术方案是:
一种Modbus串口数据处理方法,包括主线程、串口线程、协议线程及数据线程:
所述主线程用于开启串口线程、协议线程及数据线程,解析串口配置文件,读取多串口信息;
所述串口线程用于根据主线程的命令启动,进入事件消息循环;
所述协议线程用于根据主线程的命令启动,根据配置串口信息确定串口号,将串口线程的Modbus列表中存储的Modbus命令存入协议线程的QModbusComList列表中;
所述数据线程用于根据主线程的命令启动,解析响应信息,实时检测数据线程QComDataList列表是否存储有数据,当检测到有数据存在时,解析出各个参数,对解析出的各参数进行处理。
进一步地,所述串口配置文件为XML串口配置文件。
进一步地,串口线程与协议线程采用QList列表通信。
进一步地,串口线程与数据线程采用QList列表通信。
进一步地,所述串口事件循环实时监测QModbusComList列表是否为空,当QModbusComList列表不为空时,takeFrist()函数取走列表第一组Modbus命令,延迟接收响应信息,并将其存储在QComDataList列表。
本发明的有益效果是:
本发明提供了一种基于Qt的并发Modbus的串口数据处理方法,包括主线程、串口线程、协议线程及数据线程:主线程用于开启串口线程、协议线程及数据线程,解析串口配置文件,读取多串口信息;串口线程用于根据主线程的命令启动,进入事件消息循环,实时监测QModbusComList列表是否为空,不为空则takeFrist()函数取走列表第一组Modbus命令并发送给下位机;协议线程用于根据主线程的命令启动,根据配置串口信息确定串口号,根据Modbus协议组织串口命令并存入QModbusComList列表中;数据线程用于根据主线程的命令启动,解析响应信息,实时检测QComDataList列表是否存储有数据,当检测到有数据存在时,解析出各个参数,对解析出的各参数进行处理。本发明基于Qt应用程序框架,采用多串口并行,可缩短轮询周期,提高监测效率;数据存储和数据分析并行处理,数据处理方式更高效;QList作为线程间通信方法,方便数据扩展,数据交互更加灵活;对于硬件来说,多线程运行对硬件的利用率更高,系统耗费的资源更少,能够保证应用程序长时间采集、解析和存储多串口Modbus数据,确保变电站主设备状态信息及时、高效、准确的呈现给用户。
附图说明
图1为基于Qt的高并发数据处理方法流程图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的说明:
一般在处理串口通信数据时,通常所采用的方法是把采集线程和解析线程放在主线程里,这对于CPU主频频率较高的x86架构的机器来说是没问题的,但是对ARM架构的机器就很困难了。ARM架构的机器相对x86架构的机器各有优缺点,在工程应用时,根据工程实际需求灵活配置机器可以优化工程方案,实现最大效益。本方法基于Qt应用程序开发框架,支持多数主流操作系统,具有良好的可移植性;算法采用多线程,将数据存储和数据解析分离,可以方便的在ARM架构上和x86架构机器上移植,使得公司产品系列化和多样化;优化工程方案,根据工程实际需要,对于带载较少的工程,配置ARM架构机器;基于此算法研发出的产品已应用在多个智能变电站和换流站,已产生几十万的产值。
一种基于Qt的并发Modbus的串口数据处理方法,该方法具体使用到四个线程,分别是主线程、串口线程、协议线程及数据线程,所述主线程用于开启串口线程、协议线程及数据线程,如图1所示,下面最具体说明:
1、主线程解析XML串口配置文件,通过解析的配置文件读取多串口信息,根据配置串口信息初始化串口并启动QMySerialPort串口线程,主线程QMySerialPort类继承自QThread,用于实现串口初始化、串口命令的发送和反馈信息的接收存储。调用QSerialPort类初始化串口后启动run()函数,进入事件消息循环;QSerialPort是基于Qt编写的串口类函数,用于串口的初始化和串口命令的发送和反馈的接收存储;事件循环监测QModbusComList列表,QModbusComList是QList类对象,用于串口线程和协议线程间通信;当QModbusComList不为空时,takeFirst()函数拿走列表第一组Modbus命令,然后调用QSerialPort类将串口命令根据串口参数发送出去。
2、协议线程根据主线程的命令,从主线程中启动,QMessageThread类继承自QThread。用于根据配置文件串口号和装置类型组织协议,并将协议数据push_back()到QModbusComList列表。
3、数据线程QDataParseThread根据主线程的命令,从主线程中启动,数据线程继承自QThread,用以实现串口响应信息的解析与存储。串口线程的响应消息列表中的响应消息通过QList线程间通信方式将响应消息存入到QComDataList列表,数据线程takeFirst()函数拿走列表数据用以解析处理,防止列表读写冲突用的是Qt中互斥量的锁定和解锁机制。
根据延迟配置,串口线程延迟接收响应信息并将其反馈信息校验成功后存储在QComDataList列表,数据线程启动后,进入事件消息循环,监测QComDataList列表是否为空,有数据入列表后takeFirst()拿走第一组,根据协议定义解析出各个参数,存储在数据库以做进一步处理。
以上给出了具体的实施方式,但本发明不局限于以上所描述的实施方式。本发明的基本思路在于上述基本方案,对本领域普通技术人员而言,根据本发明的教导,设计出各种变形的模型、公式、参数并不需要花费创造性劳动。在不脱离本发明的原理和精神的情况下对实施方式进行的变化、修改、替换和变型仍落入本发明的保护范围内。

Claims (5)

1.一种Modbus串口数据处理方法,其特征在于,包括主线程、串口线程、协议线程及数据线程:
所述主线程用于开启串口线程、协议线程及数据线程,解析串口配置文件,读取多串口信息;
所述串口线程用于根据主线程的命令启动,进入事件消息循环;
所述协议线程用于根据主线程的命令启动,根据配置串口信息确定串口号,将串口线程的Modbus列表中存储的Modbus命令存入协议线程的QModbusComList列表中;
所述数据线程用于根据主线程的命令启动,解析响应信息,实时检测QComDataList列表是否存储有数据,当检测到有数据存在时,解析出各个参数,对解析出的各参数进行处理。
2.根据权利要求1所述的Modbus串口数据处理方法,其特征在于,所述串口配置文件为XML串口配置文件。
3.根据权利要求1所述的Modbus串口数据处理方法,其特征在于,串口线程与协议线程采用QList通信。
4.根据权利要求1所述的Modbus串口数据处理方法,其特征在于,串口线程与数据线程采用QList通信。
5.根据权利要求1-4任一项所述的Modbus串口数据处理方法,其特征在于,所述串口事件循环实时监测QModbusComList列表是否为空,当QModbusComList列表不为空时,takeFrist()函数取走列表第一组Modbus命令,延迟接收响应信息,并将响应信息存储在QComDataList列表。
CN201710987416.0A 2017-10-20 2017-10-20 一种Modbus串口数据处理方法 Active CN107992367B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710987416.0A CN107992367B (zh) 2017-10-20 2017-10-20 一种Modbus串口数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710987416.0A CN107992367B (zh) 2017-10-20 2017-10-20 一种Modbus串口数据处理方法

Publications (2)

Publication Number Publication Date
CN107992367A true CN107992367A (zh) 2018-05-04
CN107992367B CN107992367B (zh) 2020-09-25

Family

ID=62029996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710987416.0A Active CN107992367B (zh) 2017-10-20 2017-10-20 一种Modbus串口数据处理方法

Country Status (1)

Country Link
CN (1) CN107992367B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108958789A (zh) * 2018-05-20 2018-12-07 湖北九州云仓科技发展有限公司 一种并行流式计算方法、电子设备、存储介质及系统
CN109728936A (zh) * 2018-12-05 2019-05-07 北京电力自动化设备有限公司 高压链式静止无功发生器通信管理方法、装置及系统
CN110032535A (zh) * 2018-12-28 2019-07-19 北京润科通用技术有限公司 一种串口数据解析方法及装置
CN111030907A (zh) * 2019-12-11 2020-04-17 西安安森智能仪器股份有限公司 一种机器人串口总线的多设备数据解析及管理方法
CN111899501A (zh) * 2020-08-04 2020-11-06 广东电网有限责任公司 一种配网自动化主站变电站内开关的遥控方法
CN113127286A (zh) * 2019-12-30 2021-07-16 深圳Tcl新技术有限公司 多串口通信的数据获取方法、装置、智能终端及存储介质
CN117573214A (zh) * 2024-01-17 2024-02-20 深圳前海深蕾半导体有限公司 一种串口设备和Android系统框架融合的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809656B2 (en) * 2007-09-27 2010-10-05 Rockwell Automation Technologies, Inc. Microhistorians as proxies for data transfer
CN103713543A (zh) * 2013-12-18 2014-04-09 国核自仪系统工程有限公司 一种基于fpga的多串口并行处理架构
CN104464246A (zh) * 2014-12-10 2015-03-25 广东广联电子科技有限公司 一种远程抄表系统中的串口数据处理方法
CN104484292A (zh) * 2014-12-30 2015-04-01 飞天诚信科技股份有限公司 一种适用于串口设备的驱动程序及其工作方法
CN105068947A (zh) * 2015-08-20 2015-11-18 浪潮软件集团有限公司 一种基于驱动层处理串口通信的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809656B2 (en) * 2007-09-27 2010-10-05 Rockwell Automation Technologies, Inc. Microhistorians as proxies for data transfer
CN103713543A (zh) * 2013-12-18 2014-04-09 国核自仪系统工程有限公司 一种基于fpga的多串口并行处理架构
CN104464246A (zh) * 2014-12-10 2015-03-25 广东广联电子科技有限公司 一种远程抄表系统中的串口数据处理方法
CN104484292A (zh) * 2014-12-30 2015-04-01 飞天诚信科技股份有限公司 一种适用于串口设备的驱动程序及其工作方法
CN105068947A (zh) * 2015-08-20 2015-11-18 浪潮软件集团有限公司 一种基于驱动层处理串口通信的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王静思: "基于Modbus协议的多串口数据采集系统的实现", 《第十六届全国青年通信学术会议论文集(上)》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108958789A (zh) * 2018-05-20 2018-12-07 湖北九州云仓科技发展有限公司 一种并行流式计算方法、电子设备、存储介质及系统
CN108958789B (zh) * 2018-05-20 2021-07-09 湖北九州云仓科技发展有限公司 一种并行流式计算方法、电子设备、存储介质及系统
CN109728936A (zh) * 2018-12-05 2019-05-07 北京电力自动化设备有限公司 高压链式静止无功发生器通信管理方法、装置及系统
CN109728936B (zh) * 2018-12-05 2021-10-29 北京电力自动化设备有限公司 高压链式静止无功发生器通信管理方法、装置及系统
CN110032535A (zh) * 2018-12-28 2019-07-19 北京润科通用技术有限公司 一种串口数据解析方法及装置
CN111030907A (zh) * 2019-12-11 2020-04-17 西安安森智能仪器股份有限公司 一种机器人串口总线的多设备数据解析及管理方法
CN113127286A (zh) * 2019-12-30 2021-07-16 深圳Tcl新技术有限公司 多串口通信的数据获取方法、装置、智能终端及存储介质
CN113127286B (zh) * 2019-12-30 2023-01-20 深圳Tcl新技术有限公司 多串口通信的数据获取方法、装置、智能终端及存储介质
CN111899501A (zh) * 2020-08-04 2020-11-06 广东电网有限责任公司 一种配网自动化主站变电站内开关的遥控方法
CN111899501B (zh) * 2020-08-04 2021-08-06 广东电网有限责任公司 一种配网自动化主站变电站内开关的遥控方法
CN117573214A (zh) * 2024-01-17 2024-02-20 深圳前海深蕾半导体有限公司 一种串口设备和Android系统框架融合的方法及装置
CN117573214B (zh) * 2024-01-17 2024-04-19 深圳前海深蕾半导体有限公司 一种串口设备和Android系统框架融合的方法及装置

Also Published As

Publication number Publication date
CN107992367B (zh) 2020-09-25

Similar Documents

Publication Publication Date Title
CN107992367A (zh) 一种Modbus串口数据处理方法
Fujimoto Distributed simulation systems
CN107526645B (zh) 一种通信优化方法及系统
CN101873005B (zh) 一种实现电能量均衡采集的方法
CN104765641B (zh) 一种作业调度方法及系统
CN105516292A (zh) 一种智能变电站云平台的热备方法
CN109753401A (zh) 监控方法、采集端、管控端、监控系统及装置
CN104516809A (zh) 一种自动化测试系统及方法
CN107817401A (zh) 一种用电信息采集系统的压力测试方法及装置
CN105279614A (zh) 基于流程的业务审计系统及方法
CN109542450A (zh) 智能变电站过程层智能组件实现方法及装置
CN110177146A (zh) 一种基于异步事件驱动的非阻塞Restful通信方法、装置和设备
CN110347407A (zh) 一种获取内存占用量的方法、装置、计算机设备及介质
CN104050193B (zh) 生成报文的方法和实现该方法的数据处理系统
CN104202328B (zh) 一种订阅goose/smv报文的方法、配置模块及订阅端
CN109782724A (zh) 防误闭锁的控制方法及终端设备
CN109375146A (zh) 一种用电数据的补采方法、系统及终端设备
CN109840725A (zh) 货物拣选方法、装置、电子装置及计算机可读存储介质
CN109117295A (zh) 一种交易超时监控方法及装置
CN106685856A (zh) 智能变电站海量网络报文处理方法、系统和设备
CN107093069A (zh) 智能电表数据处理系统和方法
CN110209722A (zh) 一种用于数据交换的数据接口
CN108228908A (zh) 一种数据抽取方法及装置
CN115576218A (zh) 基于协调事件轴同步的电力信息物理联合仿真方法及系统
CN113505326A (zh) 一种基于http协议族的动态编码数据传输控制方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant