Re: [foxboro] String vs. Integer

  • From: Corey R Clingo <corey.clingo@xxxxxxxx>
  • To: foxboro@xxxxxxxxxxxxx
  • Date: Tue, 22 Mar 2011 12:03:35 -0500

Point of clarification, re: MSGNO (I have a potential string-reading 
application I'm formulating an approach to at the moment).

So this is incremented/changed every time any SN00xx parameter is written 
from in-block HLBL?  What about writes from external to the block?  The 
Integrated Control Block Descriptions docs don't make this explicitly 
clear, and Integrated Control Software Concepts doesn't mention MSGNO at 
all in the v 6.5 copy I have. 



"Johnson, Alex P (IOM)" <Alex.Johnson@xxxxxxxxxxxx>
"foxboro@xxxxxxxxxxxxx" <foxboro@xxxxxxxxxxxxx>
03/19/2011 01:29 PM
Re: [foxboro] String vs. Integer
Sent by:


There are many differences between the storage of scalar values and 
non-scalar (array) values. The two most significant relate to:

1) How they are stored in the CP
2) How their values are made available to other users

Value Storage
Scalar parameters, e.g., float, Boolean, integer, long, etc., are stored 
in the block. 

String parameters, e.g., SN0001 and DESCRP, are stored differently. The CP 
contains a string pool, a chunk of RAM dedicated to holding strings. 
Strings with the same text are stored once in the string pool. In this 
case, the block "hold" a pointer to that string in the string pool as 
opposed to holding the string itself.

To my knowledge this is the approach that has been used in all models of 
the CP.

Data Transfer
The OM's connected service (read/writes) works only on scalar data. For 
this reason string variables are not "change-driven."

Access to string data requires non-connected (get/set) calls on the OM. 
These calls are much slower and less efficient than change driven 
connections. "Change driven" read access is simulated by FV by allowing 
the user to specify a scalar variable to monitor and to force FV to get 
the value when the scalar value has a change reported. Typically, the 
parameter MSGNO is used to indicate that it is time to get a SNxxxx 
parameter and display it.

MSGNO Message Number indicates the number of the last message assigned to 
      user string parameter. It is incremented by one each time a message 
      assigned, to show updates of SN00xx on the detailed displays. If the
      parameter value reaches 2E31-1, the next message number is 0.

IIRC, AIM*Historian supports triggered reads of STRING parameters as well.

Generally, it is much "cheaper" to monitor scalar values (using read 
lists) than string values (using gets) because many more values (up to 
255) can be monitored at a time.

I don't know if this addresses your question, but, if not, please provide 
some details around what you are doing.

Alex Johnson
Invensys Operations Management
10900 Equity Drive
Houston, TX 77041
+1 713 329 8472 (desk)
+1 713 329 1600 (operator)
+1 713 329 1944 (SSC Fax)
+1 713 329 1700 (Central Fax)
alex.johnson@xxxxxxxxxxxx (current)
alex.johnson@xxxxxxxxxxxxxxxx (good until September 2010)

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
foxboro mailing list:   
to subscribe:         mailto:foxboro-request@xxxxxxxxxxxxx?subject=join
to unsubscribe:      mailto:foxboro-request@xxxxxxxxxxxxx?subject=leave

Other related posts: