Re: [foxboro] Tracking CP loading

  • From: "Weiss, Andreas" <Andreas.Weiss@xxxxxxxxxxxx>
  • To: <foxboro@xxxxxxxxxxxxx>
  • Date: Thu, 4 Jan 2007 01:30:56 -0600

>I like to re-visit stuff every so often in case someone figures out
something better.

Hi Brian,

trending of all <CP>:STATION.CPLOAD is fine.
It allows you to investigate changes due to stoping and starting a batch
process or after some engineering work.

I've installed also a weekly report that allows me reset cyclic all
counters and document the counters in another way. It helps to get an
general overview.

Both things are useful for different cases.

Regards,
Andreas


--

      Script: /opt/com/cpsta/bin/cpsta.ksh
      Station loading report as of: 2007-01-01.05:10:00
      last reset on:  2006-12-25.05:18:16
      IDLETM =3D Idle Time;  CUMOVR =3D Cmpnd/Blk Overruns; OMOVRN =3D =
OM
Overruns
      PIOE1R =3D FB Retries; PIOEFT =3D Fault Tolerant Output mismatches
      PIOEGB =3D Good->Bad FBM state changes; PP_NFD =3D Points NOT =
Found
      CPs Report
      -----------------------------------------------------------------
      CPLBUG   IDLETM    CUMOVR  OMOVRN   PIOE1R  PIOEFT PIOEGB PP_NFD
      E5415M     48.9        75   79          0       0       0   0
      E5417M     79.6         0    0          0       0       0   0


That script is based on the original cpsta version from the cassandra
site.
Should it be stored as another version on the cassandra site?=20

#!/bin/ksh
# set -x                             # Fuer Fehlersuche
# exec >$0.std 2>$0.err              # Ausgabeumlenkung zur Fehlersuche


#@(#) ________________________________________________________
#@(#)| usage: cpsta.ksh [options]                             |
#@(#)|                                                        |
#@(#)| Gibt den aktuellen Status der CP-Parameter zurueck.    |
#@(#)| Wird ein beliebiger Parameter mitgegeben, so werden    |
#@(#)| die Zaehler nicht zurueckgesetzt und der Output geht   |
#@(#)| nicht auf den Systemdruckre, sonder auf den Prompt.    |
#@(#)|                                                        |
#@(#)| 07.04.2006 Markus Werner  - V2.0                       |
#@(#)|________________________________________________________|


# Lokale Parameter
HOMEDIR=3D`dirname $0`                       # Homeverzeichnis
CONFIG_FILE=3Dcpsta.cfg                      # Name Konfigurations-Datei
DATE=3D$(date +"%Y-%m-%d.%H:%M:%S")          # =
Jahr-Monat-Tag.Std:Min:Sek
PATH_LOG=3D"/opt/com/cpsta/log"              # Pfad fuer Log-Dateien
LOGFILE=3D"$PATH_LOG/cpsta.log"              # Log-Datei
PATH_TMP=3D"/opt/com/cpsta/tmp"              # Pfad fuer Tmp-Dateien
TMPFILE=3D"$PATH_TMP/$DATE.$$.tmp"           # Tmp-Datei
PATH_DATA=3D"/opt/com/cpsta/data"            # Pfad fuer Daten-Dateien
DATAFILE=3D"$PATH_DATA/$DATE.$$.data"        # Daten-Datei
SORTFILE=3D"$PATH_DATA/$DATE.$$.sort.data"   # Zwischenablage zum
Sortieren
RESETFILE=3D"$PATH_DATA/reset.date"          # Datum des letzten Reset

AUTOUPDATE=3D"/opt/com/cpsta/bin/autoupdater.ksh"

cd $HOMEDIR
=20
# Lade Konfiguration
if [ ! -r $CONFIG_FILE ]
then
  echo "Kann Konfig-Datei $CONFIG_FILE nicht lesen"
  exit 1
fi
# $HOMEDIR muss davor geschrieben werden, da ansonsten
# das Script aus der crontab heraus nicht funktioniert!
. $HOMEDIR/$CONFIG_FILE

check_cp() # Funktion: Ermitteln, ob Station erreichbar
{
STAD=3D`/opt/fox/bin/tools/fist $1 | grep $1 |awk '{print $3}'`
if [ $STAD !=3D "found" ]
then
   # echo "CP is available...\c"
   flag=3D0
else
   echo "\n$1 is not available...\c"
   flag=3D1
fi
}

# =3D=3D=3D Hier gehts los mit dem Code
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

# Initialisierung und Pruefung von Vorbedingungen
if [ ! -d $PATH_LOG ]; then mkdir -p $PATH_LOG; fi
touch $LOGFILE; tail -$LOGLINES $LOGFILE > $LOGFILE.tmp; mv $LOGFILE.tmp
$LOGFILE

echo $(date +"%Y-%m-%d.%H:%M:%S") start >> $LOGFILE

if [ ! -r $AUTOUPDATE ]
then=20
  echo  $(date +"%Y-%m-%d.%H:%M:%S") Autoupdate nicht moeglich >>
$LOGFILE
else
  $AUTOUPDATE
  echo  $(date +"%Y-%m-%d.%H:%M:%S") Suche nach neuen Updates >>
$LOGFILE
fi

