像在Matlab中的Simulink中一样,如何在mfile中进行集成?

用户名

我不确定为什么此代码无法正常工作:

if true
  %% PID Test file
% Start the script
clear
clc
kp = 180;
kI = 3200;
kD = 1;
start_time = 0;
step_time = 1;
end_time = 2;
Ts = 0.1;% Sample Time
step_value = 1;
initial_value = 0;
Fn = 50;
  W = 2*pi*Fn;
  Phase = 0;
  Amp = 1;
steps = 1;
if steps
[t,y] = step_fun(start_time,step_time,end_time,Ts,step_value,initial_value);
sim('PID_Test_sim.mdl')
else
  t = start_time:Ts:end_time;
  y = sin(W*t);
  sim('PID_Test_sim.mdl')
end
x_min = start_time;
x_max = end_time;
y_min = initial_value - 1;
y_max = step_value + 1;
figure();
subplot(2,1,1);
stairs(t,y);grid on;hold on; stairs(ScopeData.time,ScopeData.signals(1,2).values,'--r');hold off;%y([y_min y_max]);xlim([x_min x_max]);
subplot(2,1,2);
plot(t,y);grid on;hold on; plot(ScopeData.time,ScopeData.signals(1,2).values,'--r');hold off;%y([y_min y_max]);xlim([x_min x_max]);
Input = y;
time = t;
dt = diff(time);
D = [0,diff(Input.*kD) ./ dt]';
I = [cumtrapz(time,(Input.*kI))]';
%I = [0;(I(1:end-1)+I(2))];
I_test = I;
I_test(I_test>0) = (I(find(I>0,1,'first'))) + I(I>0);
I_test = [0,I_test(1:end-1)];
P = [Input*kp]';
Compare = ScopeData1;
figure();
subplot(3,1,1);
stairs(time,P);grid on;hold on; stairs(Compare.time,Compare.signals(1,1).values,'--r');hold off
subplot(3,1,2);
plot(time,I);grid on;hold on; plot(Compare.time,Compare.signals(1,2).values,'--r');hold off
subplot(3,1,3);
plot(time,D);grid on;hold on; plot(Compare.time,Compare.signals(1,3).values,'--r');hold off
Test = [I ScopeData1.signals(1,2).values time'];
[time,Output] = PID_fun(kp,kI,kD,Input,time,ScopeData1);
figure();
subplot(2,1,1);
stairs(t,y);grid on;hold on; stairs(ScopeData.time,ScopeData.signals(1,2).values,'--r');hold off;
subplot(2,1,2);
plot(time,Output);grid on;hold on; plot(ScopeData.time,ScopeData.signals(1,1).values,'--r');hold off;
Test = [I ScopeData1.signals(1,2).values I_test P ScopeData1.signals(1,1).values D ScopeData1.signals(1,3).values time' Output ScopeData.signals(1,1).values];

这是一个非常简单的代码,它会生成一个步进信号(在step_fun中),然后运行仿真mdl,该仿真mdl是具有步进功能作为输入的PID控制器。然后我正在运行我的PID函数,稍后将通过变量(P,I,D)对其进行说明,并且在集成中,我将成为模拟和mfile之间的不同结果?你能帮我吗?结果是:

     % code
% My integration results of the input signal when kI = 3200;
mfile    simulation
0   0
0   0
0   0
0   0
0   0
0   0
0   0
0   0
0   0
0   0
160 0
480 320
800 640
1120    960
1440    1280
1760    1600
2080  1920
2400  2240
2720  2560
3040  2880
3360  3200

以下是一些带有结果的数字: 比较mfile和simulink PID的输入和输出 比较simulink和mfile的PID输出

最好的问候和提前

用户名

所以最后我确实回答了我自己的问题:)

模拟对当前t(i-1)之前的点进行积分,而cumtrapz对当前t(i)进行积分,这就是不同之处。

结果是我将cumtrapz更改为cumtrapzt,在那里我计算了给定数据集(t(end-1))的diff(t)直到t(i-1)。

无论如何要寻求帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何像在 kivy 中一样进行支票?

来自分类Dev

实体框架3.0包含无法像在EF Core 2.2中一样在SQL中进行翻译

来自分类Dev

像在jQuery中一样如何在AgularJS中触发事件?

来自分类Dev

像在JQuery中一样,如何在AngularJS中获得高度?

来自分类Dev

像在Java中一样,在Delphi Xe2的控制台中进行打印

来自分类Dev

zsh像在bash中一样进行迭代

来自分类Dev

就像在Netbeans IDE中一样,如何在Emacs中自动格式化代码

来自分类Dev

如何在puppeter中打印页面的控制台输出,就像在浏览器中一样?

来自分类Dev

像在iOS中一样,如何在WP8中使用Prefix.pch?

来自分类Dev

像在Snapchat中一样,如何在点击时在UITableView中向右拖动单元格?

来自分类Dev

像在SQL Server 2008 R2中一样进行替换

来自分类Dev

我想在Python中像在Scala中一样进行转换

来自分类Dev

像在SQL Server 2008 R2中一样进行替换

来自分类Dev

您可以像在.NET中一样在vim中从右到左进行匹配吗?

来自分类Dev

Android:如何像在Android Studio中进行调试一样获取应用程序的日志?

来自分类Dev

Android:如何像在Android Studio中进行调试一样获取应用程序的日志?

来自分类Dev

如何像在in sql语句中一样使用

来自分类Dev

如何使laravel路由像在WordPress中一样?

来自分类Dev

如何像在颤振中一样使用 tablelayout

来自分类Dev

像在Java中一样,如何在JS的构造函数外部设置属性?

来自分类Dev

像在C#中的foreach一样在json数组中进行迭代

来自分类Dev

像在Safari中一样检查Firefox中的元素?

来自分类Dev

像在 Java 中一样访问 PHP 中的对象

来自分类Dev

如何在Windows中像Mac sudo权限一样在Windows中进行git pull?

来自分类Dev

如何像在Wysiwyg中一样在Quill中添加“显示html”按钮?

来自分类Dev

如何像在网页中一样在WPF中展开和折叠

来自分类Dev

如何像在Eclipse中一样在Android Studio中复制错误

来自分类Dev

内容占位符如何像在Facebook中一样在Android RecyclerView中实现?

来自分类Dev

如何像在mysql中一样在PostgreSQL中列出其引用的所有列?

Related 相关文章

  1. 1

    如何像在 kivy 中一样进行支票?

  2. 2

    实体框架3.0包含无法像在EF Core 2.2中一样在SQL中进行翻译

  3. 3

    像在jQuery中一样如何在AgularJS中触发事件?

  4. 4

    像在JQuery中一样,如何在AngularJS中获得高度?

  5. 5

    像在Java中一样,在Delphi Xe2的控制台中进行打印

  6. 6

    zsh像在bash中一样进行迭代

  7. 7

    就像在Netbeans IDE中一样,如何在Emacs中自动格式化代码

  8. 8

    如何在puppeter中打印页面的控制台输出,就像在浏览器中一样?

  9. 9

    像在iOS中一样,如何在WP8中使用Prefix.pch?

  10. 10

    像在Snapchat中一样,如何在点击时在UITableView中向右拖动单元格?

  11. 11

    像在SQL Server 2008 R2中一样进行替换

  12. 12

    我想在Python中像在Scala中一样进行转换

  13. 13

    像在SQL Server 2008 R2中一样进行替换

  14. 14

    您可以像在.NET中一样在vim中从右到左进行匹配吗?

  15. 15

    Android:如何像在Android Studio中进行调试一样获取应用程序的日志?

  16. 16

    Android:如何像在Android Studio中进行调试一样获取应用程序的日志?

  17. 17

    如何像在in sql语句中一样使用

  18. 18

    如何使laravel路由像在WordPress中一样?

  19. 19

    如何像在颤振中一样使用 tablelayout

  20. 20

    像在Java中一样,如何在JS的构造函数外部设置属性?

  21. 21

    像在C#中的foreach一样在json数组中进行迭代

  22. 22

    像在Safari中一样检查Firefox中的元素?

  23. 23

    像在 Java 中一样访问 PHP 中的对象

  24. 24

    如何在Windows中像Mac sudo权限一样在Windows中进行git pull?

  25. 25

    如何像在Wysiwyg中一样在Quill中添加“显示html”按钮?

  26. 26

    如何像在网页中一样在WPF中展开和折叠

  27. 27

    如何像在Eclipse中一样在Android Studio中复制错误

  28. 28

    内容占位符如何像在Facebook中一样在Android RecyclerView中实现?

  29. 29

    如何像在mysql中一样在PostgreSQL中列出其引用的所有列?

热门标签

归档