好文档 - 专业文书写作范文服务资料分享网站

连续传递函数离散化的方法与原理

天下 分享 时间: 加入收藏 我要投稿 点赞

u(k)=e(k)+m(1); /* 求本次的u(k) */ m(1)=b(1)*e(k)-a(1)*u(k); 求二阶分式

/* 求下一次的 m(k-1) */

?1?2U(Z)1?b1Z?b2Z的时域表达式: ??1?2E(Z)1?aZ?aZ12 令 M2(Z)?b2E(Z)?a2U(Z) 则 U(Z)?E(Z)?M1(Z)Z?1

故 u(k)?e(k)?m1(k?1)

且 m1(k)?m2(k?1)?b1e(k)?a1u(k) 从u(k)画出串联算法二阶分式的信流图: m(1)=0;m(2)=0; /* 初始化 */ u(k)=e(k)+m(1); /* 求本次的u(k) */ m(1)=b(1)*e(k)-a(1)*u(k)+m(2); m(2)=b(2)*e(k)-a(2)*u(k);

/* 求下一次的 m(1) */ /* 求下一次的 m(2) */

第六节 并联算法

设离散传递函数为

U(Z)?E(Z)1??(aiZ)i?1i?0n?i?(biZ)n,

?i 通过部分分式的分解,将传递函数改写若干个部分分式的和,即

?1U(Z)b01b0mbbn0?bn1Z?110?b11Z?c??...???...? , ?1?2?1?2E(Z)1?a01Z?11?a0mZ?11?aZ?aZ1?aZ?aZ1112n1n2 在并联算法表达式中,所有的项只有一阶分式和二阶分式两种形式。 求并联算法一阶分式

U(Z)b0的时域表达式: ??1E(Z)1?a1Z 画出并联算法一阶分式的信流图: m(1)=0;

/* 初始化 */

u(k)=b(0)*e(k)+m(1); /* 求本次的u(k) */ m(1)=-a(1)*u(k); /* 求下一次的 m(1) */

