低代码控制器仿真实验教程(一):房屋温度控制

基于Simulink官方的房屋温度控制仿真案例实验教程发布。



1、实验目的

基于Simulink官方的房屋温度控制仿真案例,采用低代码控制器代替其中的控制模块,采集室内温度和设定温度信号,控制房屋温度保持在允许范围内。

2、实验模型

本实验原始模型来自于Simulink官方的房屋温度控制模型,官网给出了该模型原理的详细介绍(https://www.mathworks.com/help/simulink/slref/thermal-model-of-a-house.html ),在MATLAB命令行窗口中输入命令:openExample(‘simulink_general/sldemo_househeatExample’);可打开该模型,如下图所示:

其中Thermostat为温度控制模块,控制逻辑为当室内温度低于设定温度5ºF以下,发出打开加热器的信号;当室内温度高于设定温度5ºF以下,发出打开加热器的信号。

采用低代码控制器进行控制时,将该控制模块替换为S-函数,在S-函数中实现与低代码控制器通信功能,上送室内温度和设定温度数据并接收控制信号,修改后的模型如下图所示:

3、实验步骤

低代码控制器的特点在于不需要对控制器进行代码的编写,只要在excel文件之中进行测点配置、通信通道和AOE配置就可以实现相应的控制。

3.1、编写低代码控制器配置文件

低代码控制器文件配置分为三个部分:测点配置、通信通道配置和AOE配置。测点配置用于配置控制器输入和输出信号点的参数,本案例中需要的信号要是输入所需要的房间设定温度、测量温度和输出的加热器启停控制信号,通信通道的配置是为了将控制器与simulink仿真模型建立modbus通信,实现仿真模型与控制器的信息交互,而AOE配置是建立AOE模型网络来实现所需的控制逻辑和功能。

3.1.1、测点配置

测点配置表格的内容包含了测点的点号、名称、别名、是否离散、是否是计算点以及默认值等。点号是程序里给这个测点的编号,可以自己定义,使用时,测点与通信通道的点号一一对应完成对接。别名是英文字母与下划线组合使用,可以当做变量名用于AOE表格里表达式的书写,使之可以不用点号来表达,使得表达式的意思表达得更加清楚。本案例需要三个测点,分别问设定温度值、测量温度值以及控制器输出控制加热器启停,测点配置如下图所示:

3.1.2、通信通道配置

低代码控制器通过Modbus协议与Simulink进行通信。由于Matlab仅有Modbus客户端功能,因此需要将低代码控制器配置为Modbus服务端,如下图所示,其中通道数量为1,服务端口需设置为未占用端口。

然后对客户端信息和测点信息等进行配置,如下图所示:

利用3个测点设定的点号,将3个测点与3个寄存器的起始地址点号对应,2个温度值的数据类型为八个字节的浮点数,输出控制信号数据类型为无符号整数。

3.1.3、AOE配置

本案例中AOE文件配置内容分为三个部分。

AOE网络声明

AOE网络声明部分,定义了表格之中的AOE网络个数和整体信息以及一些变量的初始值。其中触发条件分为三类:SimpleRepeat(定时触发,需要自行设定定时时间)、TimeDriven(时间驱动)、EventDriven(事件驱动);变量的定义方式为:<变量名1>:<初值1>;<变量名2>:<初值2>;…。

本案例中的AOE网络声明如下所示:

本程序的控制器的作用是实现房屋内温度的控制,所以名称定为房屋温度控制,触发条件是事件控制(即当温度超出阈值的事件发生时,控制器进行相应动作)。变量upDev和downDev分别代表了向上和向下超出的设定温度的最大值(实测温度与设定温度最大差值的绝对值)为2.77778摄氏度(5华氏度)。

AOE节点声明

节点类型分为Switch和Condition两类,其中Switch节点为二分支逻辑判断,触发逻辑为:表达式为真时,该节点序号为1的边进行动作;表达式为假时,序号为2的边进行动作。当Switch节点为AOE网入度为0的节点(首节点)时,Switch节点直接触发,若超时时间内表达式为真,则执行动作1,为假或者发生超时事件执行动作2;Condition节点的表达式为事件触发条件,超时时间内表达式为真,则节点事件发生,该节点出发的所有动作并行执行。

本案例的控制逻辑可以用AOE网表示如下:

对应上图需要定义的节点有四个,都是事件触发条件,分别是温度超出阈值事件、温度超过下阈值事件、温度超过上阈值事件以及结束节点,其中,前三个事件规定了超时时间,需要在超时时间内表达式为真才能触发,根据表达式进行运算和比较来控制是否触发事件,式子中用到的数据可以用测点配置里对应的别名来表示。节点声明如下所示:

AOE边声明

边需要声明首尾节点,格式为:<尾节点ID>;<首节点ID>。边的方向为:尾节点→首节点。边的动作类型有:None、SetPoints、Solve、Milp、SimpleMilp、Nlp。其中,SetPoints除了对测点设值之外,还可以进行变量定义和计算,动作参数分为数字量和模拟量;Solve为求解方程Ax=b;Milp为混合整数线性规划问题求解;Nlp为非线性规划问题求解。

本案例中的AOE边声明如下图所示:

一共用到了四条边声明,从节点1到节点2和节点3的两条边不需要判断,只需要执行进入下一个节点的动作,动作类型为None,不需要进行计算。从节点2和节点3到节点4需要作出开加热器和关加热器的动作,动作类型为SetPoints,输出为1时,打开加热器,输出为0时,关闭加热器。

3.1.4、配置文件存储

在excel表格中编写完成之后,将表格另存为.csv格式(纯文本形式存储表格数据)文件供低代码控制器使用。

4、编写Simulink与控制器通信程序

打开Simulink模型中S-函数的源文件,将S-函数的输入信号数量设置为2、输出信号数量设置为1,采样时间,采样时间设置为0.01(每仿真10ms与控制器通信一次)。添加建立Modbus通信的命令,其中需要服务端ip和端口参数:

添加温度设定值、温度测量值、读取控制指令程序:

5、低代码控制器配置与运行

将控制器电源线与电源相连,打开电源开关,再用网线将控制器与计算机连接,就可以使用。

利用发现工具获得控制器ip,如下图所示:

当控制器启动并接入计算机,被计算机发现后,可以得到如下界面(打开一个浏览器,并输入控制器地址也可以得到如下界面)。

点击界面中控制器id,进入控制器配置界面,选择并导入.csv已编写好的测点、通道和AOE配置文件,点击界面中的“reset”即可保存配置并运行控制器。

6、运行仿真

先运行低代码控制器,再运行Simulink模型,进行仿真。得到的利用低代码控制器的控制结果与原模型十分接近。

由该仿真实验可以看出,使用低代码控制器并不需要繁复的程序代码编写,只需要编写测点配置、通信通道配置和AOE配置文件就可以实现通信和控制功能,与目前常用的其他控制器相比,更方便于非编程技术背景人员的应用。

房屋温度控制AOE配置文件下载链接

SGOOL团队
2021年9月10日




版权声明:本文由SGOOL团队创作和发表,转载或引用本文内容请注明作者及出处。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器