Pricing/Info    Download   
MENU 
 Home Products About Support Contact

SmartGridware® Java MMS Stack SDK

MMS Protocol Stack Java Software Development Kit for IEC 61850

Product Overview

The SmartGridware® Java MMS Stack SDK is a standalone platform-independent software development kit and API which implements the core message set from the Manufacturing Message Specification (MMS) required for implementation of most client and server MMS applications for IEC 61850. The API provides fine grained control over MMS messaging for protocol level application development. May be used to develop protocol test tools and simple query applications up to full functioned IEC 61850 client and server applications.


Product Features

 

Some of the general features of the SmartGridware® Java MMS Stack SDK are:

  • 100% Java (Java 1.4 SDK or newer, uses no JNI)
  • intuitive, easy to use API
  • Supports both client and server MMS application development
  • Supports both initiator/responder connection modes
  • Runs in the application space (no separate stack processes)
  • Inter-operable with all 3rd party OSI over RFC1006 based stacks
  • Includes the OSI stack, no 3rd party stack required

Supported Standards

 

The functionality provided by the SmartGridware® Java MMS Stack SDK is implemented in compliance with the following standards (click to view):



IEC 61850 Upper Layer Protocol Support

  • IEC 61850-8-1 Client/Server Services (MMS) (6.2.1)
  • IEC 61850-8-1 Client/Server A-Profile (6.2.2)
  • IEC 61850-8-1 TCP/IP T-Profile (RFC1006) (6.2.3)

Manufacturing Message Specification (MMS) Standards

  • ISO 9506-1: Manufacturing Message Specification - Service Definitions
  • ISO 9506-2: Manufacturing Message Specification - Protocol Definitions

OSI Stack and Lower Layer Standards

  • RFC 1006: OSI over TCPIP (CMIP/OSI over TCP/IP)
  • ITU-T X.214 | ISO/IEC 8072: OSI - Transport Service Definition
  • ITU-T X.224 | ISO/IEC 8073: OSI - Transport Protocol Specification
  • ITU-T X.215 | ISO/IEC 8326: OSI - Session Service Definition
  • ITU-T X.225 | ISO/IEC 8327: OSI - Session Protocol Specification
  • ITU-T X.216 | ISO/IEC 8822: OSI - Presentation Service Definition
  • ITU-T X.226 | ISO/IEC 8823-1: OSI - Presentation Protocol Specification
  • ITU-T X.217 | ISO/IEC 8649:   ACSE Service
  • ITU-T X.227 | ISO/IEC 8650-1: ACSE Protocol
  • ITU-T X.680 | ISO/IEC 8824-1..4: Abstract Syntax Notation One (ASN.1)
  • ITU-T X.690 | ISO/IEC 8825-1: ASN.1 Encoding Rules (BER/DER/CER)

MMS Stack Examples

 

The following examples show some common usage scenarios of the SmartGridware® Java MMS Stack API (click to view):



MMS Stack API Client Initialization and Connect

   // --
   // -- Create the MMS API
   // --
   MMSAPI mms_api = new MMSAPI();

   //-- uri format: 
   //  rfc1006://host[:port]/tsel/ssel/psel/ap-title/aeq[?auth={auth-str}
   String remote_uri = 
"rfc1006://" + host_port +
"/0x0001/0x0001/0x00000001/1,1,999,1,1/12" + "?auth=-user#me,-pass#mypass"; System.out.println("CONNECTING TO: " + remote_uri); // -- // -- connect to the remote MMS server // -- MMS mms = mms_api.connect(remote_uri);

MMS GetNameList Example

   List name_list = new Vector();

   // -- get the names of all LDs in the IED
   MMS_GetNameList_Req request = 
        new MMS_GetNameList_Req(ObjectClass.domain,
                                ObjectScope.vmdSpecific);


   do
   {
      // -- send the request
      MMS_GetNameList_PendingRequest pr = mms.send(request, 30);
	  
      // -- wait for the response and return it
      MMS_GetNameList_Rsp rsp = pr.rsp();
      
      // -- add names t
 	  name_list.addAll(rsp.getIdentifiers());
	        
      // -- returns a non-null request if isMore is true
      request = pr.newContinuationRequest(); 
   }
   while(request != null);
         

MMS Read Example

   // -- ObjectName target for LD/VariableName
   ObjectName obj_name = ObjectName.Domain("DynDevice", "LLN0$NamPlt");
 
   // -- create the MMS-Read request for the target LD/variable
   MMS_Read_Req read_req = new MMS_Read_Req(target);

   // -- send the request, 30 second timeout
   MMS_Read_PendingRequest pr = mms.send(read_req, 30);

   // -- block for and return the MMS-Read response
   MMS_Read_Rsp rsp = pr.rsp();

   // -- check for error
   if (!rsp.isResult())
   {
      // -- handle the error
      return;
   }
      
   // -- now get the actual Data instance from the response
   List<AccessResult> result_list = rsp.getAccessResultList();
   
   AccessResult result = result_list.get(0);
   
   Data data = result.getData();

   // -- Now you can access the data retrieved for tha variable	 
         

MMS GetDataDefinitions Example


   // -- Create the target object name
   ObjectName target = ObjectName.Domain("DynDevice1", "LLN0");

   // -- Create the request to get the data definitions
   MMS_GetVariableAccessAttributes_Req var_request =
                  new MMS_GetVariableAccessAttributes_Req(target);

   // -- send the request, block, and return the response
   MMS_GetVariableAccessAttributes_Rsp var_rsp = 
                         mms.send(var_request, 30).rsp();
      
   // -- check to verify valid result
   if (!var_rsp.isResult())
   {
      System.out.println("ERROR: " + var_rsp);
      return;
   }
      
   // -- TypeDesc structure contains the type definition
   TypeDesc type_desc = var_rsp.getTypeDescription();

   System.out.println(target + " == " + type_desc);
   
         

Platform Requirements

 

Java Platform Requirements:

  • Java 1.5: JDK 1.5 or newer

Operating System Requirements:

Any operating system which supports the Java versions listed in the Java Platform Requirements section above. Some of the operating systems commonly used with SmartGridware® products are:
  • Microsoft Windows (95,98,XP,NT,2000,7,8)
  • Linux (Redhat, etc)
  • Hewlett Packard HP-UX
  • Sun Solaris (SPARC & x86)
  • IBM AIX
  • Apple MacOS X

Hardware Requirements:

Minimum Hardware
  • Physical memory (RAM): 256MB
  • Disk space: 10MB (distribution package size)