M&M FDT 1.2.1 Online Specification
 4.2.2 DTM State Machine


Interfaces and Methods   -   Schemas   -   FDT Specification   -   Quicklinks   -   Abbreviations

Up to FDT Specification

4.1 Overview of the FDT interfaces
4.2 FDT Objects
4.2.1 FDT Object Model
4.2.2 DTM State Machine
4.10 General Concepts
4.10.1 Task Related FDT Interfaces
4.10.2 Return Values of Interface Methods
4.10.3 Dual Interfaces
4.10.4 Unicode
4.10.5 Asynchronous vs. Synchronous Behavior
4.10.6 ProgIds
4.10.7 Slave Redundancy
4.10.8 Field Bus Scanning and DTM Assignment

4.2.2 DTM State Machine

The following state machine shows the different states of a DTM.


Figure 4 State machine of a DTM

The table below defines the interfaces of a DTM which can be used by a Frame Application at the shown states.

Interface / Method upnew creatednew enabledexisting createdrunningconfiguredgoing offlineonlinegoing onlinedestroyedcommunication setzombie
IPersistXXX                        

    InitNew()

 X                     (X)

    Load()

 X                     (X)

    Save()

           X  X  X  X    X  
IDtm                        

    Environment()

   X    X                

    InitNew()

     X                  

    Config()

         X              

    SetCommunication()

           X            

    ReleaseCommunication()

                     X  

    PrepareToDelete()

           X            

    PrepareToRelease()

     X      X        X    

    SetLanguage()

     X    X  X          X  

    InvokeFunctionRequest()

           X  X  X  X    X  

    PrepareToReleaseCommunication()

             X  X  X    X  

    PrivateDialogEnabled()

           X  X  X  X    X  

    GetFunctions()

         X  X  X  X  X    X  
IDtm2                        

    Environment2()

   X    X                

    SetSystemGuiLabel()

     X    X  X  X  X  X    X  
IDtmActiveXInformation          X  X  X  X  X    X  
IDtmApplication            X  X  X  X    X  
IDtmChannel          X  X  X  X  X    X  
IDtmDocumentation            X  X  X  X    X  
IDtmDiagnosis            X  X  X  X    X  
IDtmInformation      X    X  X  X  X  X    X  
IDtmInformation2      X    X  X  X  X  X    X  
IDtmImportExport            X            
IDtmOnlineDiagnosis                X  X    X  
IDtmOnlineParameter                X  X    X  
IDtmParameter            X  X  X  X    X  
IDtmHardwareIdentification              X  X  X    X  
IFdtCommunicationEvents              X  X  X    X  
IFdtCommunicationEvents2              X  X  X    X  
IFdtEvents          X  X  X  X  X    X  
IFdtChannel          X  X  X  X  X    X  
IFdtChannelActiveXInformation          X  X  X  X  X    X  
IFdtChannelSubTopology                        

     OnAddChild()

         X  X  X  X  X    X  

     OnRemoveChild()

         X  X  X  X  X    X  

     ScanRequest()

               X  X    X  

     ValidateAddChild()

         X  X  X  X  X    X  

     ValidateRemoveChild()

         X  X  X  X  X    X  
IFdtChannelSubTopology2                        

     SetChildrenAdresses()

         X  X  X  X  X    X  
IFdtChannelScan                        

     ScanRequest()

               X  X    X  

     CancelAction()

               X  X    X  
IFdtCommunication                        

     Abort()

             X  X  X    X  

     ConnectRequest()

             X  X  X    X  

     DisconnectRequest()

             X  X  X    X  

     TransactionRequest()

             X  X  X    X  

     GetSupportedProtocols()

           X  X  X  X    X  

     SequenceBegin()

             X  X  X    X  

     SequenceStart()

             X  X  X    X  

     SequenceEnd()

             X  X  X    X  
IFdtFunctionBlockData            X  X  X  X    X  
IDtmSingleInstanceDataAccess                        

     GetItemList()

           X  X  X  X    X  

     Read()

           X  X  X  X    X  

     Write()

           X  X  X  X    X  
IDtmSingleDeviceDataAccess                        

     CancelRequest()

             X  X  X    X  

     ItemListRequest()

           X  X  X  X    X  

     ReadRequest()

               X  X    X  

     WriteRequest()

               X  X    X  

Remark: At the Zombie State not all DTMs must support reload instance via IPersistXXX interfaces, e.g. DTMs written in Visual Basic.

Remark concerning the transition between states and methods with asynchronous behavior: The call of methods, which are defined with an asynchronous behavior (e.g. PrepareToRelease()) will start the transition. The related end state will be reached, when the according method was called (e.g. OnPreparedToRelease()).

Remark concerning the transition between states in case of errors: If the method, which leads to the transition between states, fails (e.g. return value is FALSE or a COM error appears), the state is left unchanged.

The table below defines the interfaces of a Frame Application which can be used by a DTM (starting from FDT version 1.2.1) at the shown states. A Frame Application must be aware that after IDtm:Environment() an older DTM may call any container interface method.

Interface / Method up new created new enabled existing created running configured going offline online going online destroyed communication set zombie
IFdtContainer
     GetXmlSchemaPath() X X X X X X X X
     LockDataSet() X X X X X X
     SaveRequest() X X X X X X
     UnlockDataSet() X X X X X X
IDtmEvents
     OnApplicationClosed() X X X X X X
     OnDownloadFinished() X
     OnErrorMessage() X X X X X X X X
     OnFunctionChanged() X X X X X X
     OnChannelFunctionChanged() X X X X X X
     OnInvokedFunctionFinished() X X X X X X
     OnNavigation() X X X X X
     OnOnlineStateChanged() X X X X
     OnParameterChanged() X X X X X X
     OnPreparedToRelease() X
     OnPreparedToReleaseCommunication() X X X X
     OnPrint() X X X X X X
     OnProgress() X X X X X
     OnScanResponse() X
     OnUploadFinished() X
IDtmAuditTrailEvents X X X X X
IFdtActiveX X X X X X X
IFdtActiveX2 X X X X X X
IFdtBulkData X X X X X X X
IFdtDialog X X X X X X
IFdtTopology X X X X X
IDtmSingleDeviceDataAccessEvents
     OnItemListResponse() X X X X X
     OnDeviceItemListChanged() X X X X X
     OnReadResponse() X X X
     OnWriteResponse() X X X
IDtmSingleInstanceDataAccessEvents X X X X X


© by M&M Software GmbH, parts of this website taken from FDT Interface Specification Version 1.2.1, © by FDT Group, AISBL.
This website is published for support of M&M products as granted in license conditions, chapter 2.1.
Last updated 2015-02-05 15:17
Email: FDT Technical Support Line.