Re: [foxboro] Splitted range PID anti windup

I've=20not=20seen=20that=20before=20-=20INS=20and=20TSTB=20-=20very=20usef=
ul=20for=20combining
initialisation=20status=20from=20two=20BCALC=20signals=20-=20that's=20grea=
t.

We=20had=20a=20split-range=20implementation=20similar=20to=20this,=20using=
=20the=20HOLIND
and=20LOLIND=20to=20determine=20which=20output=20was=20on=20control.=20

However=20we=20ran=20into=20problems=20with=20this=20approach=20on=20reboo=
t=20events.=20The
first=20cycle=20after=20reboot,=20when=20the=20AOUT.INITO=20is=20being=20a=
sserted,=20the
AOUT.HOLIND=20and=20LOLIND=20outputs=20are=20not=20updated.=20This=20means=
=20that=20in=20the
second=20cycle,=20the=20CALC=20block=20upstream=20of=20the=20AOUTs=20can't=
=20work=20out=20which
valve=20is=20on=20control,=20and=20cannot=20therefore=20build=20a=20valid=20=
BCALCO=20value=20for
the=20upstream=20controller.=20

We=20ended=20up=20reversing=20the=20split-range=20calc=20for=20each=20AOUT=
.BCALCO=20value,
and=20combining=20the=20two=20arithmetically=20to=20come=20up=20with=20a=20=
single=20BCALCO
that=20would=20always=20be=20valid.

Con


-----Original=20Message-----
From:=20Fletcher,=20Justin=20[mailto:justin.fletcher@xxxxxxxxxxxxxxxx]=20
Sent:=20Friday,=2024=20December=202004=208:23=20PM
To:=20'foxboro@xxxxxxxxxxxxx'
Subject:=20Re:=20[foxboro]=20Splitted=20range=20PID=20anti=20windup


The=20.FBK=20parameter,=20used=20for=20integral=20action,=20when=20not=20c=
onnected=20it
defaults=20to=20one=20of=20PIDXE.OUT/.BCALCI=20(as=20you=20know=20causing=20=
the=20windup)=20I
suspect=20that=20you=20have=20no=20connection=20to=20the=20BCALCI.=20=20A=20=
more=20elegant
method=20is=20to=20pass=20the=20controller's=20(PIDXE)=20.FBK=20parameter=20=
the
AOUT.BCALCO=20which=20it=20is=20currently=20controlling=20and=20so=20remov=
ing=20all
windup.=20=20However,=20this=20requires=20some=20detailed!!!=20CALCA=20blo=
ck=20steps=20in
the=20backward=20path=20of=20the=20AOUTs=20to=20the=20PIDXE.


I've=20attached=20params=20of=20a=20working=20block=20-=20you=20can=20see=20=
the=20"...detailed
CALCA=20block=20steps"=20Hope=20your=20brain=20doesn't=20melt!=20=20This=20=
was=20a=20PIDA=20block
example=20where=20the=20AOUT=20blocks=20A=20&=20B=20where=20used=20for=20t=
he=200-50%=2050-100%
split=20using=20the=20AOUT.MSCALE=20and=20.BIAS.=20=20

The=20Final=20operation=20of=20the=20loop=20is=20simple,=20and=20has=20bee=
n=20designed=20to=20be
such,=20each=20valve=20AOUT=20block=20can=20be=20placed=20in=20manual=20at=
=20any=20time=20and=20the
controller
(PIDA)=20will=20attempt=20to=20control=20via=20the=20AOUT=20block=20in=20'=
AUTO'.=20=20The
controller=20will=20track=20AOUT=20block=20A=20or=20B=20when=20both=20are=20=
available=20(e.g.
not=20manual)=20and=20within=20their=20controllable=20range.=20The=20valve=
=20which=20is
selected=20for=20the=20PIDA=20tracking=20is=20that=20which=20has=20been=20=
controllable=20for
the=20longest=20period.=20Therefore=20on=20bringing=20the=20second=20AOUT=20=
B=20block=20into
AUTO=20will=20not=20cause=20a=20bump=20to=20AOUT=20A=20while=20it=20contin=
ues=20to=20control,=20the
rate=20at=20which=20AOUT=20B=20reaches=20the=20PIDA.OUT=20value=20and=20en=
ters=20the=20control
scheme=20is=20based=20on=20the=20.BTIME=20filter=20time=20constant=20of=20=
AOUT=20B.

