Institute of Electrical and Electronics Engineers



[pic]

1155 Camino Del Mar, Suite 514

Del Mar, CA 92014

Phone (619) 259-0711

FAX (619) 259-7618

Email support@

Web Page

File Transfer Format (FTF) specification rev. 1.0

History 3

Introduction 3

Files 3

Details 4

Appendix 11

History

|Revision |Date |Comment |

|1.0 |06-10-97 |Initial writing. |

| | | |

| | | |

| | | |

Introduction

This document describes a universal file format to be used to transfer data collected by power recording equipment. The format allows data to be easily mapped to a database. This schema considers a “leaf” Node (lowest level node) as a channel of a measurement device. The device would be a collection of Nodes. There are three basic kinds of data. Event data which describes the actual measurements, Node Properties which describes the characteristics of the measurement channel, and Connectivity which describes the topography of the Nodes. The data transport mechanism is accomplished using a “Comma Separated Variables” (or CSV) file format. All numeric variables need only be separated by commas, string variables should be separated by commas and enclosed in single quote marks (‘) . String variables should have no leading or trailing white space. Since software and not people generate the CSV files, there has been little error checking built into the importer. Some of the fields in the records are optional, however they must still be included even though they are empty. Also all the files must be created even if they are zero length. Throughout this document ‘Channel’ designators are used, the designations ‘D’ and ‘N’ are interchangeable.

This document actually describes a file specification. This is the data transport mechanism. The following illustration shows how this will work.

Note: Some of the records in the data files have a Time / Date stamp field. It is important that these fields follow this format ‘1995-11-29 16:57:14.3125’. Specifically, no leading or trailing white space, and four digits to the right of the decimal point, zero padded if necessary. The time must be in 24-hour format.

Files

There is a single data file for each table in the PowerCenter database. The naming convention for the files will be DOS compatible so older 16 bit operating systems will be able to create the transport files as well. The data files are:

There is also one INI file used by applications. This INI file contains the location to save the data files, and the command string for applications to use when launching the PowerCenter importer. It is “pwrcntr.ini” and it will be located in the windows sub-directory.

Details

The underline character will be used in this documentation to show line continuation. In the actual .csv files each record will be on a single line followed by a carriage return line feed character pair.

Event and Node Properties Database Tables

Table Name: Equipment

|Name: |Type: |Size: |Description: |

|EquipmentID |Long | 4 |Unsigned Long unique ID for this record |

|VendorID |Long | 4 |Unsigned Long Lookup vendor in vendor table |

|EquipmentDescription |Text | 100 |Text description of equipment |

|EquipmentTypeID |Long | 4 |Unsigned Long Lookup equipment type in equipment type table (scope, |

| | | |meter, etc) |

|ModelNumber |Text | 50 |Vendor specific model number |

|SerialNumber |Text | 50 |Vendor specific serial number |

|EquipmentLastCalibration |Date | 8 |Last time this equipment was calibrated |

|Installed |Date | 8 |When Equipment was installed |

|Removed |Date | 8 |When Equipment was removed |

|ExtendedVSEquipTable |Text | 50 |The name of the table that contains the Vendor specific information for |

| | | |this equipment |

|CommunicationProtocol |Long | 4 |Unsigned Long Lookup communication protocol table (modem, lan, internet,|

| | | |etc.) |

Transport Filename: equipmt.csv

Example record:

45,34,’100 AMP BREAKER’,22,’REL-345-9-ALU’,’10936TU067’,‘1995-11-29 16:57:14.3125’,_

‘1995-11-29 16:57:14.3125’,‘1995-11-29 16:57:14.3125’,’VEN_TABLE27’,3

Table Name: Event

|Name: |Type: |Size: |Description: |

|MainEventID |Long | 4 |Unique ID for this Event |

|NodeID |Long | 4 |Unsigned long lookup in table Node. This is normally a |

| | | |channel in a piece of equipment |

|TriggerNodeID |Long | 4 |Unsigned long lookup in table Node. If another node |

| | | |caused this data to be saved |

