系统在双闭环控制过程中通常使用传统的 PI 控制器,但是电网在基波处的增益是有限值,PI 控制器能够实现对直流信号的无静差追踪,却并不能在正弦信号的追踪过程中实现无静差,相应产生的稳态误差会造成追踪电流 在有效值幅值和相位上的误差。电流有效值幅值上的误差,可以通过增大控制器的比例系数,相应的增大基波频 率的增益来实现,但是并不能完全的消除误差,仍是有差调节。在幅值误差得到有效改善的情况下,系统的误差主要表现为相位误差,需要通过控制器的改进来减小相位的误差值。
根据 PR 控制器在跟踪控制方面的优势,用PR控制器替代 PI 控制器,在系统加载冲击性负载时,可以有很好的响应速度,保证了系统良好的动态稳定性。
下面给出 PR 控制器的传递函数以及对应的基波 频率处的增益:

根据式(1)(2)可以看出,由于基波频率处的增益趋于无穷大,使系统在追踪固定频率正弦信号时能够实现无静差追踪。
在实际应用中,虽然 PR 控制在基波频率处拥有较高 的增益,但是相角裕度较小,带宽较窄,引起系统发生振 荡,容易造成控制器谐振频率的偏移,影响系统稳定。为了增大相角裕度和带宽宽度,可通过添加增益较高的低通 滤波器实现,从而构成了准比例谐振(PR)控制,准 PR 控 制器的传递函数如式(3)所示:

式中:Kp ,Kr,ωc 为控制器参数,ω0=314 rad/s。
PI 控制PR 控制和准 PR 控制的频率特性如图所示。
kp=10 , ki =kr=100;

图中,PI 控制器在基波频率处的增益几乎为零,而PR控制器与准PR 控制器在基波频率处的增益却很大, 且具有相似的频率特性,可以在指定的频率下对稳态误差 进行有效的消除,故可利用准PR控制器来代替PI控制器,从而在消除幅值误差的同时消除相位误差,做到对指 定信号的准确追踪,消除了稳态误差。
通过对准PR控制器的传递函数的分析,可以明确在 控制器参数的设计过程中,主要是对 Kp ,Kr,ωc 进行选 择,所以本文首先使用控制变量的方法来对各个参数的作用进行分析。
首先令 K p 2 =0,ωc =1,同时使 Kr 不断变化,对应的频 率特性如图 4 所示。
Kr1=10
Kr2=100
Kr3=1000
Kr4=10000

由图 可知,在参数 Kr 的变化过程中,只有控制器的增益相应的进行变化,并且随着 Kr 的增大,控制器的增益 增大的同时,稳定性不断加强,但却不会对控制器的带宽 造成影响。然而 Kr 增大到一定程度就会引起谐波分量的放大,所以要合理的选择参数 Kr,既满足基波频率处有较 大的增益,又能具有一定的衰减性。
令 Kp=0,Kr=1,ωc 进行不断变化,对应的频率特性如图所示。
Wc =1,
Wc =5,
Wc =15,
Wc =30,
Wc =50,

从图 5 中可得,在参数ωc 变化过程中,控制器的增益 与带宽同时发生变化,说明ωc 对两者都存在相关性,虽然 随着ωc 的增大,控制器基波频率处的增益未发生改变,但 控制器非基波频率处的增益和带宽却同时变大,所以参数 ωc 的选择需要根据频率的波动和控制器带宽的需求共同 决定。
在分析 Kp变化之前,先令 Kp =0,并将 jω=s 带入到(3)中,得到

令上式中的ω0/2ωc=Q,则 Q 看作 PR 控制器谐振环节 的品质系数。
设电网允许的频率波动是±0.5 Hz,此时的控制器带 宽为 d=1 Hz,
,在 |Q (ω/ω0 -ω0/ ω) | =1 时可得频率之间相差带宽为 d = ωc /2πQ = ωc/ π,对应的ωc =3.14。
最后令 Kr=100,ωc =3.14,K p 进行变化,对应的频率特性如图 所示
kp= 0.1 ,
kp= 1 ,
kp= 10,

