控制器开发-积分的使用方法

本文介绍如何使用Matlab将连续域的积分传递函数1/s离散化,并转换为C语言实现。通过Matlab的c2d函数,将信号采样周期设为10ms,得到离散函数Ldfun=(0.0005z+0.0005)/(z-1),并详细解析其转换过程及C语言表达形式。此外,还提及了Simulink中离散积分模块的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连续域的积分传递函数是1/s,而控制器是一个离散的系统,所以须将连续的传递函数离散化,当然有公式推算,对于我这种基础不大好的人理解起来费劲,所以使用matlab来解决这一问题。
Lcfun=tf([0,1],[1,0]); %连续函数1/s的分子是[0,1],分母是[1,0];
Ldfun=c2d(Lcfun,1e-3,‘tustin’);%c2d是将连续函数离散化,1e-3信号采样周期为10ms;
在matlab就可以查看离散函数Ldfun =(0.0005 z + 0.0005)/(z-1);再将离散函数转换成C语言的编写习惯:
Y(n)/X(n)= (0.0005 z + 0.0005)/(z-1);
分解一下即成:
zY(z)=0.0005zX(z)+0.0005X(z)+Y(z);
该等式等效成:
Y(n)=0.0005x(n)+0.0005x(n-1)+y(n-1);
备注:Y(n)是当前需要计算的结果值,x(n)是当前的输入值,x(n-1)上一时刻的输入值,y(n-1)是上一时刻的结果值。

如果是使用matlab模型生成C代码,则不需要这个过程,直接使用simulink中的离散积分模块:
在这里插入图片描述
模块的设置增益是0.0005,同时按照实际数值的情况设置最大值最小值。
在这里插入图片描述
最后和整个工程一起编译成C代码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值