|Year |Integer | 2 |Time Date stamp Year signed integer -32,768 to 32,767. |

|Month |Integer | 2 |Time Date stamp Month unsigned integer 1 to 12 (0 to |

| | | |65,535 possible range) |

|Day |Integer | 2 |Time Date stamp Day unsigned integer 1 to 31 (0 to 65,535|

| | | |possible range) |

|Hour |Integer | 2 |Time Date stamp Hour unsigned integer 0 to 23 (0 to |

| | | |65,535 possible range) |

|Minute |Integer | 2 |Time Date stamp Minute unsigned integer 0 to 59 (0 to |

| | | |65,535 possible range) |

|Second |Integer | 2 |Time Date stamp Second unsigned integer 0 to 59 (0 to |

| | | |65,535 possible range) |

|NanoSecond |Long | 2 |Time Date stamp Nanosecond unsigned long 0 to 999,999,999|

| | | |(0 to 4,294,967,295 possible range) |

|MeasuredValue |Double | 8 |The double precision value measured |

|ValueValidFlag |Yes/No | 1 |Boolean used to determine if the measured value is valid |

|Units |Long | 4 |Unsigned long lookup in table Units of the Measured Value|

|GreekPrefix |Long | 4 |Unsigned long lookup in table Greek Prefix of the |

| | | |Measured Value |

|AnalysisParameterID |Long | 4 |Unsigned long lookup in table Analysis Parameter. A code |

| | | |which describes the event value's measurement type |

| | | |specific to KJT Analysis, i.e. RMS Volts, RMS Current, |

| | | |Frequency, THD ect. |

|MeasurementCategoryID |Integer | 2 |Unsigned long lookup in table describing the IEEE 1159 |

| | | |measurement category |

|MeasurementVendorEventParameter |Integer | 2 |Unsigned long lookup in table the vendor specific Event |

| | | |Parameter |

|ExtendedTableFlag |Yes/No | 1 |Bool flag value that causes a check of an extended table,|

| | | |if more information is available about this measurement. |

Transport Filename: event.csv

Example record:

20,30,40,1997,10,4,16,32,22,33456,4054.582,1,8,3,5,12,8,0

Table Name: EventExt1

|Name: |Type: |Size: |Description: |

|EventExtID |Long | 4 |This will match the MainEventID to which these extensions belong |

|Duration |Double | 8 |Duration of this event |

|UnitsID |Long | 4 |Unsigned long lookup in table Units of the Duration |

|GreekPrefix |Long | 4 |Unsigned long lookup in table Greek Prefix of the Duration |

|SampleAge |Date | 8 |When was this sample actually taken |

|MinValue |Double | 8 |The double precision minimum value measured during this event |

|MinValueValid |Yes/No | 1 |Is the minimum value a valid number |

|MaxValue |Double | 8 |The double precision maximum value measured during this event |

|MaxValueValid |Yes/No | 1 |Is the maximum value a valid number |

Transport Filename: eventx1.csv

Example record:

20,167.835,6,4,‘1995-11-29 16:57:14.3125’,0.3832,1,98467.76,0

Table Name: GreekPrefix

|Name: |Type: |Size: |Description: |

|GreekPrefixID |Long | 4 |Unsigned Long unique ID for this record |

|GreekPrefix |Text | 50 |fempto, pico, nano etc. |

Transport Filename: greek.csv (will be supplied by KJT)

Example record:

7,’pico’

Table Name: MeasurementCategory

|Name: |Type: |Size: |Description: |

|MeasurementCategoryID |Long | 4 |Unsigned Long unique ID for this record |

|MeasurementCategoryDesc |Text | 50 |Text description of the measurement categories |

Transport Filename: meascat.csv (will be supplied by KJT)

Example record:

3,’CURRENT’

Table Name: AnalysisParameter

|Name: |Type: |Size: |Description: |

|AnalysisParameterID |Long | 4 |Unsigned Long unique ID for this record |

|AnalysisParameterDescription |Text | 50 |Text name of the Analysis Parameter |

