数据通讯方法及系统技术方案

技术编号:36807664 阅读:9 留言:0更新日期:2023-03-09 00:25
本发明专利技术揭示了一种数据通讯方法及系统,所述数据通讯方法包括:步骤S1、设定通讯协议规则;步骤S2、第一终端按照通讯协议规则发送一帧命令至第二终端;步骤S3、第二终端接收到数据并解析;回复接收成功命令至第一终端;步骤S4、若第一终端接收到接收成功命令,则本次数据发送结束;若第一终端未接收到接收成功命令,则触发重发机制。本发明专利技术提出的数据通讯方法及系统,可提升通讯安全性、稳定性、易维护性、易移植,降低开发工时。降低开发工时。降低开发工时。

【技术实现步骤摘要】
数据通讯方法及系统


[0001]本专利技术属于电子通讯
,涉及一种通讯系统,尤其涉及一种数据通讯方法及系统。

技术介绍

[0002]Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年专利技术的,是全球第一个真正用于工业现场的总线协议。在中国,Modbus已经成为国家标准。标准编号:GB/T19582

2008,标准名称:《基于Modbus协议的工业自动化网络规范》。虽然标准modbus应用很广泛,但是在实际使用过程中也存在一些问题。
[0003]现有标准Modbus读数据帧及响应格式可参阅图1。现有标准Modbus实现方式如下:(1)数据帧的接收:通过串口中断的方式进行数据接收,每接收到一个字节,进一次中断;(2)数据帧的发送:通过等待发送完成标志来判断数据是否发送完成;(3)数据帧解析:通过判断一帧数据长度在固定时间段是否改变来判断数据帧是否接收完成;数据帧接收完成后再开始层层解析;(4)数据处理:数据内容解析,数据内容存储处理,相应的处理动作等。
[0004]根据上述描述可了解标准modbus协议的格式,数据帧的发送,接收,解析的原理,但是基于标准modbus协议、接收、解析存在如下缺点与不足:
[0005](1)数据的解析使用隔帧的方式,这样会导致通讯时长的增加。通讯过快或者通讯处理任务耗时稍微大点,数据帧会隔不开,导致数据帧无效,极大的降低啦实时性和可靠性;
[0006](2)读数据帧发送之后,读回复帧没有寄存器地址,这样发送方并不知道回复命令来自于哪个寄存器,如果接收到的是其他寄存器的读命令响应帧会导致数据错乱;
[0007](3)发送命令在需要发送的地方直接发出,发送时间不可计算可能会因为流程不同而有所改变,会导致接收方帧隔不开,且读取次数和回复次数不同,从而产生无应答报错;
[0008](4)每次添加需要存储的数据,都需要多处更改,增加一条命令,就要增加一个函数,容易遗漏,操作麻烦,很不方便;
[0009](5)不符合模块化设计,没有复用性,移植性价值;
[0010](6)未将所有命令归类统一,查找观看很是麻烦;
[0011](7)没有连读,连写操作,降低通信带宽;
[0012](8)有些重要的命令需要多次重发机制,每个重发机制都是孤立的,代码繁杂,冗长。
[0013](9)无读写属性处理,有些数据只读,有些数据只写,有些可读可写;
[0014](10)非标协议更改麻烦,需要多处修改,增加工时。
[0015]有鉴于此,如今迫切需要设计一种新的数据通讯方式,以便克服现有数据通讯方式存在的上述至少部分缺陷。

技术实现思路

