Questions & Suggestions
I've got lots of useful (to me anyway) scripts for working with the Foxboro I/A system. The ones that are fairly well documented and tested (on my system) are listed below. If anyone wants to browse the rest, they are here. I am using AW51B1/WP51B1s running I/A ver 4.3 (recently upgraded from 4.1) so I can't tell you if these scripts will work on version 6 systems, AW70s or PWs. As with any program, please understand the effects it will have on your system before you run it. CPU loading and network traffic may be adversely affected by many programs (these included), especially on a heavily loaded system. Specifically, some of these scripts use "omget" and "omset" which do IPC broadcasts to get object manager data. On my small system this not a problem, but on a larger or more heavily loaded system this could cause problems. Any questions on what these scripts do or how they work, please email me -- firstname.lastname@example.org
cycle_disp.sh -- a Unix shell script to repeatedly cycle through a series of displays on a workstation, stopping when the operator selects a display. Uses pref and dmcmd commands. I put this together after an operator requested something to make one of his I/A workstations cycle through displays like his video system cycled through camera views. The script that does the work is cycle_disp.sh, just put it in an appropriate directory (I used /opt/scripts) on the WP or AW that you want the displays to cycle on. The display listing in the script is set to filter for FoxView files however it should work just as well for Display manager files without the filter as long as there are no non-display files in the directory (otherwise just use a list). In the script, change the DISPLAY_HOME and DISPLAY_TIME variables as appropriate . The other script, Cycle_Displays, can go in a pull-down menu directory as a pick to start the cycling. The script exits anytime an operator selects a display that is different from the one on the screen (via a pulldown menu or display pick).
index_points.script -- a Unix shell script to give a sorted list of all point connections made in your screen graphics. Uses find, sed, awk, and d_edit50 (the Foxboro Display Reporter and Connection Editor).
hist_maint.sh -- a Unix shell script that will give a series of reports helpful in maintaining your historian. Primary report generated gives a list of invalid historian points, a list of those invalid historian points also set up in reduction groups, a list of reduction group points not configured in the historian, and a list of valid historian points that are not used in reduction groups or user configured trends (ie., if I am not trending it or reducing it, do I need to collect it?). This script uses d_edit, dmpcfg, and omget (for point validation).
man_report -- a Unix shell script to give a shift report showing blocks in manual that are normally in auto and equipment with bypassed interlocks. Uses sed, grep, egrep, Foxboro's PSR (Process Summary Reporter) and a secondary script that performs a series of "omget" calls (retrieving the value of various Object Manager values). Quite site specific, but may be helpful in building something similar for your site.
save_alls.sh -- Save-alls should be done on a regular basis in the event of a hardware failure. This small shell script checks to see what CPs and AB stations you have on your system and then does a save-all of each to your hard drive. We have this scheduled in crontab to run each Sunday night (when no one is using the ICC) to supplement periodic save-alls to floppy. The save_all command opens an ICC session briefly on each station to do the save-alls.
xtools -- We were told early on that we could not use textedit and the command tool on our xterminals. This quickie script opens the openwindows tools you want on your xterminal (or on your PC running an emulator).
screenfix.script -- When we upgraded from I/a version 4.1 to 4.3 we ran into a few problems. One of the most notable was that some of our substitution lists didn't work right anymore. We had hundreds of substitution lists based on a few generic overlays for controlling motors and valves around the plant. They all used buttons with a "momentary contact" connection to a COUT block to start/stop motors or open/close valves. They all worked under 4.1, only some of them worked under 4.3. The only difference between the ones that worked and the ones that didn't appears to be in what sequence the generic overlay loaded the connected objects. Only the "momentary contact" connections were affected. We elected to build individual motor and valve graphic overlays as a workaround. Here's the script I wrote to do that. When run in a directory it will create individual graphics files based on the substitution lists in that directory.
Scripting with PERL -- The PERL programming language takes the power of shell tools such as grep, sed and awk and combines them with a high level programming language that is easy to learn and fast to use. PERL has sophisticated math and statistics functions, so it is easy to pull information from your DCS, perform sophisticated analysis, and send the results back to the DCS. Using PERL instead of writing shell scripts makes troubleshooting programs easier (no more pipes to trace through). Best of all, it's FREE. Note: If you install PERL from the binary at the Sun Freeware page below, you will likely get an "errno 28, no space left on device" if you use the normal pkgadd command. This is probably inadequate room in the /var partition to spool the installation files. See FAQ #14 at the Sun Freeware site for an easy workaround.
Foxboro and I/a Series are registered trademarks of The Foxboro Company.