Version: 1.0.1

PoF Simplified Extractor

A tool for pulling out the specified elements from a PowerOn Fusion database.

Extracting

Before you run the extractor, please make sure you have completed the configuration and are familiar with the command line arguments. You need to install java 11 (or higher) in order to run the PoF simplified extractor.

java [jvm options] -jar pof-simplified-extractor-current.jar [command line arguments]

example:

java -Xmx16g -Xms16g -Dfile.encoding=UTF-8 -jar pof-simplified-extractor-current.jar -s enmacdb -ewb \ewb\data -f
parameterexplanation
-Xmx16g -Xms16ggive the JVM 16GB of memory
-Dfile.encoding=UTF-8tell the JVM to use UTF-8 encoding
-s enmacdbchange the enmac database server to enmacdb
-ewb \ewb\datachange the ewb data path to /ewb/data
-fforce override any existing database for today

Command Line Arguments

usage: pof-simplified-extractor [-c <CONFIGURATION>] [-cdg] [-d <DATE>]
       [-dl] [-dt <DATABASE_TYPE>] [-ewb <PATH>] [-f] [-h] [-i <instance>]
       [-is] [-p <port>] [-s <SERVER>]

Extracts the simplified model out of a PowerOn Fusion server.

 -c,--conf <CONFIGURATION>             use the specified configuration
                                       file (DEFAULT: ./config.json).
 -cdg,--create-debug-geo               create a debug view of the
                                       schematic in the geo world
                                       (DEFAULT: false).
 -d,--date <DATE>                      use the specified date(yyyy-MM-dd)
                                       for the output extract directory
                                       structure (DEFAULT: Current local
                                       date).
 -dl,--detailed-log                    used to show a detailed messages
                                       for each warning collected in the
                                       summary outputs (DEFAULT: false).
 -dt,--database-type <DATABASE_TYPE>   the PowerOn Fusion database type
                                       (DEFAULT: ORACLE). One of [ORACLE,
                                       SQLSERVER].
 -ewb,--ewb-data-path <PATH>           export the EWB database into the
                                       specified data store (DEFAULT:
                                       ./data).
 -f,--force-data-overwrite             Overwrites any data found in the
                                       output extract path (DEFAULT:
                                       Program fails and warns you of the
                                       presence of files in the output
                                       path).
 -h,--help                             shows this help message.
 -i,--instance <instance>              the instance/database name to use
                                       for the network extraction
                                       (DEFAULT: nms for ORACLE, none for
                                       SQLSERVER).
 -is,--integrated-security             enable integrated security for the
                                       database connection. (DEFAULT:
                                       false).
 -p,--port <port>                      the port number used to connect to
                                       the database (DEFAULT: 1521 for
                                       ORACLE, 1433 for SQLSERVER).
 -s,--server <SERVER>                  the PowerOn Fusion server to use
                                       for the network extraction
                                       (DEFAULT: localhost).

NOTE:

To use integrated security with SQLServer you need to have a copy of the Microsoft authentication DLL mssql-jdbc_auth-#.#.#.x64.dll installed on your system, or in the same directory as the JAR. If you do not have a copy you can download it from Maven Central.

Configuration

PoF Attributes

You will need to create four scalar attributes on each node you wish to include in the final extract:

TypePurposeExample Name
LogicalControls if the node is included in the extractInclude in Model
Char 32Defines the CIM class used to represent the nodeCIM Class
Char 32Defines the diagram styling of the nodeDiagram Object Style
Int 32Defines the standard types lookup id used for configuration data for the node if required.Sincal Element ID

The CIM class attribute should be configured to be a lookup with the following values:

  • AcLineSegment
  • Breaker
  • Disconnector
  • EnergyConsumer
  • EnergySource
  • Fuse
  • Jumper
  • Junction
  • LinearShuntCompensator
  • LoadBreakSwitch
  • PowerTransformer
  • Recloser
  • Substation
  • SubGeographicalRegion
  • GeographicalRegion