Transport Filename: analpar.csv (will be supplied by KJT)

Example record:

3,’RMS CURRENT’

Table Name: NodeProperty000

|Name: |Type: |Size: |Description: |

|NodeID |Long | 4 |This is used to match the Node identifier |

|NodeTypeID |Long | 4 |Unsigned Long lookup in Node Type Table (measure, manual, simulate) |

|NodeMeasurementTypeID |Long | 4 |Unsigned Long lookup in Measurement type table (voltage probe, current|

| | | |probe etc) |

|Description |Text | 50 |The description used in reporting i.e. Channel A |

|EquipmentID |Long | 4 |Unsigned Long lookup in Equipment information in the Equipment Table |

|MeasurementName |Text | 50 |The name of the thing being measured i.e. Neutral to Cow |

|Location |Text | 50 |Description of the location of the node |

|TimeZone |Text | 50 |XXXMMMZZZD EST300EDT1 |

|Latitude |Text | 10 |DDDMMSSss |

|Longitude |Text | 10 |DDDMMSSss |

|Building |Text | 50 |The Building the equipment is located in |

|Room |Text | 50 |The Room the building is located in |

|Frame |Text | 50 |Specific information on equipment location |

|NodeLastCalibration |Date | 8 |Last time this was calibrated (will probably match the equipment |

| | | |calibration date) |

|FullScale |Double | 8 |Full scale input of this node |

|NoiseFloor |Double | 8 |Used to eliminate extraneous data |

|AttenuationMultiplier |Double | 8 |Might be used to modify event value |

|TimeSkew |Double | 8 |Double |

|TimeSkewUnitID |Long | 4 |Unsigned Long lookup in unit ID table |

|DCOffset |Double | 8 |DC offset |

Transport Filename: nodprp00.csv

Example record:

20,5,6,`CHANNEL A’,`TRANSFORMER PRIMARY’,`Main Distribution Panel’,_

`EST300EDT1’,`073153305’,`053224418’,`MAIN OFFICE’,`BASEMENT’,_

`PANEL3’,‘1995-11-29 16:57’,100,.1,5.67,60,5,300

Table Name: NodeProperty001

|Name: |Type: |Size: |Description: |

|NodeID |Long | 4 |This is used to match the Node identifier |

|VoltageRMSHiLimit |Double | 8 |Node threshold Voltage RMS high limit |

|VoltageRMSLoLimit |Double | 8 |Node threshold Voltage RMS low limit |

|VoltageTransHiLimit |Double | 8 |Node threshold Voltage Transient high limit |

|VoltageTHDHiLimit |Double | 8 |Node threshold Voltage THD high limit |

|VoltageHarmHiLimit |Double | 8 |Node threshold Voltage Harmonics high limit |

|CurrentRMSHiLimit |Double | 8 |Node threshold Current RMS high limit |

|CurrentRMSLoLimit |Double | 8 |Node threshold Current RMS low limit |

|CurrentTransHiLimit |Double | 8 |Node threshold Current Transient high limit |

|CurrentTHDHiLimit |Double | 8 |Node threshold Current THD high limit |

|CurrentHarmHiLimit |Double | 8 |Node threshold Current Harmonics high limit |

|PeakCurrentHiLimit |Double | 8 |Node threshold Peak Current high limit |

|FrequencySensIn |Double | 8 |Node threshold Frequency sensitivity in |

|WattsHiLimit |Double | 8 |Node threshold Watts high limit |

|VoltsAmpsHiLimit |Double | 8 |Node threshold Volts Amps high limit |

|VoltsAmpsReacHiLimit |Double | 8 |Node threshold Volts Amps Reactive high limit |

|PowerFactorLoLimit |Double | 8 |Node threshold Power Factor low limit |

|VoltageRMSSensOut |Double | 8 |Node threshold Voltage RMS sensitivity out |

|VoltageRMSSensIn |Double | 8 |Node threshold Voltage RMS sensitivity in |

|VoltageTransSensOut |Double | 8 |Node threshold Voltage Transient sensitivity out |

|CurrentRMSSensOut |Double | 8 |Node threshold Current RMS sensitivity out |

|CurrentRMSSensIn |Double | 8 |Node threshold Current RMS sensitivity in |

|CurrentTransSensOut |Double | 8 |Node threshold Current Transient sensitivity out |

Transport Filename: nodprp01.csv

Example record:

20,130,115,150,120,4.3,5.2,1.3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

Table Name: NodeProperty002

|Name: |Type: |Size: |Description: |

|NodeID |Long | 4 |This is used to match the Node identifier |

|AutoPollDelay |Double | 8 |The delay time between automatically polling the node for data |

|UnitsID |Long | 4 |Unsigned long lookup in table Units of the AutoPollDelay |

|PhoneNumber |Text | 10 |If the node has a phone number to retrieve data |

|BaudRate |Long | 4 |Maximum baud rate the connection to the node can maintain |

|StopBits |Integer | 2 |Number of stop bits used in communication link usually 1 or 2 |

|ComBits |Integer | 2 |Number of communication bits used in communication link usually 7 or 8 |

|Protocol |Text | 20 |Default communication protocol i.e. Zmodem |

|NetworkID |Text | 50 |If the node has a network ID to retrieve data |

Transport Filename: nodprp02.csv

Example record:

20,130,4,`(555) 555-5555,9600,1,8,`ZMODEM’,`9172635129’

