5.2 积分环节

5.2 积分环节

5.2 积分环节

积分环节在实际物理系统中都是在近似条件下实现。基于其s域传递函数Y(s)=X(s)/s和差分方程y(k)=ΔT·x(k-1)+y(k-1)(ΔT为采样周期),在采样周期足够小的时候,可以将曲线的积分近似为多个矩形面积的和。

实验步骤

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

实现本应用案例,低代码控制器需要完成两部分文件配置:测点配置和AOE配置。测点配置用于配置控制器输入和输出信号点的参数,而AOE配置是建立AOE模型网络来实现所需的控制逻辑和功能。

1.1、测点配置

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

序号点号名称别名是否离散是否计算点默认值备注

1100001测点1timeFALSEFALSE0时间

2100002测点2valueFALSEFALSE0输入值

3100003测点3outFALSEFALSE0输出值

1.2、AOE配置

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

AOE网络声明

名称为积分环节,触发条件设置为事件驱动(Event_Drive)。

AOE ID是否启用名称触发条件触发条件参数变量初始值

70001TRUE积分环节Event_Drivetime_old:0;value_old:0;out_old:0;

AOE节点声明

AOE ID节点ID名称节点类型超时时间(ms)表达式

700011开始节点Condition10000time>time_old

700012结束节点Condition100001

本案例中共有2个节点,节点类型均为Condition,表达式为真时,动作触发执行。

AOE边声明

AOE ID首尾节点动作名称失败模式动作类型动作参数

700011;2输出DefaultSet_Pointsout:out_old+value_old*(time-time_old);value_old:value;time_old:time;out_old:out_old+value_old*(time-time_old);

本案例中的边声明动作类型为为SetPoints。

式中,out表示当前时刻输出量的采样值;time表示当前时刻;time_old表示上一时刻;value表示当前时刻输入量的采样值;value_old表示上一时刻输入量的采样值。out、value、time为设置的测点。

2、Simulink验证

为验证低代码控制器积分环节结果的正确性,本案例借助Simulink的积分环节运行结果来对照。为实现控制器与simulink仿真模型间通信,需要进行低代码控制器通道文件的配置以及Simulink的S函数程序编写,具体过程如下:

2.1、通信通道配置

低代码控制器通过Modbus协议与Simulink进行通信。由于Matlab仅有Modbus客户端功能,因此需要将低代码控制器配置为Modbus服务端,如下:

通道名称server测试通道连接名称测试通道

连接个数1测点个数3

服务端口502客户端IP127.0.0.1

客户端端口9999

slave id1

通信协议XA

一次读寄存器数上限125

一次读开关数上限2000

一次写寄存器数上限120

一次写开关数上限1968

轮询周期(ms)5000

超时(ms)1000

服务端口设定为502,测点个数为3,客户端ip是本机的ip地址,可以在网络属性界面查询得到,客户端端口设置为9999.

序号寄存器类型起始地址数据类型新请求标志轮询周期点号

1HOLDING1EightByteFloatFALSE2000100001

2HOLDING5EightByteFloatFALSE2000100002

3HOLDING9EightByteFloatFALSE2000100003

本实验中需要用3个寄存器存储数据,数据类型均为八位浮点数。

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

modbusComproportion.m是本案例模型控制器的源文件,建立与低代码控制器起通信的作用。

sizes.NumContStates = 0;

sizes.NumDiscStates = 0;

sizes.NumOutputs = 1;

sizes.NumInputs = 2;

sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1;

上述程序表示输入与输出个数的设置,本案例中的输入个数为2,分别为输入值与仿真时间。输出个数为1,为积分计算后的输出值。

ts = [0.02,0];

上述程序表示模块的采样时间为0.02s。

global m;

m = modbus('tcpip', '127.0.0.1', 502); % 建立modbus通信

上述程序表示初始化过程中建立与控制器的通信。

function sys=mdlOutputs(t,x,u)

global m;

write(m,'holdingregs',2,u(1)','double');

write(m,'holdingregs',6,u(2)','double');

%pause(0.01); % 等待10ms(实际时间),使得通过modbus通信之后读到最新控制值

sys = read(m,'holdingregs',10,1,'double');

如上面的输出函数所示,需要将输入写入控制器,再从控制器中读取控制信号。程序中的pause(0.001)用于设置等待时间,当控制器和计算机的性能较好时,可以适当修改这个参数,可以加快仿真通信的速度,使动画跟随的动作加快。

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

这一步低代码控制器的连接和案例1中完全一致,将MATLAB的文件夹打开到低代码控制器替代后的simulink模型文件的文件夹。

当与实体的控制器连接时,就是将所实现的功能放入实体的控制器中,只需要将控制器与电脑通过网线连接后,修改主站和从站的ip地址。 控制器(从站ip)可以从发现工具获得。

主站ip为本机ip地址,通过网络属性配置中可以查询。

3、运行仿真

先运行低代码控制器,再运行Simulink模型,进行仿真。对于函数f(t)=t,使用AOE组态技术配置的积分环节输出如下图所示:

附件:基本控制组态_积分环节.rar

相关创意

分类:中华人民共和国枪械
beat365手机中文官方网站

分类:中华人民共和国枪械

📅 08-22 👁️ 1827
红酒一般价格是多少?日常应该选择什么价位的红酒?
DNF:300个魔岩石换暗卢克,能否合出一张传说卡片?
beat365投注网站

DNF:300个魔岩石换暗卢克,能否合出一张传说卡片?

📅 08-05 👁️ 5722
qq炫舞手游怎么捡贝壳 拾取贝壳的方法介绍
beat365投注网站

qq炫舞手游怎么捡贝壳 拾取贝壳的方法介绍

📅 07-26 👁️ 2778
中国各种铁路列车的速度概览
beat365手机中文官方网站

中国各种铁路列车的速度概览

📅 07-18 👁️ 9001
为什么打印机那么便宜 墨盒却那么贵?
beat365投注网站

为什么打印机那么便宜 墨盒却那么贵?

📅 08-16 👁️ 294
鼻鼽的解释及意思
365bet平台总代

鼻鼽的解释及意思

📅 08-09 👁️ 7544
精灵宝可梦GO电击兽怎么样 pokemon go电击兽精灵图鉴
beat365投注网站

精灵宝可梦GO电击兽怎么样 pokemon go电击兽精灵图鉴

📅 08-09 👁️ 5120