Commit 83f5616e authored by Claes Sjofors's avatar Claes Sjofors

PID controller documentation modified

parent 1db01c99
......@@ -2681,55 +2681,112 @@ under f
@b Objektsbild fr regulatorns modobjekt
@image orm_mode_og.gif
@b Bra att veta
I normalfallet anvnds Pidobjekt tillsammans med ett Modeobjekt. Modeobjektet spelar d rollen
av interface till Pidobjektet. Frn Modeobjektet r det mjligt att vlja MANUAL, AUTO och
CASCADE:
-Manual mod r en mod nr regulatorns utsignal r tvngsstyrd.
-Auto mod r en mod nr regulatorns arbetar med internt brvrde.
-Cascade mod (kaskad) r en mod dr regulatorns arbetar med ett externt brvrde, dvs
modobjektets ingng XSetVal [XSV].
@h1 Bra att veta
I normalfallet anvnds Pidobjekt tillsammans med ett Modeobjekt. Gller ven
CompPID och CompMode.
Modeobjektet spelar d rollen av interface till Pidobjektet. Frn Modeobjektet r
det mjligt att vlja MANUAL, AUTO och CASCADE:
- Manual mod r en mod nr regulatorns utsignal r tvngsstyrd till nskat
vrde.
- Auto mod r en mod nr regulatorns arbetar med internt brvrde frn
modobjektet.
@b Regulatorn
Olika strategier fr att berkna styrsignal har implementerats. PidAlg anger
vilka.
Pid-objektet har tv utgngar som bda kan anvndas som styrsignal. Vilken
som anvnds i det enskilda fallet beror p hur regleringen r ordnad:
OUT (attributet OutVal ) innehller ett vrde som kan komma frn
evalueringen av den valda algoritmens 'positional form', frn operatren i lge
MANUAL eller vara ett s.k. tvngsstyrningsvrde. Kunskapen om var
stlldonet ska st ligger i detta fall s. a. s. p regulatorsidan eftersom hela
signalvrdet finns dr.
OC (attributet OutChange ) anger hur stlldonet ska ndras mellan tv
successiva exekveringar. I detta fall talar man om algoritmens 'velocity' eller
'incremental form'. Hr r det istllet stlldonet som "kommer ihg"
instllningen.
Algoritmens proportionella term respektive derivata term kan baseras antingen
p rvrdet eller reglerfelet.
Derivata termen kan filtreras internt med 1:a ordningens filter.
En framkopplingssignal, Bias , kan inkluderas i algoritmen.
Integrationen kan kopplas frn/till.
Utvrdet, OutVal begrnsas till intervallet { MinOut , MaxOut }.
Sttfri omkoppling AUTO / MANUAL.
Fr regulatorns manvrering och instllning finns tv objektbilder bl.a innehllande
ett tidsdiagram med rvrde, brvrde och utsignal. Dvs objektsbilder fr compPID och
CompModePID.
- Cascade mod (kaskad) r en mod dr regulatorns arbetar med ett externt
brvrde, dvs modobjektets ingng XSetVal [XSV].
@h1 Regulatorn
Algoritmens proportionella term respektive derivata term kan baseras antingen p
rvrdet eller reglerfelet.
PidAlg anger frdelningen.
Exempel: PI+D innebr att P-delen och I-delen verkar p regleravvikelsen, medan
D-delen bara pverkas av rvrdesfrndringar. En stegndring av brvrdet ger
inte ngon spik frn D-delen, utan bara en stegndring frn P-delen, och sedan
en integrering av reglerfelet.
I+P innebr p samma stt att P-delen bara pverkas av rvrdesfrndringar. Vid
en stegndring av brvrdet fr vi inget steg p utgngen. Utstyrningen ndras
bara genom att det strre reglerfelet brjar integrera utsignalen.
Vid P- och PD-algoritm anvnds en absolut algoritm. Utsignalen kan d allts inte
ligga stabilt skilt frn noll utan regleravvikelse, annat n om man anvnder en
framkopplingssignal.
Vid alla algoritmer med I-del baseras hela tiden frndringar i utsignalen p
frndringar i insignalerna. Man kan fortfarande stnga av integrereringen med
en insignal till objektet.
Pid-objektet har tv utgngar som bda kan anvndas som styrsignal. Vilken som
anvnds i det enskilda fallet beror p hur regleringen r ordnad:
OUT (attributet OutVal ) innehller ett vrde som kan komma frn regleralgoritmen,
frn operatren i lge MANUAL eller vara ett s.k. tvngsstyrningsvrde.
Signalen anvnds fr t ex varvtalsutstyrning, eller som brvrdesposition till
ett stlldon.
OC (attributet OutChange ) anger hur stlldonet ska ndras mellan tv successiva
exekveringar.
I detta fall talar man om algoritmens 'velocity' eller 'incremental form'.
Detta r anvndbart fr stlldon som bara har ka- och minska-signaler, utan
lgesterfring. Anvnds d normalt med INC3P-objektet, som integrerar
frndringarna och omvandlar till tid fr ka resp minska.
OutChange fortstter att ge signal, ven OutVal bottnat i MinOut eller MaxOut.
Derivata termen filtreras internt med 1:a ordningens filter. Filtreringen kopplas
bort genom att stta DerGain = 0, men regleringen blir d ofta mycket strknslig.
Normalt r DerGain ca 3, vilket innebr att utsignalen pverkas momentant 3 ggr
s mycket av derivatadelen som av P-delen. Derivatatillskottet smetas sedan ut
ver tiden, s att det totala integrerade tillskottet blir lika stort som den
skulle bli utan filtrering.
En framkopplingssignal, Bias, kan inkluderas i algoritmen genom en ingngssignal
till objektet.
Utvrdet, OutVal, begrnsas till intervallet { MinOut, MaxOut }. Det innebr att
man kan tappa det stabila lget vid en orolig reglering, speciellt vid inkopplad
D-del.
Exempel: Vi har en ganska orolig fldesreglering (utsignal 0-100 %) och reglerar
nra maxvarvet fr pumpen. Vi behver styra ut i snitt 98 % fr att n nskat
brvrde. Utsignalen fladdrar ca +- 5 % pga strningar. Om MaxOut r 100 %, s
innebr det att regulatorn bottnar regelbundet. Utsignalen kommer d att svnga
mellan 90 och 100 % med en medelutsignal p ca 95%, och vi nr inte nskat
brvrde.
Lsning: Stt MinOut och MaxOut till -10 % resp 110 %. Utsignalen kommer att
svnga mellan 93 och 103% med ett medel p 98%, och vi uppnr nskat brvrde.
Utsignalen fr sedan begrnsas till 0 - 100 % utanfr PID-regulatorn.
Regulatorn har sttfri omkoppling AUTO / MANUAL och efter annan tvngsstyrning av
regulatorn.
Dock ej vid P- eller PD-reglering.
EXEMPEL 1
Exempelkurvor fr att visa P- och Delens inverkan vid olika typinstllningar.
Insignal steg och ramp.
@image orm_pid_3.png
vre delen:
Brun kurva. rvrde (samma som P-del frn regulatorn). Steg samt ramp.
Lila kurva. Utsignal frn PD med Kp = 1, DerTime = 10s, DerGain = 3.
Nedre delen - D-del frn regulatorn.
Grn kurva. DerTime = 10s. Ingen filtrering (DerGain = 0). Notera spiken vid
stegndringen.
Gul kurva. DerTime = 10s. Filtrerad D-del DerGain = 3.
Bl kurva. DerTime = 20s. Filtrerad D-del DerGain = 3.
EXEMPEL 2 fr att visa skillnaden mellan PID, PI+D och I+PD vid terkopplat
system och stegfrndring av brvrdet:
@image orm_pid_4.png
I+PD brjar sakta integrera upp styrsignalen vid stegndring.
PI+D ger ett stegsvarsom medfr att vi fr en snabbare reglering till nya
brvrdet.
PID ger 'bakvnt' resultat. P ger ca 30 % upp, D ger en spik p ca 90 % Totalt ca
135 % Regulatorn bottnar i 100 % utsignal, och nr vi sedan tar bort D-spiken p
90 % fr regulatorn brja om frn 10 % utsignal.
@h1 Funktion
@image orm_pid_1.gif
@image orm_pid_2.gif
@h1 Exempel
......
......@@ -19,3 +19,5 @@
100602 cs jop New script, jpwr_opwind.sh, to start java operator window locally.
101006 cs jop Web operator window, possibility to remove Help and Proview buttons.
101111 cs jop Chinese characters, UTF-0 char coding of language and textfiles.
110112 cs rt Java bugfix, subscription of String array didn't work.
110112 cs rt Java table column reordering disabled.
......@@ -3,4 +3,5 @@
070601 cs - Problems with national characters fixed.
070601 cs - Problems with memory leakage fixed.
071203 cs - Bugfix in Opc Server, subscription on string variable could cause segfault.
081125 cs - Bugfix in opc_provider argument check, server identity was not optional.
\ No newline at end of file
081125 cs - Bugfix in opc_provider argument check, server identity was not optional.
101220 cs - Opc_server fix, suppressed error return from not mounted mountobjects.
......@@ -12,3 +12,5 @@
100606 cs - IO methods and objects for temperature sensor Maxim DS18B20 added.
100621 cs modbus Modbus TCP server, correction for WriteSingleCoil. If value is not 0 or 0x00FF, no value shoud be set.
100701 cs modbus Modbus TCP bugfix in scan interval.
110120 cs velleman Velleman K8055 communication timeout increased.
110120 cs arduino Support for Arduino USB boards added.
......@@ -153,4 +153,9 @@
101123 cs rt rt_emon message loop bugfix.
101123 cs pwre co_mereg bugfix, conditional opsys didn't work.
101123 cs rt getopt replaced.
101202 rk rt Added support for handling i/o-channels hidden inside attribute..
101202 rk rt Added support for handling i/o-channels hidden inside attribute.
101207 cs tools Live CD customization files added.
101210 cs plc Arithm code comment on last row could comment out closing parenthesis.
101220 cs gdh Gdh fix to be able to set values in mounted volumes from opc.
110111 cs plc Plc loop options added for policy when execution time exceedes scantime.
110119 hw plc PID controller, derivative filtering modified, and function object Filter algorithm modified.
This diff is collapsed.
......@@ -27,38 +27,106 @@ SObject pwrb:Class
! Implements the robust PID control algorithm.
! @image orm_en1-141.gif
!
! In the normal case the Pid object is used together with
! the Mode object. The Mode object plays the part of an
! interface for the Pid object. From the Mode object it
! is possible to select:
!
! - control modes ( MANUAL / AUTO / CASCADE)
! - forced control regarding the control signal of the
! controller.
!
! Different PID strategies are implemented for
! incremental as well as positional form, see PidAlg
! below.
! The proportional respectively derivative term can be
! based either on process value or control deviation.
!
! The derivative term can be filtered by a first order
! lag filter.
! A feed forward signal, Bias, may be included in the
! algorithm.
!
! It is possible to switch the integration on/off.
! The control signal OutVal is checked against the limit
! values MinOut and MaxOut.
!
! Bumpless transfer AUTO / MANUAL.
! To handle and adjust the controller there are two more
! info forms containing e.g. a time diagram with process
! value, setpoint value and output signal.
!
! @h1 Function
! @image orm_pid_1.gif
! @image orm_pid_2.gif
! @h1 Handy to know for a start
! Normally the PID-object is used together with a Mode-object. The same goes for
! CompPID and CompMode.
! The Modeobject works as an interface to the PID. From the Modeobject you can
! choose between MANUAL, AUTO and CASCADE:
!
! -Manual mode. The Outsignal of the controller is forced to the desired output.
!
! -Auto mode. The controller setpoint is input from the operator, and stored in
! the Mode-object.
!
! -Cascade mode. An external setpoint comes to the Mode-object in XSetVal [XSV],
! and is distributed to the controller.
!
! @h1 PID-controller
!
! The proportional term and the derivative term of the controller, can be based
! either on the process value, or the control deviation. The PidAlg parameter
! decides which.
! Example: PI+D means that the P-part and I-part works on the control deviation,
! but the derivative part works only on the process value. A step change on the
! setpoint won't affect the D-part at all, but the P-part will give a step and
! the I-part will give a slope.
! I+P means that the P-part will only be affected by changes on the process value.
!
! When using the P- or PD-algorithm we use an aabsolute algorithm. The output
! will not be stable away from zero without a control deviation.
! When using algorithms with I-part, all changesof the output are calculated by
! changes of the inputs to the controller. You can still turn off the integration
! with an input to the object
!
! The PID-object has two outputs.
! OUT (OutVal ) is the normal output from the controller, or from the operator in
! manual mode. It is used for speedreferences, setpoint for positioning of a
! valve, or similar output.
! OC (OutChange ) is the change of the output signal (incremental form), that
! works even if the controller output is restricted by MinOut or MaxOut. It can
! be used with an INC3P-object, that integrates the signal, and converts it to
! time for opening or closing, if we have a valve without position transducer.
!
! The derivative term of the controller is filtered with a 1st order filter. You
! can remove the filtering by setting DerGain to zero, but that will result in a
! controller, very sensitive for ripple.
! Normally DerGain is about 3, which means the output from the derivate part
! initially will be 3 times that of the P-part. The D-part will then be smeared
! out in time, so that the total effect of the D-part will be the same as it
! would have been without the filter.
!
! You can use a feedforward signal by the Bias-input, with BiasGain.
!
! The output, OutVal, is limited to the interval { MinOut , MaxOut }. This means
! that you can loose your stable controlpoint if you have much noise. Especially
! if you use the D-part of the controller. The interval should normally be a bit
! larger than the possible output to the process.
! Example: You have a rather noisy flowcontrol with an output 0-100% as
! speedreference to a pump.
! The output varies +- 5% as a result of the noise. At the moment we need 98%
! output as an average to reach the desired setpoint. If we use 100% as MaxOut
! for the controller, the output will be cut all the time, and it will vary
! between 90 and 100% with 95% as an average. We will not reach the setpoint.
! The solution is to allow the output from -10% to 110%, and then limit the
! output outside the controller.
!
! The controller has bumpless transfer between manual and auto, and after forced
! output, but not if you use the P or PD-form.
!
!
!
! EXAMPLE 1
!
! Curves to show the effect of the P- and D-part at different input to the
! controller.
!
! @image orm_pid_3.png
!
! Upper part:
! Brown curve Input ( and also P-part of controller). Step and then a ramp.
! Cerise curve Output from PID (yellow curve in lower part)
!
! Lower part - D-component of controller.
! Green curve DerTime = 10s. No filtering (DerGain = 0) Note very big peak
! at the step.
! Yellow curve DerTime = 10s. Filtered D. DerGain = 3.
! Blue curve DerTime = 20s. Filtered D. DerGain = 3.
!
!
!
! EXAMPLE 2 to show the difference betweenPID, PI+D och I+PD on a setpont step:
!
! @image orm_pid_4.png
!
! I+PD starts slowly to integrate the output after the step.
! PI+D gives a step from tthe P, which quickens the process respons.
! PID gives 'wrong' result because of the saturation of the output signal. At
! the setpoint step, the P-part gives an increase of 30 %, and the P-part wants
! a spike of 90 %. That results in an output of 135%, which is cut to 100%. Then
! the D-part will remove 90 % again, and the controller will restart from 10%
! output, which is not desired.
!
!
! @h1 Examples
!
......@@ -209,6 +277,7 @@ SObject pwrb:Class
!
! @b See also
! @classlink Mode pwrb_mode.html
! @classlink CompPID basecomponent_comppid.html
!*/
Object PID $ClassDef 174
Body SysBody
......
......@@ -10332,45 +10332,111 @@ Programcykeltid i sekunder. Initieras automatiskt vid kompilering.
Implementerar olika former av PID reglering.
@image orm_en1-141.gif
I normalfallet används Pid-objekt tillsammans med Mode-objekt. Mode -
objekt spelar då rollen av interface till Pid-objekt. Från Mode-objekt är det
möjligt att välja:
- reglermod (MANUAL / AUTO / CASCADE)
- tvångsstyrning med avseende på styrsignal
@h1 Bra att veta
I normalfallet används Pidobjekt tillsammans med ett Modeobjekt. Gäller även
CompPID och CompMode.
Modeobjektet spelar då rollen av interface till Pidobjektet. Från Modeobjektet är
det möjligt att välja MANUAL, AUTO och CASCADE:
- Manual mod är en mod när regulatorns utsignal är tvångsstyrd till önskat
värde.
- Auto mod är en mod när regulatorns arbetar med internt börvärde från
modobjektet.
- Cascade mod (kaskad) är en mod där regulatorns arbetar med ett externt
börvärde, dvs modobjektets ingång XSetVal [XSV].
@h1 Regulatorn
Algoritmens proportionella term respektive derivata term kan baseras antingen på
ärvärdet eller reglerfelet.
PidAlg anger fördelningen.
Exempel: PI+D innebär att P-delen och I-delen verkar på regleravvikelsen, medan
D-delen bara påverkas av ärvärdesförändringar. En stegändring av börvärdet ger
inte någon spik från D-delen, utan bara en stegändring från P-delen, och sedan
en integrering av reglerfelet.
I+P innebär på samma sätt att P-delen bara påverkas av ärvärdesförändringar. Vid
en stegändring av börvärdet får vi inget steg på utgången. Utstyrningen ändras
bara genom att det större reglerfelet börjar integrera utsignalen.
Vid P- och PD-algoritm används en absolut algoritm. Utsignalen kan då alltså inte
ligga stabilt skilt från noll utan regleravvikelse, annat än om man använder en
framkopplingssignal.
Vid alla algoritmer med I-del baseras hela tiden förändringar i utsignalen på
förändringar i insignalerna. Man kan fortfarande stänga av integrereringen med
en insignal till objektet.
Pid-objektet har två utgångar som båda kan användas som styrsignal. Vilken som
används i det enskilda fallet beror på hur regleringen är ordnad:
OUT (attributet OutVal ) innehåller ett värde som kan komma från regleralgoritmen,
från operatören i läge MANUAL eller vara ett s.k. tvångsstyrningsvärde.
Signalen används för t ex varvtalsutstyrning, eller som börvärdesposition till
ett ställdon.
OC (attributet OutChange ) anger hur ställdonet ska ändras mellan två successiva
exekveringar.
I detta fall talar man om algoritmens 'velocity' eller 'incremental form'.
Detta är användbart för ställdon som bara har öka- och minska-signaler, utan
lägesåterföring. Används då normalt med INC3P-objektet, som integrerar
förändringarna och omvandlar till tid för öka resp minska.
OutChange fortsätter att ge signal, även OutVal bottnat i MinOut eller MaxOut.
Derivata termen filtreras internt med 1:a ordningens filter. Filtreringen kopplas
bort genom att sätta DerGain = 0, men regleringen blir då ofta mycket störkänslig.
Normalt är DerGain ca 3, vilket innebär att utsignalen påverkas momentant 3 ggr
så mycket av derivatadelen som av P-delen. Derivatatillskottet smetas sedan ut
över tiden, så att det totala integrerade tillskottet blir lika stort som den
skulle bli utan filtrering.
En framkopplingssignal, Bias, kan inkluderas i algoritmen genom en ingångssignal
till objektet.
Utvärdet, OutVal, begränsas till intervallet { MinOut, MaxOut }. Det innebär att
man kan tappa det stabila läget vid en orolig reglering, speciellt vid inkopplad
D-del.
Exempel: Vi har en ganska orolig flödesreglering (utsignal 0-100 %) och reglerar
nära maxvarvet för pumpen. Vi behöver styra ut i snitt 98 % för att nå önskat
börvärde. Utsignalen fladdrar ca +- 5 % pga störningar. Om MaxOut är 100 %, så
innebär det att regulatorn bottnar regelbundet. Utsignalen kommer då att svänga
mellan 90 och 100 % med en medelutsignal på ca 95%, och vi når inte önskat
börvärde.
Lösning: Sätt MinOut och MaxOut till -10 % resp 110 %. Utsignalen kommer att
svänga mellan 93 och 103% med ett medel på 98%, och vi uppnår önskat börvärde.
Utsignalen får sedan begränsas till 0 - 100 % utanför PID-regulatorn.
Regulatorn har stötfri omkoppling AUTO / MANUAL och efter annan tvångsstyrning av
regulatorn.
Dock ej vid P- eller PD-reglering.
EXEMPEL 1
Olika strategier för att beräkna styrsignal har implementerats. PidAlg anger
vilka.
Exempelkurvor för att visa P- och Delens inverkan vid olika typinställningar.
Insignal steg och ramp.
Pid-objektet har två utgångar som båda kan användas som styrsignal. Vilken
som används i det enskilda fallet beror på hur regleringen är ordnad:
@image orm_pid_3.png
OUT (attributet OutVal ) innehåller ett värde som kan komma från
evalueringen av den valda algoritmens 'positional form', från operatören i läge
MANUAL eller vara ett s.k. tvångsstyrningsvärde. Kunskapen om var
ställdonet ska stå ligger i detta fall s. a. s. på regulatorsidan eftersom hela
signalvärdet finns där.
OC (attributet OutChange ) anger hur ställdonet ska ändras mellan två
successiva exekveringar. I detta fall talar man om algoritmens 'velocity' eller
'incremental form'. Här är det istället ställdonet som "kommer ihåg"
inställningen.
Algoritmens proportionella term respektive derivata term kan baseras antingen
på ärvärdet eller reglerfelet.
Övre delen:
Brun kurva. Ärvärde (samma som P-del från regulatorn). Steg samt ramp.
Lila kurva. Utsignal från PD med Kp = 1, DerTime = 10s, DerGain = 3.
Derivata termen kan filtreras internt med 1:a ordningens filter.
Nedre delen - D-del från regulatorn.
Grön kurva. DerTime = 10s. Ingen filtrering (DerGain = 0). Notera spiken vid
stegändringen.
Gul kurva. DerTime = 10s. Filtrerad D-del DerGain = 3.
Blå kurva. DerTime = 20s. Filtrerad D-del DerGain = 3.
En framkopplingssignal, Bias , kan inkluderas i algoritmen.
Integrationen kan kopplas från/till.
EXEMPEL 2 för att visa skillnaden mellan PID, PI+D och I+PD vid återkopplat
system och stegförändring av börvärdet:
Utvärdet, OutVal begränsas till intervallet { MinOut , MaxOut }.
Stötfri omkoppling AUTO / MANUAL.
För regulatorns manövrering och inställning finns två objektbilder bl. a.
innehållande ett tidsdiagram med ärvärde, börvärde och utsignal.
@image orm_pid_4.png
@h1 Funktion
@image orm_pid_1.gif
@image orm_pid_2.gif
I+PD börjar sakta integrera upp styrsignalen vid stegändring.
PI+D ger ett stegsvarsom medför att vi får en snabbare reglering till nya
börvärdet.
PID ger 'bakvänt' resultat. P ger ca 30 % upp, D ger en spik på ca 90 % Totalt ca
135 % Regulatorn bottnar i 100 % utsignal, och när vi sedan tar bort D-spiken på
90 % får regulatorn börja om från 10 % utsignal.
@h1 Exempel
......
......@@ -185,4 +185,14 @@
101111 cs xtt Chinese characters, UTF-0 char coding of language and textfiles.
101122 cs xtt Xtt bugfix, xtt started with -s (select opplace) didn't load the eventlist.
101123 cs ge Ge confirm, bugfix in close graph.
101203 cs xtt Xtt eventlist, ReturnText was not shown in return events.
\ No newline at end of file
101203 cs xtt Xtt eventlist, ReturnText was not shown in return events.
101215 cs ge Ge plant navigator bugfix, unselect didn't remove global selection.
101220 cs ge Ge subgraph for limit switch added.
110112 cs xtt Operator logging, logging and replay of ge graph events implemented.
110114 cs ge Glow and flow widgets destructor fix, event timer fix.
110119 cs ge Ge subgraph camera added.
110119 cs xtt Language translationfiles, include statement added.
110120 cs ge Ge Move dynamic, different move and scale factors for x and y direction.
110120 cs ge wb_ge, execution of wtt initfile to get history log enable/disable setup added.
110121 cs xtt Languages zh_cn and fr_fr added.
110121 rk rtmon Runtime Monitor, problem with restart timeout fixed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment