Weatherford 8500 Card Buffer Upload
The Weatherford 8500 protocol module supports uploading card buffer data and event data from controllers that support the functionality. This data can be published to the ACM database and also provided to clients using OPC items as described on the OPC Items page.
Uploading card buffers from M8500 or M8650 is not supported.
Publishing to Database
In order to publish card data to the ACM database, the ACM device object must be configured with a meter object and one or more card buffer types enabled on the Card Collection tab of the device configuration. The archive objects associated with each card buffer type are pre-defined and cannot be edited. Refer to the Archive Limits object page for more information. Card data is published to the archive objects as History Record data. The following table lists each archive object and their properties.
Only controllers that support downhole data will have records published to the downhole archives, if so enabled.
Card Type | Archive Type Name | Archive Sub-Type Name |
---|---|---|
Surface Present Buffer | Present | Surface |
Downhole Present Buffer | Present | Downhole |
Surface PumpOn Buffer | PumpOn | Surface |
Downhole PumpOn Buffer | PumpOn | Downhole |
Surface Shutdown Buffer | Shutdown | Surface |
Downhole Shutdown Buffer | Shutdown | Downhole |
Surface Event Buffer | Event | Surface |
Downhole Event Buffer | Event | Downhole |
Surface Fault Buffer | Fault | Surface |
Downhole Fault Buffer | Fault | Downhole |
Load Scaling Data | LoadScaling |
|
Generating CSV Reports
Card data can be published to CSV reports for importation into third party systems for analysis. The type names and sub-type names listed in the prior table can be used to generate unique reports per archive type if needed. Create a CSV report object then configure.
On the Records tab, select Publish History Records.
A Publisher object will need to be created and associated with the CSV Report Object. Refer to Publisher section of the user manual for more information.
CSV Report Format
The format of the generated CSV report is fixed and described below. All card buffer archives generate the same report format with one exception. If “Marking” is selected for position type for a controller that uses FC16 for card upload, the report format will differ. Both formats are described below.
Card sets uploaded using FC16 or FC16EX will generate a single report record with all data points for all strokes in the one record. Card sets uploaded using FC25 will generate a report record for each individual stroke.
The table describes a CSV report when the CSV Report Object is set to publish Record per Row.
Column | Column Header | Description and Values |
---|---|---|
0 | Timestamp | The time stamp of the card set. For FC16, this is the time the upload occurred. For FC16EX and FC25, this is the time the card was generated by the controller. |
1 | CardType | 'E' - Event 'F' - Fault 'N' - Pump On 'P' - Present 'S' - Shutdown |
2 | Location | 'S' - Surface 'D' - Downhole |
3 | Reason | The reason code for the card generation. See Reason Codes table below. |
4 | NumberOfStrokes | The number of pump strokes in the card data set. |
5 | StrokeIndex | The stroke index of the record as associated with the NumberOfStrokes field. Only cards uploaded using FC25 will create individual records for each stroke. Stroke index 1 is the oldest stroke in the set. |
6 | Points | The number of position/load pairs in the record. |
7 | LoadType | 'P' - Pounds 'F' - Fractional |
8 | PositionType | 'F' - Fractional 'S' - Synthesized 'M' - Marking 'V' - Voltage
|
9 | PumpFillage | Pump fillage percent. Only valid for cards uploaded using FC25. |
10 | AlarmFlags | Alarm flags |
11 | Position0 | Position 0 |
12 | Load0 | Load 0 |
13 | Position1 | Position 1 |
14 | Load1 | Load 1 |
…. |
|
|
N | PositionN | The last position in the data set. |
N+1 | LoadN | The last load in the data set. |
Marker CSV Report Format
When Marking is selected as the position type, the report format differs from the prior table. The first ten fields of a record are the same as the prior table and are not repeated here.
Column | Column Header | Description and Values |
---|---|---|
11 | MarkerType | 'T' - Top of stroke 'B' - Bottom of stroke |
12 | MarkerCount | The number of marker and marker fraction pairs |
13 | Marker0 | Marker 0 index |
14 | MarkerFraction0 | Marker 0 fractional part |
… |
| Additional marker pairs up to MarkerCount |
… | Load0 | Load 0. Next column after all marker pairs. |
… | Load1 | Load1 |
… |
|
|
N | LoadN | Last load in the data set. |
Alarm Flags
Alarm flag field is a 16 bit integer representing 16 bit-mapped fields.
Bit | Description |
---|---|
0 | Low Low load violation |
1 | Low load violation |
2 | High load violation |
3 | High High load violation |
4 | Low load average violation |
5 | Low load span violation |
6 | Pump was stopped by a violation |
7 | Position data is valid |
8 | Reserved |
9 | Downhole data available for stroke |
10-15 | Not used |
Reason Codes
Reason Code field is an integer that represents a reason the card was saved and the alarm bits associated with the reason. The four high-order bits contain the event type and are coded as follows.
Event Type Hex | Event Type Decimal | Type |
---|---|---|
0000 | 0 | Present (live) card set |
1xxx | 4096 | Fault |
2xxx | 8192 | Alarm |
3xxx | 12288 | Plain Event |
The lower twelve bits contain the actual reason code, which may or may not be associated with an alarm bit.
For plain events which have no associated alarm bit, the reason code is a unique number beginning at hex 800 (2048 decimal).
If associated with an alarm bit, the four low-order bits represent the bit number within the alarm parameter. The next eight bits represent the zero based index into the alarm parameter array starting at parameter 527.
Example: Hex reason 2012 ( decimal 8210 ) - Alarm event, parameter 528, bit 2.
Reason Codes Table
The Reason Codes table values are given in Hex with the ‘x' representing one of the Hex event types listed above. This provides for easy reason lookup without having to decode the reason’s bit pattern.
Alarm Bits Hex | Description |
---|---|
x000 | Plain Event - Live action data; Fault or Alarm Event - Control failure |
x001 | Low Load violation |
x002 | High Load violation |
x003 | Low Load Average violation |
x004 | Position Switch failure |
x005 | Multiple Position Switch failure |
x006 | Auto cleared position sensor problem |
x007 | Auto cleared Multiple Position Switch failure |
x008 | Low Load Span failure |
x009 | Load Input fault |
x00A | Continuous Position sensor fault |
x00B | Auto cleared Continuous Position sensor fault |
x00C | Attempted Software Timer mode with no timer value |
x00D | A/D Converter failure |
x00E | Manual Off Until Reset |
x00F | POC Override Timer Active |
x010 | Immediate Pumpoff |
x011 | Minimum Cycle Run Time violation |
x012 | Maximum Cycle Run Time violation |
x013 | Minimum Daily Run Time violation |
x014 | Parameters initialized (coldstart) |
x015 | Parameters Expanded |
x016 | Parameters restored from EEPROM backup |
x017 | EEPROM cell bad |
x018 | EEPROM failure |
x019 | Bad Status value at startup |
x01A | Bad Error Bits |
x01B | Time and/or Date value suspect |
x01C | Clock/Calendar chip failure |
x01D | Wrong Line Frequency |
x01E | Manual Control Transfer |
x01F | Manual Software Timer |
x020 | CPU Fell behind |
x021 | Auto cleared Clock/Calendar chip failure |
x022 | Motor Off too long violation |
x023 | DI1 Closed |
x024 | DI1 Open |
x025 | DI2 Closed |
x026 | DI2 Open |
x027 | AI1 as a digital closed |
x028 | AI1 as a digital open |
x029 | AI2 as a digital closed |
x02A | AI2 as a digital open |
x02B | AI3 as a digital closed |
x02C | AI3 as a digital open |
x02D | Immediate Upper load limit violation |
x02E | Reverse Pumpoff violation |
x02F | Air Balance Amps too low |
x030 | DI3 Closed |
x031 | DI3 Open |
x032 | DI4 Closed |
x033 | DI4 Open |
x034 | DI5 Closed |
x035 | DI5 Open |
x036 | DI6 Closed |
x037 | DI6 Open |
x038 | AI1 Low Limit violation |
x039 | AI1 High Limit violation |
x03A | AI2 Low Limit violation |
x03B | AI2 High Limit violation |
x03C | AI3 Low Limit violation |
x03D | AI3 High Limit violation |
x03E | Air Balance Add Air Forced |
x03F | Air Balance Release Air Forced |
x040 | DI7 Closed |
x041 | DI7 Open |
x042 | DI8 Closed |
x043 | DI8 Open |
x044 | Program Error |
x045 | Bad Shutdown |
x046 | AI4 Low Limit violation |
x047 | AI4 High Limit violation |
x048 | AI5 Low Limit violation |
x049 | AI5 High Limit violation |
x04A | AI6 Low Limit violation |
x04B | AI6 High Limit violation |
x04C | AI7 Low Limit violation |
x04D | AI7 High Limit violation |
x04E | AI8 Low Limit violation |
x04F | AI8 High Limit violation |
x050 | Run Time under 50% in cycle time stabilization |
x051 | Divide Error |
x052 | Gross Fluid Calculation Error |
x800 | Normal start up |
x801 | Normal shutdown |
x802 | Idle Time Parameter (20) set to zero |
x803 | Pump-off Position Parameter (21) set to zero |
x804 | Pump-off Load Parameter (23) set to zero |
x805 | Pump-off stroke count Parameter (24) set to zero |
x806 | Position Switch setup Parameter (130) set to zero |
FFFF | Out of range or buffer empty |
For assistance, please submit a ticket via our Support Portal, email autosol.support@autosoln.com or call 281.286.6017 to speak to a support team member.