Assessing Steam Consumption with an Alarm Clock: Step 2 – Detecting a Pump Cycle

As you will recall from the post that started this series, there are two fundamental ways to use condensate pump cycles to determine steam consumption.

  1. One approach assumes that that each time a condensate pump operates, it discharges a known quantity of condensate to the return system. To calculate the steam consumption, you count the pump cycles and multiply the number of cycles by the volume per cycle.
  1. The other approach assumes that since the pumps typically pump between two fairly stable pressures (the pressure in the condensate reciever and the pressure in the condensate return system) then the operating point on their pump curve is fairly stable. In other words, if the pump is running, its pumping at a steady flow rate. To caclulate steam consumption you multiply the pump run time by the flow produced by the pump when it operates. Typically, the flow rate can be determined from the pump curve and a pump test.

Both approaches assume that since the condensate comes from condensed steam, then the condensate flow rate represents the steam flow rate. And both approaches are ignorant of steam that is lost due to leaks or due to direct consumption of steam by a process such as humidification if they are applied to the condensate return pumps.  Applying them to the boiler feed water pumps will pick up these loads however, since the flow rate into the boiler is eventually the flow rate out of the boiler (maintenance blow-downs aside).

And, its important to remember that the condensed steam may not represent the entire heating load on the facility. For instance, I’m currently involved in a project where the hot condensate from the heat exchanger serving the building is piped through a second heat exchanger. Return water from the building flows through this heat exchanger on its way to the primary heat exchanger, sub cooling the condensate and recovering some of the energy it contains back into the heating water system (See footnote 1).

Thus, the total load on the building is the sum of the condensed steam plus the heat recovered from the condensate. Since the technique we are discussing is only looking at condensate volume and does not look at any temperature change experienced by that volume, it can only assess the portion of the load associated with condensed steam.

All of those things said, we are looking at how I took raw data from a data logger deployed to monitor condensate pump amps on a current project and converted it from  amperage readings to a steam system load and load profile using the first technique (pump cycles times volume per cycle). Bear in mind that this is just the approach I use; there are others that would work and typically, for any given engineering problem, the number of solutions (not all of which will be good) is probably something like the number of engineers involved multiplied by 2 or 3.

The previous post looked at some issues that I needed to address to make my raw data usable; issues like relative calibration, and getting the time stamp correct. That left us with data that looked like this.


Note that in the highlighted cells, the current jumps from a few hundredths of an amp to a bit over 2 amps and back. This is the first pump cycle and the challenge is to figure out a way to have the spreadsheet detect a cycle and then count it. Since what I am interested in is knowing begins with simply knowing if the pump was on or off at any given time, I tend to like to convert the data to a column that simply reflects two states; On or Off. To do that, I use the Excel “If” function, which lets you perform a logic test on a different cell that yields one result if the logic is true and a different result if the logic is false.  Here is what the dialog box looks like in Excel.  I suspect other spreadsheets have similar functions and user interfaces.


What I would like to do is create a column that has a “1” or “On” in it if the pump is running and a “0” or “Off” in it if the pump is not running.

I can determine if the pump is running if the current I measure is above the few hundredths of an amp that shows up because of “noise” from the sensor. But I need to be careful because the running current varies slightly. So for example (referring to the data above) if I compared the value in the current data cell to the number 2.16 (the first current reading I have when the pump cycles) and made the cell 1 if the value was greater than that and 0 if it was less than that, I would get a 1 for the first data point when the pump is running (because 2.166 is greater than 2.160) but a 0 for the second data point (because 2.131 is less than 2.160).

To get around that issue, I compare the cell to a value that is well above the “noise” but well below the running current. For simplicity, I used “1” but “.5” or “.987652” would have worked. Before I picked the number, I took a quick look at the data to see what the range of values were. One way to do that would be to literally pan down through all 16,384 data points looking at the numbers. This is a bit daunting and tedious. So, instead, I used Excel’s “Sort” feature to sort the data by the value in the “Current” column, which gave me a result that looked like this.


