连续域函数数字化实现过程__以二倍工频陷波器为例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

连续域函数数字化实现过程

在连续域中进行控制器的参数设计,得到的传递函数如何进行数字实现呢? 以二阶带通滤波器为例,其传递函数为:

220BSF 22

00()/s G s s s Q ωωω+=++ 连续域转离散域的公式为:

1

s 1121z s f z −−−=+

带入式中即可得到系统此时z 域的传递函数。手算过程比较复杂,且容易计算错误,通过matlab 计算比较简便且快速,函数如下:

systd=c2d systec s method (,T ,)

其中systd 为计算得到的离散域函数,systec 为原始连续域传递函数,Ts 为采样周期,method 可以选择零阶保持器,一阶保持器等,实际程序中使用zoh 较多,一般不写默认zoh 即可。 得到的离散域传递函数一般形式为:

2123BSF 2123

a z +a z+a ()

b z +b z+b G z = 进行简化变形得到:

-12

123BSF 12123a +a z +a z ()b +b z +b z

G z −−−= 该传递函数表示:

-12

12312

123a +a z +a z b +b z +b z y x −−−= 因此有:

-1212123123123123()(-1)(2)()(-1)(2)

a x a z x a z x

b y b z y b z y

a x k a x k a x k

b y k b y k b y k −−−++=++++−=++−

进而得到: 123231

1()(()(-1)(2)(-1)(2))y k a x k a x k a x k b y k b y k b =++−−+− 根据该公式进行程序编写。

以下为例程:

主函数调用为:

BSF_Second_order(Id_ref,&id_bsf_in[2],&id_bsf_out[2]);

子函数为:

void BSF_Second_order(float bsf_in,float *x, float *y)

{

*x = bsf_in;

*y = 1.955 * *(y-1) - 0.956 * *(y-2) + *x - 1.999 * *(x-1) + *(x-2);

*(x-2) = *(x-1); *(x-1) = *x; *(y-2) = *(y-1); *(y-1) = *y;

用指针进行传递节约空间。

相关文档
最新文档