[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference varese::basestar_open

Title:BASEstar Open Multiplatform Application Framework
Notice:Kit pointers: see topic 3
Moderator:VARESE::CORBETTA
Created:Tue Oct 02 1990
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:607
Total number of notes:1971

574.0. "Tip: how to monitor VMD conn. status" by IMPERO::SERRA (Volumeappalla!) Tue Mar 11 1997 10:54

 A common example of B* application is a program that reads/writes data
 from/to a PLC in solicited way.
 Let's say we have the following objects:

	create protocol_profile XXX -applprof ...
	create vmd PLC -dvm_access "yyy":XXX ...
	create named_variable PLC.VAR -datatype INTEGER_32 ...
	
	create device_data_point DDP -datatype INTEGER_32 \
               -device_access RDWR -update_policy SOLICITED \
	       -access_policy ALWAYS

 and a program which issues bstr_data_point_get_value() and 
 bstr_data_point_put_value() on DDP.

 It is a good practice for such an application to "monitor" the connection
 status with PLC and to read/write DDP's value only when the connection is
 established, just to avoid issuing calls that will surely fail.
 
 The connection status is already made available by B*, thus all the application
 has to do is get it, i.e. by means of events.

 The following additional objects are needed:

   create event LINK_STATUS -parameter ( BOOLEAN )
   create enbox ZZZ ...
   add subscription event LINK_STATUS ZZZ

   create filter LINK_DOWN \
     -expression (#S BIT_AND C_LINK_DOWN) AND (NOT (#OS BIT_AND C_LINK_DOWN))

   create filter LINK_UP \
     -expression (NOT (#S BIT_AND C_LINK_DOWN)) AND (#OS BIT_AND C_LINK_DOWN)

   create trigger LINK_DOWN -data_point DDP -filter LINK_DOWN \
     -trigger_evaluation ON_STATUS_CHANGE \
     -event LINK_STATUS -eve_param ( FALSE )

   create trigger LINK_UP -data_point DDP -filter LINK_UP \
     -trigger_evaluation ON_STATUS_CHANGE \
     -event LINK_STATUS -eve_param ( TRUE )

 The application program receives event notifications from the ZZZ enbox;
 when the LINK_STATUS event is received, its parameter value will tell what
 the new connection status with PLC is : TRUE=conn.up, FALSE=conn.down.
 This value can be stored in a program's global variable that will be tested
 before attempting to any bstr_data_point_get/put_value() call:

	if( connection_up )
	  sts = bstr_data_point_get_value( ... );
        else
	  printf("Cannot read from PLC: connection is down\n");



 NOTE: the LINK_STATUS event can be trigger by any device_data_point 
       associated to any variable belonging to PLC.
       
    
T.RTitleUserPersonal
Name
DateLines
574.1Works only if the DAS handles link failureAMER::MORETTIThe black sheepWed Mar 12 1997 09:3614
    Ciao Beppe,
    
    what you are suggesting works fine if the DAS handles correctly the
    connexion and deconnexion with the VMD and/or if the protocol allows
    that kind of operation.
    This is true for MMS,H1,AP and others but is not true for JBUS or
    ETHWAY.
    Maybe there should be a common way to write a DAS so that the
    application can handle the lost of a connexion like you are
    explaining.
    
    regards
    
    maurice