PARAM=09VALUE
DESCRP=09PIDA=20BCALCI,FBK=20=20=20AND=20INITI=20CALC
LOOPID=090783_SPLIT_RANGE_1
M03=091.0
MA=091
PERIOD=092
PHASE=091
STEP01=09AND=20BI01=20BI02=20;=20BOTH=20OUTS=20INITIALISING
STEP02=09OUT=20BO01=20;=20GENERATE=20'CALCA.INITO'=20OUTPUT
STEP03=09AND=20BI04=20BI06=20;=20OUT_A/B=20AT=20LOW=20LIMIT
STEP04=09AND=20BI01=20BI06=20;=20OUT_A=20MAN=20&=20OUT_B=20LOW=20LIM
STEP05=09AND=20BI02=20BI04=20;=20OUT_B=20MAN=20&=20OUT_A=20LOW=20LIM
STEP06=09OR=203
STEP07=09OUT=20BO02=20=20=20=20=20=20;=20'CALCA.LOLIND'=20OUTPUT
STEP08=09AND=20BI03=20BI05=20;=20OUT_A/B=20AT=20HIGH=20LIMIT
STEP09=09AND=20BI01=20BI05=20;=20OUT_A=20MAN=20&=20OUT_B=20HI=20LIM
STEP10=09AND=20BI02=20BI03=20;=20OUT_B=20MAN=20&=20OUT_A=20HI=20LIM
STEP11=09OR=203
STEP12=09OUT=20BO03=20;=20'CALCA.HOLIND'=20OUTPUT
STEP13=09IN=20RI01=20=20;=20GET=20OUT_A.BCALCO
STEP14=09STM=20M01=20=20;=20SAVE=20TO=20MEMORY_1
STEP15=09IN=20RI02=20=20;=20GET=20OUT_B.BCALCO
STEP16=09STM=20M02=20=20;=20SAVE=20TO=20MEMORY_2
STEP17=09CST=20;=20CALC=20OUT_A/B=20TO=20TRACK
STEP18=09AND=20~BI05=20~BI06=20;=20OUT_B=20NOT=20AT=20LIMIT
STEP19=09AND=20~BI02=20=20=20=20=20=20=20;=20OUT_B=20CONTROLLING
STEP20=09OR=20BI01=20=20;=20=3D=20'OUT_A=20AVAILABLE'=20(FF-SET)
STEP21=09AND=20~BI03=20~BI04=20;=20OUT_A=20NOT=20AT=20LIMIT
STEP22=09AND=20~BI01=20=20=20=20=20=20=20;=20OUT_A=20CONTROLLING
STEP23=09OR=20BI02=20=20;=20=3D=20'OUT_B=20AVAILABLE'=20(FF-RESET)
STEP24=09FF=20=20=20=20=20=20=20;=20LATCH=20LAST=20HEALTHY=20OUT
STEP25=09ADD=20M03=20=20;=20ADD=20MEMORY=20BIAS=20(+1)
STEP26=09STM=20M04=20=20;=20STORE=20MEMORY=20POINTER=20(1,2)
STEP27=09CST=20;=20BOTH=20OUTS=20LIMITING=20(HI=20OR=20LO)
STEP28=09OR=20BI03=20BI04=20;=20OUT_A=20LIMITING=20HI=20OR=20LO
STEP29=09OR=20BI05=20BI06=20;=20OUT_B=20LIMITING=20HI=20OR=20LO
STEP30=09AND=202=20=20=20=20=20;=20WHEN=20BOTH=20OUTS=20LIMITING
STEP31=09AND=20~BO01=20;=20AND=20BOTH=20CONTROLLING
STEP32=09BIF=2035=20=20=20=20;=20IF=20OUTS=20NOT=20LIMITING=20BRANCH
STEP33=09IN=20RI03=20=20=20;=20CNTRL=20TRACKS=20ITSELF
STEP34=09GTO=2036=20=20=20=20;=20THIS=20ALLOWS=20INTERGRAL=20ACTION
STEP35=09LACI=20M04=20=20;=20GET=20OUT_A/B=20.BCALCO
STEP36=09OUT=20RO01=20=20;=20PIDA.BCALCI=20&=20.FBK=20PARAMETERS
STEP37=09IN=20M04=20=20=20=20;=20POINTER=20TO=20RI01/RI02
STEP38=09PRI=20RO01=20=20;=20PROPAGATE=20UPSTREAM=20INIT=20BITS
STEP39=09CST=20;=20HONOR=20CONDITIONAL=20INITIALISATION
STEP40=09INS=20RI01=20;=20READ=20OUT_A=20BCALCO=20STATUS
STEP41=09TSTB=206=20=20=20;=20READ=20CONDITIONAL=20INITIALSE=20B
STEP42=09BIF=2045=20=20=20;=20IF=20NO=20RI01.INITC=20REQUESTED
STEP43=09IN=201=20=20=20=20=20;=20OUT_A.BCALCO=20(INITC=20REQUESTED)
STEP44=09PRI=20RO01=20;=20PROPAGATE=20UPSTREAM=20INITC=20BIT
STEP45=09INS=20RI02=20;=20READ=20OUT_B=20BCALCO=20STATUS
STEP46=09TSTB=206=20=20=20;=20READ=20CONDITIONAL=20INITIALSE=20BIT
STEP47=09BIF=2050=20=20=20;=20IF=20NO=20RI02.INITC=20REQUESTED
STEP48=09IN=202=20=20=20=20=20;=20OUT_B.BCALCO=20(INITC=20REQUESTED)
STEP49=09PRI=20RO01=20;=20PROPAGATE=20UPSTREAM=20INITC=20BIT
STEP50=09END

Connections=20required,

CALCA.RO01=09=20>=20PIDA.BCALCI
CALCA.RO01=09=20>=20PIDA.FBK
CALCA.BO01=09=20>=20PIDA.INITI


