产学研创新服务平台(全国)
专利申请类型:发明专利;专利名称:一种基于矿鸿组态系统的数据转发方法
专利类型:发明专利
专利申请号:CN202410732771.3
专利申请(专利权)人:淮南万泰电子股份有限公司
权利人地址:安徽省淮南市高新区(山南新区)国槐路与春申大街交叉口淮南万泰电子股份有限公司
专利发明(设计)人:连维瑞
专利摘要:本发明涉及工业控制技术领域,具体为一种基于矿鸿组态系统的数据转发方法,包括:矿鸿组态编辑器界面创建目标组态的矿鸿组态数据源;配置所述矿鸿组态数据源的转发规则,从而得到数据转发的配置文件,所述转发规则包括访问目标矿鸿设备提供的数据访问格式以及模拟暴露对外访问所述目标矿鸿设备地址和内存变量之间的关系。本发明能够根据项目的特点需求自定义的组织矿鸿数据协议规则,支持多款标准的矿鸿协议进行反馈给对方,并且组态方式对于数据转发协议规则只需要再界面上简单配置即可操作简单灵活方便,而且转发协议课针对不同需求调整参数即可,不需要重新编译,所以复用性高。
主权利要求:
1.一种基于矿鸿组态系统的数据转发方法,其特征在于,包括:
矿鸿组态编辑器界面创建目标组态的矿鸿组态数据源;
配置所述矿鸿组态数据源的转发规则,从而得到数据转发的配置文件,所述转发规则包括访问目标矿鸿设备提供的数据访问格式以及模拟暴露对外访问所述目标矿鸿设备地址和内存变量之间的关系;
矿鸿组态应用导入所述数据转发的配置文件,并基于所述数据转发的配置文件初始化所述目标矿鸿设备对象和数据规则对象,从而得到所述目标矿鸿设备配置;
基于所述目标矿鸿设备配置动态创建连接所述目标矿鸿设备的设备对象,启动所述目标矿鸿设备并定时监听上位机传输的请求指令,从而得到多个所述请求指令,将多个所述请求指令进行拼接,从而得到拼接的所述请求指令,并基于所述矿鸿组态数据源的波特率计算循环监听上位机的单位时间片;
对每次拼接的所述请求指令进行有效性检测,若有效性检测不合格,则将拼接的所述请求指令丢弃;
若有效性检测合格,则对拼接的所述请求指令进行解析,从而得到相应的请求指令对象,并将所述请求指令对象加入至指令请求队列中;
从所述指令请求队列中弹出所述请求指令对象,对所述请求指令对象的属性和数据转发协议进行解析,从而得到反馈内容,若所述反馈内容为修改指令,则将所述修改指令封装为修改指令对象,并将所述修改指令对象传输至下端设备,所述下端设备将所述修改指令对象作为执行参数;
所述下端设备向请求端回复所述修改指令的回复。
2.根据权利要求1所述的一种基于矿鸿组态系统的数据转发方法,其特征在于,所述目标组态的矿鸿组态数据源包括矿鸿设备序列号、设备索引、从站地址、设备IP地址、蓝牙识别号、波特率和有效位。
3.根据权利要求1所述的一种基于矿鸿组态系统的数据转发方法,其特征在于,所述对每次拼接的所述请求指令进行有效性检测,包括:获取所述请求指令,并检测所述请求指令的站地址是否正确,若所述请求指令的站地址不正确,则所述请求指令的有效性检测不合格;
若所述请求指令的站地址正确,则检测所述请求指令的功能码是否正确,若所述请求指令的功能码不正确,则所述请求指令的有效性检测不合格;
若所述请求指令的功能码正确,则检测所述请求指令的指令长度是否正确,若所述请求指令的指令长度不正确,则所述请求指令的有效性检测不合格;
若所述请求指令的指令长度正确,则检测所述请求指令的验证码是否正确,若所述请求指令的验证码不正确,则所述请求指令的有效性检测不合格;
若所述请求指令的验证码正确,则检测所述请求指令的起始地址和结尾地址是否在合理区间,若所述请求指令的起始地址和结尾地址不在合理区间,则所述请求指令的有效性检测不合格,否则,所述请求指令的有效性检测合格。
4.根据权利要求1所述的一种基于矿鸿组态系统的数据转发方法,其特征在于,所述基于所述目标矿鸿设备配置动态创建连接所述目标矿鸿设备的设备对象,启动所述目标矿鸿设备并定时监听上位机传输的请求指令,从而得到多个所述请求指令,将多个所述请求指令进行拼接,从而得到拼接的所述请求指令,并基于所述矿鸿组态数据源的波特率计算循环监听上位机的单位时间片,包括:判断所述目标矿鸿设备是否启动,若所述目标矿鸿设备启动,则在单位时间片内获取所述目标矿鸿设备的请求内容;
判断所述目标矿鸿设备的请求内容是否不为空,若所述目标矿鸿设备的请求内容不为空,则判断所述目标矿鸿设备的请求内容是否符合指令格式,若所述目标矿鸿设备的请求内容符合指令格式,则清空待匹配指令片段;
若所述目标矿鸿设备的请求内容不符合指令格式,则将所述目标矿鸿设备的请求内容与待匹配指令进行拼接,从而得到新请求内容,并判断所述新请求内容是否符合指令格式,若所述新请求内容符合指令格式,则清空待匹配指令片段,否则,则等待循环单位时间片更新请求内容;
将所述请求内容和所述新请求内容转换为请求指令对象,并将所述请求指令对象压入请求指令队列,并等待循环单位时间片更新所述请求指令队列。
5.根据权利要求1所述的一种基于矿鸿组态系统的数据转发方法,其特征在于,所述从所述指令请求队列中弹出所述请求指令对象,对所述请求指令对象的属性和数据转发协议进行解析,从而得到反馈内容,若所述反馈内容为修改指令,则将所述修改指令封装为修改指令对象,并将所述修改指令对象传输至下端设备,所述下端设备将所述修改指令对象作为执行参数,包括:判断所述请求指令对象的指令对象验证是否通过,若所述请求指令对象的指令对象验证不通过,则判断所述请求指令对象的站地址是否正确,若所述请求指令对象的站地址不正确,则不对所述请求指令对象进行反馈,否则,则反馈错误信息;
若所述请求指令对象的指令对象验证通过,则判断所述请求指令对象是否是查询指令,若所述请求指令对象是查询指令,则解析出所述查询指令的查询范围,并根据转换规则找到对应的变量,并将所述变量的值拼接成反馈指令格式;
若所述请求指令对象不是查询指令,则判断所述请求指令对象是否是单数据单元修改,若所述请求指令对象不是单数据单元修改,则找出要修改的存储单元集合,并将所述存储单元集合转换成指令变量数组,且将所述指令变量数组转换成组态的变量赋值事件集合,并基于所述变量赋值事件集合生成反馈指令码,基于所述反馈指令格式和所述反馈指令码将反馈指令回复给请求端;
若所述请求指令对象是单数据单元修改,则找出要修改的存储单元,并根据数据单元和要修改的值组织下行修改指令,并判断所述下行修改指令是否执行成功,若所述下行修改指令执行成功,则直接反馈请求指令,否则,则反馈错误信息。 说明书 : 一种基于矿鸿组态系统的数据转发方法技术领域[0001] 本发明涉及工业控制技术领域,具体涉及一种基于矿鸿组态系统的数据转发方法。背景技术[0002] 对于矿鸿应用的数据对外转发过程在矿鸿应用在传统的应用开发中,如何将下位机的数据方便灵活的方式通过协议转发给上端访问的设备,组态的方式的数据转发协议提供方便快捷的设置界面,设置过程快捷方便,可以自定义设置数据规则,相比较传统开发模式需要定制开发调整,组态模式的数据转发协议实现矿鸿数据协议转发领域的高效稳定、灵活度高、复用性强和成本低的效果,并且传统对对于设备的通信访问都是根据需求需要在代码中来创建对象,灵活度差。发明内容[0003] 本发明目的是针对背景技术中存在的问题,提出一种基于矿鸿组态系统的数据转发方法。[0004] 本发明的技术方案:一种基于矿鸿组态系统的数据转发方法,包括:[0005] 矿鸿组态编辑器界面创建目标组态的矿鸿组态数据源;[0006] 配置所述矿鸿组态数据源的转发规则,从而得到数据转发的配置文件,所述转发规则包括访问目标矿鸿设备提供的数据访问格式以及模拟暴露对外访问所述目标矿鸿设备地址和内存变量之间的关系;[0007] 矿鸿组态应用导入所述数据转发的配置文件,并基于所述数据转发的配置文件初始化所述目标矿鸿设备对象和数据规则对象,从而得到所述目标矿鸿设备配置;[0008] 基于所述目标矿鸿设备配置动态创建连接所述目标矿鸿设备的设备对象,启动所述目标矿鸿设备并定时监听上位机传输的请求指令,从而得到多个所述请求指令,将多个所述请求指令进行拼接,从而得到拼接的所述请求指令,并基于所述矿鸿组态数据源的波特率计算循环监听上位机的单位时间片;[0009] 对每次拼接的所述请求指令进行有效性检测,若有效性检测不合格,则将拼接的所述请求指令丢弃;[0010] 若有效性检测合格,则对拼接的所述请求指令进行解析,从而得到相应的请求指令对象,并将所述请求指令对象加入至指令请求队列中;[0011] 从所述指令请求队列中弹出所述请求指令对象,对所述请求指令对象的属性和数据转发协议进行解析,从而得到反馈内容,若所述反馈内容为修改指令,则将所述修改指令封装为修改指令对象,并将所述修改指令对象传输至下端设备,所述下端设备将所述修改指令对象作为执行参数;[0012] 所述下端设备向请求端回复所述修改指令的回复。[0013] 优选的,所述目标组态的矿鸿组态数据源包括矿鸿设备序列号、设备索引、从站地址、设备IP地址、蓝牙识别号、波特率和有效位。[0014] 优选的,所述对每次拼接的所述请求指令进行有效性检测,包括:[0015] 获取所述请求指令,并检测所述请求指令的站地址是否正确,若所述请求指令的站地址不正确,则所述请求指令的有效性检测不合格;[0016] 若所述请求指令的站地址正确,则检测所述请求指令的功能码是否正确,若所述请求指令的功能码不正确,则所述请求指令的有效性检测不合格;[0017] 若所述请求指令的功能码正确,则检测所述请求指令的指令长度是否正确,若所述请求指令的指令长度不正确,则所述请求指令的有效性检测不合格;[0018] 若所述请求指令的指令长度正确,则检测所述请求指令的验证码是否正确,若所述请求指令的验证码不正确,则所述请求指令的有效性检测不合格;[0019] 若所述请求指令的验证码正确,则检测所述请求指令的起始地址和结尾地址是否在合理区间,若所述请求指令的起始地址和结尾地址不在合理区间,则所述请求指令的有效性检测不合格,否则,所述请求指令的有效性检测合格。[0020] 优选的,所述基于所述目标矿鸿设备配置动态创建连接所述目标矿鸿设备的设备对象,启动所述目标矿鸿设备并定时监听上位机传输的请求指令,从而得到多个所述请求指令,将多个所述请求指令进行拼接,从而得到拼接的所述请求指令,并基于所述矿鸿组态数据源的波特率计算循环监听上位机的单位时间片,包括:[0021] 判断所述目标矿鸿设备是否启动,若所述目标矿鸿设备启动,则在单位时间片内获取所述目标矿鸿设备的请求内容;[0022] 判断所述目标矿鸿设备的请求内容是否不为空,若所述目标矿鸿设备的请求内容不为空,则判断所述目标矿鸿设备的请求内容是否符合指令格式,若所述目标矿鸿设备的请求内容符合指令格式,则清空待匹配指令片段;[0023] 若所述目标矿鸿设备的请求内容不符合指令格式,则将所述目标矿鸿设备的请求内容与待匹配指令进行拼接,从而得到新请求内容,并判断所述新请求内容是否符合指令格式,若所述新请求内容符合指令格式,则清空待匹配指令片段,否则,则等待循环单位时间片更新请求内容;[0024] 将所述请求内容和所述新请求内容转换为请求指令对象,并将所述请求指令对象压入请求指令队列,并等待循环单位时间片更新所述请求指令队列。[0025] 优选的,所述从所述指令请求队列中弹出所述请求指令对象,对所述请求指令对象的属性和数据转发协议进行解析,从而得到反馈内容,若所述反馈内容为修改指令,则将所述修改指令封装为修改指令对象,并将所述修改指令对象传输至下端设备,所述下端设备将所述修改指令对象作为执行参数,包括:[0026] 判断所述请求指令对象的指令对象验证是否通过,若所述请求指令对象的指令对象验证不通过,则判断所述请求指令对象的站地址是否正确,若所述请求指令对象的站地址不正确,则不对所述请求指令对象进行反馈,否则,则反馈错误信息;[0027] 若所述请求指令对象的指令对象验证通过,则判断所述请求指令对象是否是查询指令,若所述请求指令对象是查询指令,则解析出所述查询指令的查询范围,并根据转换规则找到对应的变量,并将所述变量的值拼接成反馈指令格式;[0028] 若所述请求指令对象不是查询指令,则判断所述请求指令对象是否是单数据单元修改,若所述请求指令对象不是单数据单元修改,则找出要修改的存储单元集合,并将所述存储单元集合转换成指令变量数组,且将所述指令变量数组转换成组态的变量赋值事件集合,并基于所述变量赋值事件集合生成反馈指令码,基于所述反馈指令格式和所述反馈指令码将反馈指令回复给请求端;[0029] 若所述请求指令对象是单数据单元修改,则找出要修改的存储单元,并根据数据单元和要修改的值组织下行修改指令,并判断所述下行修改指令是否执行成功,若所述下行修改指令执行成功,则直接反馈请求指令,否则,则反馈错误信息。[0030] 与现有技术相比,本发明的上述技术方案具有如下有益的技术效果:[0031] 本发明能够根据项目的特点需求自定义的组织矿鸿数据协议规则,支持多款标准的矿鸿协议进行反馈给对方,并且组态方式对于数据转发协议规则只需要再界面上简单配置即可操作简单灵活方便,而且转发协议课针对不同需求调整参数即可,不需要重新编译,所以复用性高,且对于请求指令和结果反馈采用了双解耦队列模式,不会存在指令挤压和阻塞的过程,另外对于指令的校验判断严谨,数据解析兼容性强,杜绝了错误数据导致错误处理的情况,最后开发全程不需要代码开发,操作处理过程是全程智能化操作代替了复杂的传统开发模式,操作人员不需要专业的开发人员,相比传统所以成本和人员上面将会大幅下降。附图说明[0032] 图1为本发明提出的一种实施例中整体方法的流程示意图;[0033] 图2为本发明提出的一种实施例中请求指令进入请求指令队列的处理逻辑的流程示意图;[0034] 图3为本发明提出的一种实施例中判断请求指令是否有效的流程示意图;[0035] 图4为本发明提出的一种实施例中根据请求指令和解析规则得到指令反馈的流程示意图。具体实施方式[0036] 实施例一,如图1所示,本发明提出的一种基于矿鸿组态系统的数据转发方法,包括:[0037] D01、创建转发的矿鸿数据源:矿鸿组态编辑器界面创建目标组态的矿鸿组态数据源;[0038] D02、配置矿鸿数据转发规则:配置工业控制矿鸿组态数据源的转发规则,从而得到数据转发的配置文件,工业控制转发规则包括访问目标矿鸿设备提供的数据访问格式以及模拟暴露对外访问工业控制目标矿鸿设备地址和内存变量之间的关系;[0039] D03、矿鸿组态应用导入配置规则文件:矿鸿组态应用导入工业控制数据转发的配置文件,并基于工业控制数据转发的配置文件初始化工业控制目标矿鸿设备对象和数据规则对象,从而得到工业控制目标矿鸿设备配置;[0040] D04、启动设备监听请求指令:基于工业控制目标矿鸿设备配置动态创建连接工业控制目标矿鸿设备的设备对象,启动工业控制目标矿鸿设备并定时监听上位机传输的请求指令,从而得到多个工业控制请求指令,将多个工业控制请求指令进行拼接,从而得到拼接的工业控制请求指令,并基于工业控制矿鸿组态数据源的波特率计算循环监听上位机的单位时间片;[0041] D05、组织并校验指令:对每次拼接的工业控制请求指令进行有效性检测,若有效性检测不合格,则将拼接的工业控制请求指令丢弃;[0042] D06、将请求指令解析后放入队列:若有效性检测合格,则对拼接的工业控制请求指令进行解析,从而得到相应的请求指令对象,并将工业控制请求指令对象加入至指令请求队列中;[0043] D07、解析请求指令得到反馈内容:从工业控制指令请求队列中弹出工业控制请求指令对象,对工业控制请求指令对象的属性和数据转发协议进行解析,从而得到反馈内容,若工业控制反馈内容为修改指令,则将工业控制修改指令封装为修改指令对象,并将工业控制修改指令对象传输至下端设备,工业控制下端设备将工业控制修改指令对象作为执行参数;[0044] D08、向请求端回复指令回复:工业控制下端设备向请求端回复工业控制修改指令的回复。[0045] 本发明中,请求指令对象包括校验结果。[0046] 在一个可选的实施例中,工业控制目标组态的矿鸿组态数据源包括矿鸿设备序列号、设备索引、从站地址、设备IP地址、蓝牙识别号、波特率和有效位。[0047] 实施例二,如图2‑4所示,本发明提出的一种基于矿鸿组态系统的数据转发方法,相较于实施例一,本实施例还包括:[0048] 工业控制对每次拼接的工业控制请求指令进行有效性检测,包括:[0049] 获取工业控制请求指令,并检测工业控制请求指令的站地址是否正确,若工业控制请求指令的站地址不正确,则工业控制请求指令的有效性检测不合格;[0050] 若工业控制请求指令的站地址正确,则检测工业控制请求指令的功能码是否正确,若工业控制请求指令的功能码不正确,则工业控制请求指令的有效性检测不合格;[0051] 若工业控制请求指令的功能码正确,则检测工业控制请求指令的指令长度是否正确,若工业控制请求指令的指令长度不正确,则工业控制请求指令的有效性检测不合格;[0052] 若工业控制请求指令的指令长度正确,则检测工业控制请求指令的验证码是否正确,若工业控制请求指令的验证码不正确,则工业控制请求指令的有效性检测不合格;[0053] 若工业控制请求指令的验证码正确,则检测工业控制请求指令的起始地址和结尾地址是否在合理区间,若工业控制请求指令的起始地址和结尾地址不在合理区间,则工业控制请求指令的有效性检测不合格,否则,工业控制请求指令的有效性检测合格。[0054] 在一个可选的实施例中,工业控制基于工业控制目标矿鸿设备配置动态创建连接工业控制目标矿鸿设备的设备对象,启动工业控制目标矿鸿设备并定时监听上位机传输的请求指令,从而得到多个工业控制请求指令,将多个工业控制请求指令进行拼接,从而得到拼接的工业控制请求指令,并基于工业控制矿鸿组态数据源的波特率计算循环监听上位机的单位时间片,包括:[0055] 判断工业控制目标矿鸿设备是否启动,若工业控制目标矿鸿设备启动,则在单位时间片内获取工业控制目标矿鸿设备的请求内容;[0056] 判断工业控制目标矿鸿设备的请求内容是否不为空,若工业控制目标矿鸿设备的请求内容不为空,则判断工业控制目标矿鸿设备的请求内容是否符合指令格式,若工业控制目标矿鸿设备的请求内容符合指令格式,则清空待匹配指令片段;[0057] 若工业控制目标矿鸿设备的请求内容不符合指令格式,则将工业控制目标矿鸿设备的请求内容与待匹配指令进行拼接,从而得到新请求内容,并判断工业控制新请求内容是否符合指令格式,若工业控制新请求内容符合指令格式,则清空待匹配指令片段,否则,则等待循环单位时间片更新请求内容;[0058] 将工业控制请求内容和工业控制新请求内容转换为请求指令对象,并将工业控制请求指令对象压入请求指令队列,并等待循环单位时间片更新工业控制请求指令队列。[0059] 在一个可选的实施例中,工业控制从工业控制指令请求队列中弹出工业控制请求指令对象,对工业控制请求指令对象的属性和数据转发协议进行解析,从而得到反馈内容,若工业控制反馈内容为修改指令,则将工业控制修改指令封装为修改指令对象,并将工业控制修改指令对象传输至下端设备,工业控制下端设备将工业控制修改指令对象作为执行参数,包括:[0060] 判断工业控制请求指令对象的指令对象验证是否通过,若工业控制请求指令对象的指令对象验证不通过,则判断工业控制请求指令对象的站地址是否正确,若工业控制请求指令对象的站地址不正确,则不对工业控制请求指令对象进行反馈,否则,则反馈错误信息;[0061] 若工业控制请求指令对象的指令对象验证通过,则判断工业控制请求指令对象是否是查询指令,若工业控制请求指令对象是查询指令,则解析出工业控制查询指令的查询范围,并根据转换规则找到对应的变量,并将工业控制变量的值拼接成反馈指令格式;[0062] 若工业控制请求指令对象不是查询指令,则判断工业控制请求指令对象是否是单数据单元修改,若工业控制请求指令对象不是单数据单元修改,则找出要修改的存储单元集合,并将工业控制存储单元集合转换成指令变量数组,且将工业控制指令变量数组转换成组态的变量赋值事件集合,并基于工业控制变量赋值事件集合生成反馈指令码,基于工业控制反馈指令格式和工业控制反馈指令码将反馈指令回复给请求端;[0063] 若工业控制请求指令对象是单数据单元修改,则找出要修改的存储单元,并根据数据单元和要修改的值组织下行修改指令,并判断工业控制下行修改指令是否执行成功,若工业控制下行修改指令执行成功,则直接反馈请求指令,否则,则反馈错误信息。[0064] 上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于此,在所属技术领域的技术人员所具备的知识范围内,在不脱离本发明宗旨的前提下还可以作出各种变化。
专利地区:安徽
专利申请日期:2024-06-07
专利公开日期:2024-11-29
专利公告号:CN118449987B