CN109787874A - 基于Linux平台的实时收发方法、设备及存储介质 - Google Patents
基于Linux平台的实时收发方法、设备及存储介质 Download PDFInfo
- Publication number
- CN109787874A CN109787874A CN201811485853.3A CN201811485853A CN109787874A CN 109787874 A CN109787874 A CN 109787874A CN 201811485853 A CN201811485853 A CN 201811485853A CN 109787874 A CN109787874 A CN 109787874A
- Authority
- CN
- China
- Prior art keywords
- data
- time
- real
- preset byte
- judgment step
- 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
Links
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了基于Linux平台的实时收发方法,包括以下步骤:将当前线程设置为实时接收数据状态,当串口设备采集到数据,则执行判断数据是否满足预设字节,当满足的情况下将所述数据的帧格式中的每一个组成分别与缓存中对应的信息进行匹配,当所述每一个组成均与缓存中对应的信息一致时,则接收所述数据,否则,丢弃所述数据并清空缓存;若未满足预设字节则判断是否在预设等待时长内采集到所述数据,若是,则判断是否满足预设字节,否则重新检测串口设备;本发明解在用户态实现协议的功能模块化设计,摆脱对硬件串口驱动的依赖;实现跨硬件平台的快速移植诉求,且能减少移植工作量,又能解决修改驱动而引入的风险。
Description
技术领域
本发明涉及一种数据收发技术领域,尤其涉及一种基于Linux平台的实时收发方法、设备及存储介质。
背景技术
目前,随着电力电子行业的发展,产品功能越来越复杂,基于LINUX操作系统平台应用越来越广泛,产品硬件不断更新换代,产品的应用功能移植活动越来越频繁。
linux为非实时系统,linux自带的rs485驱动提供的收发控制采用简单的延时流控算法,在数据采集领域中要实现MODBUS RTU协议通信,存在延时时间过长或者不实时,导致从机设备不能分割MODBUS RTU协议数据包,导致数据丢失。
现在的解决方案都是基于修改RST485驱动来实现MODBUS RTU协议分包通过中断的方式通知应用程序处理;
但是,现有的方案存在以下缺陷:
(1)修改驱动来实现MODBUS RTU协议通信,这与硬件平台、内核驱动平台耦合在一起,要根据不同的硬件,不同的系统版本适配修改,导致大量的移植工作和维护工作;
(2)LINUX系统内核驱动层,是系统平台的安全和稳定的基石,要修改串口驱动实现应用业务功能,会引入安全生和稳定性风险;
(3)装置所处的MODBUS RTU监视控制系统中,存在大量非法包,消耗装置平台的资源和处理能力,延缓了对正常包的响应速度。
发明内容
为了克服现有技术的不足,本发明的目的之一在于提供基于Linux平台的实时收发方法,其能解决现有技术工作量大、需要修改驱动的技术问题。
本发明的目的之二在于提供一种电子设备,其能解决现有技术工作量大、需要修改驱动的技术问题。
本发明的目的之三在于提供一种计算机可读存储介质,其能解决现有技术工作量大、需要修改驱动的技术问题。
本发明的目的之一采用如下技术方案实现:
基于Linux平台的实时收发方法,包括以下步骤:
设置步骤:将当前线程设置为实时接收数据状态,将所述实时接收数据状态设置为最高优先级;
检测步骤:检测串口设备是否采集到数据,若是,则执行判断步骤,否则判断是否在预设等待时长内采集到所述数据,若是,则执行判断步骤,否则重新检测串口设备;
判断步骤:判断采集到的所述数据的帧长度是否满足预设字节,若是,则执行匹配步骤,否则,持续采集所述数据的剩余字节部分;
匹配步骤:将所述数据的帧格式中的每一个组成分别与缓存中对应的信息进行匹配,当所述每一个组成均与缓存中对应的信息一致时,则接收所述数据,否则,丢弃所述数据并清空缓存。
进一步地,在判断步骤中,判断到所述数据的帧长度满足预设字节时,进一步判断采集数据的时间是否超出预设超时时间,若是,则丢弃所述数据并清空缓存,否则执行匹配步骤。
进一步地,所述超时时间=(3.5*11000/baud)*1000。
进一步地,检测步骤中的所述预设等待时长为1秒。
进一步地,判断步骤中的所述预设字节为8字节。
本发明的目的之二采用如下技术方案实现:
一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上执行的计算机程序,所述计算机程序被处理器执行时实现以下步骤:
设置步骤:将当前线程设置为实时接收数据状态,将所述实时接收数据状态设置为最高优先级;
检测步骤:检测串口设备是否采集到数据,若是,则执行判断步骤,否则判断是否在预设等待时长内采集到所述数据,若是,则执行判断步骤,否则重新检测串口设备;
判断步骤:判断采集到的所述数据的帧长度是否满足预设字节,若是,则执行匹配步骤,否则,持续采集所述数据的剩余字节部分;
匹配步骤:将所述数据的帧格式中的每一个组成分别与缓存中对应的信息进行匹配,当所述每一个组成均与缓存中对应的信息一致时,则接收所述数据,否则,丢弃所述数据并清空缓存。
进一步地,在判断步骤中,判断到所述数据的帧长度满足预设字节时,进一步判断采集数据的时间是否超出预设超时时间,若是,则丢弃所述数据并清空缓存,否则执行匹配步骤。
进一步地,所述超时时间=(3.5*11000/baud)*1000。
进一步地,检测步骤中的所述预设等待时长为1秒,判断步骤中的所述预设字节为8字节。
本发明的目的之三采用如下技术方案实现:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行上述任意一项所述的实时收发方法。
相比现有技术,本发明的有益效果在于:.
本发明解决LINUX自带的RS485自带驱动流控式交互不实时,不能及时分割MODBUS协议包的缺陷,在用户态实现MODBUS协议的功能模块化设计,摆脱对硬件串口RS485驱动的依赖;实现跨硬件平台的快速移植诉求,且能减少移植工作量,又能解决修改驱动而引入的风险。
附图说明
图1为本发明的基于Linux平台的实时收发方法的流程图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
实施例一
本发明提供了基于Linux平台的实时收发方法,涉及采用LINUX操作系统实现的电表产品,通过串口RS485数据采集和传输的设备。
MODBUS RTU协议规范是为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版权要求、易于部署和维护;Modbus RTU在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。
如图1所示,本发明基于Linux平台的实时收发方法包括如下步骤:
S1:将当前线程设置为实时接收数据状态,将所述实时接收数据状态设置为最高优先级;
Linux平台数据从串口设备进入,通过串口驱动层,上传到应用MODBUS协议层处理数据分包和收发包数据。本发明提升处理接收数据功能线程的实时性和优级;设置接收数据线程为实时级调度;设定的调度优先级为最高级stProiority.sched_priority=99。
S2:检测串口设备是否采集到数据,若是,则执行S3,否则判断是否在预设等待时长内采集到所述数据,若是,则执行S3,否则重新检测串口设备;
预设等待时长优选为1秒。定时1ms监控驱动层的串口设备数据,检测到数据即直接取出转存到内部数据缓存,检测不到数据,挂起等待,直到1S超时退出进入下一轮监控串口设备循环。
S3:判断采集到的所述数据的帧长度是否满足预设字节,若是,则执行S4,否则,持续采集所述数据的剩余字节部分;
MODBUS协议定义的完整数据帧长度最短的为8个字节,因此MODBUS RTU协议规范要求数据帧格式如图1:为“地址”+“功能码”+“数据区”+“CRC校验码”;CRC算法规范里已有定义。
S4:将所述数据的帧格式中的每一个组成分别与缓存中对应的信息进行匹配,当所述每一个组成均与缓存中对应的信息一致时,则接收所述数据,否则,丢弃所述数据并清空缓存。
满足了内部数据缓存长度满足8个字节的情况下,进行CRC(计算出来的CRC是否与缓存中的CRC信息匹配)、地址(缓存中的地址信息是否与装置的地址匹配)、功能码(缓存中的功能码信息是否与装置所支持的功能码相匹配)的合法性校验;其中一项不满足要求即清空数据缓存数据,并开始新一轮数据采集。接收数据直到超时退出循环,完成整个MODBUSRTU数据帧的分割,并继续下一步业务数据的处理。
在S3中,判断到所述数据的帧长度满足预设字节时,进一步判断采集数据的时间是否超出预设超时时间,若是,则丢弃所述数据并清空缓存,否则执行S4。
MODBUS RTU协议规范要求发送两帧数据之间要有1.5~3.5字符间隔;超时时间t=(3.5*11000/baud)*1000,计算出3.5个字节,在不同的波特率baud下的超时时间。
实施例二
实施例二公开了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上执行的计算机程序,计算机程序被处理器执行时实现以下步骤:
设置步骤:将当前线程设置为实时接收数据状态,将所述实时接收数据状态设置为最高优先级;检测步骤:检测串口设备是否采集到数据,若是,则执行判断步骤,否则判断是否在预设等待时长内采集到所述数据,若是,则执行判断步骤,否则重新检测串口设备;判断步骤:判断采集到的所述数据的帧长度是否满足预设字节,若是,则执行匹配步骤,否则,持续采集所述数据的剩余字节部分;匹配步骤:将所述数据的帧格式中的每一个组成分别与缓存中对应的信息进行匹配,当所述每一个组成均与缓存中对应的信息一致时,则接收所述数据,否则,丢弃所述数据并清空缓存。
同样的,在判断步骤中,判断到所述数据的帧长度满足预设字节时,进一步判断采集数据的时间是否超出预设超时时间,若是,则丢弃所述数据并清空缓存,否则执行匹配步骤。超时时间=(3.5*11000/baud)*1000。预设等待时长为1秒,判断步骤中的所述预设字节为8字节。
实施例三
实施例三公开了一种可读的计算机存储介质,该存储介质用于存储程序,并且该程序被处理器执行时,实现实施例一的实时收发方法。
上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。
Claims (10)
1.基于Linux平台的实时收发方法,其特征在于,包括以下步骤:
设置步骤:将当前线程设置为实时接收数据状态,将所述实时接收数据状态设置为最高优先级;
检测步骤:检测串口设备是否采集到数据,若是,则执行判断步骤,否则判断是否在预设等待时长内采集到所述数据,若是,则执行判断步骤,否则重新检测所述串口设备;
判断步骤:判断采集到的所述数据的帧长度是否满足预设字节,若是,则执行匹配步骤,否则,持续采集所述数据的剩余字节部分;
匹配步骤:将所述数据的帧格式中的每一个组成分别与缓存中对应的信息进行匹配,当所述每一个组成均与缓存中对应的信息一致时,则接收所述数据,否则,丢弃所述数据并清空缓存。
2.如权利要求1所述的实时收发方法,其特征在于,在判断步骤中,判断到所述数据的帧长度满足预设字节时,进一步判断采集数据的时间是否超出预设超时时间,若是,则丢弃所述数据并清空缓存,否则执行匹配步骤。
3.如权利要求2所述的实时收发方法,其特征在于,所述超时时间=(3.5*11000/baud)*1000。
4.如权利要求1所述的实时收发方法,其特征在于,检测步骤中的所述预设等待时长为1秒。
5.如权利要求1所述的实时收发方法,其特征在于,判断步骤中的所述预设字节为8字节。
6.一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上执行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
设置步骤:将当前线程设置为实时接收数据状态,将所述实时接收数据状态设置为最高优先级;
检测步骤:检测串口设备是否采集到数据,若是,则执行判断步骤,否则判断是否在预设等待时长内采集到所述数据,若是,则执行判断步骤,否则重新检测所述串口设备;
判断步骤:判断采集到的所述数据的帧长度是否满足预设字节,若是,则执行匹配步骤,否则,持续采集所述数据的剩余字节部分;
匹配步骤:将所述数据的帧格式中的每一个组成分别与缓存中对应的信息进行匹配,当所述每一个组成均与缓存中对应的信息一致时,则接收所述数据,否则,丢弃所述数据并清空缓存。
7.如权利要求6所述的电子设备,其特征在于,在判断步骤中,判断到所述数据的帧长度满足预设字节时,进一步判断采集数据的时间是否超出预设超时时间,若是,则丢弃所述数据并清空缓存,否则执行匹配步骤。
8.如权利要求7所述的电子设备,其特征在于,所述超时时间=(3.5*11000/baud)*1000。
9.如权利要求6所述的电子设备,其特征在于,检测步骤中的所述预设等待时长为1秒,判断步骤中的所述预设字节为8字节。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-5任意一项所述的实时收发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811485853.3A CN109787874B (zh) | 2018-12-06 | 2018-12-06 | 基于Linux平台的实时收发方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811485853.3A CN109787874B (zh) | 2018-12-06 | 2018-12-06 | 基于Linux平台的实时收发方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109787874A true CN109787874A (zh) | 2019-05-21 |
CN109787874B CN109787874B (zh) | 2021-11-09 |
Family
ID=66496113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811485853.3A Active CN109787874B (zh) | 2018-12-06 | 2018-12-06 | 基于Linux平台的实时收发方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109787874B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880148A (zh) * | 2022-07-12 | 2022-08-09 | 深圳融安网络科技有限公司 | 数据处理方法、装置及计算机可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110093568A1 (en) * | 2009-10-16 | 2011-04-21 | Cogent Real-Time Systems Inc. | System and method for providing real-time data |
CN102510581A (zh) * | 2011-09-30 | 2012-06-20 | 山东大学 | 一种基于嵌入式Linux的无线传感器网络可视化手持客户端实现方法 |
CN102629240A (zh) * | 2012-02-13 | 2012-08-08 | 上海创远仪器技术股份有限公司 | 一种串口通信方法与装置 |
US20120324280A1 (en) * | 2011-06-14 | 2012-12-20 | Computer Associates Think, Inc. | System and method for data disaster recovery |
US20130091332A1 (en) * | 2011-10-05 | 2013-04-11 | Andre Vankov | OS-independent Framework and Software Library for Real Time Inter-process Data Transfer (Data River) |
CN103117842A (zh) * | 2013-01-04 | 2013-05-22 | 北京工业大学 | 一种嵌入式gsm-r接收解析装置及方法 |
CN104122815A (zh) * | 2014-06-26 | 2014-10-29 | 南京易周能源科技有限公司 | 一种基于arm的水文测控终端及其远程升级的方法 |
CN104883611A (zh) * | 2015-06-09 | 2015-09-02 | Tcl集团股份有限公司 | 电视屏的调试方法和系统 |
CN105306463A (zh) * | 2015-10-13 | 2016-02-03 | 电子科技大学 | 基于支持向量机的Modbus TCP入侵检测方法 |
CN105844313A (zh) * | 2016-04-12 | 2016-08-10 | 深圳市迅远科技有限公司 | 一种基于Linux系统的射频识别读写设备及其读写方法 |
-
2018
- 2018-12-06 CN CN201811485853.3A patent/CN109787874B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110093568A1 (en) * | 2009-10-16 | 2011-04-21 | Cogent Real-Time Systems Inc. | System and method for providing real-time data |
US20120324280A1 (en) * | 2011-06-14 | 2012-12-20 | Computer Associates Think, Inc. | System and method for data disaster recovery |
CN102510581A (zh) * | 2011-09-30 | 2012-06-20 | 山东大学 | 一种基于嵌入式Linux的无线传感器网络可视化手持客户端实现方法 |
US20130091332A1 (en) * | 2011-10-05 | 2013-04-11 | Andre Vankov | OS-independent Framework and Software Library for Real Time Inter-process Data Transfer (Data River) |
CN102629240A (zh) * | 2012-02-13 | 2012-08-08 | 上海创远仪器技术股份有限公司 | 一种串口通信方法与装置 |
CN103117842A (zh) * | 2013-01-04 | 2013-05-22 | 北京工业大学 | 一种嵌入式gsm-r接收解析装置及方法 |
CN104122815A (zh) * | 2014-06-26 | 2014-10-29 | 南京易周能源科技有限公司 | 一种基于arm的水文测控终端及其远程升级的方法 |
CN104883611A (zh) * | 2015-06-09 | 2015-09-02 | Tcl集团股份有限公司 | 电视屏的调试方法和系统 |
CN105306463A (zh) * | 2015-10-13 | 2016-02-03 | 电子科技大学 | 基于支持向量机的Modbus TCP入侵检测方法 |
CN105844313A (zh) * | 2016-04-12 | 2016-08-10 | 深圳市迅远科技有限公司 | 一种基于Linux系统的射频识别读写设备及其读写方法 |
Non-Patent Citations (1)
Title |
---|
李松等: "实时数据串行通信协议设计", 《组合机床与自动化加工技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880148A (zh) * | 2022-07-12 | 2022-08-09 | 深圳融安网络科技有限公司 | 数据处理方法、装置及计算机可读存储介质 |
CN114880148B (zh) * | 2022-07-12 | 2022-10-04 | 深圳融安网络科技有限公司 | 数据处理方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109787874B (zh) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103856337B (zh) | 资源占用率获取方法、提供方法、系统及服务器 | |
CN103354562B (zh) | 能耗采集器、能耗采集系统及能耗采集方法 | |
CN103078895B (zh) | 一种基于mcf52233芯片的工业以太网多功能双串口服务器 | |
CN107451268A (zh) | 一种面向实时数据库的断网续传的方法 | |
CN104052758A (zh) | 电能表多通信协议的自适应方法 | |
CN103312607B (zh) | 一种传输路径选择方法及装置 | |
CN101702723A (zh) | Ip报文的过滤方法和装置 | |
CN106487612A (zh) | 一种服务器节点监控方法、监控服务器及系统 | |
CN107623642A (zh) | 一种消息流量控制方法及装置 | |
CN106685855A (zh) | 一种数据发送方法及装置 | |
CN108021434A (zh) | 数据处理装置及其处理数据的方法、介质、存储控制器 | |
CN107942976A (zh) | 居民用水调度系统及方法 | |
CN109787874A (zh) | 基于Linux平台的实时收发方法、设备及存储介质 | |
CN103096387B (zh) | 智能电网中基于数据优先分级的认知传输方法 | |
CN104426796A (zh) | 一种路由器的拥塞避免方法及装置 | |
CN111366208A (zh) | 基于平台、远传设备、水表间上下层通讯的数据采集方法 | |
CN205487272U (zh) | 一种显示屏故障处理系统 | |
CN101986609A (zh) | 一种实现网络流量清洗的方法及系统 | |
CN101241451A (zh) | 一种嵌入式系统的串口可靠通讯控制方法 | |
CN105721190A (zh) | 数据传输路径的故障检测方法、装置及服务器 | |
CN106506265B (zh) | 检测fpga芯片挂死的方法及装置 | |
CN103428677B (zh) | 分组业务数据的发送方法及信令信道发送信息的接收方法 | |
CN108063809A (zh) | 机器设备数据采集方法以及采集系统 | |
CN104199799A (zh) | 基于cpld的波特率自适应方法及装置 | |
CN104898522B (zh) | 一种数字焊接电源远程监控系统 |
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 |