A Device Builder component, implemented by 
means of a state machine, prepares the basic state 
values for the Process Objects. The state function of 
the Device Builder interacts with several 
components in a sequential way. Starting with the 
invocation of the measurement tasks, the application 
program, the visualisation and the host 
communication, interfaces of the respective 
components are used. The Process Object 
component plays a central role in the system. Every 
component has to evaluate the attributes of the 
handled process data objects to get information 
about the intended use, the type and the specific 
handling of the values. 
3.2  Implementation Issues 
Based on the system modelling and the demanded 
requirements, a few basic conditions have to be 
defined. One decision concerns the usage of an 
operating system, another one the selection of the 
appropriate programming language.  
In order to meet economical aspects and 
based on experiences from former projects, a 
decision was made not to use an operating system. 
Supported by the fact that the given requirement 
does not need operating system support like e.g. file 
system, network stack or multitasking, lower 
memory requirements have been achieved. The real 
time aspect in this context has already been solved in 
a former project with the implementation of the 
measurement tasks based on interrupt driven 
transmitter routines.  
The second question concerning the 
programming language was solved with the 
selection of the used microprocessor for 
economical/technical reasons. As the development 
platform of this microcontroller (Keil, 2007) 
supports only the procedural language “C”, the 
object oriented design has to be implemented as a 
trade-off in a procedural way. Based on these 
decisions the main frame of the software was 
implemented as a sequential main()-procedure 
supported with interrupt driven routines for 
interfacing the process equipment (e.g. transmitters). 
To support distributed development and reuse for 
further projects, the graphical system for the LCD 
was implemented as separated procedures and linked 
by means of a software-interrupt (Graphic-BIOS). 
One of the central points in this context was the 
implementation of the Process Data Object class by 
means of arrays of C-structures. 
 
 
3.3  Procedural Object Class 
Implementation  
According to the language “C” the Process Data 
Object was implemented as C-structures. As there 
are a lot Process Data Objects in the system, a 
constant array of such structures was defined.  
Instead of instantiating objects, a constant array of 
structures was defined which represents the main 
definitions of the system’s behaviour. Every 
structure incorporates a name, a type and behaviour 
attributes for the process data. Based on the type of 
data a method, implemented e.g. as a function 
pointer, is responsible to access the respective value. 
Based on the requirement to extend the software at 
the customer site special process data objects were 
introduced with the object type 
OBJ-LINK, and 
OBJ-LAST. Due to this definition it was possible to 
connect several Process Data Object arrays in a way 
which is called Linked-List. By means of this inked 
object list it was possible to extend the basic 
definitions of the system behaviour with customer 
definitions at compile time or later in the field by 
means of structures located at the mobile memory 
card. A central procedure was introduced to search 
for an object in this linked list.  
Based on the object’s type in the structure this 
procedure was able to evaluate the 
OBJ-LINK type 
and to connect several arrays of structures. 
Depending on the start point of the search (e.g. 
system memory, customer memory, PC-Card card) a 
certain priority was achieved which is usable to 
override (customize) basic system definition.  
For instance with the introduction of new object 
definitions on the memory card, new process data 
readings or menu items are available in the process 
data system. The following code fragments are 
intended to give an impression of the structure 
definition and the outlook of the object list. 
 
typedef struct 
   {   
      NAME name; 
      union 
      {                              
         unsigned long c_li;  
         NVPARA * p; 
         FUNC_adr funct; 
         unsigned long * i; 
         float * df; 
         char * str; 
         NAME * nstr; 
      } data; 
      char d_name[MAX_DLEN+1]; 
      char d_unit[MAX_DLEN+1]; 
      char d_format[MAX_DLEN+1]; 
      char hierarchy[MAX_BRANCH+1]; 
      unsigned char hardware_mask; 
OBJECT LIST CONTROLLED PROCESS DATA SYSTEM
353