连续域函数数字化实现过程__以二倍工频陷波器为例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
用指针进行传递节约空间。