在 Simulink 中使用单个变量
Using single variables in Simulink
我是Simulink的新手,但是编程经验丰富,所以不习惯用Simulink的思维方式思考问题。我要么遗漏了一些非常明显的东西,要么遗漏了一些非常深刻的东西。
我想根据以下等式实现一个简单的线性滑动模型 table:
v = model input = table velocity
dt = simulation timestep
x = internal displacement variable = initially zero
x at current timestep = (x at last timestep) + v*dt
在 C 或 C++ 中,我会声明一个变量 x 并显式更新它,但我不知道如何在 Simulink 中实现这种持久状态变量。我的模型是具有固定时间步长的离散时间模型。
我知道我可以读取在 MATLAB 工作区中设置的变量 - 每个模拟步骤 read/write 到 matlab 工作区一次的正确方法是正确的吗?如果是这样,我该怎么做?如果不是,这样做的 "Simulink way" 是什么?
谢谢。
编辑 1 以回应评论:
我将在 MATLAB 中为上述任务编写的代码如下,在 MATLAB 工作区中声明 x 和 dt,然后每个时间步调用一次 update() 函数。为方便起见,该函数更新 MATLAB 工作区中的变量和 returns 新值。
function xNew = update( v )
global x;
global dt;
x = x + v*dt;
xNew = x;
end
编辑 2:我真正想要实现的是一个简单的模拟和反馈 PID 控制实验,但我在控制理论方面的经验为零,除了一些我一路走来的东西.我只是想提出一个简单的、有代表性的问题供我尝试。我在下面附上了我的模型的照片。 table为位移控制,目标位移为正弦波
基本上我的问题是关于实现突出显示的 "Motor Model" 块。
如果在连续时间工作,这样的内存是使用 Unit Delay block ( or the Integrator 块实现的)。在下图中,需要有一个名为 dt
的 MATLAB 工作区变量(Gain 模块才能工作)并且 Unit Delay 模块的采样时间也需要设置为 dt
.
在使用 Simulink 时,几乎没有任何情况是在每个时间步向工作区写入正确的方法。
我是Simulink的新手,但是编程经验丰富,所以不习惯用Simulink的思维方式思考问题。我要么遗漏了一些非常明显的东西,要么遗漏了一些非常深刻的东西。
我想根据以下等式实现一个简单的线性滑动模型 table:
v = model input = table velocity
dt = simulation timestep
x = internal displacement variable = initially zero
x at current timestep = (x at last timestep) + v*dt
在 C 或 C++ 中,我会声明一个变量 x 并显式更新它,但我不知道如何在 Simulink 中实现这种持久状态变量。我的模型是具有固定时间步长的离散时间模型。
我知道我可以读取在 MATLAB 工作区中设置的变量 - 每个模拟步骤 read/write 到 matlab 工作区一次的正确方法是正确的吗?如果是这样,我该怎么做?如果不是,这样做的 "Simulink way" 是什么?
谢谢。
编辑 1 以回应评论:
我将在 MATLAB 中为上述任务编写的代码如下,在 MATLAB 工作区中声明 x 和 dt,然后每个时间步调用一次 update() 函数。为方便起见,该函数更新 MATLAB 工作区中的变量和 returns 新值。
function xNew = update( v )
global x;
global dt;
x = x + v*dt;
xNew = x;
end
编辑 2:我真正想要实现的是一个简单的模拟和反馈 PID 控制实验,但我在控制理论方面的经验为零,除了一些我一路走来的东西.我只是想提出一个简单的、有代表性的问题供我尝试。我在下面附上了我的模型的照片。 table为位移控制,目标位移为正弦波
基本上我的问题是关于实现突出显示的 "Motor Model" 块。
如果在连续时间工作,这样的内存是使用 Unit Delay block ( or the Integrator 块实现的)。在下图中,需要有一个名为 dt
的 MATLAB 工作区变量(Gain 模块才能工作)并且 Unit Delay 模块的采样时间也需要设置为 dt
.
在使用 Simulink 时,几乎没有任何情况是在每个时间步向工作区写入正确的方法。