Table Name: NodeType

|Name: |Type: |Size: |Description: |

|NodeTypeID |Long | 4 |Unsigned Long unique ID for this record |

|NodeTypeDescription |Text | 50 |Description of node type (i.e. current probe, vibration sensor, temperature, |

| | | |transport mechanism) |

Transport Filename: nodetype.csv (will be supplied by KJT)

Example record:

2,’10 K Voltage Probe’

Table Name: System

|Name: |Type: |Size: |Description: |

|SystemID |Long | 4 |Unsigned Long unique ID for this record. |

|SystemName |Text | 50 |System Name |

|SystemLocation |Text | 50 |System location |

Transport Filename: system.csv

Example record:

27,’Substation 27’, ‘San Marcos’

Table Name: Units

|Name: |Type: |Size: |Description: |

|UnitID |Long | 4 |Unique ID for this record |

|UnitName |Text | 20 |The name of the unit ( i.e. seconds, watts, volts, amps) |

Transport Filename: units.csv (will be supplied by KJT)

Example record:

2,`WATTS’

Table Name: Vendor

|Name: |Type: |Size: |Description: |

|VendorID |Long | 4 |Unsigned Long unique ID for this record |

|VendorName |Text | 50 |Company name |

|ContactName |Text | 50 |Contact name |

|ContactTitle |Text | 50 |Contact title |

|Address1 |Text | 50 |Company street address 1 |

|Address2 |Text | 255 |Company street address 2 |

|City |Text | 50 |Company City |

|PostalCode |Text | 20 |Company zip code |

|Region |Text | 50 |Company region if any |

|Country |Text | 50 |Company country |

|PhoneNumber |Text | 30 |Company phone number |

|FaxNumber |Text | 30 |Company fax number |

|Note |Memo | 0 |Memo field for this vendor |

Transport Filename: vendor.csv

Example record:

14,`METROSONICS’,’Bill Smith’,’Salesman’,’1155 Main St.’,’Suite 101’,_

‘San Diego’,’92101’,’South West’,’USA’,’(555) 555-1212’,’(555) 555-1212’,_

‘This can be a long paragraph of text’

Table Name: Waveform

|Name: |Type: |Size: |Description: |

|WaveformID |Long | 4 |Unsigned Long unique ID for this record |

|NodeID |Long | 4 |Unsigned long lookup in table Node. This is normally a channel in a piece of |

| | | |equipment |

|Year |Integer | 2 |Time Date stamp Year signed integer -32,768 to 32,767. |

|Month |Integer | 2 |Time Date stamp Month unsigned integer 1 to 12 (0 to 65,535 possible range) |

