Pool Systems Automation: Difference between revisions
→Power Budget
Matt Parnell (talk | contribs) |
Matt Parnell (talk | contribs) |
||
| (113 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
== Overview == | |||
A monitoring and control automation system was installed in the pump house during the 2020-2021 off-season. As of June 2021, continued refinement is still on-going. It was custom designed and installed to aide in the management of the pool, ensuring the pool is safe and comfortable for all occupants while reducing effort for the staff. | |||
* To | == Background == | ||
The project was officially kicked off in December 2020 with the following goals: | |||
* To alert staff and key maintenance personal of abnormal operating conditions or situations requiring attention. | |||
* To protect aging equipment (i.e. the boiler) from damage due to malfunction. | * To protect aging equipment (i.e. the boiler) from damage due to malfunction. | ||
* To reduce staff workload by automatically filling the pool. | * To reduce staff workload by automatically filling the pool. | ||
* To record historical data for pressure, flow, temperature and chemical levels. | * To record historical data for pressure, flow, temperature and chemical levels. | ||
The following principles | The following principles drove and will drive all future design efforts: | ||
* The system must not hinder or add complexity to daily pool maintenance. | * The system must not hinder or add complexity to daily pool maintenance. | ||
| Line 14: | Line 18: | ||
* The system must be very well documented and maintainable by moderately technical member-volunteers. | * The system must be very well documented and maintainable by moderately technical member-volunteers. | ||
== Controller == | == Operation == | ||
=== Monitoring === | |||
==== Main Pump Motor ==== | |||
The [[Pool Main Pump Motor|main pump motor]] is monitored via an auxiliary contact on the motor starter. The contacts close upon pressing the <b>Start</b> button, assuming sufficient voltage is present and the overload is not tripped. The contacts open upon pressing the <b>Stop</b> button, or when another motor-stopping event occurs. | |||
The main pump motor auxiliary contact and a snapshot of the flow rate (via the flow meter) determines the operating state. | |||
{| class="wikitable" | |||
!State | |||
!LCD Notification | |||
!Condition(s) | |||
!Stack Light | |||
|- | |||
|Pump Stopped | |||
|<tt>Pump Stopped</tt> | |||
|The default state upon initialization. Set when the pump is stopped. | |||
|Red (Flashing) | |||
|- | |||
|Pump Startup | |||
|<tt>Pump Startup</tt> | |||
|The pump is starting up (a 10-second static delay once the motor starter contacts are closed). | |||
|Off | |||
|- | |||
|Operating | |||
|<tt>Pump Operating</tt> | |||
|The pump is operating and filter flow is in the normal operating direction. | |||
|Green/Yellow (Flashing) | |||
|- | |||
|Backwash | |||
|<tt>Pump Backwash</tt> | |||
|The pump is operating and filter flow has been set in the backwash direction. | |||
|Alternating Red-Green | |||
|} | |||
==== Filter Tank Pressure ==== | |||
[[File:Pool Filter Tank Pressure Gauges.jpg|thumbnail|A set of pressure gauges. Per the design principle, all electronic measurements have an accompanying manual gauge.]] | |||
Four [[Pool Filter Tanks|filter tank]] pressures are monitored by [[Pool Systems Automation#Sensors|sensors]] with internal signal conditioning. When fed by a 24 VDC (each sensor is independently fused), a 1 V to 5 V output corresponds with 0 to 100 psi of pressure. | |||
A value is considered valid if the measured voltage is 1 V or greater (less than 1 V suggests an open circuit or failed sensor). The low and high thresholds are somewhat arbitrary and based upon observation. A nominal pressure of 10 psi is assumed (add 8 psi to the limit per PHTA guidelines for a single-gauge backwash threshold). | |||
{| class="wikitable" | |||
!Qualifier | |||
!Threshold | |||
!Result | |||
!LCD Notification | |||
!Stack Light | |||
|- | |||
|Operating | |||
|< 8 psi | |||
|Pressure Low | |||
|<tt>Flt Tank Pres L</tt> | |||
|Yellow | |||
|- | |||
|Operating | |||
|≥ 8 psi and < 18 psi | |||
|Pressure OK | |||
|None | |||
|Green (unless overridden) | |||
|- | |||
|Operating | |||
|≥ 18 psi | |||
|Pressure High | |||
|<tt>Flt Tank Pres H</tt> | |||
|Yellow | |||
|} | |||
When in the <b>Pump Startup</b>, <b>Operating</b> or <b>Backwash</b> state, each tank pressure is briefly shown on the LCD in psi. If the value is not valid, <tt>Fault</tt> is shown in place of a pressure value. If rare circumstances (sensor failure, testing) the administrator may disable certain tank(s). It this case, the value will be shown as <tt>Disabled</tt> and any potential faults related to a particular pressure sensor will not affect the overall system status. | |||
==== Output Water Flow ==== | |||
[[File:Pool Output Water Flow Meter.jpg|thumbnail|The output water flow meter.]] | |||
The output water flow is monitored by a paddlewheel flow meter that generates a sine wave with a frequency proportional to the flow rate. A flow "transmitter" (GF Signet 8512) translates that analog output from the flow meter into a 4-20 mA signal proportional to the flow rate. | |||
The value is considered valid if the current measured is greater than or equal to 4 mA (not an open circuit). The low and high thresholds are based upon the required flow turnover rate for the pool volume and a maximum to avoid issues (channeling) in the filter tanks. | |||
{| class="wikitable" | |||
!Qualifier | |||
!Threshold | |||
!Result | |||
!LCD Notification | |||
!Stack Light | |||
|- | |||
|Operating | |||
|< 570 GPM | |||
|Low Flow Rate | |||
|<tt>Out Flow L</tt> | |||
|Yellow | |||
|- | |||
|Operating | |||
|≥ 570 GPM and < 670 GPM | |||
|Flow Rate OK | |||
|None | |||
|Green (unless overridden) | |||
|- | |||
|Operating | |||
|≥ 670 GPM | |||
|Flow Rate High | |||
|<tt>Out Flow H</tt> | |||
|Yellow | |||
|} | |||
When in the <b>Pump Startup</b> or <b>Operating</b> state, the flow rate is briefly shown on the LCD in GPM. If the value is not valid, <tt>Fault</tt> is shown in place of a flow rate value. | |||
==== Surge Tank Level ==== | |||
The surge tank level is monitored by a differential pressure sensor with built-in signal conditioning that generates a 4-20 mA signal proportional to the water depth. | |||
The value is considered valid if the current measured is greater than or equal to 4 mA (not an open circuit). The low and high thresholds are based upon the required flow turnover rate for the pool volume and a maximum to avoid issues (channeling) in the filter tanks. | |||
{| class="wikitable" | |||
!Qualifier | |||
!Threshold | |||
!Result | |||
!LCD Notification | |||
!Stack Light | |||
|- | |||
|Operating or Backwash | |||
|< 16 in | |||
|Level Critical Low (LL) | |||
|<tt>Surge Tank LL</tt> | |||
|Flashing Red (See Note 1) | |||
|- | |||
|Operating or Backwash | |||
|≥ 16 in and < 46 in | |||
|Level Low (L) | |||
|<tt>Surge Tank L</tt> (See Note 2) | |||
|Yellow (See Note 2) | |||
|- | |||
|Operating or Backwash | |||
|≥ 46 in and < 60 in | |||
|Level Nominal | |||
|None | |||
|Green (unless overridden) | |||
|- | |||
|Operating or Backwash | |||
|≥ 60 in and < 76 in | |||
|Level High (H) | |||
|<tt>Surge Tank H</tt> (See Note 2) | |||
|Yellow (See Note 2) | |||
|- | |||
|Operating or Backwash | |||
|≥ 76 in | |||
|Level Critical High (HH) | |||
|<tt>Surge Tank HH</tt> | |||
|Yellow | |||
|} | |||
<b>Notes:</b> | |||
* <b>Note 1:</b> After a brief delay (presently set to 5 seconds), a critical low (LL) level triggers a pump motor stop to prevent running the pump dry. The state changes to <b>Pump Stopped</b> and the stack light is set to flashing red. The operator should take care to eliminate the root cause of the critical low surge tank level before restarting the pump. | |||
* <b>Note 2:</b> These messages and stack light state are only applicable if [[Pool Systems Automation#Auto Fill|Auto Fill]] is disabled. If [[Pool Systems Automation#Auto Fill|Auto Fill]] is enabled, no fault message is shown on the LCD. The stack light will blink during the fill process. | |||
==== Boiler Status ==== | |||
Details to follow. | |||
=== Control === | |||
==== Auto Fill ==== | |||
If proper conditions are met, the pool is automatically filled when a low threshold is met via the surge tank water level sensor. | |||
Auto fill is enabled by default. This is indicated by a periodic <tt>AutoFill Enabled</tt> LCD notification. It may start during any state other than <b>Backwash</b> and the waiting to restart states following a "Critical Level Low (LL)" result. When in the one of those states, auto fill is paused and <tt>AutoFill Paused</tt> is periodically shown on the LCD. | |||
When auto fill is enabled, the "Level Low (L)" and "Level High (H)" results of the surge tank level are not fault/warning conditions; they becomes strictly thresholds at which auto fill starts/stops. | |||
Auto fill operates until the high level is met or auto fill is disabled. Auto fill operates for at least 2 minutes. If the high level threshold is not met after 4 hours, a timeout occurs. A timeout prevents auto fill for 12 hours in an effort to prevent over-filling the pool in the event of a sensor failure. This is indicated by a periodic <tt>Fill: TO (12 hr)</tt> LCD notification. If the high threshold is met within the 4 hour period, a minimum off time (MOT) prevents auto fill for 4 hours to prevent frequent cycling. This is indicated by a periodic <tt>Fill: MOT (4 hr)</tt> LCD notification. In theory, 3-5 cycles of auto fill may complete in a day, though thresholds should be set to keep this to 2 or less. | |||
=== User Interfaces === | |||
==== Stack Light ==== | |||
The stack light indicates the overall operating state of the system. | |||
{| class="wikitable" | |||
!State | |||
!Description | |||
|- | |||
|None | |||
|The system is off or the pump is starting up. | |||
|- | |||
|Solid Green | |||
|The pump and system are operating nominally. | |||
|- | |||
|Flashing Green | |||
|Same as <b>Green</b> with active pool fill. | |||
|- | |||
|Solid Yellow | |||
|The pump and system are operating but intervention may be required. | |||
|- | |||
|Flashing Yellow | |||
|Same as <b>Yellow</b> with active pool fill. | |||
|- | |||
|Solid Red | |||
|The pump is stopped by the operator. | |||
|- | |||
|Flashing Red | |||
|The pump is stopped due to the surge tank level. | |||
|- | |||
|Alternating Red-Green | |||
|The system is [[Backwashing|backwashing]]. | |||
|} | |||
==== Display and Keypad ==== | |||
Details to follow. | |||
==== Remote Monitoring ==== | |||
Details to follow. Remote monitoring is largely done via the [[Pool Systems Dashboard|dashboard]]. | |||
== Design == | |||
=== Programmable Logic Controller === | |||
[[File:Pool Systems Automation PLC.jpg|thumbnail|The PLC and support components (power supply and Lantronix unit).]] | |||
A DirectLogic 06 (D0-06DD2) programmable logic controller (PLC) is used for as the base for monitoring and control. A PLC was selected due to its reliability and relative ease-of-maintenance by volunteer maintenance staff. Within the electrical engineering community, most have had some level of experience with PLCs and/or ladder logic. It is assumed that within the membership, there will always be someone with the knowledge that can volunteer on an as-needed basis. | A DirectLogic 06 (D0-06DD2) programmable logic controller (PLC) is used for as the base for monitoring and control. A PLC was selected due to its reliability and relative ease-of-maintenance by volunteer maintenance staff. Within the electrical engineering community, most have had some level of experience with PLCs and/or ladder logic. It is assumed that within the membership, there will always be someone with the knowledge that can volunteer on an as-needed basis. | ||
The controller consists of an internal CPU, 24V inputs/outputs (I/O) and multiple add-on modules for analog measurements. Serial communication carried over WiFi via a Lantronix | The controller consists of an internal CPU, 24V inputs/outputs (I/O) and multiple add-on modules for analog measurements. Serial communication carried over WiFi via a Lantronix PremierWave XN, presenting the PLC as if it were connected to a virtual communication port on the host PC. | ||
==== Digital Inputs ==== | |||
{| class="wikitable" | |||
!Input | |||
!Function | |||
!Description | |||
|- | |||
|X4 | |||
|Surge Tank Float | |||
|Not presently implemented; reserved for future use. | |||
|- | |||
|X5 | |||
|Motor Starter Status | |||
|Active when the main pump is operating. | |||
|- | |||
|X10 | |||
|Boiler Stage A | |||
|Active when conditions described in [[Pool Boiler#Stage A: Demand for Heat|Pool Boiler Stage A: Demand for Heat]] are met. | |||
|- | |||
|X11 | |||
|Boiler Stage B | |||
|Active when conditions described in [[Pool Boiler#Stage B: Flow/Temperature Interlocks|Pool Boiler Stage B: Flow/Temperature Interlocks]] are met. | |||
|- | |||
|X12 | |||
|Boiler Stage C | |||
| | |||
|- | |||
|X13 | |||
|Boiler Stage D | |||
| | |||
|- | |||
|X14 | |||
|Boiler Stage E | |||
| | |||
|} | |||
==== Digital Outputs ==== | |||
{| class="wikitable" | |||
!Output | |||
!Function | |||
!Description | |||
|- | |||
|Y4 | |||
|Stack Light Red | |||
|Drives the red element of the stack light. | |||
|- | |||
|Y5 | |||
|Stack Light Yellow | |||
|Drives the yellow element of the stack light. | |||
|- | |||
|Y6 | |||
|Stack Light Green | |||
|Drives the green element of the stack light. | |||
|- | |||
|Y10 | |||
|Fill Valve | |||
|Drives the pool fill valve into the open position (spring-return when off). | |||
|- | |||
|Y11 | |||
|Motor Starter Stop | |||
|Stops the main pump by mimicking "stop" button closure. | |||
|- | |||
|Y12 | |||
|Boiler Disable | |||
|Disables boiler operation when a significant fault condition is observed. | |||
|} | |||
==== Expansion Modules ==== | |||
{| class="wikitable" | |||
!Slot | |||
!Part Number | |||
!Function | |||
!Purpose | |||
|- | |||
|1 | |||
|D0-07CDR | |||
|4 x 12/24 VDC Input, 3 x Relay | |||
|Not used at this time (spare) | |||
|- | |||
|2 | |||
|F0-04AD-2 | |||
|4 x Analog Input (0-5 VDC or 0-10 VDC) | |||
|Sensor inputs (pressure) | |||
|- | |||
|3 | |||
|F0-04AD-1 | |||
|4 x Analog Input (0-20 mA or 4-20 mA) | |||
|Sensor inputs (flow, depth) | |||
|- | |||
|4 | |||
|N/A | |||
|Not Populated | |||
|Spare | |||
|} | |||
==== Serial Interfaces ==== | |||
The DL06 PLC has two built-in serial interfaces. Each port is connected to a port on the Lantronix Premierwave XN. The configuration as follows: | |||
{| class="wikitable" | |||
!Serial<br>Interface | |||
!Electrical<br>Configuration | |||
!Serial<br>Configuration | |||
!Purpose | |||
!Lantronix<br>Port | |||
|- | |||
|Port 1 | |||
|RS-232 | |||
|9600 8O1/None | |||
|Local Programming<br>(using interface cable) | |||
|Port 2 | |||
|- | |||
|Port 2 | |||
|RS-232 | |||
|38400 8N1/None | |||
|Modbus Slave<br>([[Pool Systems Dashboard|dashboard monitoring]]) | |||
|Port 1 | |||
|- | |||
|<b>Planned:</b> D0-DCM Port 1 | |||
|RS-232 | |||
|Default | |||
|Not Used<br>(spare) | |||
|N/A | |||
|- | |||
|<b>Planned:</b> D0-DCM Port 2 | |||
|RS-485 | |||
|19200 8N1 | |||
|Modbus Master<br>([[Pool Main Pump Motor|VFD]] and [[Boiler Temperature Controller|boiler temperature control]]) | |||
|N/A | |||
|} | |||
Notes: | |||
== | * Port 1 is limited to 9600 baud, odd parity and RS-232 communication. | ||
=== Sensors === | |||
The following points, as shown in the [[Process Flow Diagram]], are monitored by the PLC: | The following points, as shown in the [[Process Flow Diagram]], are monitored by the PLC: | ||
| Line 30: | Line 392: | ||
There are additional sensors, not directly monitored by the PLC, but considered to be part of the system: | There are additional sensors, not directly monitored by the PLC, but considered to be part of the system: | ||
* 1 x Temperature Transmitter (TT) prior to the inlet of the boiler. This unit is used as the feedback for the temperature controller, which raises a call for heat to the boiler. | * 1 x Temperature Transmitter (TT) prior to the inlet of the boiler. This unit is used as the feedback for the [[Pool Heater Temperature Controller|temperature controller]], which raises a call for heat to the boiler. | ||
* 1 x Flow Transmitter (FT), pH probe | * 1 x Flow Transmitter (FT), pH probe, ORP probe and conductivity sensor. These sensors are fed into the Chemtrol PC2100 and are detailed [[Chemtrol_Pool_Controller#Instrumentation|here]]. | ||
The following sensors are used: | |||
{| class="wikitable" | |||
!Parameter | |||
!Sensor Part | |||
!Range | |||
!Output | |||
|- | |||
|Pressure | |||
|Measurement Specialties MSP-300-100-P-4-N-1 | |||
|0 to 100 psi | |||
|1-5 V analog | |||
|- | |||
|Flow (Output) | |||
|GF Signet P51530-P1 | |||
|0.3 to 6 m/s<br>1 to 20 ft/s | |||
|Sine Wave (analog) | |||
|- | |||
|Depth | |||
|ALS-MPM-2F | |||
|0-5 meters | |||
|4-20 mA | |||
|- | |||
|Temperature | |||
|TBD - PT100 RTD | |||
| -40 to +400 degC | |||
|Resistive | |||
|} | |||
NOTE: The flow meter was previously a GF Signet MK515.3P1. Erratic behavior prompted its replacement in early June 2021. | |||
== | === Power Budget === | ||
{| | {| class="wikitable" | ||
| | !Item | ||
| | !Consumption | ||
!Comments | |||
|- | |||
|EA7-T8C Panel | |||
|625 mA | |||
|- | |||
|Lantronix PremierWave XN | |||
|94 mA | |||
|Per the spec sheet, the device consumes 2.25 W @ 30 VDC. Using the same figure for 24 VDC. | |||
|- | |||
|Pressure Tank Sensors (4) | |||
|80 mA | |||
|A quantity of 4 x 4-20 mA sensors. | |||
|- | |||
|Depth Sensor | |||
|20 mA | |||
|A single 4-20 mA sensor. | |||
|- | |||
|Flow Meter | |||
|20 mA | |||
|A single 4-20 mA sensor. | |||
|- | |||
|Digital Inputs (10) | |||
|85 mA | |||
|On the PLC base, X0 to X3 consume 13 mA, X4 to X23 consume 8.5 mA. Assuming ten digital inputs. | |||
|- | |||
|Relays (3) | |||
|112.5 mA | |||
|Each coil has a nominal resistance of 640 Ohms (37.5 mA @ 24 VDC). | |||
|- | |||
|Stack Light | |||
|50 mA | |||
|The LME-302L consumes 18 mA per red/yellow and 14 mA for green. | |||
|- | |||
|Programmed Stop Button | |||
|26 mA | |||
| | |||
|- | |||
|Total | |||
|1,112.5 mA | |||
|487.5 mA without EA7-T8C | |||
|} | |} | ||
=== Drawings === | |||
Drawings in the automation system package have an FFSC-001 prefix. Drawings have been updated as of May 14th, 2022 with multiple corrections and as-built updates. They are still in process and subject to review and change. | |||
==== Panel Layout ==== | |||
Pages 5-9 are reserved for enclosure panel layouts. | |||
<b>NOTE:</b> Panel layout drawings are created for initial planning purposes and may not accurately reflect later modifications. | |||
[[File:FFSC-001 Pg 5 - PLC Panel Layout.png|300px]] | |||
==== Sensor Wiring ==== | |||
Pages 10-19 are reserved for sensors (including "flow meters") and their associated wiring. | |||
<b>NOTE:</b> The water level probe is presently not used. Documentation is preserved for reference purposes. | |||
[[File:FFSC-001 Pg 10 - Filter Tank Pressure Sensors.png|300px]] | |||
[[File:FFSC-001 Pg 11 - Flow Meter.png|300px]] | |||
[[File:FFSC-001 Pg 12 - Water Level Sensors.png|300px]] | |||
[[File:FFSC-001 Pg 13 - Water Level Probe.png|300px]] | |||
==== Programmable Logic Controller ==== | |||
Pages 20-29 are reserved for the PLC and its expansion modules. | |||
[[File:FFSC-001 Pg 20 - PLC Base.png|300px]] | |||
[[File:FFSC-001 Pg 21 - PLC Digital Inputs.png|300px]] | |||
[[File:FFSC-001 Pg 22 - PLC Digital Outputs.png|300px]] | |||
[[File:FFSC-001 Pg 23 - PLC Digital IO.png|300px]] | |||
[[File:FFSC-001 Pg 24 - PLC Slot 2 - 0-5 V Analog Inputs.png|300px]] | |||
[[File:FFSC-001 Pg 25 - PLC Slot 3 - 4-20 mA Analog Inputs.png|300px]] | |||
==== Auxiliary ==== | |||
Pages 40-49 are reserved for systems related to the automation system. | |||
<b>NOTE:</b> Page 41 is out-of-date and pending update (need to remove magnetic starter to reflect use of VFD). | |||
[[File:FFSC-001 Pg 40 - Boiler Auxiliary.png|300px]] | |||
[[File:FFSC-001 Pg 41 - Pump House Motor.png|300px]] | |||
==== Other Drawings ==== | |||
Some systems related to the automation system are complex enough to justify their own drawing package. These systems are related, but only share some signals (i.e. RS-485 link) and are not dependent upon the automation system to function. | |||
Drawings that were previously part of the automation system drawing package, but have since been moved: | |||
* [[:File:FFSC-003 Pg 1 - PC2100 Wiring.png|FFSC-003 Pg 1 - PC2100 Wiring.png]] | |||
* [[:File:FFSC-004 Pg 1 - Chlorinator.png|FFSC-004 Pg 1 - Chlorinator.png]] | |||
== Known Issues == | |||
* Detection of backwash (versus operating) is occasionally incorrect. This is likely due to the ramp-of of the flow meter. | |||
* Some PLC LCD time display screens are buggy. | |||
== Planning == | |||
The following features are planned when possible: | |||
* Implement time-of-day auto-fill to reduce the frequency at which the pool is filled during the day. The club is not billed at a time-of-day rate, but as "good citizens" it is ideal to fill during low-demand periods to help reduce water bills for all city residents. | |||
* Add a float switch as a failsafe means for detecting over-fill. In the event that the depth sensor fails. | |||
* Add [[Pool Main Pump Motor#Variable Frequency Drive|variable frequency drive]] control for the main pump motor, when and if implemented. | |||
* Add [[Surge Tank#Motorized Actuator|motorized actuator]] control for a surge tank modulating drain valve, when and if implemented. | |||