if [ ! -d $PATH_DATA ]; then mkdir -p $PATH_DATA; fi
if [ -r $PATH_DATA/*.data ]; then rm $PATH_DATA/*.data; fi

if [ ! -d $PATH_TMP ]; then mkdir -p $PATH_TMP; fi
if [ -r $PATH_TMP/*.tmp ]; then rm $PATH_TMP/*.tmp; fi

# Wurden Parameter mitgegeben? Dann auswerten.
NORESET=3D0
if [ "$1" ]; then  NORESET=3D1; fi

if [ ! -r $RESETFILE ]
then
  RESET=3D"no info"
else
  RESET=3D`cat $RESETFILE`
fi

# Aufsetzen der Header Daten
echo "" > $DATAFILE
cp /dev/null $SORTFILE

echo "Script: "$0 >> $DATAFILE
echo "" >> $DATAFILE
echo Station loading report as of:  $(date +"%Y-%m-%d.%H:%M:%S") >>
$DATAFILE
echo "               last reset on:  $RESET" >> $DATAFILE
echo "" >> $DATAFILE=20
echo "IDLETM =3D Idle Time;  CUMOVR =3D Cmpnd/Blk Overruns; OMOVRN =3D =
OM
Overruns" >> $DATAFILE
echo "PIOE1R =3D FB Retries; PIOEFT =3D Fault Tolerant Output =
mismatches" >>
$DATAFILE
echo "PIOEGB =3D Good->Bad FBM state changes; PP_NFD =3D Points NOT =
Found"
>> $DATAFILE
echo "\n                         CPs Report         " >> $DATAFILE
echo "-----------------------------------------------------------------"
>> $DATAFILE
echo "CPLBUG   IDLETM    CUMOVR  OMOVRN   PIOE1R  PIOEFT PIOEGB PP_NFD"
>> $DATAFILE

# Ermitteln der Stationen
sort /usr/fox/sp/hldb > $TMPFILE
CP10=3D`awk '$2=3D=3D"201" {print $1}' $TMPFILE`
CP30=3D`awk '$2=3D=3D"203" {print $1}' $TMPFILE`
CP40=3D`awk '$2=3D=3D"205" {print $1}' $TMPFILE`
CP60=3D`awk '$2=3D=3D"C101" {print $1}' $TMPFILE`
ABST=3D`awk '$2=3D=3D"204" {print $1}' $TMPFILE`
MOD2=3D`awk '$2=3D=3D"3002" {print $1}' $TMPFILE`
MOD=3D`awk '$2=3D=3D"3005" {print $1}' $TMPFILE`
FDG=3D`awk '$2=3D=3D"5002" {print $1}' $TMPFILE`

GET=3D/opt/fox/bin/tools/omgetimp
SET=3D/opt/fox/bin/tools/omsetimp

if [ $NORESET -eq 0 ]
then
  # Schleifenteil mit Ruecksetzen der Zaehler, da NORESET =3D 0
  echo $(date +"%Y-%m-%d.%H:%M:%S") Reset >> $LOGFILE
  for x in  $CP10 $CP30 $CP40 $CP60 $ABST $MOD2 $MOD $FDG
  do
    check_cp $x
    if [ $flag =3D "0" ]
    then
       $SET -v -i 0 "$x"_STA:STATION.LODPHS
       $SET -v -i 5 "$x"_STA:STATION.LODPER
       $SET -v -b TRUE "$x"_STA:STATION.LODSYN
       $SET -v -b TRUE "$x"_STA:STATION.LODSW
       sleep 6
       $GET "$x"_STA:STATION.IDLETM | awk '{ a=3D"'$x'"}{printf
"\n%-7s\t%5.1f",a,$3 }' >> $SORTFILE
       $GET "$x"_STA:STATION.CUMOVR | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.OMOVRN | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.PIOE1R | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.PIOEFT | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.PIOEGB | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.PP_NFD | awk '{printf "\t%3d",$3 }' >>
$SORTFILE
       $SET -v -b TRUE "$x"_STA:STATION.RSOMOV
       sleep 1
       $SET -v -b TRUE "$x"_STA:STATION.RESOVR
       sleep 1
       $SET -v -b TRUE "$x"_STA:STATION.PIORST
    fi
  done
  echo "" >> $SORTFILE
  sort $SORTFILE >> $DATAFILE
  echo $(date +"%Y-%m-%d.%H:%M:%S") Ausgabe auf $SYSALMP >> $LOGFILE
  lp -d $SYSALMP $DATAFILE
  echo $(date +"%Y-%m-%d.%H:%M:%S") > $RESETFILE
else
  # Schleifenteil ohne Ruecksetzen der Zaehler, da NORESET =3D 1
  echo $(date +"%Y-%m-%d.%H:%M:%S") kein Reset aber Ausgabe auf Prompt
>> $LOGFILE
  for x in  $CP10 $CP30 $CP40 $CP60 $ABST $MOD2 $MOD $FDG
  do
    check_cp $x
    if [ $flag =3D "0" ]
    then
       $GET "$x"_STA:STATION.IDLETM | awk '{ a=3D"'$x'"}{printf
"\n%-7s\t%5.1f",a,$3 }' >> $SORTFILE
       $GET "$x"_STA:STATION.CUMOVR | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.OMOVRN | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.PIOE1R | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.PIOEFT | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.PIOEGB | awk '{printf "\t%7d",$3 }' >>
$SORTFILE
       $GET "$x"_STA:STATION.PP_NFD | awk '{printf "\t%3d",$3 }' >>
$SORTFILE
    fi
  done
  echo "" >> $SORTFILE
  sort $SORTFILE >> $DATAFILE
  cat $DATAFILE
fi

echo $(date +"%Y-%m-%d.%H:%M:%S") end >> $LOGFILE

exit 0

 
 
_______________________________________________________________________
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: