Re: [foxboro] IND question

  • From: "Steinbrecher, Nick" <E.Steinbrecher@xxxxxxxxxxxx>
  • To: <foxboro@xxxxxxxxxxxxx>
  • Date: Mon, 1 Mar 2010 11:03:07 -0500

Dirk,

There is a delay of one BPC every time HLBL has to execute a reference
of the C:B.P construct.  One way around this is to pack the data in an
external block (MCIN) and read it into the IND block via an integer that
you can then treat as an array to evaluate all Boolean values in one
pass.  That should seed things up considerably.


>Nick Steinbrecher
>

-----Original Message-----
From: foxboro-bounce@xxxxxxxxxxxxx [mailto:foxboro-bounce@xxxxxxxxxxxxx]
On Behalf Of dirk.pauwels@xxxxxxxxxx
Sent: Monday, March 01, 2010 6:13 AM
To: foxboro@xxxxxxxxxxxxx
Subject: [foxboro] IND question

Hi list,
If I want to speed up a sequence processing time what are the
consequences 
if I tamper with PERIOD/BPCSTM?

I have problems with repeat until statements containing several if 
endif's. They're too slow..... If one of the conditions to end the
repeat 
(especially stop and hold_sw in the example)  becomes true it takes some

time before the repeat stmt ends. It seems the repeat statement has to
go 
through it's code before it checks the repeat conditions included in the

until line. How do I speed up this process and what are the
disadvantages?
For now I included the "stop" and "hold_sw" conditions in the if endif's

in the repeat statement (at mutiple instances) to detect it faster. It 
works more or less, but this also makes the statement longer. There has
to 
be a more orthodox way to do this....

I also have a similar problem with WAIT UNTIL statements, even if the 
conditions are true, the WAIT UNTIL takes a couple of sec's to process.
If 
there are a lot of them the sequence is very slow going through it's
code. 
I would expect the wait until to pass very quickly if the condition is 
true.

Ie: you'll notice I included the stop and hold_sw multiple times, to 
obtain a faster response. 

REPEAT
                pumped := beginweight_kettle - :'weight'.PNT;RO0002 := 
pumped;
                pumprate := ABS(:WEIGHT:K'kettle'PUMP_AIN.PNT);RO0012 :=

pumprate;
 
                IF ::TIMER7.POS_V1 THEN
                        II0008 := 1;
                        GOTO finished;
                ENDIF;
                IF hold_sw THEN
                        GOTO hold;
                ENDIF;
                IF stop THEN
                        II0008 := 2;
                        GOTO finished;
                ENDIF;
                IF :'pressP3'.HAI THEN
                        II0008 := 3;
                        GOTO hold;
                ENDIF;
                IF :'level'.BAD THEN
                        II0008 := 4;
                        GOTO finished;
                ENDIF;
                IF hold_sw THEN
                        GOTO hold;
                ENDIF;
                IF :'level'.HAI THEN
                        II0008 := 15;
                        GOTO finished;
                ENDIF;
                IF stop THEN
                        II0008 := 2;
                        GOTO finished;
                ENDIF;
                IF :'filterPT'.HAI THEN
                        II0008 := 16;
                        GOTO hold;
                ENDIF;
                IF :'temp' > hitemp THEN
                        II0008 := 5;
                        GOTO hold;
                ENDIF;
                IF hold_sw THEN
                        GOTO hold;
                ENDIF;
                IF ...
                ENDIF;
                IF stop THEN
                        II0008 := 2;
                        GOTO finished;
                ENDIF;
                IF ...
                ENDIF;
                IF hold_sw THEN
                        GOTO hold;
                ENDIF;
                IF ...
                ENDIF;
                IF hold_sw THEN
                        GOTO hold;
                ENDIF;
                IF stop THEN
                        II0008 := 2;
                        GOTO finished;
                ENDIF;
                ...

UNTIL ((:'weight'.PNT) < (endweight_kettle + stopweight)) OR stop OR 
hold_sw;
IF hold_sw THEN GOTO hold;
ELSE GOTO finished;
ENDIF;

Thanx

Ps: my appologies if I do not answer to some of the list's mails, I do
not 
seem to receive every posting  to the list for some odd reason.....

Dirk


 
 
_______________________________________________________________________
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:             //www.freelists.org/list/foxboro
to subscribe:         mailto:foxboro-request@xxxxxxxxxxxxx?subject=join
to unsubscribe:      mailto:foxboro-request@xxxxxxxxxxxxx?subject=leave
 
 
 
_______________________________________________________________________
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:             //www.freelists.org/list/foxboro
to subscribe:         mailto:foxboro-request@xxxxxxxxxxxxx?subject=join
to unsubscribe:      mailto:foxboro-request@xxxxxxxxxxxxx?subject=leave
 

Other related posts: