一阶系统单位阶跃响应
一阶系统传递函数,实质是一阶惯性环节,T为一阶系统时间常数。
输入信号为单位阶跃函数,数学表达式
单位阶跃函数拉氏变换
输出一阶系统单位阶跃响应
拉普拉斯反变换
使用前向差分法对一阶系统离散化
将z变换写成差分方程形式
一阶系统性能指标
-
时间常数T
时间常数T反映了一阶系统的响应速度,T越小响应速度越快。
-
调节时间(稳定时间)
一阶系统单位阶跃响应经过时间t=T,2T,3T,4T和5T时,输出分别为稳态值的63.2%,86.5%,95%,98.2%和99.3%,工程上表示阶跃输入经过一阶系统的输出需要经过时间t达到稳定,一般取t=3T或4T。
一阶系统单位阶跃响应C语言代码实现
typedef struct
{
float RunTime; // 离散系统运行时间
float ConstTime; // 时间常数
float Last_Input; // 上一次输入
float Last_Output; // 上一次输出
}OneOrderTFStru;
/* 一阶系统阶跃响应初始化 */
void OneOrderTransformFuncInit( OneOrderTFStru *sp, float RunTime, float ConstTime, float InitVal )
{
sp->ConstTime = ConstTime;
sp->RunTime = RunTime;
sp->Last_Input = InitVal;
sp->Last_Output = InitVal;
}
/* 一阶系统阶跃响应计算 */
float OneOrderTransformFuncCalculate( OneOrderTFStru *sp, float Input )
{
float ret = (sp->ConstTime - sp->RunTime) / sp->ConstTime * sp->Last_Output + sp->RunTime / sp->ConstTime* sp->Last_Input;
sp->Last_Input = Input;
sp->Last_Output = ret;
return ret;
}
OneOrderTFStru s_Plan;
float SysRunTime = 1.0f; // 程序运行时间1ms,一般设置1
float StepRunTime = 50.0f; // 阶跃响应期望达到稳态的时间,例如50ms,取t=3T或t=4T
float InitValue = 5.0f; // 阶跃响应初始值,例如5
float FinalValue = 10.0f; // 阶跃响应终止值(稳态值),例如10
/* 阶跃响应开始执行初始化一次 */
OneOrderTransformFuncInit( &s_Plan, SysRunTime, StepRunTime / 4.0f, InitValue );
float Output = OneOrderTransformFuncCalculate( &s_Plan, FinalValue );