User`s guide
250  Appendix D – i.LON SmartServer Software License Agreement 
void CUFPTfpmTempController::Initialize()] 
{] 
// Determine FB index by looking at one of the NVs name, [index] 
 char * nv_name = 
    (char *)nviTemp.GetDpPropertyAsString(FPM::Dp::cfgUCPTname); 
    // get NV name 
 // Get FB index number from name 
 char * tmp_name; 
 tmp_name = strtok(nv_name,"["); 
 tmp_name = strtok(NULL,"]"); 
 iFbNumber = strtol(tmp_name, NULL,10); // convert String to int 
 printf("UFPTfpmTempController[%i]::Initialize() \n",*iFbNumber); 
   //enter comment in work routine to indicate when nviTemp is changed 
void CUFPTfpmTempController::work() 
{ 
 if(Changed(nviTemp)) 
 { 
 printf("UFPTfpmTempController[%i]::Work()- nviTemp = 
 *iFbNumber, *nviTemp); 
 } 
} 
42. What is the difference between Local and Global FPM variables? 
Local variables are defined and used differently then global variables. 
•  FPM local variables are local to a FB instance. 
o  NVs and CPs are always local variables. 
o  A local integer variable named iFbNumber would be defined as: 
DECLARE_FB_INSTANCE_LOCAL(int, iFbNumber); // local variable 
Each FB instance will have its own iFbNumber that only it can read or write. 
•  FPM global variables are accessible by all FB instances. 
o  All FB instances for a FPM can read and write to this variable. 
o  FPM global variables are defined as normal C/CC+ variables and are used by all FB 
instances of the FPM. A global integer variable named iCount would be defined as: 
int iCount;  // global variable 
•  You should use local variables whenever the data is FB instance related (e.g., FB instance index 
number, state information, timer information). 
•  Always design your FPM assuming that it will be used with multiple FBs. 
•  If you see erratic behavior from a FB, this may mean that you are using a global variable when 
you should be using a local variable. 
•  See the Echelon Knowledge Base web site for examples. 
43. Can a FPM driver have NVs and CPs? 










