一种基于MQTT协议和Matlab软件的半实物仿真测试方法及系统与流程
- 国知局
- 2024-07-30 09:21:09
本发明涉及控制仿真,特别是一种基于mqtt协议和matlab软件的半实物仿真测试方法及系统。
背景技术:
1、半实物仿真是在物理仿真和数学仿真的基础上而形成的仿真技术,其通过软件模型对不便于采用实际物理对象进行试验的部分进行仿真,采用实际终端硬件实现控制策略并对被控对象仿真模型进行控制;相比纯数字仿真,半实物仿真的逼真度较高,常用于验证工业控制系统方案的正确性和可行性,进行故障模式的仿真与对研制阶段的控制终端和控制系统进行闭环动态验收试验,应用半实物仿真使仿真条件更接近于实际情况,更能正确地对设计出的控制终端性能进行检验和调试,有利于开发新型控制系统和算法;此外,半实物仿真可充分利用软件建模的简易性,减少现场调试次数,减少控制策略研发费用。
2、然而,目前常用的matlab/simulink仿真软件对各类通信协议的实现并不完善,使得半实物仿真中数字部分与物理部分之间信息传输存在一定困难;目前的半实物仿真的实现依赖于专用半实物仿真平台硬件,且相关技术长期被国外厂商垄断,如德国倍福公司的半实物仿真平台、德国dspace公司的dspace实时仿真系统和加拿大名opal-rt公司的rt-lab实时仿真系统,导致半实物仿真的软硬件配置成本较高,技术自主性不足,在此背景下国产化的半实物仿真技术仍是控制仿真领域的重要研究内容。
技术实现思路
1、鉴于对半实物进行仿真测试时,现有技术中对各类通信协议的支持不充分、半实物仿真依赖国外厂商硬件和成本高昂等问题,提出了本发明。
2、因此,本发明所要解决的问题在于如何提供一种通过实物终端设备、基于java实现的mqtt通信软件和matlab/simulink仿真软件搭建半实物仿真平台,无需配置专用半实物仿真硬件就能够实现半实物仿真的方法。
3、为解决上述技术问题,本发明提供如下技术方案:
4、第一方面,本发明实施例提供了一种基于mqtt协议和matlab软件的半实物仿真测试方法,其包括定义被控对象测点信息的数据结构并对被控对象测点信息进行序列化;基于实物终端设备和mqtt broker程序构建mqtt通信协议通道;基于客户端和实物终端设备中的mqtt broker程序构建mqtt客户端;利用simulink软件和matlab软件对mqtt客户端进行调用,实现matlab软件与实物终端设备之间的通信并进行半实物仿真。
5、作为本发明所述基于mqtt协议和matlab软件的半实物仿真测试方法的一种优选方案,其中:所述采集被控对象测点信息并对被控对象测点信息进行序列化通过采集被控对象测点信息,在proto消息类型定义文件中定义被控对象测点信息的数据结构,利用protobuf结构数据序列化方法将被控对象测点信息序列化为二进制字节流;所述被控对象测点信息的数据结构包括测量值为离散值的测点和测量值为连续值的测点;所述测量值为离散值的测点表示观测对象的开关量;所述测量值为连续值的测点表示观测对象的测量模拟量;所述观测对象的开关量包括开关分合状态和是否发生事故异常;所述观测对象的测量模拟量包括速度和电压。
6、作为本发明所述基于mqtt协议和matlab软件的半实物仿真测试方法的一种优选方案,其中:所述定义被控对象测点信息的数据结构的具体情况如下:定义测量值为离散值的测点数据结构,所述测量值为离散值的测点数据结构包括测点id、测量值、测点时标以及测点原始值;定义测量值为连续值的测点数据结构,所述测量值为连续值的测点数据结构包括测点id、测量值、测点时标以及测点原始值;在单个测点数据结构的基础上定义多个测点的数据结构;定义控制指令为离散值的单个测点数据结构,所述控制指令为离散值的单个测点数据结构包括指令发送端id、控制指令对应的测点id、控制指令值以及控制指令时标;定义控制指令为连续值的单个测点数据结构,所述控制指令为连续值的单个测点数据结构包括指令发送端id、控制指令对应的测点id、控制指令值以及控制指令时标;在单个控制指令的测点数据结构的基础上定义多个控制指令的测点数据结构。
7、作为本发明所述基于mqtt协议和matlab软件的半实物仿真测试方法的一种优选方案,其中:所述利用protobuf结构数据序列化方法将测点信息序列化为二进制字节流通过利用protobuf编译器对所述proto消息类型定义文件进行编译并生成rust类文件,实物终端设备在发送测点信息时通过protobuf结构数据序列化方法将所述proto消息类型定义文件生成的rust类文件序列化为二进制字节流。
8、作为本发明所述基于mqtt协议和matlab软件的半实物仿真测试方法的一种优选方案,其中:所述mqtt通信协议通道包括mqtt broker程序的ip、端口、被控对象的测点数量、订阅测点数据的mqtt消息主题、发布控制指令的mqtt消息主题以及被控对象所有测点的id;所述构建mqtt通信协议通道包括以下步骤:配置实物终端设备中mqtt客户端与mqttbroker程序之间的mqtt通信协议通道;根据mqtt通信协议通道的被控对象所有测点的id在实物终端设备中配置测点信息;在实物终端设备中配置被控对象的控制策略;运行实物终端设备,导入配置信息,实现实物终端设备中的mqtt客户端与mqtt broker程序的通信;所述测点信息包括数据类型、别名、是否为计算点、上限值、下限值以及默认值信息。
9、作为本发明所述基于mqtt协议和matlab软件的半实物仿真测试方法的一种优选方案,其中:所述构建mqtt客户端包括以下步骤:利用protobuf编译器对proto消息类型定义文件进行编译并生成java类文件;编写mqtt客户端并实现mqtt客户端与实物终端设备中mqtt broker程序的通信;定义公共变量用于存储控制指令,在mqtt客户端中将接收到的mqtt消息通过protobuf结构数据序列化方法反序列化为类对象,存储于公共变量中;编写并发布被控对象测点测量数据的程序接口,根据程序接口传入的参数生成类对象,通过protobuf结构数据序列化方法将生成的类对象序列化为二进制字节数组,并通过mqtt客户端发布;所述程序接口传入的参数包括发布测点数据的消息主题、测点id数组和测点值数组。
10、作为本发明所述基于mqtt协议和matlab软件的半实物仿真测试方法的一种优选方案,其中:所述进行半实物仿真包括以下步骤:在simulink软件中构建被控对象实时仿真模型并引入s-function模块,将被控对象采集量相关测点信号输入s-function模块,将被控对象的控制指令相关测点信号作为s-function模块的输出量,在s-function源文件中将s-function模块的输入量存入matlab工作区,在s-function源文件中读取公共变量,获取实物终端设备发送的控制指令,构建simulink仿真模型;在matlab软件中创建timer计时器对象,将timer计时器的period参数设置为被控对象数据的采集周期,在timer计时器中调用所述程序接口,将s-function模块存入工作区的数据通过mqtt协议进行发布;同时运行matlab软件、simulink仿真模型和实物终端设备,实现半实物仿真。
11、第二方面,本发明为进一步解决半实物仿真中存在的安全问题,实施例提供了一种基于mqtt协议和matlab软件的半实物仿真测试系统,其包括:数据处理模块,用于采集被控对象测点信息,在proto消息类型定义文件中定义被控对象测点信息的数据结构,利用protobuf结构数据序列化方法将测点信息序列化为二进制字节流;通道构建模块,用于在实物终端设备中配置mqtt通信协议通道,进行实物终端设备与mqtt broker程序的通信;通信模块,用于编写mqtt客户端,进行mqtt客户端与实物终端设备中mqtt broker程序的通信;仿真测试模块,用于在simulink软件中构建simulink仿真模型,在matlab软件中创建timer计时器对象,并通过运行simulink仿真模型、matlab软件和实物终端设备进行半实物仿真。
12、第三方面,本发明实施例提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其中:所述计算机程序被处理器执行时实现如本发明第一方面所述的一种基于mqtt协议和matlab软件的半实物仿真测试方法的任一步骤。
13、第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中:所述计算机程序被处理器执行时实现如本发明第一方面所述的一种基于mqtt协议和matlab软件的半实物仿真测试方法的任一步骤。
14、本发明有益效果为:本发明提出一种基于mqtt协议和matlab软件的半实物仿真方法,通过在java中实现将实物终端设备通信的程序接口供matlab/simulink仿真软件调用,解决了matlab/simulink仿真软件对通信功能支持不完善的问题,进而无需配置专用半实物仿真硬件就能够实现半实物仿真,有助于打破国外厂商在半实物仿真硬件产品方面的垄断,推动半实物仿真技术国产化发展,有效降低半实物仿真成本。
本文地址:https://www.jishuxx.com/zhuanli/20240730/149153.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表