传递函数硬件化

已知一个系统的传递函数,如何进行硬件化呢?
只需要将传递函数离散化,得到差分方程,就可以根据差分方程进行硬件设计。

通过例子说明:
在这里插入图片描述
得到差分方程后,其中y(k)/y(k-1)/y(k-2)/u(k-1)/u(k-2)等代表不同周期系统输入输出数据,根据公式,进行硬件设计计算,即可得到系统输出。

常用的离散化方法有:

前向差分法;
后向差分法:
双线性变换法;
零阶保持器法;
一阶保持器法;
脉冲响应不变法;
前三种方法比较简单,传递函数中,直接用 z和s的关系进行替换就行:
在这里插入图片描述

其中Ts为离散化采样时间。

也可以通过matlab进行转化,下例采用零阶保持法(zoh):
%%-------传递函数离散化------
num=[39610(-9),12*10(-6)];
den=[33
10(-10),10(-13),0];
sys=tf(num,den);
step(sys);
%bode(sys);

ts=0.000001; %1M采样率,对应硬件设计模块运行频率

dsys=c2d(sys,ts,‘zoh’); %zoh method
[num1,den1]=tfdata(dsys,‘v’);
%dbode(num1,den1,ts,‘r’);
%%-------离散化分子分母转换为C语言程序使用------
%%-------+Y/U=0.00012z-0.00012/z^2-2z+1–
%%-------分子分母除以z ^ 2=>0.00012
z ^ (-1)-0.00012z ^ (-2)/1-2z ^ (-1)+z^(-2)–
%%-------y(k)=2y(k-1)-y(k-2)+0.00012u(k-1)-0.00012*u(k-2);
u_1=0.0;u_2=0.0;
y_1=0.0;y_2=0.0;

%%-----阶跃响应验证

for k=1:1:2000
time(k) = k*ts;
yd(k) = 1;
u(k) = 1;

y(k)=-den1(2)*y_1-den1(3)*y_2+num1(2)*u_1+num1(3)*u_2;
u_2=u_1;u_1=u(k);
y_2=y_1;y_1=y(k);

end
figure(2);
%bode(dsys);
plot(time,yd,‘r’,time,y,‘k:’,‘linewidth’,2);
xlabel(‘times(2)’);ylabel(‘yd,y’);
legend(‘yd’,‘y’);

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值