By sorting from high to low in that column, I clumped all the operating cycles togther and, while I still had to page down a bit to see where the “break” was between noise and actual current draw, having everything clumped together makes it jump out, at least for me. To get the data back in the original order, I simply used the Excel “Undo” command (Control “Z”). Or, I could have re-sorted based on one of the date and time columns. Or, I could have saved the original data as a temporary file to play with and then gone back to my original data file.

I tend to use “1” and “0” for applications like this because it makes it easier to do math with the data. But it may make more sense to you to use “On” or “Off” and either approach is fine. You can even use an Excel feature called “Conditional Formatting” to change the color of a cell depending on its value if you wanted to make something stand out. The pictures below show a column with each approach with the the formulas exposed so you can see what they look like.


Placing a ‘0’ or ‘1″ in the column.


Placing “On” or “Off” in the column.


Changing cell colors based on the cell value.

If you have been following along in this string of posts, you will recall that my data is not as clean as it could be because I launched the logger in the office then carried it to the site and then plugged in the CT. So, up until the CT was plugged in, the logger was logging values in the range of 9-11 amps because that’s the number it generates when there is no CT plugged in. That means that if I only use an “If” function that looks at values above 1 amp, I will count all of those points in time when the logger was logging data with out a CT.

There are a number of ways to deal with this. One would be to simply delete the rows that had currents in them that were above both the noise threshold and the typical running amps. The Excel “Sort” function makes this easy; simply sort by the value in the current column. That will clump all the nominal 9 through 11 amp values together, making the rows that contain them easy to highlight and delete. The result looked something like this right before I deleted everything above a nominal 4-5 amps.


To get to this point, I sorted based on current, paged down and highlighted all of the rows that had a current value in the 9 or more range and right clicked on the highlighted cells to get the little dialog box. Clicking “Delete” will remove the highlighted rows from the spreadsheet. Then, if I re-sort based on Time and Date, I will have my original data in the original order with out the superfluous information logged before the actual installation of the logger on the pump.

You will notice that I have a number of readings that are above the nominal 2 amps I have been discussing associated with the pump operating and that these readings are less than 5 amps. Since the condensate pump is a duplex unit (it has two pumps), these probably represent points in time when both pumps ran. This could have happened because of a sudden, heavy condensate load, or because alternator switched the lead pump, or because someone tested the pumps by manually placing them in “hand” for a couple of seconds. There are not many of these readings and choosing to keep or discard them is a judgment call and probably will not affect the results much. I decided to keep them since they did represent actual pump cycles vs. superfluous data.

Another approach for filtering out the readings from when the logger was logging but not installed would involve using a second “If” statement. And, there are a number of ways to do that. I used a technique called a “nested If” which involves using a second “If” statement as one of the results associated with the first “If” statement. Here is what it looked like in my spreadsheet.


Basically, the formula is saying something like check the value in the current column and it its greater than 1, also check to see if its less than 5. If both of those things are true, then put a “1” in the cell with the formula, otherwise, out a “0” in the cell.

All of these techniques are a way to filter data. In the next post, I’ll look at a few more filtering techniques, including the filtering feature built into Excel.


David Sellers
Senior Engineer – Facility Dynamics Engineering

Click here for a recent index to previous posts


1. In a perfect world, recovering heat from the condensate on its way back to a boiler would seem like a complexity that works against the efficiency of the boiler plant. After all, if the condensate comes back colder than it otherwise would, the boilers have to add more heat to it to bring it up to steaming temperature. The reason this approach has been used on the project I mention is that the steam and condensate system serve a large campus with long return runs between the loads and the central boiler plant. As a result, it takes a while for the condensate to make it back to the plant, and in the course of the trip, it sits around in receivers for a while and flows through long piping runs. As a result, much of the energy it contains in the form of heat is lost to the local environment. Sub-cooling the condensate to preheat the heating water system return water recovers this energy for a useful purpose rather than having it be lost to the ambient environment on the way back to the boiler plant.

This entry was posted in Data Logging. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s