The diagram object style attribute should be configured to be a lookup with the following values:

  • ARC_CHUTE
  • BRIDGE
  • CB
  • DISCONNECTOR
  • DIST_TRANSFORMER
  • ENERGY_SOURCE
  • FEEDER_CB
  • FLICKER_BLADE
  • FUSE
  • GAS_INSULATED
  • JUMPER
  • JUNCTION
  • ISO_TRANSFORMER
  • LIVE_LINE_CLAMP
  • NON_REVERSIBLE_REGULATOR
  • NONE
  • RECLOSER
  • REVERSIBLE_REGULATOR
  • SHUNT_COMPENSATOR
  • SWITCH
  • USAGE_POINT
  • ZONE_TRANSFORMER

PoF Classes

You will need to have three distinct classes (new or existing):

PurposeRequirements
To control the detection of busbarsMust be connected inline as part of the busbar section
To control the detection of linesMust be connected inline as part of the line and be placed beyond the last included node of the substation.
To control the placement of equivalent injection points for energising the modelMust be connected to the network, either inline or on a spur

Database User

If integrated security is not enabled, the username and password for the database connection are provided by two environment variables:

Environment VariableDefault
ENMAC_USERenmac
ENMAC_PASSWORDpassword

These can either be set permanently or injected via a script.

Configuration File

Specification:

{
    "ewbDataDirectory": string, // path to ewb data directory
    "worlds": [int], // array of world indexes
    "includeAttribute": string, // attribute name which controls if nodes are included
    "cimClassAttribute": string, //attribute name mapping the node to a CIM class
    "diagramObjectStyleAttribute": string, //attribute name mapping a node to a diagram object style
    "sincalMappingAttribute": string, //attribute name mapping to the std types lookup
    "cimNameAttribute": string, //attribute name to use instead of component pathname
    "excludeVoltage": int, // voltage to exclude from in volts
    "busbarClass": { // defines the special class used to detect busbars
        "componentClass": int, // class index
        "nameAttribute": optional string // attribute name
    },
    "equivalentInjectionClass": { // defines the special class used to detect injection points
        "componentClass": int, // class index
        "nameAttribute": optional string // attribute name
    },
    "lineClass": { // defines the special class used to detect lines between substations
        "componentClass": int, // class index
        "nameAttribute": optional string // attribute name
    },
    "stdTypesDatabase": string, // path to mdb or sqlite file
    "pofTableNames": { // optional. Allows overriding table names to specify schema/database names if required (e.g. SQLServer connections).
        "componentHeader": optional string, // default "COMPONENT_HEADER"
        "componentAttributes": optional string, // default "COMPONENT_ATTRIBUTES"
        "hotSpotPositions": optional string, // default "HOT_SPOT_POSITIONS"
        "connections": optional string // default "CONNECTIONS"
    }
}

}

Example:

{
    "ewbDataDirectory": "../ewb/data",
    "worlds": [101],
    "includeAttribute": "Include in Model",
    "cimClassAttribute": "CIM Class",
    "diagramObjectStyleAttribute": "Diagram Object Style",
    "sincalMappingAttribute": "Sincal Element ID",
    "cimNameAttribute": "CIM Name",
    "excludeVoltage": 330000,
    "busbarClass": {
        "componentClass": 577,
        "nameAttribute": "Busbar Number"
    },
    "equivalentInjectionClass": {
        "componentClass": 1011
    },
    "lineClass": {
        "componentClass": 1009,
        "nameAttribute": "Line Name"
    },
    "stdTypesDatabase": "./Local line types Version 16.mdb",
    "pofTableNames": {
      "componentHeader": "DB.ENMAC.COMPONENT_HEADER",
      "componentAttributes": "DB.ENMAC.COMPONENT_ATTRIBUTES",
      "hotSpotPositions": "DB.ENMAC.HOT_SPOT_POSITIONS",
      "connections": "DB.ENMAC.CONNECTIONS"
    }
}