我创建了一个matlab模型,意图将其用于代码生成,特别是PLC编码器 . 该模型基本上是包含误差计算的示例离散PID块,但另外我希望增益和采样时间是输入 . 这在Simulink中可能没有意义,但对于生成的PLC代码,它是首选解决方案 .

目前,模型工作区中的增益块(Kp,Ki,Kd)的变量为维度为[1 1]的double,然后我使用输入中的“ToWorkspace”块 . 这在模拟中不起作用,似乎只使用初始值,无论如何 .

'SampleTime'变量也没有效果 . 此变量用于积分器和滤波器块中的“SampeTime”参数 . 这是必须的,因为在PLC生成的代码中我将处理器的循环时间传递给函数,因此它可以正确地集成,因为扫描时间可以变化 .

此外,PLC代码生成器工作正常,但增益,积分器,滤波器,SampleTime,根本不会出现在代码中 . 我真正得到的是两个和函数 .

知道我应该如何处理这个问题吗?我可以用产品块替换增益块,但它对样本时间问题没有帮助 . 谢谢 .

DiscretePID