PIDA.OUT=09=20>=20AOUT.MEAS
PIDA.OUT=09=20>=20AOUT.MEAS
PIDA.OUT=09=20>=20CALCA.RI03


AOUT(A).BCALCO=09=20>=20CALCA.RI01
AOUT(B).BCALCO=09=20>=20CALCA.RI02
AOUT(A).INITO=09=20>=20CALCA.BI01
AOUT(B).INITO=09=20>=20CALCA.BI02
AOUT(A).LOLIND=09=20>=20CALCA.BI04
AOUT(B).HOLIND=09=20>=20CALCA.BI05
AOUT(A).HOLIND=09=20>=20CALCA.BI03
AOUT(B).LOLIND=09=20>=20CALCA.BI06




Justin


-----Original=20Message-----
From:=20foxboro-bounce@xxxxxxxxxxxxx=20[mailto:foxboro-bounce@xxxxxxxxxxxx=
g]
On=20Behalf=20Of=20Jaime=20Claramunt=20R.=20(Inforsa)
Sent:=20Thursday,=20December=2023,=202004=205:49=20PM
To:=20foxboro@xxxxxxxxxxxxx
Subject:=20[foxboro]=20Splitted=20range=20PID=20anti=20windup

Hi=20all,

I=20have=20a=20PID=20loop=20controlling=20a=20splitted=20range=20actuators=
,=20I=20mean,=20a
PIDXE=20block=20which=20.out=20goes=20to=202=20char=20funtions:=20one=20wi=
th=20in1=3D[0,=2050,
100%]:out1=3D[0,=20100,=20100%]=20=20and=20other=20with=20in2=3D[0,=2050,=20=
100%]:out2=3D[0,=200,
100%].

Sometimes=20the=20actuator=20connected=20to=20the=20second=20char=20(2)=20=
is=20closed
manually=20so=20we=20cannot=20count=20on=20it,=20so=20I=20connected=20a=20=
logic=20to=20pidxe=20HOLIM
to=20limit=20the=20.out=20at=2050%=20to=20avoid=20windup=20during=20this=20=
(50to100)=20range.=20So
it=20can=20"return"=20in=20good=20way=20from=20top.=20I=20have=20the=20fee=
ling=20it's=20not=20right.

Is=20the=20pidxe=20still=20calculating=20errors=20and=20compensations=20de=
spite=20HOLIM=20??
I=20have=20too=20heavy=20response=20fot=20this=20second=20actuator=20when=20=
is=20returned=20to
auto=20(on).=20Do=20you=20have=20some=20more=20"elegant"=20way=20to=20do=20=
it=20?

thanks
Jaime=20Claramunt
INFORSA
=20
=20
_______________________________________________________________________
This=20mailing=20list=20is=20neither=20sponsored=20nor=20endorsed=20by=20I=
nvensys=20Process
Systems=20(formerly=20The=20Foxboro=20Company).=20Use=20the=20info=20you=20=
obtain=20here=20at
your=20own=20risks.=20Read=20http://www.thecassandraproject.org/disclaimer=
.html
=20
foxboro=20mailing=20list:=20=20=20=20=20=20=20=20=20=20=20=20=20http://www=
.freelists.org/list/foxboro
to=20subscribe:=20=20=20=20=20=20=20=20=20mailto:foxboro-request@freelists=
.org?subject=3Djoin
to=20unsubscribe:=20=20=20=20=20=20mailto:foxboro-request@xxxxxxxxxxxxx?su=
bject=3Dleave
=20
=20
=20
_______________________________________________________________________
This=20mailing=20list=20is=20neither=20sponsored=20nor=20endorsed=20by=20I=
nvensys=20Process
Systems=20(formerly=20The=20Foxboro=20Company).=20Use=20the=20info=20you=20=
obtain=20here=20at
your=20own=20risks.=20Read=20http://www.thecassandraproject.org/disclaimer=
.html
=20
foxboro=20mailing=20list:=20=20=20=20=20=20=20=20=20=20=20=20=20http://www=
.freelists.org/list/foxboro
to=20subscribe:=20=20=20=20=20=20=20=20=20mailto:foxboro-request@freelists=
.org?subject=3Djoin
to=20unsubscribe:=20=20=20=20=20=20mailto:foxboro-request@xxxxxxxxxxxxx?su=
bject=3Dleave
=20

______________________________________________________________________
This=20email=20has=20been=20scanned=20by=20the=20MessageLabs=20Email=20Sec=
urity=20System.
For=20more=20information=20please=20visit=20http://www.messagelabs.com/ema=
il=20
______________________________________________________________________
 
 
_______________________________________________________________________
This mailing list is neither sponsored nor endorsed by Invensys Process
Systems (formerly The Foxboro Company). Use the info you obtain here at
your own risks. Read http://www.thecassandraproject.org/disclaimer.html
 
foxboro mailing list:             http://www.freelists.org/list/foxboro
to subscribe:         mailto:foxboro-request@xxxxxxxxxxxxx?subject=join
to unsubscribe:      mailto:foxboro-request@xxxxxxxxxxxxx?subject=leave
 

Other related posts: