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