Plow Technologies

Plow Technologies is an industrial automation and SCADA company based in Oklahoma City OK. The company is unique in providing both full service automation along with SCADA tools via OnPing for monitoring site data remotely. Plow technologies provides automation and SCADA services to companies in the automotive, energy, food processing, and municipal sectors.

At Plow I had the opportunity to work on two different projects. The first was to create a program that could calculate downhole dynamometer cards with data from any oil well's surface card. The second was to create firmware (and an assembly) that would read and write digital, analog, and PWM signals over MQTT. Along with these projects, I also helped solve small issues in OnPing's frontend, and to test some of the capabilities of Phoenix Contact's PLCNext platform.

Computing downhole dynamometer cards

Dynamometer cards are plots frequently used to measure the performance of artificial lift wells. These plots show measurements of load vs position of the well rod during operation.

Dynamometer cards from Echometer's TAM software


Here are some examples of dynamometer cards. This is a pair of cards from the same well. The top one is measured at the surface, and the bottom is measured deep in the well hole at the pump.

"Downhole" card data at the pump is much better than surface card data for the calculation of well production, leakage, and for quickly diagnosing problems in the well.

Unlike surface cards, downhole cards can only be measured under specific conditions, with expensive tools designed specifically for that purpose. This leaves us with the problem of finding out what's happening at the pump 9000 ft. below where a measurement can reasonably be taken.

Fortunately, since the 1960s, techniques for calculating downhole dynamometer cards from surface cards have been developed. This is where my project started, reading what Sam Gavin Gibbs wrote about the wave equation for rod pumps in "Rod Pumping: Modern Methods of Design, Diagnosis, and Surveillance". Using numerical methods to solve the wave equation as the load propogated through the stretching well rod, a computer program can quickly solve any surface card for an accurate downhole card.

Downhole card recreated from TAM surface card data & well parameters.

I've included some pictures of my project's calculated downhole cards here. These use surface card data from Echometer's TAM, as well as certain important well parameters. My calculated cards are plotted against TAM's for the sake of comparison. The project was done in python, and the plots were made with matplotlib.

Dynamometer cards for a multi-taper deep well (9000+ ft.)

Dynamometer cards for a multi-taper well with sliding

This project was definitely one of my favorites. Getting to combine computer science with the physics of a highly mechanical system perfectly blends my interests. The finished product enables accurate understanding of something routinely unmeasurable, but still important.

Adafruit Feather communication over MQTT (OnPing Pulse)


I picked this project up from a coworker who had previously worked to design a complete assembly including an adafruit Feather that could communicate over ethernet.

My project inherited the name Pulse from the old one. Using this as my starting place, I created firmware (C++/ Arduino) that could handle MQTT messages formatted with Json. These messages allowed users to remotely write different output lines high or low on the Pulse. The Pulse would also publish the status of all of its pins in a Json dictionary whenever mqtt messages were read in certain topics.

This created a remote control loop, and allowed feedback to be incorporated into any controller communicating over mqtt with (or through) the pulse. You can view the entire project here since we made it entirely open source. The firmware is written in a way that it should be adaptable to any arduino board, so feel free to try it out for your own home automation project.

OnPing supports remote reading and writing of MQTT messages. This meant I could create an HMI for the Pulse in OnPing and anything connected to its io, as well as write comm statuses, and create virtual parameters such as timers using OnPings scripting language Inferno.

CAD modeling & design


I used OnShape to enhance the original design of the Pulse. My design changes focused mainly around allowing the entire electronic assembly to easily slide in and out of the case, without falling out during normal operation. Because the original project was 6 years old, I had to reacreate the CAD model from scratch. I also added the OnPing logo to the design, and added updated OnPing graphics to the laser engraved aluminum surface.

Final assembly


Demonstration


Miscellaneous Projects

I also had the chance to get familiar with the SCADA and automation systems that Plow uses. These projects were much less involved than the downhole card or Pulse projects, but still helpful for understanding how mine would be integrated with the bigger picture. I made small changes to the frontend of OnPing, such as preventing text wrapping in certain HMI elements, and worked with their tools for networking new devices. I also created virtual parameters and scripts in Plow's programming language Inferno for the comm status of my Pulse and its network link (what Plow refers to as a lumberjack). I made small contributions to Infreno, such as small function wrappers for haskell functions, and documentation on importing torchscript models. I also created a simple ladder logic program to blink the LEDs on the PLCnext from phoenix contact.