根据上图 的变化,控制器的增益与带宽都受到 Kp变化的影响,但是随着 Kp 的增大,控制器增益在基波频率 处的增益并未发生改变,只在非基波频率处增益相应的增 大,对应的带宽随着 Kp的增大而减小。所以随着 Kp 的 不断增大,使系统的抗干扰能力不断增强,但是并不能无 限增大,若 K p 2 过大会造成系统的振荡而影响其稳定性。计根据对控制器各个参数的分析,准 PR 控制参数的设 一般需要按照以下步骤设计[1 3]:
1)ωc 值的确定,此值主要与系统截止频率的带宽需求有关;
2)Kr 值的确定,此值主要根据系统所需的峰值增益 的大小来进行取值;
3)Kp值的确定,此值主要根据系统对比例增益的要求来选择最佳的Kp 值。
按照上述步骤设计的控制器参数,使准 PR 控制器系 统具有很强的稳定性与抗干扰性,系统的控制效果达到最佳。根据本系统实际实验过程的需要,选择的准 PR 控制 参数如下:Kp=6.5,Kr =120,ωc=8,得到的准PR控制器 Bode 图如图 所示。

为了增强系统的抗干扰能力,在准 PR 控制器中增加 各个主要频次谐波的谐振补偿环,使系统在谐波频率点处产生较大的增益,同时保证系统有足够的相角裕度和良好的动态性能。根据实际中谐振补偿方式的需要合理进行选择,谐振补偿环的传递函数为:

下面以 3 次谐波为例,如图所示。在准 PR 控制器 中添加 3 次谐波补偿环,并画出对应的 Bode 图。添加了谐波补偿环后,对应的谐波频率处产生了很大增益,实现了对应谐波的无静差追踪,同时抑制了谐波对系统电能质 量的影响。一般情况下,通过添加特定次数的谐波补偿 环,在实现对基波成分跟踪的同时,还能对特定次数的谐 波成分进行跟踪,实现对特定次数谐波的消除,从而减小了谐波造成的污染,提高了逆变器系统的电能质量。

当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
在我的Character模型中,我添加了:字符.rbbefore_savedoself.profile_picture_url=asset_path('icon.png')end但是,对于数据库中已存在的所有角色,它们的profile_picture_url为nil。因此,我想进入控制台并遍历所有这些并进行设置。在我试过的控制台中:Character.find_eachdo|c|c.profile_picture_url=asset_path('icon.png')end但这给出了错误:NoMethodError:undefinedmethod`asset_path'formain:O
当我进入Rails控制台时,我已将pry设置为加载代替irb。我找不到该页面或不记得如何将其恢复为默认行为,因为它似乎干扰了我的Rubymine调试器。有什么建议吗? 最佳答案 我刚发现问题,pry-railsgem。忘记了它的目的是让“railsconsole”打开pry。 关于ruby-on-rails-带有Pry的Rails控制台,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question
我正在尝试将$stdout设置为临时写入一个文件,然后返回到一个文件。test.rb:old_stdout=$stdout$stdout.reopen("mytestfile.out",'w+')puts"thisgoesinmytestfile"$stdout=old_stdoutputs"thisshouldbeontheconsole"$stdout.reopen("mytestfile1.out",'w+')puts"thisgoesinmytestfile1:"$stdout=old_stdoutputs"thisshouldbebackontheconsole"这是输出。r
我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id
我真的只是不确定这意味着什么或我应该做什么才能让网页在我的本地主机上运行。现在它只是显示一个错误,上面写着“我们很抱歉,但出了点问题。”当我运行railsserver并在chrome中打开localhost:3000时。这是控制台输出:StartedGET"/users/sign_in"for127.0.0.1at2013-07-0512:07:07-0400ProcessingbyDevise::SessionsController#newasHTMLCompleted500InternalServerErrorin55msNoMethodError(undefinedmethod`
在Rails控制台中执行类似yGrau.all的命令时,我得到这些奇怪的!binary字符串而不是属性名称。知道如何解决这个问题吗?谢谢。irb(main):003:0>yGrau.all←[1m←[36mGrauLoad(0.0ms)←[0m←[1mSELECT"graus".*FROM"gr←[1m←[35mEXPLAIN(0.0ms)←[0mEXPLAINQUERYPLANSELECT"grauEXPLAINfor:SELECT"graus".*FROM"graus"0|0|0|SCANTABLEgraus(~1000000rows)----!ruby/object:Grauat