?1U(Z)b0?b1Z 求并联算法二阶分式 的时域表达式: ??1E(Z)1?a?a2Z?21Z ?b0E(Z)?((?a2U(Z))Z?1?bZ)?aZ))Z1E(1U(?1,

?1 令 M2(Z)??a2U(Z),M1(Z)?M2(Z)Z?bE(Z)?aU(Z), 11?1 则 U(Z)?b0E(Z)?M1(Z)Z,

故 u(k)?b0e(k)?m1(k?1),

由M1(Z),M2(Z)反变换得 m1(k)?m2(k?1)?a1u(k),m2(k)??a2u(k)。

画出并联算法二阶分式的信流图:

m(1)=0;m(2)=0; /* 初始化 */ u(k)=e(k)+m(1); /* 求本次的u(k) */ m(1)=b(1)*e(k)-a(1)*u(k)+m(2);

/* 求下一次的 m(1) */

m(2)=-a(2)*u(k); /* 求下一次的 m(2) */2

第四章 数字PID控制算法

PID控制算法是模拟手动调节过程而构造出来的,它有3个特点: ① 控制算式中比例项,积分项,微分项物理意义明确。

② 控制算式中比例带,积分时间,微分时间等3个参数互相独立,因而可以在闭环中用凑试法确定这3个参数,并且不必预先知道控制对象的特性。

③ 将一阶对象或二阶对象对象与控制器形成闭环系统,假定闭环系统的传递函数为e传递函数。

由于有这3个特点,PID控制算法具有很强的普适性,因而被广泛地应用在“任意”场合。不过,若受控对象的纯滞后比较大,PID控制算法可能会出现积分饱和等问题,因此,PID控制算法出现了一些变形。

在工业生产过程中,例如对温度,压力,流量等参数进行控制,使用PID控制算法有比较成熟的经验。

??,则控制器的传递函数总是PID

第一节 微分方程和差分方程

1 微分方程:

1tde(t) u(t)?kP[e(t)?t)dt?TD]。 ?e(TdtI02 积分分离微分方程: u(t)?kP[e(t)??1tde(t)t)dt?TD]。 ?e(TdtI03 位置式差分方程: u(kT)?KP[e(kT)?TkT?e(jT)?D(e(kT)?e((k?1)T)]。 TTj?1I4 增量形式差分方程:

令 ?u(kT)?u(kT)?u((k?1T))

T)? 得 ?u(kT)?KP[(e(kT)?e((k?1)输出变量: 输入变量: 参变量:

TTe(kT)?D(e(kT)?2e((k?1)T)?e((k?2)T)]。 TITu(t) 纯量,对于实际的物理量,设阀门全开时为1。

e(t) 纯量,为误差值,对于实际的物理量,设?e(t)的最大值为1。

kP 比例系数,纯量,忽略积分项和微分项,它使输出为1时输入量的变化,它是比例带的倒数。

TI 积分常数,时间量,在忽略比例项和微分项且kP?1时,它是使输出为1时需要的积分时间。 TD 微分常数,时间量,为微分输入的作用时间。

第二节 不完全微分

由微分方程 u(t)?kP[e(t)?1tde(t)t)dt?TD] , ?e(TdtI0E(s)?TDsE(s)] , TIs1Ts,变为DE(s),

Tfs?1Tfs?1得s传递函数 U(s)?kP[E(s)?将微分通道 TDsE(s)串联一个一阶环节? 其中同TfTD,即Td的若干分之一。 f为TTk

所以不完全微分的传递函数为 U(s)?kP[E(s)?E(s)Ts?DE(s)] TIsTfs?1 ?UP(s)?UI(s)?UD(s)。 经过离散化得 u(k)?uP(k)?uI(k)?uD(k)。 以下分别计算各个通道:

比例通道: 令 UP(s)?kPE(s), 则 UP(z)?kPE(z), 积分通道: 令 UI(s)? 则 UI(z)?1E(s), TIskP1?z?1TITE(z),

uI(kT)?微分通道: 令 UD(s)?Te(kT)?uI((k?1)T), TITDsE(s),

Tfs?11?z?1kPTDT 则 UD(z)?E(z), ?11?zT?1fT 变形后得 UD(z)?kPTDTf?TE(z)?kPTDTf?TE(z)z??1T?1fUD(z)z Tf?T1uD((k?1)T) Tf?T 化为时域表达 uD(kT)? 上式中令 KD?kPTDTf?Te(kT)?kPTDTf?Te((k?1)T)?kPTDTT和??f,1??? TTTf?Tf?T1??)[e(kT)?e((k?1)T)]??uD((k?1)T) 则 uD(kT)?KD(k)?u(k)?u(k?1)变换为增量式。 以上比例,积分,微分,各个通道都是位置式的,同样可以令?u(第三节 参数选择

采样时间

受控物理量 温度 压力 流量 液位 成份 15--20 3--10 1-- 5 6-- 8 15--20 采样时间(s) 取纯滞后时间常数 优先选用6--8s 优先选用1--2s 优先选用7s 优先选用18s 备 注 当系统中仅惯性时间常数起作用时,?s?10?m。 当系统中纯滞后时间占有一定位置时,应选择T?01.?。 当系统中纯滞后时间占主导地位时,应选择T?01.?。

控制参数 受控物理量 温度 压力 流量 液位 成份 特点 对象为多容,滞后较大,须用微分 对象为多容,滞后一般较大,不用微分 对象时间常数小并有噪声,?应较大,TI应较短,不用微分 在允许有余差时,不必用积分,不用微分 ?(%) 20-60 30-70 40-100 20-80 TI(分钟) -- -- -- TD(分钟) 第四节 c51框架

这仅仅是一个PID控制程序的基本架构,在实际应用时,还有很多细节问题需要处理。 #include <> #include <>

/*============================================================================================*/ typedef struct PID {

double SetPoint; // 设定目标 Desired Value double Proportion;

// 比例常数 Proportional Const

double Integral; // 积分常数 Integral Const double Derivative; double LastError; double PrevError; double SumError; } PID;

/*============================================================================================*/ double PIDCalc( PID *pp, double NextPoint ) //PID计算 {

double dError,Error;

Error = pp->SetPoint - NextPoint; pp->SumError += Error; // 积分

dError = pp->LastError - pp->PrevError; // 当前微分 pp->PrevError = pp->LastError; pp->LastError = Error; return (pp->Proportion * Error

// 比例项

// 积分项 // 偏差

// 微分常数 Derivative Const // Error[-1] // Error[-2] // Sums of Errors

+ pp->Integral * pp->SumError

+ pp->Derivative * dError // 微分项 ); }

/*===========================================================================================*/ void PIDInit (PID *pp) // 初始化PID 数据结构 {

memset ( pp,0,sizeof(PID)); }

/*============================================================================================*/

连续传递函数离散化的方法与原理

u(k)=e(k)+m(1);/*求本次的u(k)*/m(1)=b(1)*e(k)-a(1)*u(k);求二阶分式/*求下一次的m(k-1)*/?1?2U(Z)1?b1Z?b2Z的时域表达式:??1?2E(Z)1?aZ?aZ12令M2(Z)?b2E(Z)?a2U(Z)则
推荐度:
点击下载文档文档为doc格式
1re1m181kx02tjb2ixwe3xy6q955i0014s0
领取福利

微信扫码领取福利

微信扫码分享