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
parameter | explanation |
---|---|
-Xmx16g -Xms16g | give the JVM 16GB of memory |
-Dfile.encoding=UTF-8 | tell the JVM to use UTF-8 encoding |
-s enmacdb | change the enmac database server to enmacdb |
-ewb \ewb\data | change the ewb data path to /ewb/data |
-f | force 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:
Type | Purpose | Example Name |
---|---|---|
Logical | Controls if the node is included in the extract | Include in Model |
Char 32 | Defines the CIM class used to represent the node | CIM Class |
Char 32 | Defines the diagram styling of the node | Diagram Object Style |
Int 32 | Defines 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):
Purpose | Requirements |
---|---|
To control the detection of busbars | Must be connected inline as part of the busbar section |
To control the detection of lines | Must 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 model | Must 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 Variable | Default |
---|---|
ENMAC_USER | enmac |
ENMAC_PASSWORD | password |
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
"useAliasAsName": bool, // OPTIONAL - indicates if the component alias should be used as the name rather than the component pathname [default false].
"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": string // OPTIONAL - attribute name
},
"equivalentInjectionClass": { // defines the special class used to detect injection points
"componentClass": int, // class index
"nameAttribute": string // OPTIONAL - attribute name
},
"lineClass": { // defines the special class used to detect lines between substations
"componentClass": int, // class index
"nameAttribute": string // OPTIONAL - 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": string, // OPTIONAL - default "COMPONENT_HEADER"
"componentAttributes": string, // OPTIONAL - default "COMPONENT_ATTRIBUTES"
"hotSpotPositions": string, // OPTIONAL - default "HOT_SPOT_POSITIONS"
"connections": string // OPTIONAL - default "CONNECTIONS"
}
}
Example:
{
"ewbDataDirectory": "../ewb/data",
"worlds": [101],
"includeAttribute": "Include in Model",
"cimClassAttribute": "CIM Class",
"diagramObjectStyleAttribute": "Diagram Object Style",
"sincalMappingAttribute": "Sincal Element ID",
"useAliasAsName": false,
"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"
}
}