扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
S域不好编写,你必须离散化传递函数,用Z变换转换为对应的传递函数,然后用c写就可以了。
公司主营业务:成都网站设计、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出琅琊免费做网站回馈大家。
既然是零阶保持输入,那手算的时候应该也有零阶保持器的吧。
既然离散系统,那么递推关系式也许可以吧。但是自己用C语言写,估计很麻烦,既然有Matlab就用Matlab算啊。
对于含有零阶保持器的离散系统的传递函数你可以上网搜,也可以参考自动控制原理的书籍啊! 至于Matlab使用的方面,实现ABCD可调节也是可以的,你可以搜索Matlab里关于syms或者input函数的使用。 也可以尝试学习GUI的编程。
传递函数G(s)要离散化成G(z),然后变成差分方程,然后就可以用c语言编程了~
比如Y(S)/U(S)=G(s)=1/(a*s+1);
用零阶保持器,你的采样周期是Ts(比如你的控制函数是在中断服务函数里实现的,那Ts就是你的中断周期),得到Y(z)/U(z)=G(z)=(1-z^(-1))*Z[G(s)/s]=[1-e^(-Ts/a)]/[z-e^(-Ts/a)]={[1-e^(-Ts/a)]*z^(-1)}/[1-e^(-Ts/a)*z^(-1)];
所以得到差分方程:y(k)=e^(-Ts/a)*y(k-1)+ (1-e^(-Ts/a))*u(k-1),k表示当前时刻。
可以先通过其它软件转化后,直接将转化结果用c语言输入了。MTLAB里面有直接转化的函数。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流