一种基于MODBUS通信协议的通信方法及系统与流程
未命名
07-20
阅读:57
评论:0

一种基于modbus通信协议的通信方法及系统
技术领域
1.本发明属于通信技术领域,特别涉及一种基于modbus通信协议的通信方法及系统。
背景技术:
2.在智能产品设计中,模块与模块之间,或者产品与产品之间,需要用数据通信,如果频繁的设计各种私有协议,不仅带来很大的工作量,并且对于其他客户接入也带来很大的不便。
3.在实际应用中,modbus通信协议是其中应用最广泛的协议,该协议易于部署和维护,对使用者来说,修改移动本地的比特或字节没有很多限制,并且modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信。但是modbus通信协议也有缺点,就是数据域读写透明,对于通信数据敏感、读写数据需要加密的场景不适合。
技术实现要素:
4.发明目的:为了克服以上不足,本发明的目的是提供一种基于modbus通信协议的通信方法及系统,其设计合理,基于modbus通信协议,设计一种支持加密的通信协议,数据域支持加密读写,提高了通信的安全性;协议格式简单,提高了协议的通用性。
5.技术方案:一种基于modbus通信协议的通信方法及系统,包括以下步骤:s1:根据实际需求,定义待读写数据内容,并以寄存器地址的格式进行编号;s2:根据实际需求,选择对应的加密算法,及密钥号数量;s3:加密封包:采用加密机或密钥生产算法,生成对应的密钥,将对应的密钥存储至产品中,并使用对应的密钥将待读写数据内容进行加密,生成加密数据内容;s4:对加密数据内容进行通信;s5:解密拆包:使用所述产品中存储的密钥将加密数据内容进行解密,还原所述待读写数据内容;数据内容支持加密读写,通信安全性高;基于modbus协议修改,协议格式简单,通用性好,减少开发应用人员工作量。
6.优选的,s2还包括:所述加密算法采用对称加密算法,所述对称加密算法为aes128加密算法或sm4加密算法。
7.优选的,s2还包括:密钥号采用随机算法,所述密钥号随机选取。
8.优选的,s2还包括:所述密钥号的数量最多为128个。
9.优选的,s3还包括:采用对称加密算法生成对称密钥,使用所述对称密钥将待读写数据内容进行加密。
10.优选的,s3还包括:当写入字节数量不是16的倍数时,对待读写数据内容进行数据补位至16字节的倍数,再进行加密。
11.优选的,补位算法采用pkcs7padding算法,当需要n字节补齐时,报文长度少于n个
字节,补(n-len)个(n-len);当报文长度是n字节的整数倍时,不再补位。
12.优选的,s3还包括:将待读写数据内容进行加密之前,先对所述待读写数据内容进行校验;能够防止数据内容被中途篡改;s5还包括:将加密数据内容进行解密之后,再对还原的待读写数据内容进行校验;以此确认数据内容没有被中途篡改。
13.优选的,采用随机生产算法,生成256种crc校验参与内容,并将所述crc校验参与内容存储至产品中,数据内容校验时根据crc校验参与内容序号,选择crc校验参与内容,进行crc的校验,确保数据内容的安全性与完整性。
14.优选的,一种基于modbus通信协议的通信系统,应用于产品,包括:数据处理模块,被配置为根据实际需求,定义待读写数据内容,并以寄存器地址的格式进行编号,选择对应的加密算法,及密钥号数量;数据加密模块,被配置为采用加密机或密钥生产算法,生成对应的密钥,将对应的密钥存储至产品中,并使用对应的密钥将待读写数据内容进行加密,生成加密数据内容;数据通信模块,被配置为对加密数据内容进行通信;数据解密模块,被配置为使用所述产品中存储的密钥将加密数据内容进行解密,还原所述待读写数据内容。
15.上述技术方案可以看出,本发明具有如下有益效果:1、本发明提供的一种基于modbus通信协议的通信方法及系统,该通信方法支持加密读写数据内容,提高了通信的安全性。
16.2、基于modbus协议修改,协议格式简单,通用性好,对于开发应用人员工作量低,当需要用到通讯协议时,并且数据敏感,有加密需求时,产品开发人员可直接采用本协议格式,能够提高开发效率。
17.3、应用本协议格式的产品,能够使第三方应用人员在对接时,便于理解通信协议,减少了沟通成本,和防止通信协议理解产生歧义。
附图说明
18.图1为本发明所述的一种基于modbus通信协议的通信方法流程示意图;图2为本发明所述的加密封包之前的数据内容校验方法流程图;图3为本发明所述的解密拆包之后的数据内容校验方法流程图;图4为本发明所述的一种基于modbus通信协议的通信系统结构示意图。
具体实施方式
19.下面结合附图和具体实施例,进一步阐明本发明。
20.实施例一如图1所示,本发明提供一种基于modbus通信协议的通信方法,包括以下步骤:s1:根据实际需求,定义待读写数据内容,并以寄存器地址的格式进行编号。
21.具体的,在s1中,当需要开发一种新产品,需要用到通信协议时,且数据内容敏感,有加密需求时,可采用本协议格式。
22.s2:根据实际需求,选择对应的加密算法,及密钥号数量。
23.具体的,在s2中,所述加密算法采用对称加密算法,所述对称加密算法为ase128加
密算法或sm4加密算法,密钥号采用随机算法,所述密钥号随机选取,所述密钥号的数量最多为128个。
24.s3:加密封包:采用加密机或密钥生产算法,生成对应的密钥,将对应的密钥存储至产品中,并使用对应的密钥将待读写数据内容进行加密,生成加密数据内容。
25.具体的,在s3中,采用对称加密算法生成对称密钥,使用所述对称密钥将待读写数据内容进行加密,当写入字节数量不是16的倍数时,对待读写数据内容进行数据补位至16字节的倍数,再进行加密,补位算法采用pkcs7padding算法,当需要n字节补齐时,报文长度少于n个字节,补(n-len)个(n-len);当报文长度是n字节的整数倍时,不再补位。
26.如图2所示,s3还包括:将待读写数据内容进行加密之前,先对所述待读写数据内容进行校验,s301:采用随机生产算法,生成256种crc校验参与内容,s302:将所述crc校验参与内容存储至产品中,s303:数据内容校验时根据crc校验参与内容序号,选择crc校验参与内容,进行crc的校验,s304:加密封包。
27.s4:对加密数据内容进行通信。
28.s5:解密拆包:使用所述产品中存储的密钥将加密数据内容进行解密,还原所述待读写数据内容。
29.具体的,如图3所示,s5还包括:将加密数据内容进行解密之后,再对还原的待读写数据内容进行校验。s501:解密拆包,s502:采用随机生产算法,生成256种crc校验参与内容,s503:将所述crc校验参与内容存储至产品中,s504:数据内容校验时根据crc校验参与内容序号,选择crc校验参与内容,进行crc的校验。
30.实施例二参照下表1,读数据协议格式,其中,发送帧结构与modbusrtu协议数据帧结构相同,数据内容均为明文。
31.表1发送帧结构参照下表2,应答帧结构相比modbusrtu协议增加了1字节加密方式,加密方式分为两种:分别是aes128加密算法、sm4加密算法,均为对称加密算法。
32.应答帧结构相比modbusrtu协议增加了1字节校验参与内容。即256种校验参与内容随机选择,通过序号表示确定参与校验的内容。
33.应答帧结构相比modbusrtu协议对数据内容进行了加密。aes128和sm4对数据加密都是基于16字节一组数据进行加密,当读取字节数量不是16的倍数时,便需要对数据内容进行数据补位,补足16字节的倍数,再进行加密处理。补齐算法采用pkcs7padding算法。其中,补齐的原则是,如果需要n字节补齐,报文长度少于n个字节,需要补满n个字节,即补
(n-len)个(n-len)。如果报文长度正好是n字节的整数倍,则不再需要补位。
34.数据内容采用先校验后加密的方式,这样可以防止数据被篡改,其中,应答帧crc校验算法如下所示:/*******************************************************函数名称:crc16st(uchar *in, uchar len, uchar *out, uint16 crc_in )函数功能:将指定长度一段连续存储空间内的字节进行crc16校验入口参数:uchar *in
ꢀꢀꢀꢀ
预校验的字节指针首地址
ꢀꢀꢀꢀꢀꢀꢀꢀ
uchar len
ꢀꢀ
预校验的字节长度(0~255)
ꢀꢀꢀꢀꢀꢀꢀꢀ
uchar *out 输出的校验码存储指针,低位字节在前,高位字节在后
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
uint16 crc_in
ꢀꢀ
是crc参与校验的内容出口参数:无备
ꢀꢀꢀꢀ
注:无*******************************************************/void crc16st(uint08 *in, uint08 len, uint08 *out, uint16 crc_in) //16位crc校验函数{
ꢀꢀꢀꢀ
int
ꢀꢀ
i, j;
ꢀꢀꢀꢀ
uint16 crc,xdabit;
ꢀꢀꢀꢀ
crc = crc_in;
ꢀꢀꢀꢀ
for (j=0; j《len; j++)
ꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀ
crc=crc^((uint16)in[j]);
ꢀꢀꢀꢀꢀꢀꢀꢀ
for (i=0; i《8; i++)
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
xdabit=crc&0x0001;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
crc=crc》》1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(xdabit==1) crc=crc^0xa001;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
out[0]=(uint08)crc;
ꢀꢀꢀꢀ
out[1]=(uint08)(crc》》8);}
表2 应答帧结构参照下表3,写数据协议格式,其中,发送帧结构相比modbus rtu协议增加了1字节加密方式,加密方式分为两种: 分别是aes128加密算法、sm4加密算法,均为对称加密算法。
[0035]
发送帧结构相比modbus rtu协议增加了1字节校验参与内容。即256种校验参与内容随机选择,通过序号表示确定参与校验的内容。
[0036]
发送帧结构相比modbus rtu协议对数据内容进行了加密。aes128和sm4对数据加密都是基于16字节一组数据进行加密,当写入字节数量不是16的倍数时,便需要对数据内容进行数据补位,补足16字节的倍数,再进行加密处理。补齐算法采用pkcs7padding算法。其中,补齐的原则是,如果需要n字节补齐,报文长度少于n个字节,需要补满n个字节,即补(n-len)个(n-len)。如果报文长度正好是n字节的整数倍,则不再需要补位。
[0037]
数据内容采用先校验后加密的方式,这样可以防止数据被篡改,其中,发送帧crc校验算法如下所示:/*******************************************************函数名称:crc16st(uchar *in, uchar len, uchar *out, uint16 crc_in )函数功能:将指定长度一段连续存储空间内的字节进行crc16校验入口参数:uchar *in
ꢀꢀꢀꢀ
预校验的字节指针首地址
ꢀꢀꢀꢀꢀꢀꢀꢀ
uchar len
ꢀꢀ
预校验的字节长度(0~255)
ꢀꢀꢀꢀꢀꢀꢀꢀ
uchar *out 输出的校验码存储指针,低位字节在前,高位字节在后
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
uint16 crc_in
ꢀꢀ
是crc参与校验的内容出口参数:无
备
ꢀꢀꢀꢀ
注:无*******************************************************/void crc16st(uint08 *in, uint08 len, uint08 *out, uint16 crc_in) //16位crc校验函数{
ꢀꢀꢀꢀ
int
ꢀꢀ
i, j;
ꢀꢀꢀꢀ
uint16 crc,xdabit;
ꢀꢀꢀꢀ
crc = crc_in;
ꢀꢀꢀꢀ
for (j=0; j《len; j++)
ꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀ
crc=crc^((uint16)in[j]);
ꢀꢀꢀꢀꢀꢀꢀꢀ
for (i=0; i《8; i++)
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
xdabit=crc&0x0001;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
crc=crc》》1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(xdabit==1) crc=crc^0xa001;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
out[0]=(uint08)crc;
ꢀꢀꢀꢀ
out[1]=(uint08)(crc》》8);}
表3发送帧结构参照下表4、表5,应答帧结构同modbusrtu协议数据帧结构,数据内容均为明文。
[0038]
crc校验方式同modubusrtu协议。
[0039]
表4应答帧结构表5错误码表实施例三如图4所示,一种基于modbus通信协议的通信系统,应用于产品,包括:数据处理模块1,被配置为根据实际需求,定义待读写数据内容,并以寄存器地址的格式进行编号,选择对应的加密算法,及密钥号数量;数据加密模块2,被配置为采用加密机或密钥生产算法,生成对应的密钥,将对应的密钥存储至产品中,并使用对应的密钥将待读写数据内容进行加密,生成加密数据内容;数据通信模块3,被配置为对加密数据内容进行通信;数据解密模块4,被配置为使用所述产品中存储的密钥将加密数据内容进行解密,还原所述待读写数据内容。
[0040]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,这些改进也应视为本发明的保护范围。
技术特征:
1.一种基于modbus通信协议的通信方法,其特征在于:包括以下步骤:s1:根据实际需求,定义待读写数据内容,并以寄存器地址的格式进行编号;s2:根据实际需求,选择对应的加密算法,及密钥号数量;s3:加密封包:采用加密机或密钥生产算法,生成对应的密钥,将对应的密钥存储至产品中,并使用对应的密钥将待读写数据内容进行加密,生成加密数据内容;s4:对加密数据内容进行通信;s5:解密拆包:使用所述产品中存储的密钥将加密数据内容进行解密,还原所述待读写数据内容。2.根据权利要求1所述的基于modbus通信协议的通信方法,其特征在于:s2还包括:所述加密算法采用对称加密算法,所述对称加密算法为aes128加密算法或sm4加密算法。3.根据权利要求1所述的基于modbus通信协议的通信方法,其特征在于:s2还包括:密钥号采用随机算法,所述密钥号随机选取。4.根据权利要求1所述的基于modbus通信协议的通信方法,其特征在于:s2还包括:所述密钥号的数量最多为128个。5.根据权利要求1所述的基于modbus通信协议的通信方法,其特征在于:s3还包括:采用对称加密算法生成对称密钥,使用所述对称密钥将待读写数据内容进行加密。6.根据权利要求1所述的基于modbus通信协议的通信方法,其特征在于:s3还包括:当写入字节数量不是16的倍数时,对待读写数据内容进行数据补位至16字节的倍数,再进行加密。7.根据权利要求6所述的基于modbus通信协议的通信方法,其特征在于:补位算法采用pkcs7padding算法,当需要n字节补齐时,报文长度少于n个字节,补(n-len)个(n-len);当报文长度是n字节的整数倍时,不再补位。8.根据权利要求1所述的基于modbus通信协议的通信方法,其特征在于:s3还包括:将待读写数据内容进行加密之前,先对所述待读写数据内容进行校验;s5还包括:将加密数据内容进行解密之后,再对还原的待读写数据内容进行校验。9.根据权利要求8所述的基于modbus通信协议的通信方法,其特征在于:采用随机生产算法,生成256种crc校验参与内容,并将所述crc校验参与内容存储至产品中,数据内容校验时根据crc校验参与内容序号,选择crc校验参与内容,进行crc的校验。10.一种基于modbus通信协议的通信系统,应用于产品,其特征在于:包括:数据处理模块,被配置为根据实际需求,定义待读写数据内容,并以寄存器地址的格式进行编号,选择对应的加密算法,及密钥号数量;数据加密模块,被配置为采用加密机或密钥生产算法,生成对应的密钥,将对应的密钥存储至产品中,并使用对应的密钥将待读写数据内容进行加密,生成加密数据内容;数据通信模块,被配置为对加密数据内容进行通信;数据解密模块,被配置为使用所述产品中存储的密钥将加密数据内容进行解密,还原所述待读写数据内容。
技术总结
本发明公开了一种基于MODBUS通信协议的通信方法及系统,包括以下步骤:S1:根据实际需求,定义待读写数据内容,并以寄存器地址的格式进行编号;S2:根据实际需求,选择对应的加密算法,及密钥号数量;S3:加密封包:采用加密机或密钥生产算法,生成对应的密钥,将对应的密钥存储至产品中,并使用对应的密钥将待读写数据内容进行加密,生成加密数据内容;S4:对加密数据内容进行通信;S5:解密拆包:使用所述产品中存储的密钥将加密数据内容进行解密,还原所述待读写数据内容;数据内容支持加密读写,通信安全性高;基于MODBUS协议修改,协议格式简单,通用性好,对于开发应用人员工作量低。对于开发应用人员工作量低。对于开发应用人员工作量低。
技术研发人员:李龙
受保护的技术使用者:祎智量芯(江苏)电子科技有限公司
技术研发日:2023.02.06
技术公布日:2023/7/19
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:用于减震器的模块化压力调节阀的制作方法 下一篇:表面处理膜的制作方法