[0016]本专利技术提供一种数据通讯方法及系统,可提升通讯安全性、稳定性、易维护性、易移植,降低开发工时。
[0017]为解决上述技术问题,根据本专利技术的一个方面,采用如下技术方案:
[0018]一种数据通讯方法,所述数据通讯方法包括:
[0019]步骤S1、设定通讯协议规则;
[0020]步骤S2、第一终端按照通讯协议规则发送一帧命令至第二终端;
[0021]步骤S3、第二终端接收到数据并解析;回复接收成功命令至第一终端;
[0022]步骤S4、若第一终端接收到接收成功命令,则本次数据发送结束;若第一终端未接收到接收成功命令,则触发重发机制。
[0023]作为本专利技术的一种实施方式,步骤S1中,设定通讯协议规则包括设置串口重发次数、重发时间间隔、读写权限、数据地址、存储协议变量值的EEPROM首地址、外部设备读取协议变量前需要执行的函数及外部设备写协议变量之后需要执行的函数。
[0024]作为本专利技术的一种实施方式,步骤S2中,数据发送处理任务包括:
[0025]定时向外发送设定信息,将需要向外部发送的数据帧写进发送队列中;
[0026]读发送队列;如果队列不为空,则读出相应的符合通讯协议的数据帧,然后通过串口DMA发送出去。
[0027]作为本专利技术的一种实施方式,步骤S3中,接收数据处理任务包括:
[0028]先读对应循环队列,如果队列不为空,且符合协议帧格式,则读取相应的协议帧,进行数据处理;
[0029]判断数据帧的帧头、帧尾、CRC、设备地址是否正确,如果正确则解析寄存器起始地址、功能码、寄存器个数,解析出的寄存器起始地址、寄存器个数来检索协议表,找到相匹配的寄存器起始地址在表中的位置,根据相应位置的配置信息,做出相应的执行动作;
[0030]如果外部设备读取、写入失败,调用该模块,回复读取、写入设备失败的相应寄存器起始地址及寄存器个数;
[0031]如果外部设备写成功,调用该模块,回复写入设备成功的相应寄存器起始地址及寄存器个数。
[0032]作为本专利技术的一种实施方式,步骤S4中,数据重发处理包括:根据协议表中的相关配置信息以及步骤S3中处理情况来判断是否进行重新发送;
[0033]根据协议表中重发次数从表头到表尾检索协议表;重发次数和重发间隔时间是否为0,如果是则对应起始地址的重发不执行,否则执行重发,将重发内容写入数据帧。
[0034]根据本专利技术的一个方面,采用如下技术方案:一种数据通讯系统,所述数据通讯系统包括:
[0035]通讯协议规则设定模块,用以设定通讯协议规则;
[0036]数据发送模块,用以供第一终端按照通讯协议规则发送一帧命令至第二终端;
[0037]数据接收解析模块,用以供第二终端接收到数据并解析;回复接收成功命令至第一终端;
[0038]数据重发模块,用以在第一终端未接收到接收成功命令时触发重发机制,重新发送相应数据。
[0039]作为本专利技术的一种实施方式,所述通讯协议规则设定模块设定的通讯协议规则包括设置串口重发次数、重发时间间隔、读写权限、数据地址、存储协议变量值的EEPROM首地址、外部设备读取协议变量前需要执行的函数及外部设备写协议变量之后需要执行的函数。
[0040]作为本专利技术的一种实施方式,所述数据发送模块用以定时向外发送设定信息,将需要向外部发送的数据帧写进发送队列中;
[0041]所述数据发送模块还用以读发送队列;如果队列不为空,则读出相应的符合通讯协议的数据帧,然后通过串口DMA发送出去。
[0042]作为本专利技术的一种实施方式,所述数据接收解析模块用以读取对应循环队列,如果队列不为空,且符合协议帧格式,则读取相应的协议帧,进行数据处理;
[0043]所述数据接收解析模块还用以判断数据帧的帧头、帧尾、CRC、设备地址是否正确,如果正确则解析寄存器起始地址、功能码、寄存器个数,解析出的寄存器起始地址、寄存器个数来检索协议表,找到相匹配的寄存器起始地址在表中的位置,根据相应位置的配置信息,做出相应的执行动作;
[0044]如果外部设备读取、写入失败,调用该模块,回复读取、写入设备失败的相应寄存器起始地址及本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据通讯方法,其特征在于,所述数据通讯方法包括:步骤S1、设定通讯协议规则;步骤S2、第一终端按照通讯协议规则发送一帧命令至第二终端;步骤S3、第二终端接收到数据并解析;回复接收成功命令至第一终端;步骤S4、若第一终端接收到接收成功命令,则本次数据发送结束;若第一终端未接收到接收成功命令,则触发重发机制。2.根据权利要求1所述的数据通讯方法,其特征在于:步骤S1中,设定通讯协议规则包括设置串口重发次数、重发时间间隔、读写权限、数据地址、存储协议变量值的EEPROM首地址、外部设备读取协议变量前需要执行的函数及外部设备写协议变量之后需要执行的函数。3.根据权利要求1所述的数据通讯方法,其特征在于:步骤S2中,数据发送处理任务包括:定时向外发送设定信息,将需要向外部发送的数据帧写进发送队列中;读发送队列;如果队列不为空,则读出相应的符合通讯协议的数据帧,然后通过串口DMA发送出去。4.根据权利要求1所述的数据通讯方法,其特征在于:步骤S3中,接收数据处理任务包括:先读对应循环队列,如果队列不为空,且符合协议帧格式,则读取相应的协议帧,进行数据处理;判断数据帧的帧头、帧尾、CRC、设备地址是否正确,如果正确则解析寄存器起始地址、功能码、寄存器个数,解析出的寄存器起始地址、寄存器个数来检索协议表,找到相匹配的寄存器起始地址在表中的位置,根据相应位置的配置信息,做出相应的执行动作;如果外部设备读取、写入失败,调用该模块,回复读取、写入设备失败的相应寄存器起始地址及寄存器个数;如果外部设备写成功,调用该模块,回复写入设备成功的相应寄存器起始地址及寄存器个数。5.根据权利要求1所述的数据通讯方法,其特征在于:步骤S4中,数据重发处理包括:根据协议表中的相关配置信息以及步骤S3中处理情况来判断是否进行重新发送;根据协议表中重发次数从表头到表尾检索协议表;重发次数和重发间隔时间是否为0,如果是则对应起始地址的重发不执行,否则执行重发,将重发内容写入数据帧。6.一种数据通讯系统,其特征在于,所述数...

【专利技术属性】
技术研发人员:付聪汪鲁见杨建邱梦春朱伟健刘立富张建清吴强林汝德于志伟
申请(专利权)人:杭州泽天春来科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1