|Day |Integer | 2 |Time Date stamp Day unsigned integer 1 to 31 (0 to 65,535 possible range) |

|Hour |Integer | 2 |Time Date stamp Hour unsigned integer 0 to 23 (0 to 65,535 possible range) |

|Minute |Integer | 2 |Time Date stamp Minute unsigned integer 0 to 59 (0 to 65,535 possible range) |

|Second |Integer | 2 |Time Date stamp Second unsigned integer 0 to 59 (0 to 65,535 possible range) |

|NanoSecond |Long | 4 |Time Date stamp Nanosecond unsigned long 0 to 999,999,999 (0 to 4,294,967,295 |

| | | |possible range) |

|StorageType |Integer | 2 |This value determines how the acutal waveform data is stored and what table to |

| | | |get the actual data from |

|Frequency |Integer | 2 |Nominal frequencey of this waveform |

|WaveformType |Integer | 2 |Integer describing waveform type (Current, Voltage, Vibration, etc.) |

|NumberOfCycles |Integer | 2 |Number of cycles stored in this waveform normally 1 |

|VendorSpecificID |Long | 4 |Vendor specific wavefrom descriptor |

Transport Filename: wavefr00.csv

Example record:

14,23,1997,3,16,18,45,35,13000000,01,60,5,1,265

Table Name: WaveformExt1 This table is used to store waveforms captured with 128 samples or less.

|Name: |Type: |Size: |Description: |

|WaveformExt1ID |Long | 4 |This will match the main WaveformID to which these extensions belong |

|SampleCount |Integer | 2 |Integer this is the actual number of integer samples stored 0 thru 128 |

|SampleRate |Long |4 |Unsigned long sample rate in nanoseconds |

|Multiplier |Double | 8 |Double used to convert integer sample values to actual values |

|Samples |Text | 255 |Char array[255] stores up to 128 integer values |

Transport Filename: wavefr01.csv

Example record:

14,128,18000000,5.236,'\XFC\X24\X51\X1E\XDC\X18\XD4\X15\XCB\X12\XEA\X0A\X65\XFF\X1F\XF8\X73\XF1\X63\XEB\XB7\XE4\XAF\XE1\X71\XDD\X97\XD8\XBD\XD3\X7F\XCF\X66\XC6\XE9\XBD\X74\XB8\X6C\XB5\X92\XB0\XE7\XA9\XA8\XA5\X72\XA4\XA0\XA2\X62\X9E\XB6\X97\XA6\X91\X03\X8E\X67\X8D\X96\X8B\X8E\X88\X57\X87\X29\X89\X8E\X88\XEA\X84\X7D\X82\X47\X81\XAC\X80\X7D\X82\XB4\X83\XEA\X84\X4F\X84\XBC\X86\X29\X89\XC4\X89\X29\X89\X5F\X8A\XCC\X8C\X70\X90\X49\X95\XF5\X9B\XCF\XA0\X3B\XA3\XE7\XA9\X8A\XAD\X8A\XAD\X5C\XAF\X36\XB4\XAB\XB9\XF9\XC3\X0A\XCA\X87\XD2\X97\XD8\XD6\XDC\X79\XE0\XB7\XE4\X91\XE9\X35\XED\XE0\XF3\XCA\XFE\X7D\X08\X8D\X0E\X02\X14\XDC\X18\X51\X1E\X2A\X23\XCE\X26\XD6\X29\XE6\X2F\X9A\X39\X7C\X41\XBA\X45\X94\X4A\X6E\X4F\XE3\X54\X86\X58\X29\X5C\X60\X5D\XCD\X5F\XDD\X65\X90\X6F\XFD\X71\X62\X71\X62\X71\X3C\X76\X44\X79\X05\X75\X05\X75\X16\X7B\X83\X7D\X83\X7D\XE7\X7C\XEF\X7F\X16\X7B\X44\X79\X44\X79\XA9\X78\X7A\X7A\X6A\X74\X6A\X74\XA1\X75\X34\X73\X62\X71\X4A\X68\X70\X63\X96\X5E\X86\X58\XDB\X51\X11\X53\XDB\X51\X37\X4E\X5D\X49\XB2\X42\X07\X3C\X25\X34\XD6\X29\X33\X26'

