Re: [foxboro] IND question

  • From: tjvandew@xxxxxxxxx
  • To: foxboro@xxxxxxxxxxxxx
  • Date: Mon, 1 Mar 2010 14:49:02 +0000

Dirk,
    One thing I noticed in your code is some external references using 
:CMPD:BLK.PARAM.  I remember that making evaluations like that interrupt the 
sequence processing, almost the same as a WAIT .01.  Every time this happens 
the sequence has to pause a cycle to wait for the response to its request.  If 
you have several of them then there are several de facto WAIT STATEMENTS that 
have to be processed.  By connecting those values to RI000? Or BI000? And then 
referencing them in the code you can avoid this delay.
Cheers,
Tom Vandewater
Control Conversions, Inc.
Sent from my Verizon Wireless BlackBerry

-----Original Message-----
From: dirk.pauwels@xxxxxxxxxx
Date: Mon, 1 Mar 2010 12:12:37 
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: