问题标签 [control-theory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
14 浏览

controls - 带压力超控的 PID 泵控制器 - 如何处理负增益?

我有一个自定义 HMI 设置,带有一个流量/压力传感器输入和一个 4-20mA 输出到一个小泵。我目前正在尝试在流量达到设定点(大约为 1500 mL/min)的情况下实施超控控制,同时还限制管道中的压力(最大约 15 psi)。

问题是,我只能将泵速设置为 4(0 rpm)到 20(~2000 rpm)mA,而“负”PID 回路输出基本上只是“停止泵”。在试图限制压力的情况下,当需要采取行动时,PID 误差将始终为负。

我已经尝试过使用带有结束限制的覆盖过程输出切换,但这似乎只是到目前为止。

此外,任何获得某种压力输出比例比的好方法,因为压力的“最大值”或多或少是无限的。

0 投票
0 回答
58 浏览

python - 卡尔曼滤波器无法纠正不良加速度测量。这是卡尔曼滤波器的预期行为吗?

我正在尝试使用 Python 编写卡尔曼滤波器,最终用 C++ 编写一个卡尔曼滤波器,并在 Arduino 中使用它来进行气压和惯性高度估计(一维位置)。

现在,我正在使用线性函数(速度 = 1)“模拟”真实位置和测量位置,同时在模拟位置测量中插入人工噪声。

虽然卡尔曼仅使用测量位置返回明显良好的结果,但它无法纠正错误的加速度测量值(例如恒定的 1.0 测量加速度输入)。

使用 3 种不同的更新过滤器方法说明上述情况的标记图

位置向加速度方向倾斜,并且滤波后的加速度不会通过位置测量得到校正。

这是卡尔曼滤波器的预期行为,还是我应该如何修改我的代码和/或滤波器以使卡尔曼对这些行为正确?

主要.py:

卡尔曼.py:

0 投票
1 回答
23 浏览

scilab - Scilab 中 MATLAB 的 ss() 状态空间模型函数

我正在尝试遵循本教程,已实现

返回

这与 MATLAB 产生的不同:

现在我的问题是:

  • 我是否tf()正确实现了最小功能,或者有更完整/规范的版本可用/可能?
  • tf2ss()MATLAB 的等价物ss()还是有另一个可用的内置函数?
  • 如果没有ss()可用的等效项,那么提供与上述 MATLAB 教程相同的结果的最小实现是什么?
0 投票
1 回答
26 浏览

matlab - 了解 ss() 和 tf2ss() 函数及其区别

这个问题之后,我试图理解 MATLABss()tf2ss()函数的功能及其差异。考虑下面的代码:

从这里部分复制。现在我希望dcm1anddcm2是相同的,但这是我得到的:

如果您能帮助我理解为什么我会得到两个不同的结果,我将不胜感激?如何使用该tf2ss()函数获得相同的结果?换句话说,我想创建一个与该函数dcm2相同dcm1但使用该函数的tf2ss()函数。

0 投票
1 回答
82 浏览

matlab - 机电系统的模型预测控制 (MPC)

所以我想为我的跷跷板系统创建一个MPC控制器。所有“繁重的工作”(获取运动方程、状态空间表示等)都已完成,所以我开始在 MATLAB 中进行编码。以下是:

基本上,当我运行它时,模拟开始,当我得到一个“NaN”时它很快就失败了。只有当我把我的初始值都设为 0 时,我才能真正得到一些东西。请记住,我需要在我的系统中设置一些系统中普遍存在的约束(最大电机扭矩,推车可以在跷跷板上移动多远......)。这就是我在连续时间内使用状态空间表示时的全部情况,当我尝试通过“c2d”命令使用离散时间并据此更改其余代码时,模拟甚至无法正常启动。在这种特定情况下,我真的不知道该怎么做。是否有其他方法可以为该系统创建 MPC 调节器?注意:我将 YALMIP 用于 MPC 的优化部分。

0 投票
1 回答
28 浏览

matlab - 如何将状态空间模型转换为传递函数?

这个问题之后,我试图将本教程中的状态空间模型转换回它的传递函数形式。我试过了

但是,我收到错误消息:

必须为具有多个输入的系统指定 IU。

0 投票
0 回答
17 浏览

math - 加速项是如何在 PID 控制器中实现的?

我知道基本 PID 是如何工作的,但是我需要更高级的东西来解决更复杂的运动。我已经看到通常会在 PID 中添加一个加速项,但无法在网上找到任何可以向我介绍其工作原理(以及所涉及的数学)的基本理论的内容。我可以猜测它涉及运动学方程,但宁愿在重新发明轮子之前先看看已经开发的东西(而且它可能不会是一个很棒的轮子)。有人可以向我解释一下,或者给我一些文件吗?