首页 文章

在Simulink中使用单个变量

提问于
浏览
0

我是Simulink的新手,但我有很多编程经验,所以我不习惯思考Simulink心态中的问题 . 要么我错过了一些非常明显或非常深刻的东西 .

我想根据以下等式实现线性滑动表的简单模型:

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工作区中设置的变量 - 这是在每个模拟步骤读取/写入matlab工作区的正确方法吗?如果是这样,我该怎么做?如果没有,这样做的“Simulink方式”是什么?

谢谢 .

编辑1以回复评论:

我将在MATLAB中为上述任务编写的代码如下,在MATLAB工作区中声明x和dt,然后每个时间步调用一次update()函数 . 该函数更新MATLAB工作空间中的变量并返回新值以方便使用 .

function xNew = update( v )
    global x;
    global dt;
    x = x + v*dt;
    xNew = x;
end

编辑2:我真正想要实现的是一个简单的模拟和实验与反馈PID控制,但我没有控制理论的经验,除了我在这里和那里一路上采取的一些事情 . 我只是想为我提出一个简单,有代表性的问题 . 我在下面附上了我的模型图片 . 该表是位移控制的,目标位移是正弦波 .

基本上我的问题是关于实现突出显示的“电机模型”块 .

enter image description here

1 回答

  • 1

    像这样的内存使用Unit Delay块(如果连续工作,则为Integrator块)实现 . 在下图中,需要一个名为 dt 的MATLAB工作空间变量(使增益模块工作),单元延迟模块的采样时间也需要设置为 dt .

    enter image description here

    在使用Simulink时,几乎没有任何情况下每次都写入工作区步骤正确的方法 .

相关问题