Split into two different python packages.

This commit is contained in:
Patrick McDonagh
2017-03-27 18:11:55 -05:00
parent e68a7e2d25
commit 60ef141e7e
15 changed files with 117 additions and 22967 deletions

4
poc_scraper/CHANGES.md Normal file
View File

@@ -0,0 +1,4 @@
0.0
---
- Initial version.

18
poc_scraper/README.md Normal file
View File

@@ -0,0 +1,18 @@
# Modbus Register Map
## Coils
Reg. # | Description | Access |
1 |
# Installation
```
sudo apt-get install python-dev libssl-dev
pip install pymongo
```

16
poc_scraper/__init__.py Normal file
View File

@@ -0,0 +1,16 @@
from plc_to_mongo import PLC_to_Mongo
from os import getenv
from sys import exit
PLC_IP_ADDRESS = getenv("PLC_IP_ADDRESS")
if not PLC_IP_ADDRESS:
exit("No PLC_IP_ADDRESS set in the environment variables")
def main():
scraper_thread = PLC_to_Mongo(PLC_IP_ADDRESS)
scraper_thread.run()
if __name__ == '__main__':
main()

227
poc_scraper/analog.json Normal file
View File

@@ -0,0 +1,227 @@
[
{"tag_name": "_Firmware_Rev", "register_type": "ir", "register_number": 1},
{"tag_name": "_Program_Firmware", "register_type": "ir", "register_number": 2},
{"tag_name": "Card_Past[1].Card_Type", "register_type": "ir", "register_number": 3},
{"tag_name": "Card_Past[1].Downhole_AdjustedGrossStroke", "register_type": "ir", "register_number": 4},
{"tag_name": "Card_Past[1].Downhole_FluidLoad", "register_type": "ir", "register_number": 6},
{"tag_name": "Card_Past[1].Downhole_GrossStroke", "register_type": "ir", "register_number": 8},
{"tag_name": "Card_Past[1].Downhole_Max_Load.Load", "register_type": "ir", "register_number": 10},
{"tag_name": "Card_Past[1].Downhole_Max_Position.Position", "register_type": "ir", "register_number": 12},
{"tag_name": "Card_Past[1].Downhole_Min_Load.Load", "register_type": "ir", "register_number": 14},
{"tag_name": "Card_Past[1].Downhole_Min_Position.Position", "register_type": "ir", "register_number": 16},
{"tag_name": "Card_Past[1].Downhole_NetStroke", "register_type": "ir", "register_number": 18},
{"tag_name": "Card_Past[1].Fillage_Percent", "register_type": "ir", "register_number": 20},
{"tag_name": "Card_Past[1].Fluid_Above_Pump", "register_type": "ir", "register_number": 22},
{"tag_name": "Card_Past[1].Fluid_Moved", "register_type": "ir", "register_number": 24},
{"tag_name": "Card_Past[1].ID", "register_type": "ir", "register_number": 26},
{"tag_name": "Card_Past[1].Num_Points", "register_type": "ir", "register_number": 27},
{"tag_name": "Card_Past[1].Polished_Rod_HP", "register_type": "ir", "register_number": 28},
{"tag_name": "Card_Past[1].Pump_HP", "register_type": "ir", "register_number": 30},
{"tag_name": "Card_Past[1].Pump_Intake_Pressure", "register_type": "ir", "register_number": 32},
{"tag_name": "Card_Past[1].SPM", "register_type": "ir", "register_number": 34},
{"tag_name": "Card_Past[1].Surface_Max.Load", "register_type": "ir", "register_number": 36},
{"tag_name": "Card_Past[1].Surface_Max.Position", "register_type": "ir", "register_number": 38},
{"tag_name": "Card_Past[1].Surface_Min.Load", "register_type": "ir", "register_number": 40},
{"tag_name": "Card_Past[1].Surface_Min.Position", "register_type": "ir", "register_number": 42},
{"tag_name": "Card_Past[1].Surface_StrokeLength", "register_type": "ir", "register_number": 44},
{"tag_name": "Card_Past[1].Tubing_Movement", "register_type": "ir", "register_number": 46},
{"tag_name": "Card_Past[2].Card_Type", "register_type": "ir", "register_number": 48},
{"tag_name": "Card_Past[2].Downhole_AdjustedGrossStroke", "register_type": "ir", "register_number": 49},
{"tag_name": "Card_Past[2].Downhole_FluidLoad", "register_type": "ir", "register_number": 51},
{"tag_name": "Card_Past[2].Downhole_GrossStroke", "register_type": "ir", "register_number": 53},
{"tag_name": "Card_Past[2].Downhole_Max_Load.Load", "register_type": "ir", "register_number": 55},
{"tag_name": "Card_Past[2].Downhole_Max_Position.Position", "register_type": "ir", "register_number": 57},
{"tag_name": "Card_Past[2].Downhole_Min_Load.Load", "register_type": "ir", "register_number": 59},
{"tag_name": "Card_Past[2].Downhole_Min_Position.Position", "register_type": "ir", "register_number": 61},
{"tag_name": "Card_Past[2].Downhole_NetStroke", "register_type": "ir", "register_number": 63},
{"tag_name": "Card_Past[2].Fillage_Percent", "register_type": "ir", "register_number": 65},
{"tag_name": "Card_Past[2].Fluid_Above_Pump", "register_type": "ir", "register_number": 67},
{"tag_name": "Card_Past[2].Fluid_Moved", "register_type": "ir", "register_number": 69},
{"tag_name": "Card_Past[2].ID", "register_type": "ir", "register_number": 71},
{"tag_name": "Card_Past[2].Num_Points", "register_type": "ir", "register_number": 72},
{"tag_name": "Card_Past[2].Polished_Rod_HP", "register_type": "ir", "register_number": 73},
{"tag_name": "Card_Past[2].Pump_HP", "register_type": "ir", "register_number": 75},
{"tag_name": "Card_Past[2].Pump_Intake_Pressure", "register_type": "ir", "register_number": 77},
{"tag_name": "Card_Past[2].SPM", "register_type": "ir", "register_number": 79},
{"tag_name": "Card_Past[2].Surface_Max.Load", "register_type": "ir", "register_number": 81},
{"tag_name": "Card_Past[2].Surface_Max.Position", "register_type": "ir", "register_number": 83},
{"tag_name": "Card_Past[2].Surface_Min.Load", "register_type": "ir", "register_number": 85},
{"tag_name": "Card_Past[2].Surface_Min.Position", "register_type": "ir", "register_number": 87},
{"tag_name": "Card_Past[2].Surface_StrokeLength", "register_type": "ir", "register_number": 89},
{"tag_name": "Card_Past[2].Tubing_Movement", "register_type": "ir", "register_number": 91},
{"tag_name": "Card_Past[3].Card_Type", "register_type": "ir", "register_number": 93},
{"tag_name": "Card_Past[3].Downhole_AdjustedGrossStroke", "register_type": "ir", "register_number": 94},
{"tag_name": "Card_Past[3].Downhole_FluidLoad", "register_type": "ir", "register_number": 96},
{"tag_name": "Card_Past[3].Downhole_GrossStroke", "register_type": "ir", "register_number": 98},
{"tag_name": "Card_Past[3].Downhole_Max_Load.Load", "register_type": "ir", "register_number": 100},
{"tag_name": "Card_Past[3].Downhole_Max_Position.Position", "register_type": "ir", "register_number": 102},
{"tag_name": "Card_Past[3].Downhole_Min_Load.Load", "register_type": "ir", "register_number": 104},
{"tag_name": "Card_Past[3].Downhole_Min_Position.Position", "register_type": "ir", "register_number": 106},
{"tag_name": "Card_Past[3].Downhole_NetStroke", "register_type": "ir", "register_number": 108},
{"tag_name": "Card_Past[3].Fillage_Percent", "register_type": "ir", "register_number": 110},
{"tag_name": "Card_Past[3].Fluid_Above_Pump", "register_type": "ir", "register_number": 112},
{"tag_name": "Card_Past[3].Fluid_Moved", "register_type": "ir", "register_number": 114},
{"tag_name": "Card_Past[3].ID", "register_type": "ir", "register_number": 116},
{"tag_name": "Card_Past[3].Num_Points", "register_type": "ir", "register_number": 117},
{"tag_name": "Card_Past[3].Polished_Rod_HP", "register_type": "ir", "register_number": 118},
{"tag_name": "Card_Past[3].Pump_HP", "register_type": "ir", "register_number": 120},
{"tag_name": "Card_Past[3].Pump_Intake_Pressure", "register_type": "ir", "register_number": 122},
{"tag_name": "Card_Past[3].SPM", "register_type": "ir", "register_number": 124},
{"tag_name": "Card_Past[3].Surface_Max.Load", "register_type": "ir", "register_number": 126},
{"tag_name": "Card_Past[3].Surface_Max.Position", "register_type": "ir", "register_number": 128},
{"tag_name": "Card_Past[3].Surface_Min.Load", "register_type": "ir", "register_number": 130},
{"tag_name": "Card_Past[3].Surface_Min.Position", "register_type": "ir", "register_number": 132},
{"tag_name": "Card_Past[3].Surface_StrokeLength", "register_type": "ir", "register_number": 134},
{"tag_name": "Card_Past[3].Tubing_Movement", "register_type": "ir", "register_number": 136},
{"tag_name": "Card_Past[4].Card_Type", "register_type": "ir", "register_number": 138},
{"tag_name": "Card_Past[4].Downhole_AdjustedGrossStroke", "register_type": "ir", "register_number": 139},
{"tag_name": "Card_Past[4].Downhole_FluidLoad", "register_type": "ir", "register_number": 141},
{"tag_name": "Card_Past[4].Downhole_GrossStroke", "register_type": "ir", "register_number": 143},
{"tag_name": "Card_Past[4].Downhole_Max_Load.Load", "register_type": "ir", "register_number": 145},
{"tag_name": "Card_Past[4].Downhole_Max_Position.Position", "register_type": "ir", "register_number": 147},
{"tag_name": "Card_Past[4].Downhole_Min_Load.Load", "register_type": "ir", "register_number": 149},
{"tag_name": "Card_Past[4].Downhole_Min_Position.Position", "register_type": "ir", "register_number": 151},
{"tag_name": "Card_Past[4].Downhole_NetStroke", "register_type": "ir", "register_number": 153},
{"tag_name": "Card_Past[4].Fillage_Percent", "register_type": "ir", "register_number": 155},
{"tag_name": "Card_Past[4].Fluid_Above_Pump", "register_type": "ir", "register_number": 157},
{"tag_name": "Card_Past[4].Fluid_Moved", "register_type": "ir", "register_number": 159},
{"tag_name": "Card_Past[4].ID", "register_type": "ir", "register_number": 161},
{"tag_name": "Card_Past[4].Num_Points", "register_type": "ir", "register_number": 162},
{"tag_name": "Card_Past[4].Polished_Rod_HP", "register_type": "ir", "register_number": 163},
{"tag_name": "Card_Past[4].Pump_HP", "register_type": "ir", "register_number": 165},
{"tag_name": "Card_Past[4].Pump_Intake_Pressure", "register_type": "ir", "register_number": 167},
{"tag_name": "Card_Past[4].SPM", "register_type": "ir", "register_number": 169},
{"tag_name": "Card_Past[4].Surface_Max.Load", "register_type": "ir", "register_number": 171},
{"tag_name": "Card_Past[4].Surface_Max.Position", "register_type": "ir", "register_number": 173},
{"tag_name": "Card_Past[4].Surface_Min.Load", "register_type": "ir", "register_number": 175},
{"tag_name": "Card_Past[4].Surface_Min.Position", "register_type": "ir", "register_number": 177},
{"tag_name": "Card_Past[4].Surface_StrokeLength", "register_type": "ir", "register_number": 179},
{"tag_name": "Card_Past[4].Tubing_Movement", "register_type": "ir", "register_number": 181},
{"tag_name": "Drive_Speed_Reference_SP", "register_type": "ir", "register_number": 183},
{"tag_name": "Drive_Torque_Percent", "register_type": "ir", "register_number": 185},
{"tag_name": "GAUGEOFF_Average_SPM", "register_type": "ir", "register_number": 187},
{"tag_name": "GAUGEOFF_Downhole_GrossStroke", "register_type": "ir", "register_number": 189},
{"tag_name": "GAUGEOFF_Downhole_NetStroke", "register_type": "ir", "register_number": 191},
{"tag_name": "GAUGEOFF_Electricity_Cost", "register_type": "ir", "register_number": 193},
{"tag_name": "GAUGEOFF_Fluid_Above_Pump", "register_type": "ir", "register_number": 195},
{"tag_name": "GAUGEOFF_Inflow_Rate", "register_type": "ir", "register_number": 197},
{"tag_name": "GAUGEOFF_kWh", "register_type": "ir", "register_number": 199},
{"tag_name": "GAUGEOFF_kWh_Regen", "register_type": "ir", "register_number": 201},
{"tag_name": "GAUGEOFF_Lifting_Cost", "register_type": "ir", "register_number": 203},
{"tag_name": "GAUGEOFF_Max_Load", "register_type": "ir", "register_number": 205},
{"tag_name": "GAUGEOFF_Min_Load", "register_type": "ir", "register_number": 207},
{"tag_name": "GAUGEOFF_Percent_Run", "register_type": "ir", "register_number": 209},
{"tag_name": "GAUGEOFF_Polished_Rod_HP", "register_type": "ir", "register_number": 211},
{"tag_name": "GAUGEOFF_Pump_Intake_Pressure", "register_type": "ir", "register_number": 213},
{"tag_name": "GAUGEOFF_Surface_StrokeLength", "register_type": "ir", "register_number": 215},
{"tag_name": "GAUGEOFF_Production_Calculated", "register_type": "ir", "register_number": 217},
{"tag_name": "GAUGEOFF_Tubing_Movement", "register_type": "ir", "register_number": 219},
{"tag_name": "Gearbox_Loading", "register_type": "ir", "register_number": 221},
{"tag_name": "Gearbox_Torque", "register_type": "ir", "register_number": 223},
{"tag_name": "Input_Analog_1_AIN.Val", "register_type": "ir", "register_number": 225},
{"tag_name": "Input_Analog_2_AIN.Val", "register_type": "ir", "register_number": 227},
{"tag_name": "Input_Analog_3_AIN.Val", "register_type": "ir", "register_number": 229},
{"tag_name": "Instantaneous_SPM", "register_type": "ir", "register_number": 231},
{"tag_name": "kWh_Today", "register_type": "ir", "register_number": 233},
{"tag_name": "Max_Theoretical_Fluid_Load", "register_type": "ir", "register_number": 235},
{"tag_name": "Motor_Torque", "register_type": "ir", "register_number": 237},
{"tag_name": "Pump.Run_Status", "register_type": "ir", "register_number": 239},
{"tag_name": "Pump.Speed_Actual_SPM", "register_type": "ir", "register_number": 240},
{"tag_name": "Pump_Intake_Pressure", "register_type": "ir", "register_number": 242},
{"tag_name": "TODAY_Production_Calculated", "register_type": "ir", "register_number": 244},
{"tag_name": "TODAY_Production_Projected", "register_type": "ir", "register_number": 246},
{"tag_name": "TODAY_Percent_Run", "register_type": "ir", "register_number": 248},
{"tag_name": "Card_Past[1].Downhole_FluidLoad", "register_type": "ir", "register_number": 250},
{"tag_name": "_dt", "register_type": "hr", "register_number": 1},
{"tag_name": "Casing_ID", "register_type": "hr", "register_number": 3},
{"tag_name": "Drive_Start_Speed", "register_type": "hr", "register_number": 5},
{"tag_name": "Electricity_Cost", "register_type": "hr", "register_number": 7},
{"tag_name": "Estimated_Tubing_Movement", "register_type": "hr", "register_number": 9},
{"tag_name": "Fluid_Gradient", "register_type": "hr", "register_number": 11},
{"tag_name": "Friction", "register_type": "hr", "register_number": 13},
{"tag_name": "Gauge_Off_Time.Hour", "register_type": "hr", "register_number": 15},
{"tag_name": "Gauge_Off_Time.Min", "register_type": "hr", "register_number": 16},
{"tag_name": "Input_Analog_1_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 17},
{"tag_name": "Input_Analog_1_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 19},
{"tag_name": "Input_Analog_2_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 21},
{"tag_name": "Input_Analog_2_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 23},
{"tag_name": "Input_Analog_3_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 25},
{"tag_name": "Input_Analog_3_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 27},
{"tag_name": "Input_Inclinometer_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 29},
{"tag_name": "Input_Inclinometer_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 31},
{"tag_name": "Input_LoadCell_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 33},
{"tag_name": "Input_LoadCell_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 35},
{"tag_name": "K_Factor", "register_type": "hr", "register_number": 37},
{"tag_name": "Min_Fluid_Load_Shutdown_Setpoint", "register_type": "hr", "register_number": 39},
{"tag_name": "Input_Analog_1.Channel", "register_type": "hr", "register_number": 41},
{"tag_name": "Input_Analog_1.Type", "register_type": "hr", "register_number": 42},
{"tag_name": "Input_Analog_2.Channel", "register_type": "hr", "register_number": 43},
{"tag_name": "Input_Analog_2.Type", "register_type": "hr", "register_number": 44},
{"tag_name": "Input_Analog_3.Channel", "register_type": "hr", "register_number": 45},
{"tag_name": "Input_Analog_3.Type", "register_type": "hr", "register_number": 46},
{"tag_name": "Input_Inclinometer.Channel", "register_type": "hr", "register_number": 47},
{"tag_name": "Input_Inclinometer.Type", "register_type": "hr", "register_number": 48},
{"tag_name": "Input_LoadCell.Channel", "register_type": "hr", "register_number": 49},
{"tag_name": "Input_LoadCell.Type", "register_type": "hr", "register_number": 50},
{"tag_name": "Taper.Taper[1].Setup.Length", "register_type": "hr", "register_number": 51},
{"tag_name": "Taper.Taper[1].Setup.Diameter", "register_type": "hr", "register_number": 53},
{"tag_name": "Taper.Taper[1].Setup.Material", "register_type": "hr", "register_number": 55},
{"tag_name": "Taper.Taper[2].Setup.Length", "register_type": "hr", "register_number": 56},
{"tag_name": "Taper.Taper[2].Setup.Diameter", "register_type": "hr", "register_number": 58},
{"tag_name": "Taper.Taper[2].Setup.Material", "register_type": "hr", "register_number": 60},
{"tag_name": "Taper.Taper[3].Setup.Length", "register_type": "hr", "register_number": 61},
{"tag_name": "Taper.Taper[3].Setup.Diameter", "register_type": "hr", "register_number": 63},
{"tag_name": "Taper.Taper[3].Setup.Material", "register_type": "hr", "register_number": 65},
{"tag_name": "Taper.Taper[4].Setup.Length", "register_type": "hr", "register_number": 66},
{"tag_name": "Taper.Taper[4].Setup.Diameter", "register_type": "hr", "register_number": 68},
{"tag_name": "Taper.Taper[4].Setup.Material", "register_type": "hr", "register_number": 70},
{"tag_name": "Taper.Taper[5].Setup.Length", "register_type": "hr", "register_number": 71},
{"tag_name": "Taper.Taper[5].Setup.Diameter", "register_type": "hr", "register_number": 73},
{"tag_name": "Taper.Taper[5].Setup.Material", "register_type": "hr", "register_number": 75},
{"tag_name": "Taper.Taper[6].Setup.Length", "register_type": "hr", "register_number": 76},
{"tag_name": "Taper.Taper[6].Setup.Diameter", "register_type": "hr", "register_number": 78},
{"tag_name": "Taper.Taper[6].Setup.Material", "register_type": "hr", "register_number": 80},
{"tag_name": "Taper.Taper[7].Setup.Length", "register_type": "hr", "register_number": 81},
{"tag_name": "Taper.Taper[7].Setup.Diameter", "register_type": "hr", "register_number": 83},
{"tag_name": "Taper.Taper[7].Setup.Material", "register_type": "hr", "register_number": 85},
{"tag_name": "Taper.Taper[8].Setup.Length", "register_type": "hr", "register_number": 86},
{"tag_name": "Taper.Taper[8].Setup.Diameter", "register_type": "hr", "register_number": 88},
{"tag_name": "Taper.Taper[8].Setup.Material", "register_type": "hr", "register_number": 90},
{"tag_name": "Taper.Taper[9].Setup.Length", "register_type": "hr", "register_number": 91},
{"tag_name": "Taper.Taper[9].Setup.Diameter", "register_type": "hr", "register_number": 93},
{"tag_name": "Taper.Taper[9].Setup.Material", "register_type": "hr", "register_number": 95},
{"tag_name": "Taper.Taper[10].Setup.Length", "register_type": "hr", "register_number": 96},
{"tag_name": "Taper.Taper[10].Setup.Diameter", "register_type": "hr", "register_number": 98},
{"tag_name": "Taper.Taper[10].Setup.Material", "register_type": "hr", "register_number": 100},
{"tag_name": "UnitConfig.MotorNameplate.Volts", "register_type": "hr", "register_number": 101},
{"tag_name": "UnitConfig.MotorNameplate.Amps", "register_type": "hr", "register_number": 103},
{"tag_name": "UnitConfig.MotorNameplate.Hertz", "register_type": "hr", "register_number": 105},
{"tag_name": "UnitConfig.MotorNameplate.Poles", "register_type": "hr", "register_number": 107},
{"tag_name": "UnitConfig.MotorNameplate.RPM", "register_type": "hr", "register_number": 108},
{"tag_name": "UnitConfig.MotorNameplate.ServiceFactor", "register_type": "hr", "register_number": 110},
{"tag_name": "UnitConfig.MotorNameplate.Horsepower", "register_type": "hr", "register_number": 112},
{"tag_name": "UnitConfig.Pump_Diameter", "register_type": "hr", "register_number": 114},
{"tag_name": "UnitConfig.Anchor_Depth", "register_type": "hr", "register_number": 116},
{"tag_name": "UnitConfig.Total_Stroke_Length", "register_type": "hr", "register_number": 118},
{"tag_name": "UnitConfig.Motor_Sheave_Size", "register_type": "hr", "register_number": 120},
{"tag_name": "UnitConfig.Gearbox_Sheave", "register_type": "hr", "register_number": 122},
{"tag_name": "UnitConfig.Gearbox_Limit", "register_type": "hr", "register_number": 124},
{"tag_name": "UnitConfig.Gearbox_Ratio", "register_type": "hr", "register_number": 126},
{"tag_name": "UnitConfig.Rating_Gearbox", "register_type": "hr", "register_number": 128},
{"tag_name": "UnitConfig.Rating_Structural", "register_type": "hr", "register_number": 130},
{"tag_name": "UnitConfig.Well_Type", "register_type": "hr", "register_number": 132},
{"tag_name": "UnitConfig.Total_Vertical_Depth", "register_type": "hr", "register_number": 133},
{"tag_name": "UnitConfig.Tubing_Size_ID", "register_type": "hr", "register_number": 135},
{"tag_name": "UnitConfig.Tubing_Size_OD", "register_type": "hr", "register_number": 137},
{"tag_name": "UnitConfig.API_Oil", "register_type": "hr", "register_number": 139},
{"tag_name": "UnitConfig.SG_Water", "register_type": "hr", "register_number": 141},
{"tag_name": "UnitConfig.Percent_Water", "register_type": "hr", "register_number": 143},
{"tag_name": "Pump.Speed_Setpoint_SPM", "register_type": "hr", "register_number": 145},
{"tag_name": "Pump.Speed_Max", "register_type": "hr", "register_number": 147},
{"tag_name": "Pump.Speed_Min", "register_type": "hr", "register_number": 149},
{"tag_name": "Pump.POC_Percentage_Off", "register_type": "hr", "register_number": 151},
{"tag_name": "Pump.Auto_Percentage_RampDown", "register_type": "hr", "register_number": 153},
{"tag_name": "Pump.Auto_Percentage_RampUp", "register_type": "hr", "register_number": 155},
{"tag_name": "Pump.Mode", "register_type": "hr", "register_number": 157}
]

View File

@@ -0,0 +1,19 @@
[
{"tag_name": "Card_Past[1].Surface_Position", "register_type": "ir", "register_number": 252, "arr_len": 750},
{"tag_name": "Card_Past[2].Surface_Position", "register_type": "ir", "register_number": 1752, "arr_len": 750},
{"tag_name": "Card_Past[3].Surface_Position", "register_type": "ir", "register_number": 3252, "arr_len": 750},
{"tag_name": "Card_Past[4].Surface_Position", "register_type": "ir", "register_number": 4752, "arr_len": 750},
{"tag_name": "Card_Past[1].Surface_Load", "register_type": "ir", "register_number": 6252, "arr_len": 750},
{"tag_name": "Card_Past[2].Surface_Load", "register_type": "ir", "register_number": 7752, "arr_len": 750},
{"tag_name": "Card_Past[3].Surface_Load", "register_type": "ir", "register_number": 9252, "arr_len": 750},
{"tag_name": "Card_Past[4].Surface_Load", "register_type": "ir", "register_number": 10752, "arr_len": 750},
{"tag_name": "Card_Past[1].Downhole_Position", "register_type": "ir", "register_number": 12252, "arr_len": 750},
{"tag_name": "Card_Past[2].Downhole_Position", "register_type": "ir", "register_number": 13752, "arr_len": 750},
{"tag_name": "Card_Past[3].Downhole_Position", "register_type": "ir", "register_number": 15252, "arr_len": 750},
{"tag_name": "Card_Past[4].Downhole_Position", "register_type": "ir", "register_number": 16752, "arr_len": 750},
{"tag_name": "Card_Past[1].Downhole_Load", "register_type": "ir", "register_number": 18252, "arr_len": 750},
{"tag_name": "Card_Past[2].Downhole_Load", "register_type": "ir", "register_number": 19752, "arr_len": 750},
{"tag_name": "Card_Past[3].Downhole_Load", "register_type": "ir", "register_number": 21252, "arr_len": 750},
{"tag_name": "Card_Past[4].Downhole_Load", "register_type": "ir", "register_number": 22752, "arr_len": 750}
]

24
poc_scraper/digital.json Normal file
View File

@@ -0,0 +1,24 @@
[
{"tag_name": "_TOC_ACCEPTED", "register_type": "co", "register_number": 1},
{"tag_name": "Autotune_Next_Start", "register_type": "co", "register_number": 2},
{"tag_name": "Gas_Interference_Override_Enabled", "register_type": "co", "register_number": 3},
{"tag_name": "Gauge_Off_Manual", "register_type": "co", "register_number": 4},
{"tag_name": "Initialize", "register_type": "co", "register_number": 5},
{"tag_name": "Input_Analog_1.Enabled", "register_type": "co", "register_number": 6},
{"tag_name": "Input_Analog_2.Enabled", "register_type": "co", "register_number": 7},
{"tag_name": "Input_Analog_3.Enabled", "register_type": "co", "register_number": 8},
{"tag_name": "Input_Inclinometer_Calibrate", "register_type": "co", "register_number": 9},
{"tag_name": "Input_Inclinometer.Enabled", "register_type": "co", "register_number": 10},
{"tag_name": "Input_LoadCell.Enabled", "register_type": "co", "register_number": 11},
{"tag_name": "Min_Fluid_Load_Shutdown_Enabled", "register_type": "co", "register_number": 12},
{"tag_name": "Restart_After_Fault_Allowed", "register_type": "co", "register_number": 13},
{"tag_name": "Update_Tapers", "register_type": "co", "register_number": 14},
{"tag_name": "USE_WIRELESS_LOADCELL", "register_type": "co", "register_number": 15},
{"tag_name": "Write_Mode_Data", "register_type": "co", "register_number": 16},
{"tag_name": "Write_Setup_Data", "register_type": "co", "register_number": 17},
{"tag_name": "Pump.Start", "register_type": "co", "register_number": 18},
{"tag_name": "Pump.Stop", "register_type": "co", "register_number": 19},
{"tag_name": "Inclinometer_Calibrating", "register_type": "di", "register_number": 1},
{"tag_name": "Inclinometer_Stale", "register_type": "di", "register_number": 2}
]

View File

@@ -0,0 +1,79 @@
import pymongo
import json
from time import sleep
from time import time as now
from pymongo import MongoClient
import pycomm_helper.utils as plc
import os
class PLC_to_Mongo():
def __init__(self, plc_address):
client = MongoClient()
self.db = client.tag_data
self.tag_vals = self.db.tag_vals
self.PLC_IP_ADDRESS = plc_address
def run(self):
script_path = os.path.dirname(os.path.realpath(__file__))
print("THERE ARE ALREADY {} VALUES IN tag_vals".format(self.tag_vals.count()))
with open(script_path + '/analog.json', 'rb') as analogfile:
analog_list = json.loads(analogfile.read())
with open(script_path + '/digital.json', 'rb') as digitalfile:
digital_list = json.loads(digitalfile.read())
with open(script_path + '/arraylist.json', 'rb') as arrayfile:
arr_list = json.loads(arrayfile.read())
for entry in analog_list + digital_list + arr_list:
if self.tag_vals.find({'tag_name': entry['tag_name']}).count() < 1:
self.tag_vals.insert(entry)
print("NOW THERE ARE {} VALUES IN tag_vals".format(self.tag_vals.count()))
while True:
for t in analog_list:
try:
plc_val = plc.readTag(self.PLC_IP_ADDRESS, t['tag_name'])
if plc_val:
t['tag_type'] = plc_val[1]
t['val'] = plc_val[0]
t['timestamp'] = now()
self.tag_vals.update({'tag_name': t['tag_name']}, t)
print("Updated: {} - {}".format(t['tag_name'], t['val']))
except Exception as e:
print("[ERROR] {} - {}".format(t['tag_name'], e))
for t in digital_list:
try:
plc_val = plc.readTag(self.PLC_IP_ADDRESS, t['tag_name'])
if plc_val:
t['tag_type'] = plc_val[1]
t['val'] = plc_val[0]
t['timestamp'] = now()
self.tag_vals.update({'tag_name': t['tag_name']}, t)
print("Updated: {} - {}".format(t['tag_name'], t['val']))
except Exception as e:
print("[ERROR] {} - {}".format(t['tag_name'], e))
for a in arr_list:
try:
plc_val = plc.readArray(self.PLC_IP_ADDRESS, str(a['tag_name']), int(a['arr_len']))
if plc_val:
a['val'] = plc_val
a['tag_type'] = 'ARRAY'
t['timestamp'] = now()
self.tag_vals.update({'tag_name': a['tag_name']}, a)
print("Updated: {} - {}".format(a['tag_name'], a['val']))
except Exception as e:
print("[ERROR] {} - {}".format(a['tag_name'], e))
sleep(5)
def purge(self):
client = MongoClient()
db = client.tag_data
self.tag_vals = db.tag_vals
self.tag_vals.delete_many({})
print("THERE ARE {} VALUES IN tag_vals".format(self.tag_vals.count()))

49
poc_scraper/setup.py Normal file
View File

@@ -0,0 +1,49 @@
import os
from setuptools import setup, find_packages
here = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(here, 'README.md')) as f:
README = f.read()
with open(os.path.join(here, 'CHANGES.md')) as f:
CHANGES = f.read()
requires = [
'pymongo',
'pycomm',
'pycomm_helper',
]
tests_require = [
'pytest',
]
setup(
name='poc_scraper',
version='0.0',
description='Modbus TCP Server for Henry POC',
long_description=README + '\n\n' + CHANGES,
classifiers=[
'Programming Language :: Python',
'Framework :: Pyramid',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
],
dependency_links=['https://github.com/Henry-Pump/Pycomm-Helper/tarball/master#egg=pycomm_helper'],
author='',
author_email='',
url='',
keywords='web',
packages=find_packages(),
include_package_data=True,
zip_safe=False,
extras_require={
'testing': tests_require,
},
install_requires=requires,
entry_points={
'console_scripts': [
'poc_scraper = poc_scraper:main',
],
},
)