Ferguson Beauregard Tyler, TX - Staff Computer Analyst
      Return
Company markets plungers and measuring equipment to enhance and measure production of gas wells.
I was the only Windows Visual C++ software developer that worked directly for the company.
I coordinated my efforts with the primary offsite RTU developer in making enhancements to the system. From time to time I worked with offsite developers in adding features to the Windows software.
Enhancements and changes in the software were made based upon the direct input of clients and company management. I visited customer's sites to install software and to resolve problems. I also provided remote support by using PC Anywhere.
The application that I refined was software that executes on a PC to communicate by radio or cell phone with RTU's (Remote terminal units) installed on gas wells
Features of the software include the following:
- Communications between the host computer (with the SCADA software) and remote terminal units by radio or cell phone. The software was written from scratch, and I continue to make improvements in the communications. Incoming packets of data are decoded with the software written from scratch.
Improvements that were made included:
- A separate thread for receiving data
- A feature to close a port and open it up again if the communications fails (Windows NT can inadvertently close ports)
- Added a feature where a radio repeater may be connected to a cell phone so the software package may dial up the repeater and scan the RTU's associated with the repeater.
- Revamped the RTU scanning sequence code so that an installation may have some RTU's connected to cell phones, others have direct radio communications, and some others with the new mixed type as described above.
- Raw counts from the field remote terminal units are converted into engineering units. Gas calculations are performed.
- Data is in instantaneous form (snapshot) and trend form. Instantaneous data is presented on the GUI, while trend data is presented as trends, daily and monthly reports, spreadsheet exports, and comma delimited file exports.
- Data is retrieved by demand and by scheduled scan. RTU's may issue unsolicited alarms that are accepted by the host software.
- The operator is able to retrieve control parameters from RTU's, modify them, and send them back to the RTU's.
The company bought the software source from another firm. This software had no documents; I had only the source and workspace files to work with. This software was developed using SDK (Windows API) in C rather than C++ with MFC.
This software had a number of problems.
- When the compilation level was set to three, there were over 700 warnings when the source code was compiled.
- The program had a propensity to abort. Originally this application was so bad that the customer threatened to return purchased equipment.
I improved the reliability of the software by:
- Cleaning up the code so that there are no compiler warnings.
- Porting the code to 32-bit.
- Advising clients with large installations to use Windows NT instead of Windows 95 or 98.
The results of this work are:
- The software is able to run for weeks at a time without aborting.
- The software has been so improved that the client endorsed the equipment on the company's promotional video presentation.
This software had a DLL, which I converted into a static library and put the graphical elements into the .rc file associated with the executable. I did this since it is easier to deal with only one module for the executable.
This job demanded quick turnaround at times. Other projects included:
- A new utility to set RTU addresses. Previously the host software (loaded into a laptop) was used to change the address. However, RTU's at times would assume the same address. I came up with a new utility to change the address in three weeks. This utility was written in C++ with MFC. Since then I have extended it to change passwords when a keypad option was implemented for the RTUs. I coordinated with the RTU developer while he made the necessary changes in the RTU code.
- A database extraction application was created using a DLL that I formed from host source code and executable supplied by a local contractor. Since this DLL was extracted from host code, it was possible to form a new DLL whenever the host code was changed. Completion of this project enabled the company to recover $800,000 that the client was holding back until the data export package was complete.
- The host code was originally meant to convert raw counts from A/D (from sensors) into engineering units, not to accept engineering unit data from gas flow computers. I consolidated the conversions so that I could insert the finished engineering data in place of the conversions if data was gathered from a gas flow computer attached to an RTU.
- Within a very short time (3 months) I took existing host code and converted it to work with a system that measures gas flows based on multiple orifices with shared line pressure and line temperature sensors.
I also helped maintain the embedded code for the RTUs. The RTU is based on Tern and the V-25 CPU, and the programming language was C.
Return