Re: [foxboro] Operator Message Interface (OMI)

  • From: "Johnson, Alex P \(IPS\)" <alex.johnson@xxxxxxxxxxxxxxxx>
  • To: <foxboro@xxxxxxxxxxxxx>
  • Date: Fri, 15 Jun 2007 13:55:16 -0400

Re: 32 character limit on SN00xx

It comes from the fact that the ICC allows only 32 characters in this
field, but as Tom points out the actual string length is 80 characters.

Once upon a time, I build a DM graphic that showed 255 characters - the
maximum for an OM string type variable - and connected it to .SN0001.
When I raised the display, the DM crashed and restarted and crashed and
restarted and <well you get the picture>.

At that time, a restarted DM would raise whatever display was in $ST0
when it restarted after a failure. Not an unreasonable decision unless
the display is what killed it.

Ah, the good old days....

Regards,

Alex Johnson
Invensys Systems, Inc.
10900 Equity Drive
Houston, TX 77041
713.329.8472 (voice)
713.329.1700 (fax)
713.329.1600 (switchboard)
alex.johnson@xxxxxxxxxxxxxxxx

-----Original Message-----
From: foxboro-bounce@xxxxxxxxxxxxx [mailto:foxboro-bounce@xxxxxxxxxxxxx]
On Behalf Of Tom VandeWater
Sent: Friday, June 15, 2007 3:36 PM
To: foxboro@xxxxxxxxxxxxx
Subject: Re: [foxboro] Operator Message Interface (OMI)

Joe,
I understand your confusion.  The documents all the way to Ver. 8.2 do
say the maximum string size for SN0001 - SN0010 is 32 characters.  Pay
no attention to that.  It is wrong!  In fact, if you look at Foxboro's
EXC block detail display and pick the STRING overlay you can see that
Foxboro allowed for 71 characters to be displayed.  I always thought
the max was 60 characters so I decided to edit a sequence and see how
many characters would successfully compile.  I found out that it will
handle exactly 80.  81 gives a compiler error like "String too long"
or something like that.

My previous ramblings may not have been clear about how you could
implement something similar to the OMI using a sequence and an SN00XX
string.  Build an IND sequence block named TOMTEST and copy the code
below:

INDEPENDENT_SEQUENCE

USER_LABELS
{*************************************************}

CONFIRM    : BI0001; {PULSE BI0001 TO CONFIRM MESSAGE READ}

HOLD_MSG   : BO0001; {WHEN TRUE WAITING FOR CONFIRM TO DISPLAY NEXT MSG}

MSG_TRIGGER: II0001; {AS II0001 CHANGES SN0001 CHANGES IF NOT HOLD_MSG}
BROTHERS   : II0002; {DEMONSTRATION OF AN INTEGER INSERTED IN SN0001}
SISTERS    : II0003; {DEMONSTRATION OF AN INTEGER INSERTED IN SN0001}

MY_NAME    : SN0009; {DEMONSTRATION OF A STRING INSERTED IN SN0001}

STATEMENTS

<<BEGIN_BLOCK>>

MY_NAME :=3D "TOM VANDEWATER";
BROTHERS :=3D 5;
SISTERS  :=3D 4;

IF (II0001 =3D 0) THEN
   SN0001 :=3D "CHANGE THE SEQUENCE BLOCKS .II0001 PARAMETER TO ONE TO
SEE MY NAME";

ELSEIF (II0001 =3D 1) THEN
   SN0001 :=3D "MY NAME IS ",MY_NAME," AND I LIVE IN INDIANA";

ELSEIF (II0001 =3D 2) THEN
   SN0001 :=3D "I HAVE ",BROTHERS," BROTHERS AND ",SISTERS," SISTERS";

ELSEIF (II0001 =3D 3) THEN
   SN0001 :=3D "AGAIN I HAVE ",II0002," BROTHERS AND ",II0003," SISTERS";

ELSEIF (II0001 =3D 4) AND NOT (HOLD_MSG) THEN
   SN0001 :=3D "THIS IS THE MESSAGE THAT APPEARS WHEN II0001 EQUALS FOUR";
   HOLD_MSG :=3D TRUE;

ELSEIF (II0001 =3D 5) AND NOT (HOLD_MSG) THEN
   SN0001 :=3D "THIS IS THE MESSAGE THAT APPEARS WHEN II0001 EQUALS FIVE";
   HOLD_MSG :=3D TRUE;

ELSEIF (II0001 =3D 6) AND NOT (HOLD_MSG) THEN
   SN0001 :=3D "THIS IS THE MESSAGE THAT APPEARS WHEN II0001 EQUALS SIX";
   HOLD_MSG :=3D TRUE;

ENDIF;

IF (CONFIRM) AND (HOLD_MSG) THEN
   HOLD_MSG :=3D FALSE;
ENDIF;

WAIT 1;

GOTO BEGIN_BLOCK;

ENDSEQUENCE

create a graphic text place holder such as:

123456789012345678901234567890123456789012345678901234567890
OR
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

In the Display Configurator select the text string and configure using
contents <<
In the Path name: field enter
CMPD:TOMTEST.MSGNO
Using the compound and sequence block name you created for the code.
Select Connection to Text
In the Parameter field enter:
.SN0001

You could create a graphic numeric entry field on the same graphic so
you could change the value of .II0001 and watch the .SN0001 string
change.

If you create a CONFIRM button that becomes visible when .BO0001 is
true and pulses .BI0001 to 1 you will have it all.  Using and
understanding this simple code should give you an idea of what you can
do.

Hope this is helpful.

Tom VandeWater
Control Systems Developer/Analyst
Dow Corning Corporation
Carrollton, KY   USA
 =

 =

_______________________________________________________________________
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=3Djoin
to unsubscribe:      mailto:foxboro-request@xxxxxxxxxxxxx?subject=3Dleave
 =




Confidentiality Notice:
The information contained in this electronic message and any attachment(s) =
to this message are intended for the exclusive use of the recipient(s) and =
may contain confidential, privileged or proprietary information. If you are=
 not the intended recipient, please notify the sender immediately, delete a=
ll copies of this message and any attachment(s). Any other use of the E-Mai=
l by you is prohibited.


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