Compare commits
12 Commits
v2.0.1
...
vfd-wrappe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9165f6f222 | ||
|
|
2a732036b2 | ||
|
|
2c2cc8bb8d | ||
|
|
4f04584265 | ||
|
|
6dac788e93 | ||
|
|
32923324f0 | ||
|
|
9010cda9a4 | ||
|
|
4a2ba7ff9d | ||
|
|
4f076cae2f | ||
|
|
053ebcd7d4 | ||
|
|
bcc56fc342 | ||
|
|
2974f4491d |
Binary file not shown.
9584
Advanced_VFD_IPP.ACD
9584
Advanced_VFD_IPP.ACD
File diff suppressed because one or more lines are too long
10065
Advanced_VFD_IPP_L19.ACD
10065
Advanced_VFD_IPP_L19.ACD
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
29263
MaxWaterSystem.ACD
29263
MaxWaterSystem.ACD
File diff suppressed because one or more lines are too long
17822
MaxWaterSystem_L24.ACD
17822
MaxWaterSystem_L24.ACD
File diff suppressed because one or more lines are too long
4
PID Loop Testing/test_pid.py
Normal file
4
PID Loop Testing/test_pid.py
Normal file
@@ -0,0 +1,4 @@
|
||||
"""Simulate a water well."""
|
||||
|
||||
|
||||
flowrate_in = 100 # GPM, typically unknown and changing
|
||||
@@ -8,32 +8,31 @@
|
||||
<!-- Use data-confirm-message to set the exact message that pops up in the alert window. -->
|
||||
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to remotely start the well?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cmd_Start',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Start</a>
|
||||
<!-- Two sets were occurring because you had both the confirmstatic and setstatic classes on the button. Use one or the other, but not both. -->
|
||||
data-confirm-message="Are you sure you want to remotely start the well?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cmd_Start', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Start</a>
|
||||
</div>
|
||||
<div class='col-xs-6 text-center box-me'>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to remotely stop the well?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cmd_Stop',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Stop</a>
|
||||
data-confirm-message="Are you sure you want to remotely stop the well?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cmd_Stop', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Stop</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -42,171 +41,187 @@
|
||||
<div class="col-xs-12 text-center">
|
||||
<h1>PID Settings</h1>
|
||||
</div>
|
||||
<div class="col-md-6 box-me entry-top-level" id="flowsetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Flow Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Flow"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
<div class="col-md-6 box-me">
|
||||
<div class="entry-top-level" id="flowsetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Flow Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Flow"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.flowsetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_FlowSP',<%=channels['advvfdipp.flowsetpoint'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
data-staticsend="{'tag': 'cfg_PID_FlowSP', 'val': <%=channels['advvfdipp.flowsetpoint'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad15">
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Flow Control Mode?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_Flow',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Activate Flow Control</a>
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Flow Control Mode?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_Flow', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic">
|
||||
Activate Flow Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="fluidlevelsetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Fluid Level Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Fluid Level"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
<div class="col-md-6 box-me">
|
||||
<div class="entry-top-level" id="fluidlevelsetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Fluid Level Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Fluid Level"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.fluidlevelsetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_FluidLevelSP',<%=channels['advvfdipp.fluidlevelsetpoint'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
data-staticsend="{'tag': 'cfg_PID_FluidLevelSP', 'val': <%=channels['advvfdipp.fluidlevelsetpoint'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad15">
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Fluid Level Control Mode?"
|
||||
data-refreshpause="3"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_FluidLevel',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
data-staticsend="{'tag': 'cfg_PID_FluidLevel', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic ">
|
||||
Activate Fluid Level Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="tubingpressuresetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Tubing Pressure Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Tubing Pressure"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
<div class="col-md-6 box-me">
|
||||
<div class="entry-top-level" id="tubingpressuresetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Tubing Pressure Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Tubing Pressure"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.tubingpressuresetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_TubingPressureSP',<%=channels['advvfdipp.tubingpressuresetpoint'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
data-staticsend="{'tag': 'cfg_PID_TubingPressureSP', 'val': <%=channels['advvfdipp.tubingpressuresetpoint'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad15">
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Tubing Pressure Control Mode?"
|
||||
data-refreshpause="3"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_TubingPressure',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
data-staticsend="{'tag': 'cfg_PID_TubingPressure', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic">
|
||||
Activate Tubing Pressure Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="manualfrequencysetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Manual Frequency Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Manual"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
<div class="col-md-6 box-me">
|
||||
<div class="entry-top-level" id="manualfrequencysetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Manual Frequency Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Manual"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.manualfrequencysetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_ManualFrequencySP',<%=channels['advvfdipp.manualfrequencysetpoint'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
data-staticsend="{'tag': 'cfg_PID_ManualFrequencySP', 'val': <%=channels['advvfdipp.manualfrequencysetpoint'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad15">
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Manual Control Mode?"
|
||||
data-refreshpause="3"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_Manual',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Activate Manual Control</a>
|
||||
data-staticsend="{'tag': 'cfg_PID_Manual', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic">
|
||||
Activate Manual Frequency Control</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -222,21 +237,21 @@
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.pressureshutdownlimit'].value %>">
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.pressureshutdownlimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['AIn_IntakePressure.PSet_LoLim',<%=channels['advvfdipp.pressureshutdownlimit'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'AIn_IntakePressure.PSet_LoLim', 'val': <%=channels['advvfdipp.pressureshutdownlimit'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -247,21 +262,21 @@
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.pressurestartuplimit'].value %>">
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.pressurestartuplimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['AIn_IntakePressure.PSet_HiLim',<%=channels['advvfdipp.pressurestartuplimit'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'AIn_IntakePressure.PSet_HiLim', 'val': <%=channels['advvfdipp.pressurestartuplimit'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -272,21 +287,21 @@
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.temperatureshutdownlimit'].value %>">
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.temperatureshutdownlimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['AIn_IntakeTemperature.PSet_HiLim', <%=channels['advvfdipp.temperatureshutdownlimit'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'AIn_IntakeTemperature.PSet_HiLim', 'val': <%=channels['advvfdipp.temperatureshutdownlimit'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -297,21 +312,21 @@
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.temperaturestartuplimit'].value %>">
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.temperaturestartuplimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['AIn_IntakeTemperature.PSet_LoLim', <%=channels['advvfdipp.temperaturestartuplimit'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'AIn_IntakeTemperature.PSet_LoLim', 'val': <%=channels['advvfdipp.temperaturestartuplimit'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -328,21 +343,21 @@
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.fluidspecificgravity'].value %>">
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.fluidspecificgravity'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_FluidSpecificGravity', <%=channels['advvfdipp.fluidspecificgravity'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_FluidSpecificGravity', 'val': <%=channels['advvfdipp.fluidspecificgravity'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -353,21 +368,77 @@
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.sensorheight'].value %>">
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.sensorheight'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_DHSensorDistToIntake', <%=channels['advvfdipp.sensorheight'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_DHSensorDistToIntake', 'val': <%=channels['advvfdipp.sensorheight'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-md-12 text-center">
|
||||
<h1>Motor Parameters</h1>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="minvfdfrequency">
|
||||
<div class="pad15">
|
||||
<h2>Min Frequency</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.minvfdfrequency'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'PowerFlex755.Cfg_MinSpdRef', 'val': <%=channels['advvfdipp.minvfdfrequency'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="maxvfdfrequency">
|
||||
<div class="pad15">
|
||||
<h2>Max Frequency</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.maxvfdfrequency'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'PowerFlex755.Cfg_MaxSpdRef', 'val': <%=channels['advvfdipp.minvfdfrequency'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -375,63 +446,66 @@
|
||||
|
||||
<script>
|
||||
|
||||
$('.val_box').each(function(topLevel){
|
||||
$(this).change(function(){
|
||||
var id = "#" + $(this).closest(".entry-top-level").attr('id');
|
||||
if (id !== "#undefined"){
|
||||
var tagStart = $(id).find('.confirmstatic').attr('data-staticsend').indexOf("[ [") + 3;
|
||||
var tagStop = $(id).find('.confirmstatic').attr('data-staticsend').indexOf("] ]");
|
||||
var tag = $(id).find('.confirmstatic').attr('data-staticsend').substring(tagStart, tagStop).split(',')[0].replace(/'/g,"");
|
||||
var val = $(id).find('.val_box').val();
|
||||
var newData = "[{'com':'1','values':[ ['" + tag +"'," + val.toString() + "] ] }]"
|
||||
var tag = $(id).find('.confirmstatic').attr('data-staticsend', newData);
|
||||
console.log($(id).find('.confirmstatic').attr('data-staticsend'));
|
||||
}
|
||||
});
|
||||
$('.val_box').each(function(topLevel){
|
||||
$(this).change(function(){
|
||||
var id = "#" + $(this).closest(".entry-top-level").attr('id');
|
||||
if (id !== "#undefined"){
|
||||
// console.log("before parse", $(id).find('.setstatic').attr('data-staticsend').replace(/'/g, '"'));
|
||||
var jsobj = JSON.parse($(id).find('.setstatic').attr('data-staticsend').replace(/'/g, '"'));
|
||||
// console.log("after parse", jsobj)
|
||||
// var tagStart = $(id).find('.setstatic').attr('data-staticsend').indexOf("tag") + 3;
|
||||
// var tagStop = $(id).find('.setstatic').attr('data-staticsend').indexOf("] ]");
|
||||
// var tag = $(id).find('.setstatic').attr('data-staticsend').substring(tagStart, tagStop).split(',')[0].replace(/'/g,"");
|
||||
var val = $(id).find('.val_box').val();
|
||||
var newData = "{'tag': '" + jsobj.tag +"', 'val': " + val.toString() + "}"
|
||||
var tag = $(id).find('.setstatic').attr('data-staticsend', newData);
|
||||
console.log($(id).find('.setstatic').attr('data-staticsend'));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.box-me {
|
||||
position: relative;
|
||||
padding: 0.5em;
|
||||
padding-bottom: 1.5em;
|
||||
border: 1px solid #eee;
|
||||
/*margin: 1em 0;*/
|
||||
}
|
||||
.box-me .gauge-box {
|
||||
margin-top: -0.25em;
|
||||
}
|
||||
.box-me {
|
||||
position: relative;
|
||||
padding: 0.5em;
|
||||
padding-bottom: 1.5em;
|
||||
border: 1px solid #eee;
|
||||
/*margin: 1em 0;*/
|
||||
}
|
||||
.box-me .gauge-box {
|
||||
margin-top: -0.25em;
|
||||
}
|
||||
|
||||
.pad15 {
|
||||
margin: 15px 15px;
|
||||
}
|
||||
.pad15 {
|
||||
margin: 15px 15px;
|
||||
}
|
||||
|
||||
.box-me h2 {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
.dynamic-chart-form {
|
||||
background-color: whiteSmoke;
|
||||
padding: 1em 0.5em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
.box-me h2 {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
.dynamic-chart-form {
|
||||
background-color: whiteSmoke;
|
||||
padding: 1em 0.5em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.row-flex {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.row-flex > [class*='col-'] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.row-flex {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.row-flex > [class*='col-'] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -1,455 +0,0 @@
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-xs-12 text-center">
|
||||
<h1>Control</h1>
|
||||
</div>
|
||||
<div class='col-xs-6 text-center box-me'>
|
||||
<!-- Use data-confirm-message to set the exact message that pops up in the alert window. -->
|
||||
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to remotely start the well?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cmd_Start', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Start</a>
|
||||
</div>
|
||||
<div class='col-xs-6 text-center box-me'>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to remotely stop the well?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cmd_Stop', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Stop</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-xs-12 text-center">
|
||||
<h1>PID Settings</h1>
|
||||
</div>
|
||||
<div class="col-md-6 box-me">
|
||||
<div class="entry-top-level" id="flowsetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Flow Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Flow"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.flowsetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_FlowSP', 'val': <%=channels['advvfdipp.flowsetpoint'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad15">
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Flow Control Mode?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_Flow', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic">
|
||||
Activate Flow Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me">
|
||||
<div class="entry-top-level" id="fluidlevelsetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Fluid Level Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Fluid Level"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.fluidlevelsetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_FluidLevelSP', 'val': <%=channels['advvfdipp.fluidlevelsetpoint'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad15">
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Fluid Level Control Mode?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_FluidLevel', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic ">
|
||||
Activate Fluid Level Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me">
|
||||
<div class="entry-top-level" id="tubingpressuresetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Tubing Pressure Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Tubing Pressure"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.tubingpressuresetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_TubingPressureSP', 'val': <%=channels['advvfdipp.tubingpressuresetpoint'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad15">
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Tubing Pressure Control Mode?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_TubingPressure', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic">
|
||||
Activate Tubing Pressure Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me">
|
||||
<div class="entry-top-level" id="manualfrequencysetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Manual Frequency Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Manual"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.manualfrequencysetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_ManualFrequencySP', 'val': <%=channels['advvfdipp.manualfrequencysetpoint'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad15">
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Manual Control Mode?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_PID_Manual', 'val': 1}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic">
|
||||
Activate Manual Frequency Control</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-md-12 text-center">
|
||||
<h1>Shutdown Parameters</h1>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="pressureshutdownlimit">
|
||||
<div class="pad15">
|
||||
<h2>Pressure Shutdown Limit</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.pressureshutdownlimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'AIn_IntakePressure.PSet_LoLim', 'val': <%=channels['advvfdipp.pressureshutdownlimit'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="pressurestartuplimit">
|
||||
<div class="pad15">
|
||||
<h2>Pressure Startup Limit</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.pressurestartuplimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'AIn_IntakePressure.PSet_HiLim', 'val': <%=channels['advvfdipp.pressurestartuplimit'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="temperatureshutdownlimit">
|
||||
<div class="pad15">
|
||||
<h2>Temperature Shutdown Limit</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.temperatureshutdownlimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'AIn_IntakeTemperature.PSet_HiLim', 'val': <%=channels['advvfdipp.temperatureshutdownlimit'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="temperaturestartuplimit">
|
||||
<div class="pad15">
|
||||
<h2>Temperature Startup Limit</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.temperaturestartuplimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'AIn_IntakeTemperature.PSet_LoLim', 'val': <%=channels['advvfdipp.temperaturestartuplimit'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-md-12 text-center">
|
||||
<h1>Well Parameters</h1>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="fluidspecificgravity">
|
||||
<div class="pad15">
|
||||
<h2>Specific Gravity</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.fluidspecificgravity'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_FluidSpecificGravity', 'val': <%=channels['advvfdipp.fluidspecificgravity'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="sensorheight">
|
||||
<div class="pad15">
|
||||
<h2>Sensor Height</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.sensorheight'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to do this?"
|
||||
data-refreshpause="1"
|
||||
data-command=""
|
||||
data-staticsend="{'tag': 'cfg_DHSensorDistToIntake', 'val': <%=channels['advvfdipp.sensorheight'].value %>}"
|
||||
data-channelId="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
data-techname="<%=channels["advvfdipp.writeplctag"].techName %>"
|
||||
data-name="<%= channels["advvfdipp.writeplctag"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["advvfdipp.writeplctag"].nodechannelcurrentId %>"
|
||||
id="<%= channels["advvfdipp.writeplctag"].channelId %>"
|
||||
class="btn btn-large btn-theme animated setstatic material-icons">send</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$('.val_box').each(function(topLevel){
|
||||
$(this).change(function(){
|
||||
var id = "#" + $(this).closest(".entry-top-level").attr('id');
|
||||
if (id !== "#undefined"){
|
||||
// console.log("before parse", $(id).find('.setstatic').attr('data-staticsend').replace(/'/g, '"'));
|
||||
var jsobj = JSON.parse($(id).find('.setstatic').attr('data-staticsend').replace(/'/g, '"'));
|
||||
// console.log("after parse", jsobj)
|
||||
// var tagStart = $(id).find('.setstatic').attr('data-staticsend').indexOf("tag") + 3;
|
||||
// var tagStop = $(id).find('.setstatic').attr('data-staticsend').indexOf("] ]");
|
||||
// var tag = $(id).find('.setstatic').attr('data-staticsend').substring(tagStart, tagStop).split(',')[0].replace(/'/g,"");
|
||||
var val = $(id).find('.val_box').val();
|
||||
var newData = "{'tag': '" + jsobj.tag +"', 'val': " + val.toString() + "}"
|
||||
var tag = $(id).find('.setstatic').attr('data-staticsend', newData);
|
||||
console.log($(id).find('.setstatic').attr('data-staticsend'));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.box-me {
|
||||
position: relative;
|
||||
padding: 0.5em;
|
||||
padding-bottom: 1.5em;
|
||||
border: 1px solid #eee;
|
||||
/*margin: 1em 0;*/
|
||||
}
|
||||
.box-me .gauge-box {
|
||||
margin-top: -0.25em;
|
||||
}
|
||||
|
||||
.pad15 {
|
||||
margin: 15px 15px;
|
||||
}
|
||||
|
||||
.box-me h2 {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
.dynamic-chart-form {
|
||||
background-color: whiteSmoke;
|
||||
padding: 1em 0.5em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.row-flex {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.row-flex > [class*='col-'] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
</style>
|
||||
437
POCloud/HTML/ConfigurationOLD.html
Normal file
437
POCloud/HTML/ConfigurationOLD.html
Normal file
@@ -0,0 +1,437 @@
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-xs-12 text-center">
|
||||
<h1>Control</h1>
|
||||
</div>
|
||||
<div class='col-xs-6 text-center box-me'>
|
||||
<!-- Use data-confirm-message to set the exact message that pops up in the alert window. -->
|
||||
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to remotely start the well?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cmd_Start',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Start</a>
|
||||
<!-- Two sets were occurring because you had both the confirmstatic and setstatic classes on the button. Use one or the other, but not both. -->
|
||||
</div>
|
||||
<div class='col-xs-6 text-center box-me'>
|
||||
<a href="#"
|
||||
data-confirm-message="Are you sure you want to remotely stop the well?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cmd_Stop',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Stop</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-xs-12 text-center">
|
||||
<h1>PID Settings</h1>
|
||||
</div>
|
||||
<div class="col-md-6 box-me entry-top-level" id="flowsetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Flow Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Flow"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.flowsetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_FlowSP',<%=channels['advvfdipp.flowsetpoint'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Flow Control Mode?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_Flow',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Activate Flow Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="fluidlevelsetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Fluid Level Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Fluid Level"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.fluidlevelsetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_FluidLevelSP',<%=channels['advvfdipp.fluidlevelsetpoint'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Fluid Level Control Mode?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_FluidLevel',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Activate Fluid Level Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="tubingpressuresetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Tubing Pressure Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Tubing Pressure"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.tubingpressuresetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_TubingPressureSP',<%=channels['advvfdipp.tubingpressuresetpoint'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Tubing Pressure Control Mode?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_TubingPressure',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Activate Tubing Pressure Control</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="manualfrequencysetpoint">
|
||||
<div class="pad15">
|
||||
<h2>Manual Frequency Setpoint
|
||||
<% if (channels["advvfdipp.pidcontrolmode"].value == "Manual"){ %>
|
||||
<span class="label label-success">ACTIVE</span>
|
||||
<% } %>
|
||||
</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.manualfrequencysetpoint'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_ManualFrequencySP',<%=channels['advvfdipp.manualfrequencysetpoint'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
<a href="#"
|
||||
style="width:95%"
|
||||
data-confirm-message="Are you sure you want to activate Manual Control Mode?"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_PID_Manual',1] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic pad15">
|
||||
Activate Manual Control</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-md-12 text-center">
|
||||
<h1>Shutdown Parameters</h1>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="pressureshutdownlimit">
|
||||
<div class="pad15">
|
||||
<h2>Pressure Shutdown Limit</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.pressureshutdownlimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['AIn_IntakePressure.PSet_LoLim',<%=channels['advvfdipp.pressureshutdownlimit'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="pressurestartuplimit">
|
||||
<div class="pad15">
|
||||
<h2>Pressure Startup Limit</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.pressurestartuplimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['AIn_IntakePressure.PSet_HiLim',<%=channels['advvfdipp.pressurestartuplimit'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="temperatureshutdownlimit">
|
||||
<div class="pad15">
|
||||
<h2>Temperature Shutdown Limit</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.temperatureshutdownlimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['AIn_IntakeTemperature.PSet_HiLim', <%=channels['advvfdipp.temperatureshutdownlimit'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="temperaturestartuplimit">
|
||||
<div class="pad15">
|
||||
<h2>Temperature Startup Limit</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.temperaturestartuplimit'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['AIn_IntakeTemperature.PSet_LoLim', <%=channels['advvfdipp.temperaturestartuplimit'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row row-flex">
|
||||
<div class="col-md-12 text-center">
|
||||
<h1>Well Parameters</h1>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="fluidspecificgravity">
|
||||
<div class="pad15">
|
||||
<h2>Specific Gravity</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.fluidspecificgravity'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_FluidSpecificGravity', <%=channels['advvfdipp.fluidspecificgravity'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 box-me entry-top-level" id="sensorheight">
|
||||
<div class="pad15">
|
||||
<h2>Sensor Height</h2>
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<input class="form-control val_box"
|
||||
type="number"
|
||||
step="any"
|
||||
value="<%=channels['advvfdipp.sensorheight'].value %>">
|
||||
</div>
|
||||
<a href="#"
|
||||
data-refreshpause="3"
|
||||
data-command=""
|
||||
data-staticsend="[{'com':'1','values':[ ['cfg_DHSensorDistToIntake', <%=channels['advvfdipp.sensorheight'].value %>] ] }]"
|
||||
data-channelId="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
data-techname="<%=channels['advvfdipp.modbuswrite'].techName %>"
|
||||
data-name="<%= channels['advvfdipp.modbuswrite'].name%>"
|
||||
data-nodechannelcurrentId="<%= channels['advvfdipp.modbuswrite'].nodechannelcurrentId %>"
|
||||
id="<%= channels['advvfdipp.modbuswrite'].channelId %>"
|
||||
class="btn btn-large btn-theme animated confirmstatic">
|
||||
<i class="material-icons">send</i></a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$('.val_box').each(function(topLevel){
|
||||
$(this).change(function(){
|
||||
var id = "#" + $(this).closest(".entry-top-level").attr('id');
|
||||
if (id !== "#undefined"){
|
||||
var tagStart = $(id).find('.confirmstatic').attr('data-staticsend').indexOf("[ [") + 3;
|
||||
var tagStop = $(id).find('.confirmstatic').attr('data-staticsend').indexOf("] ]");
|
||||
var tag = $(id).find('.confirmstatic').attr('data-staticsend').substring(tagStart, tagStop).split(',')[0].replace(/'/g,"");
|
||||
var val = $(id).find('.val_box').val();
|
||||
var newData = "[{'com':'1','values':[ ['" + tag +"'," + val.toString() + "] ] }]"
|
||||
var tag = $(id).find('.confirmstatic').attr('data-staticsend', newData);
|
||||
console.log($(id).find('.confirmstatic').attr('data-staticsend'));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.box-me {
|
||||
position: relative;
|
||||
padding: 0.5em;
|
||||
padding-bottom: 1.5em;
|
||||
border: 1px solid #eee;
|
||||
/*margin: 1em 0;*/
|
||||
}
|
||||
.box-me .gauge-box {
|
||||
margin-top: -0.25em;
|
||||
}
|
||||
|
||||
.pad15 {
|
||||
margin: 15px 15px;
|
||||
}
|
||||
|
||||
.box-me h2 {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
.dynamic-chart-form {
|
||||
background-color: whiteSmoke;
|
||||
padding: 1em 0.5em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.row-flex {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.row-flex > [class*='col-'] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
</style>
|
||||
42
POCloud/HTML/Device.html
Normal file
42
POCloud/HTML/Device.html
Normal file
@@ -0,0 +1,42 @@
|
||||
<div class="row row-flex box-me">
|
||||
<div class="col-md-6 text-center">
|
||||
<h2 class="uppercase">Public IP Address</h2>
|
||||
<p><%= channels["advvfdipp.public_ip_address"].value %><p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.uppercase {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.box-me {
|
||||
position: relative;
|
||||
padding: 0.5em;
|
||||
padding-bottom: 1.5em;
|
||||
border: 1px solid #eee;
|
||||
/*margin: 1em 0;*/
|
||||
}
|
||||
.row-flex {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.row-flex > [class*='col-'] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -13,3 +13,9 @@
|
||||
<h4>Pump Depth: <span data-updatevalue="vfd_fault"><%=channels["advvfdipp.pumpdepth"].value %></span> ft.</h4>
|
||||
<% } %>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<a href="#"
|
||||
data-channelId="<%= channels["advvfdipp.alarmlog"].channelId %>"
|
||||
class="data-table btn-block btn btn-theme animated"
|
||||
title="Alarm Log"><i style='margin-left: 0.5em; cursor: pointer' class="fa fa-th-list icon-theme"></i> Alarm Log</a>
|
||||
</div>
|
||||
|
||||
@@ -309,31 +309,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row box-me">
|
||||
<div class='col-xs-12 text-center'>
|
||||
<h3 class='subdued'>Alarm History</h3>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-6 col-xs-offset-3" style='padding: 1.5em 15px'>
|
||||
<div class="input-daterange input-group" id="datepicker">
|
||||
<input data-chartid="chart7" id="fromDate" data-daysofhistory="7" type="text" class="form-control" name="start">
|
||||
<span class="input-group-addon">to</span>
|
||||
<input class="form-control" data-chartid="chart7" id="toDate" type="text" name="end">
|
||||
<span class="input-group-btn">
|
||||
<a href="#!" id='runHistory' data-chartid="chart7" data-otherchartids="chart8" class="btn btn-theme animated">Run</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="col-xs-12">
|
||||
<ol id='alarms' class='list-unstyled'>
|
||||
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<style>
|
||||
#note-modal{
|
||||
position: absolute;
|
||||
@@ -405,117 +380,4 @@
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.slice.node-detail hr {
|
||||
border-color: #ccc;
|
||||
}
|
||||
.slice.node-detail #alarms li {
|
||||
margin-bottom: 1em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
.slice.node-detail #alarms li:nth-child(even){
|
||||
background-color: whiteSmoke;
|
||||
}
|
||||
.slice.node-detail #alarms li span {
|
||||
margin-left: 1em;
|
||||
color: #aaa;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var nodeID = <%= node.nodeId %>;
|
||||
var nodeType = '<%= node.nodetypeName %>';
|
||||
|
||||
var alarmChannels = [
|
||||
{
|
||||
chId:<%= channels["advvfdipp.alarmflowrate"].channelId %>,
|
||||
chName: 'Flow Alarm'
|
||||
},
|
||||
{
|
||||
chId:<%= channels["advvfdipp.alarmintakepressure"].channelId %>,
|
||||
chName: 'Intake Pressure Alarm'
|
||||
},
|
||||
{
|
||||
chId:<%= channels["advvfdipp.alarmintaketemperature"].channelId %>,
|
||||
chName: 'Intake Temperature Alarm'
|
||||
},
|
||||
{
|
||||
chId:<%= channels["advvfdipp.alarmtubingpressure"].channelId %>,
|
||||
chName: 'Tubing Pressure Alarm'
|
||||
},
|
||||
{
|
||||
chId:<%= channels["advvfdipp.alarmvfd"].channelId %>,
|
||||
chName: 'VFD Alarm'
|
||||
}
|
||||
];
|
||||
|
||||
var formatDate = function(str){
|
||||
var c1, c2;
|
||||
c1 = new Date(str);
|
||||
c2 = (c1.getTime() / 1000);
|
||||
c2 = Math.floor(c2);
|
||||
return c2.toString();
|
||||
};
|
||||
|
||||
var updateTable = function(){
|
||||
var $output = $('#alarms');
|
||||
var allAlarms = [];
|
||||
var ajaxResults = [];
|
||||
_.each(alarmChannels, function(ac){
|
||||
var channelID = ac.chId;
|
||||
var channelName = ac.chName;
|
||||
var apiData, start, end, finalURL, dateString;
|
||||
|
||||
finalURL = '<%= rootURL %>' + "/api2/Nodechannels";
|
||||
start = $('#datepicker').find('#fromDate');
|
||||
dateString = start.val().replace(/-/g, "/");
|
||||
start = formatDate(dateString);
|
||||
end = $('#datepicker').find('#toDate');
|
||||
dateString = end.val().replace(/-/g, "/");
|
||||
end = formatDate(dateString);
|
||||
apiData = "&nodelist[0][nodeId]=" + nodeID.toString() + "&nodelist[0][channelId]=" + channelID.toString();
|
||||
apiData += "&start=" + start + "&end=" + end;
|
||||
|
||||
ajaxResults.push($.ajax({
|
||||
url: finalURL,
|
||||
data: apiData,
|
||||
type: "GET",
|
||||
success: function(data) {
|
||||
var alarms = data.listofstreams[0].stream;
|
||||
_.each(alarms, function(alarm){
|
||||
var timestamp = alarm.x;
|
||||
var value = alarm.y;
|
||||
if (value !== "OK"){
|
||||
allAlarms.push({alarm: channelName, timestamp:timestamp, value:value});
|
||||
}
|
||||
});
|
||||
}
|
||||
}));
|
||||
});
|
||||
|
||||
$.when.apply(this, ajaxResults).done(function(){
|
||||
if (allAlarms.length > 0){
|
||||
var html = '';
|
||||
_.each(_.sortBy(allAlarms, "timestamp").reverse(), function(al_in_order) {
|
||||
console.log(al_in_order.timestamp);
|
||||
html += "<li>" + al_in_order.alarm + ": " + al_in_order.value + "<span>" + moment(al_in_order.timestamp, "X").add(5, 'hours').format("dddd, MMMM Do YYYY, h:mm:ss a"); + "</span></li>";
|
||||
})
|
||||
$output.html(html);
|
||||
} else {
|
||||
$output.html("<li>No Alarms for this time range</li>");
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
};
|
||||
|
||||
$('#runHistory').on('click', function(e){
|
||||
e.preventDefault();
|
||||
updateTable();
|
||||
});
|
||||
|
||||
updateTable();
|
||||
|
||||
</script>
|
||||
|
||||
@@ -1,9 +1,31 @@
|
||||
"""Max Water System driver code."""
|
||||
import threading
|
||||
import sys
|
||||
import logging
|
||||
import time
|
||||
from random import randint
|
||||
from Channel import write_tag, read_tag
|
||||
from device_base import deviceBase
|
||||
from utilities import get_public_ip_address
|
||||
import json
|
||||
|
||||
# LOGGING SETUP
|
||||
from logging.handlers import RotatingFileHandler
|
||||
|
||||
log_formatter = logging.Formatter('%(asctime)s %(levelname)s %(funcName)s(%(lineno)d) %(message)s')
|
||||
logFile = './advvfdipp.log'
|
||||
my_handler = RotatingFileHandler(logFile, mode='a', maxBytes=500*1024, backupCount=2, encoding=None, delay=0)
|
||||
my_handler.setFormatter(log_formatter)
|
||||
my_handler.setLevel(logging.INFO)
|
||||
logger = logging.getLogger('advvfdipp')
|
||||
logger.setLevel(logging.INFO)
|
||||
logger.addHandler(my_handler)
|
||||
|
||||
console_out = logging.StreamHandler(sys.stdout)
|
||||
console_out.setFormatter(log_formatter)
|
||||
logger.addHandler(console_out)
|
||||
|
||||
logger.info("advvfdipp startup")
|
||||
|
||||
PLC_IP_ADDRESS = "192.168.1.10"
|
||||
WATCHDOG_SEND_PERIOD = 3600 # seconds
|
||||
@@ -18,7 +40,7 @@ class start(threading.Thread, deviceBase):
|
||||
deviceBase.__init__(self, name=name, number=number, mac=mac, Q=Q, mcu=mcu, companyId=companyId, offset=offset, mqtt=mqtt, Nodes=Nodes)
|
||||
|
||||
self.daemon = True
|
||||
self.version = "7"
|
||||
self.version = "8"
|
||||
self.finished = threading.Event()
|
||||
threading.Thread.start(self)
|
||||
|
||||
@@ -28,21 +50,38 @@ class start(threading.Thread, deviceBase):
|
||||
|
||||
def run(self):
|
||||
"""Run the driver."""
|
||||
wait_sec = 30
|
||||
for i in range(0, wait_sec):
|
||||
print("advvfdipp driver will start in {} seconds".format(wait_sec - i))
|
||||
time.sleep(1)
|
||||
logger.info("BOOM! Starting advvfdipp driver...")
|
||||
|
||||
self.nodes["advvfdipp_0199"] = self
|
||||
|
||||
public_ip_address = get_public_ip_address()
|
||||
self.sendtodbDev(1, 'public_ip_address', public_ip_address, 0, 'advvfdipp')
|
||||
watchdog = self.advvfdipp_watchdog()
|
||||
self.sendtodbDev(1, 'watchdog', watchdog, 0)
|
||||
self.sendtodbDev(1, 'watchdog', watchdog, 0, 'advvfdipp')
|
||||
watchdog_send_timestamp = time.time()
|
||||
|
||||
watchdog_loops = 0
|
||||
watchdog_check_after = 5000
|
||||
|
||||
while True:
|
||||
self.nodes["advvfdipp_0199"] = self
|
||||
watchdog_loops += 1
|
||||
if (watchdog_loops >= watchdog_check_after):
|
||||
test_watchdog = self.advvfdipp_watchdog()
|
||||
if test_watchdog != watchdog or (time.time() - watchdog_send_timestamp) > WATCHDOG_SEND_PERIOD:
|
||||
if not test_watchdog == watchdog or (time.time() - watchdog_send_timestamp) > WATCHDOG_SEND_PERIOD:
|
||||
self.sendtodbDev(1, 'watchdog', test_watchdog, 0, 'advvfdipp')
|
||||
watchdog_send_timestamp = time.time()
|
||||
watchdog = test_watchdog
|
||||
|
||||
test_public_ip = get_public_ip_address()
|
||||
if not test_public_ip == public_ip_address:
|
||||
self.sendtodbDev(1, 'public_ip_address', test_public_ip, 0, 'advvfdipp')
|
||||
public_ip_address = test_public_ip
|
||||
watchdog_loops = 0
|
||||
time.sleep(15)
|
||||
|
||||
def advvfdipp_watchdog(self):
|
||||
"""Write a random integer to the PLC and then 1 seconds later check that it has been decremented by 1."""
|
||||
@@ -54,3 +93,24 @@ class start(threading.Thread, deviceBase):
|
||||
return (randval - 1) == watchdog_val[0]
|
||||
except (KeyError, TypeError):
|
||||
return False
|
||||
|
||||
def advvfdipp_sync(self, name, value):
|
||||
"""Sync all data from the driver."""
|
||||
self.forceSend = True
|
||||
# self.sendtodb("log", "synced", 0)
|
||||
return True
|
||||
|
||||
def advvfdipp_writeplctag(self, name, value):
|
||||
"""Write a value to the PLC."""
|
||||
try:
|
||||
new_val = json.loads(str(value).replace("'", '"'))
|
||||
tag_n = str(new_val['tag']) # "cmd_Start"
|
||||
val_n = new_val['val']
|
||||
w = write_tag(str(PLC_IP_ADDRESS), tag_n, val_n)
|
||||
logger.warning("Result of advvfdipp_writeplctag(self, {}, {}) = {}".format(name, value, w))
|
||||
if w is None:
|
||||
w = "Error writing to PLC..."
|
||||
return w
|
||||
except Exception as e:
|
||||
logger.warning("GOT EXCEPTION in advvfdipp_writeplctag(self, {}, {}) => {}".format(name, value, e))
|
||||
return e
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
|
||||
"driverFileName":"advvfdipp.py",
|
||||
"deviceName":"advvfdipp",
|
||||
"driverId":"0100",
|
||||
"releaseVersion":"7",
|
||||
"files": {
|
||||
"file1":"advvfdipp.py",
|
||||
"file2":"modbusMap.p",
|
||||
"file3":"Channel.py" }
|
||||
|
||||
"files": {
|
||||
"file3": "Channel.py",
|
||||
"file2": "utilities.py",
|
||||
"file1": "advvfdipp.py",
|
||||
"file4": "modbusMap.p"
|
||||
},
|
||||
"deviceName": "advvfdipp",
|
||||
"driverId": "0100",
|
||||
"releaseVersion": "8",
|
||||
"driverFileName": "advvfdipp.py"
|
||||
}
|
||||
|
||||
12
POCloud/driverConfig.json
Normal file
12
POCloud/driverConfig.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "advvfdipp",
|
||||
"driverFilename": "advvfdipp.py",
|
||||
"driverId": "0100",
|
||||
"additionalDriverFiles": [
|
||||
"utilities.py",
|
||||
"Channel.py",
|
||||
"modbusMap.p"
|
||||
],
|
||||
"version": 8,
|
||||
"s3BucketName": "advvfdipp"
|
||||
}
|
||||
7704
POCloud/modbusMap.p
7704
POCloud/modbusMap.p
File diff suppressed because it is too large
Load Diff
54
POCloud/utilities.py
Normal file
54
POCloud/utilities.py
Normal file
@@ -0,0 +1,54 @@
|
||||
"""Utility functions for the driver."""
|
||||
import socket
|
||||
import struct
|
||||
|
||||
|
||||
def get_public_ip_address():
|
||||
"""Find the public IP Address of the host device."""
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.connect(("8.8.8.8", 80))
|
||||
ip = s.getsockname()[0]
|
||||
s.close()
|
||||
return ip
|
||||
|
||||
|
||||
def int_to_float16(int_to_convert):
|
||||
"""Convert integer into float16 representation."""
|
||||
bin_rep = ('0' * 16 + '{0:b}'.format(int_to_convert))[-16:]
|
||||
sign = 1.0
|
||||
if int(bin_rep[0]) == 1:
|
||||
sign = -1.0
|
||||
exponent = float(int(bin_rep[1:6], 2))
|
||||
if exponent == 30:
|
||||
fraction = float(int("1" + bin_rep[7:17], 2))
|
||||
else:
|
||||
fraction = float(int(bin_rep[7:17], 2))
|
||||
|
||||
if exponent == float(0b00000):
|
||||
return sign * 2 ** -14 * fraction / (2.0 ** 10.0)
|
||||
elif exponent == float(0b11111):
|
||||
if fraction == 0:
|
||||
return sign * float("inf")
|
||||
else:
|
||||
return float("NaN")
|
||||
else:
|
||||
frac_part = 1.0 + fraction / (2.0 ** 10.0)
|
||||
return sign * (2 ** (exponent - 15)) * frac_part
|
||||
|
||||
|
||||
def ints_to_float(int1, int2):
|
||||
"""Convert 2 registers into a floating point number."""
|
||||
mypack = struct.pack('>HH', int1, int2)
|
||||
f = struct.unpack('>f', mypack)
|
||||
print("[{}, {}] >> {}".format(int1, int2, f[0]))
|
||||
return f[0]
|
||||
|
||||
|
||||
def degf_to_degc(temp_f):
|
||||
"""Convert deg F to deg C."""
|
||||
return (temp_f - 32.0) * (5.0/9.0)
|
||||
|
||||
|
||||
def degc_to_degf(temp_c):
|
||||
"""Convert deg C to deg F."""
|
||||
return temp_c * 1.8 + 32.0
|
||||
166
Rung12_from_MainRoutine for MAXH2O-84.L5X
Normal file
166
Rung12_from_MainRoutine for MAXH2O-84.L5X
Normal file
@@ -0,0 +1,166 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="30.00" TargetType="Rung" TargetCount="1" ContainsContext="true" Owner="Patrick McDonagh, Henry Pump" ExportDate="Fri Dec 01 14:58:36 2017" ExportOptions="References NoRawData L5KData DecoratedData Context RoutineLabels AliasExtras IOTags NoStringData ForceProtectedEncoding AllProjDocTrans">
|
||||
<Controller Use="Context" Name="MaxWaterSystem">
|
||||
<DataTypes Use="Context">
|
||||
</DataTypes>
|
||||
<Tags Use="Context">
|
||||
<Tag Name="alarm_Count" TagType="Base" DataType="DINT" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Number of consecutive times the unit has alarmed]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[0]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="DINT" Radix="Decimal" Value="0"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="alarm_Lockout" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Alarm: VFD Locked out]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[0]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="cfg_AlarmLockoutLimit" TagType="Base" DataType="DINT" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Number of faults before manual intervention is required]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[3]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="DINT" Radix="Decimal" Value="3"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="cfg_AlarmRecoverSeconds" TagType="Base" DataType="DINT" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Number of seconds the unit must remain running before considering a fault cleared]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[3600]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="DINT" Radix="Decimal" Value="3600"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="cmd_ResetAlarmCount" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read Only">
|
||||
<Description>
|
||||
<![CDATA[Command to reset the Alarm Count to 0]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[0]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="cmd_ResetAlarms" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Reset Alarms]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[0]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="cmd_Restart" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Restart Command]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[0]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="cmd_Run" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Command to Run the pump]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[1]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="sts_NoAlarms" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Data Format="L5K">
|
||||
<![CDATA[1]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="sts_PumpOff" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Pump-Off Condition]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[0]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="sts_RestartAllowed" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Description>
|
||||
<![CDATA[Restarting automatically is allowed]]>
|
||||
</Description>
|
||||
<Data Format="L5K">
|
||||
<![CDATA[1]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
</Tags>
|
||||
<Programs Use="Context">
|
||||
<Program Use="Context" Name="MainProgram">
|
||||
<Tags Use="Context">
|
||||
<Tag Name="ONS_IncrementAlarmCount" TagType="Base" DataType="BOOL" Radix="Decimal" Constant="false" ExternalAccess="Read/Write">
|
||||
<Data Format="L5K">
|
||||
<![CDATA[0]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
|
||||
</Data>
|
||||
</Tag>
|
||||
<Tag Name="TON_FaultRecover" TagType="Base" DataType="TIMER" Constant="false" ExternalAccess="Read/Write">
|
||||
<Data Format="L5K">
|
||||
<![CDATA[[-1607653396,3600000,3600001]]]>
|
||||
</Data>
|
||||
<Data Format="Decorated">
|
||||
<Structure DataType="TIMER">
|
||||
<DataValueMember Name="PRE" DataType="DINT" Radix="Decimal" Value="3600000"/>
|
||||
<DataValueMember Name="ACC" DataType="DINT" Radix="Decimal" Value="3600001"/>
|
||||
<DataValueMember Name="EN" DataType="BOOL" Value="1"/>
|
||||
<DataValueMember Name="TT" DataType="BOOL" Value="0"/>
|
||||
<DataValueMember Name="DN" DataType="BOOL" Value="1"/>
|
||||
</Structure>
|
||||
</Data>
|
||||
</Tag>
|
||||
</Tags>
|
||||
<Routines Use="Context">
|
||||
<Routine Use="Context" Name="MainRoutine">
|
||||
<RLLContent Use="Context">
|
||||
<Rung Use="Target" Number="12" Type="N">
|
||||
<Text>
|
||||
<![CDATA[[XIO(sts_NoAlarms) XIO(sts_PumpOff) ONS(ONS_IncrementAlarmCount) ADD(alarm_Count,1,alarm_Count) ,GEQ(alarm_Count,cfg_AlarmLockoutLimit) OTU(sts_RestartAllowed) OTL(alarm_Lockout) ,MUL(cfg_AlarmRecoverSeconds,1000,TON_FaultRecover.PRE) XIC(cmd_Run) TON(TON_FaultRecover,?,?) XIC(TON_FaultRecover.DN) OTL(cmd_ResetAlarmCount) ,XIC(cmd_ResetAlarms) XIO(cmd_Restart) OTL(cmd_ResetAlarmCount) ,XIC(cmd_ResetAlarmCount) OTU(alarm_Lockout) MOV(0,alarm_Count) OTU(cmd_ResetAlarmCount) ];]]>
|
||||
</Text>
|
||||
</Rung>
|
||||
</RLLContent>
|
||||
</Routine>
|
||||
</Routines>
|
||||
</Program>
|
||||
</Programs>
|
||||
</Controller>
|
||||
</RSLogix5000Content>
|
||||
8469
Rung7_from_PID_Control for MAXH2O-92.L5X
Normal file
8469
Rung7_from_PID_Control for MAXH2O-92.L5X
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
docs/imgs/Picture1.png
Normal file
BIN
docs/imgs/Picture1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 459 KiB |
BIN
docs/imgs/Picture2.png
Normal file
BIN
docs/imgs/Picture2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 367 KiB |
BIN
docs/imgs/Picture3.png
Normal file
BIN
docs/imgs/Picture3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 297 KiB |
BIN
docs/imgs/Picture4.png
Normal file
BIN
docs/imgs/Picture4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 256 KiB |
BIN
docs/imgs/Picture5.png
Normal file
BIN
docs/imgs/Picture5.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 102 KiB |
BIN
docs/imgs/Picture6.png
Normal file
BIN
docs/imgs/Picture6.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 126 KiB |
21
docs/installation.md
Normal file
21
docs/installation.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Max Water System Panel Installation
|
||||
|
||||
Please follow the following steps for the software uploads into the different components.
|
||||
|
||||
## Power-Up
|
||||
|
||||
Start by suppling power to the drive and hooking up to the switch.
|
||||
|
||||
 
|
||||
|
||||
|
||||
## VFD Programming
|
||||
|
||||
1. Start by changing the IP Address to 192.168.1.12. This done on the front of the drive. Must remove cover and set the dials 0 1 2. This is the last three digits for the IP address. Look at pic: Start from the top dial down, the top dial been 0 and so forth.
|
||||
 
|
||||
|
||||
2. Go to This PC > Document > Git Hub > Max water Systems > Advance-vfd-ipp-ccw and double click on file. Wait until Connect Component software loads up.
|
||||
|
||||

|
||||
|
||||

|
||||
Reference in New Issue
Block a user