Example Data Discriminator

The example below displays a minimalist discriminator for the standard Modicon driver. This code would typically be in a file in the application directory, and referenced in the SERVICES section of the application's AppMod.src root file.

[

    Discriminator Module; 

    Connect Module; 

    Root; 

    Name; 

    Port; 

]

Init [    { This module registers as the discriminator for tag MB01 }

    If \ModemManager\Started Main;  

    [ 

          Name = "MB01"; 

          Port = Scope(\Code, Name)\Port; 

          Root = Self; 

          \ModemManager\Register(Root, Name, 10); 

    ] 

]

Main [

]

{=================== ModiconDriver\Discriminator =====================}

{ This module pass in a buffer, return a Station ID if accept the call. The station address in the incoming message is inspected.   }

{ Return invalid if reject the call.       }

{====================================================================}

Discriminator

(

Buffer; 

)

Main [  

    If watch(1); 

    [ 

          IfElse(PickValid(GetByte(Buffer, 0) == Scope(\Code, Name)\Station, 0), 

          Return(Name), 

          { Else } 

          Return(Invalid) 

          ); 

    ] 

]

{ End of ModiconDriver\Discriminator }

{===================== ModiconDriver\Connect ======================= }

{ Returns the Workstation name of the driver server. Called by the Modem Manager to determine the machine name of the current server for this driver. }

{==================================================================== }

Connect

(

Station; 

Stream; 

)

Main [

    If watch(1); 

    [ 

          Return(WkStaInfo(0)) ; 

    ] 

]

{ End of ModiconDriver\Connect }