Having done a lot of HLBL programming I agree with AJ's rule except I would put in one corollary. When doing logic in calc blocks don't get too fancy. There are some pretty nifty instructions that are tough to follow and document if you are not a Boolean logic wizard. We had one of those wizards and it is a very trying experience to figure out what is going on. If there is any complexity we tend to go to sequence blocks where you can put extensive comments ( which don't take up space in your CP). However sequence blocks can get large and then begin to effect your ability to checkpoint, so keep an eye on your checkpoint file size. >Nick Steinbrecher > -----Original Message----- From: foxboro-bounce@xxxxxxxxxxxxx [mailto:foxboro-bounce@xxxxxxxxxxxxx] On Behalf Of Landry, Scott Sent: Thursday, September 30, 2010 11:28 PM To: foxboro@xxxxxxxxxxxxx Subject: Re: [foxboro] Sequence code Some tips from AJ, I save just about all of them. [alex.johnson@xxxxxxxxxxxxxxxx] Sent: Thursday, September 25, 2008 8:48 PM To: foxboro@xxxxxxxxxxxxx Subject: Re: [foxboro] One IND block per compound -- still true? I thought this would be a good time to review my implementation guidelines: There are a few rules that one should follow when designing a control system: * Do it in regulatory control blocks. (most efficient; least prone to problems) * If the regulatory control blocks can't do it, use a CALC block. (efficient, but must deal with BAD and coding errors; debugging is a pain) * If the CALC block can't do it, use a Sequence Block (pretty inefficient, but in the CP. Code/compilation relatively complex. Debugging is a pain.) * If you can't do it in a sequence block, reconsider if you need to do it. * If you must do it, see if you can do it in a shell (sh, ksh, csh, perl, etc.) script (easier to debug, easy to schedule, remember to use omgetimp and omsetimp to avoid broadcasts, remember to use show_params to check the IMPORT table) * If you can't do it in a script, reconsider doing it. * If you must do it, see if there is a 3rd party or Foxboro package that will do it. (Ask on the mailing list.) * If you must do it and can't find a package, write a program. If you are going to use HLBL, keep the following in mind: * 1 line of HLBL code is roughly the same load as an AIN block. * External OM variable references, e.g., :C:B.P when the compound is in a different CP, suspend the block for one full block period. Thus, 20 lines setting values will take 10s to execute if the PERIOD is 0.5s. * Internal block references don't suspend the block, but they are slower than you might expect and will have an impact on your loading if you have enough of them. * Remember that code runs until it hits a WAIT, WAITUNTIL, External Reference, or BPCSTM is reached. * Remember that if you don't loop you code back to the top (yes, with a GOTO), it will reach the end of the block and stop. * Remember that ACTIVE and MA must both be set to true for the block to run. Regards, Scott ________________________________________ From: foxboro-bounce@xxxxxxxxxxxxx [foxboro-bounce@xxxxxxxxxxxxx] On Behalf Of Whitworth, Terry [twhitwor@xxxxxxx] Sent: Thursday, September 30, 2010 10:13 PM To: foxboro@xxxxxxxxxxxxx Subject: [foxboro] Sequence code Looking for some help understanding and using sequence code. Is there documentation that explains this side of the I/A? Terry Whitworth GBP Process Control Group Morrilton,Ark 72110 501-354-9238 office# 501-589-7707 cell# text# twhitwor@xxxxxxx _______________________________________________________________________ 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 *** Confidentiality Notice: This e-mail, including any associated or attached files, is intended solely for the individual or entity to which it is addressed. This e-mail is confidential and may well also be legally privileged. If you have received it in error, you are on notice of its status. Please notify the sender immediately by reply e-mail and then delete this message from your system. Please do not copy it or use it for any purposes, or disclose its contents to any other person. This email comes from a division of the Invensys Group, owned by Invensys plc, which is a company registered in England and Wales with its registered office at 3rd Floor, 40 Grosvenor Place, London, SW1X 7AW (Registered number 166023). For a list of European legal entities within the Invensys Group, please go to http://www.invensys.com/legal/default.asp?top_nav_id=77&nav_id=80&prev_i d=77. You may contact Invensys plc on +44 (0)20 3155 1200 or e-mail reception@xxxxxxxxxxxxx This e-mail and any attachments thereto may be subject to the terms of any agreements between Invensys (and/or its subsidiaries and affiliates) and the recipient (and/or its subsidiaries and affiliates). _______________________________________________________________________ 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