控制系统仿真课程设计-单神经元pid控制系统仿真(编辑修改稿)内容摘要:

值选择较大时,为保证上述单神经元 P1D控制学习算法的收敛性与鲁棒性,对学习算法进行规范化处理: 31( ) ( 1 ) ( ) ( )iiiu k u k k w k x k    ( ) ()iwk = 31( ) | ( ) |iiiw k w k ( ) 1 1 1( 1 ) ( ) ( ) ( )Iw k w k e k x k   ( ) 2 2 2( 1 ) ( ) ( ) ( )Pw k w k e k x k   ( ) 3 3 3( 1 ) ( ) ( ) ( )Dw k w k e k x k   ( ) 式中, ,I p D  为积分、比例、微分的学习速率; 1()xk= ()ek ( ) 2()xk= ()ek ( ) 3()xk= 2 ()ek = ( ) 2 ( 1) ( 2 )e k e k e k    ( ) 这里对积分 (I)、比例 (P)、微分 (D)分别采用不同的学习速率 ,I p D  ,以便对它们各自的权系数能根据需要分别进行调整。 采用不同的学习速率进行学习,可以防止某些项因为相差太大而被 淹没,其取值可先由现场实验或仿真来确定。 这里选取的一般规则如下: ①对于阶跃响应,若输出有大的超调,且多次出现正弦衰减现象,应减少 ,K 维持 ,I p D  不变;若上升时间长,无超调,应增大 K ,保持 ,I p D  不变。 ②对于阶跃输入,若被控对象产生多次正弦衰减现象,应减少 p ,其他参数不变。 ③若被控对象响应特件出现上升时间短、超调过大现象,应减少 I ,其他参数不变。 ④若被控对象上升时间长,增大 I 又导致超调过大,可适当增加 P ,其他参数不变。 ⑤在开始调整时, D 选择较小值,当调整 I , P 和 K ,使被控对象具有良好特性时,再逐渐增大 D ,而其他参数不变,使系统输出基本无波纹。 ⑥ K是系统最敏感的参数。 K 值的变化,相当于 ,PID 三项同时变化,应在第一步先调整 K ,然后根据“②~⑤”项调整规则调整 ,I p D 。 受控对象由差分方程给出 y(k)=(k1)+(k2)+(k1)+(k2) ( ) 两端取 Z 变换 ,并加以整理得: G(z)= 6 6 3   zzz ( ) 采样周期为 T=,输人为一阶跃信号 rin(k)=1,分别用单神经元 PID 和常规 PID进行控制,并进行比较。 第 3 章 单神经元 PID 系统仿真研究 m文件 SFunction . 1 使用模板文件: sfuntmp1. m 格式: [sys,x0]=function(t,x,u,flag) 该模板文件位于 MATLAB 根目录下 toolbox/simulink/blocks 目录下。 模板文件里 SFunction 的结构十分简单,它只为不同的 flag 的值指定要相应调用的 m文件子函数。 比如当 flag=3 时,即模块处于计算输出这个仿真阶段时,相应调用的子函数为 sys=mdloutputs(t,x,u)。 模板文件使用 switch 语句来完成这种指定,当然这种结构并不唯一,用户也可以使用 if 语句来完成同样的功能。 而且在实际运用时,可以根据实际需要来去掉某些值,因为并不是每个模块都需要经过所有的子函数调用。 模板文件只是 Simulink 为方便用户而提供的一种参考格式,并不是编写SFunction 的语法要求,用户完全可以改变子函数的名称,或者直接把代码写在主函数里,但使用模板文件的好处是,比较方便,而且条理清晰。 使用模板编写 SFunction,用户只需把 s函数名换成期望的函数 名称,如果需要额外的输入参量,还需在输入参数列表的后面增加这些参数,因为前面的 4 个参数是Simulink 调用 SFunction 时自动传入的。 对于输出参数,最好不做修改。 接下去的工作就是根据所编 SFunction 要完成的任务,用相应的代码去替代模板里各个子函数的。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。