Table Name: WaveformExt2 This table is used to store waveforms captured with 128 samples or less with high and low peak readings captured for every sample.

|Name: |Type: |Size: |Description: |

|WaveformExt2ID |Long | 4 |This will match the main WaveformID to which these extensions belong |

|SampleCount |Integer | 2 |Integer this is the actual number of integer samples stored 0 thru 128 |

|SampleRate |Long | 4 |Unsigned long sample rate in nanoseconds |

|Multiplier |Double | 8 |Double used to convert integer sample values to actual values |

|Samples |Text | 255 |Char array[255] stores up to 128 integer values |

|SampleRateHi |Integer | 2 |Unsigned long sample rate high in nanoseconds |

|MultiplierHi |Double | 8 |Double used to convert integer sample high values to actual values |

|SamplesHi |Text | 255 |Char array[255] stores up to 128 integer values High Peak Values |

|SampleRateLo |Integer | 2 |Unsigned long sample rate low in nanoseconds |

|MultiplierLo |Double | 8 |Double used to convert integer sample low values to actual values |

|SamplesLo |Text | 255 |Char array[255] stores up to 128 integer values Low Peak Values |

Transport Filename: wavefr02.csv

Example record:

14,128,18000000,5.236,(see waveform 1 example),18000000,5.236,(see waveform 1 example),_

18000000,5.236,(see waveform 1 example),

Table Name: WaveformExt3 This table is used to store waveforms captured with an arbitrary number of samples.

|Name: |Type: |Size: |Description: |

|WaveformExt3ID |Long | 4 |This will match the main WaveformID to which these extensions belong |

|SampleCount |Integer | 2 |Integer this is the actual number of integer samples stored 0 thru 65535 |

|SampleRate |Integer | 2 |Unsigned long sample rate in nanoseconds |

|Multiplier |Double | 8 |Double used to convert integer sample values to actual values |

|Samples |Other |var |Arbitrary binary array (BLOB) |

Transport Filename: wavefr03.csv

Example record:

14,473,18000000,5.236,(see waveform 1 example)

Appendix

Example PowerCenter.INI file

[locations]

; The following line is used to launch the PowerCenter importer the text Title will appear in the title ; bar of the PowerCenter importer application it can be up to 25 characters in length

CommandLine=F:\PWRCNTR\DATA\PWRIMP.EXE 8 Title

; The following line is the sub-directory where the data files must be saved

ConvertDir= F:\PWRCNTR\DATA \CONVERT\

Note 1: Here is an example of code that we use to convert a BLOB to a string.

size_t CPCPDB_APICALL CPcPRecSet::ASCIIout(LPSTR * lpszDest, const CLongBinary & blob)

{

LPBYTE lpvBuffer;

size_t lindex = 0;

size_t ltemp = 0;

size_t lbytes = 0;

size_t ltotal = (size_t)blob.m_dwDataLength;

LPSTR lpszDebug = *lpszDest;

ltemp = sprintf(*lpszDest,"'");

*lpszDest += ltemp;

lbytes += ltemp;

if(ltotal > 0)

{

lpvBuffer = (LPBYTE)GlobalLock(blob.m_hData);

if(lpvBuffer != NULL)

{

for(lindex = 0; lindex < ltotal; lindex++)

{

ltemp = sprintf(*lpszDest,"\\X%.2X",*lpvBuffer++);

*lpszDest += ltemp;

lbytes += ltemp;

}

GlobalUnlock(blob.m_hData);

}

}

ltemp = sprintf(*lpszDest,"',");

*lpszDest += ltemp;

lbytes += ltemp;

return(lbytes);

}

-----------------------

IED

IED

IED

IED

IED

CSV FILES (this specification)

IMPORTER

PowerCenter Database

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download