传递函数的离散化(一)—— C实现

本文介绍如何将连续系统的传递函数通过离散化方法转化为适用于单片机的离散形式,并通过实例展示了具体步骤。比较了几种离散化方法的效果,包括前向差分法、后向差分法和双线性变换法。

假如设计好了一个控制器,得到了它的传递函数,那么该怎么在单片机中实现它呢?里面都是微积分,该怎么编程呢?这就要设计到传函的离散化了。

1:离散化

1.1、离散化的目的
  • 将s域下的传递函数转换为离散的z域函数;
  • 将离散域下的函数转化为差分方程,然后在单片机中实现;
1.2、离散化的方法

常用的离散化方法有:

  1. 前向差分法;
  2. 后向差分法:
  3. 双线性变换法;
  4. 零阶保持器法;
  5. 一阶保持器法;
  6. 脉冲响应不变法;

前三种方法比较简单,传递函数中,直接用 z和s的关系进行替换就行:
在这里插入图片描述
其中Ts为离散化采样时间。

可以借助matlab工具进行离散化,matlab提供多种离散化的方法;
dsys=c2d(sys,ts,’method’); % 传函离散,其中ts表示离散的采样周期,method表示离散的方法;sys表示s域传函,dsys表示对应的z域传函;

其中method包括以下几种方法:

  • zoh 零阶保持器;
  • foh 一阶保持器;
  • tustin 双线性变换法;
  • matched 零极点匹配法;
  • impulse 脉冲响应不变法;
1.3、使用不同离散化方法的影响

下面我们首先使用不同离散化方法对传函G(s) = 1/(0.2s+1)进行离散,离散化采样时间Ts=0.05:
在这里插入图片描述
然后对比不同离散化方法后的伯德图和未离散化的系统伯德图:
在这里插入图片描述
从伯德图中可以看出,前向差分法离散化以后偏离实际的系统更远,不能保证系统的稳定性。而
后向差分法和双线性变换法,更接近未离散化的伯德图,所以后向差分法和双线性变换法在工程中较为常用。

2:传函到单片机实现的例子

假设一个低通滤波器的传函为:
在这里插入图片描述
我们先用matlab工具看下他的特性;

>> num=1;
den=[6.687e-4,1];
sys=tf(num,den);
p=bodeoptions;
p.FreqUnits= 'Hz';
bode(sys,p
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值