Skip to content

Commit 48cb059

Browse files
committed
v0.2.0-beta complete rewrite
1 parent 340a873 commit 48cb059

26 files changed

+3121
-1008
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
**/*.jar
2-
test.html
1+
**/*.jar

DEPENDENCIES

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
file:tomcat-embed-core:webserver\lib
2-
url:CommissioningScripts-0.1.2.jar:https://github.com/automatic-controls/commissioning-scripts/releases/download/v0.1.2-beta/CommissioningScripts-0.1.2.jar
3-
url:CommissioningScripts-0.1.2-sources.jar:https://github.com/automatic-controls/commissioning-scripts/releases/download/v0.1.2-beta/CommissioningScripts-0.1.2-sources.jar
2+
url:CommissioningScripts-0.1.3.jar:https://github.com/automatic-controls/commissioning-scripts/releases/download/v0.1.3-beta/CommissioningScripts-0.1.3.jar
3+
url:CommissioningScripts-0.1.3-sources.jar:https://github.com/automatic-controls/commissioning-scripts/releases/download/v0.1.3-beta/CommissioningScripts-0.1.3-sources.jar

README.md

Lines changed: 232 additions & 96 deletions
Large diffs are not rendered by default.

resources/report1.png

35.1 KB
Loading

resources/report2.png

-59.8 KB
Loading

resources/tags.json

Lines changed: 0 additions & 23 deletions
This file was deleted.

resources/tags_ex1.json

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
{
2+
"eat": "ahu_sat/present_value",
3+
"eat_status": "ahu_sat/output2",
4+
"eat_fault": "ahu_sat/status_flags/fault",
5+
6+
"lat": "dat/present_value",
7+
"lat_status": "dat/output2",
8+
"lat_fault": "dat/status_flags/fault",
9+
10+
"oat": "oat/present_value",
11+
"oat_status": "oat/output2",
12+
"oat_fault": "oat/status_flags/fault",
13+
14+
"humidity": "zone_hum/present_value",
15+
"humidity_status": "zone_hum/output2",
16+
"humidity_fault": "zone_hum/status_flags/fault",
17+
18+
"airflow_measured": "air_flow/flow_tab/actual_flow",
19+
"airflow_setp_lock_flag": "air_flow/flow_tab/lock_flags/flowsetp",
20+
"airflow_setp_lock_value": "air_flow/flow_tab/flowsetp_lock",
21+
"airflow_for_max_cool": "air_flow/flow_tab/max_cool",
22+
"airflow_for_max_heat": "air_flow/flow_tab/max_heat",
23+
"airflow_damper_lock_flag": "air_flow/flow_tab/lock_flags/damper",
24+
"airflow_damper_lock_value": "air_flow/flow_tab/damper_lock",
25+
"airflow_damper_position": "air_flow/flow_tab/damper_position",
26+
"airflow_fault": "air_flow/flow_tab/status_flags/fault",
27+
28+
"oa_damper_lock_flag": "oad/locked",
29+
"oa_damper_lock_value": "oad/locked_value",
30+
"oa_damper_lock_min": "oad/min_pres_value",
31+
"oa_damper_lock_max": "oad/max_pres_value",
32+
"oa_damper_fault": "oad/status_flags/fault",
33+
"oa_damper_min_position": "oad_min_pos/present_value",
34+
35+
"fan1_lock_flag": "sfss/locked",
36+
"fan1_lock_value": "sfss/locked_value",
37+
"fan1_lock_min": "sfss/min_pres_value",
38+
"fan1_lock_max": "sfss/max_pres_value",
39+
"fan1_fault": "sfss/status_flags/fault",
40+
"fan1_status": "sfst/present_value",
41+
42+
"fan2_lock_flag": "efss/locked",
43+
"fan2_lock_value": "efss/locked_value",
44+
"fan2_lock_min": "efss/min_pres_value",
45+
"fan2_lock_max": "efss/max_pres_value",
46+
"fan2_fault": "efss/status_flags/fault",
47+
"fan2_status": "efst/present_value",
48+
49+
"fan3_vfd_lock_flag": "baf1_vfd/locked",
50+
"fan3_vfd_lock_value": "baf1_vfd/locked_value",
51+
"fan3_vfd_lock_min": "baf1_vfd/min_pres_value",
52+
"fan3_vfd_lock_max": "baf1_vfd/max_pres_value",
53+
"fan3_vfd_fault": "baf1_vfd/status_flags/fault",
54+
"fan3_status": "baf1st/present_value",
55+
56+
"fan4_vfd_lock_flag": "baf2_vfd/locked",
57+
"fan4_vfd_lock_value": "baf2_vfd/locked_value",
58+
"fan4_vfd_lock_min": "baf2_vfd/min_pres_value",
59+
"fan4_vfd_lock_max": "baf2_vfd/max_pres_value",
60+
"fan4_vfd_fault": "baf2_vfd/status_flags/fault",
61+
"fan4_status": "baf2st/present_value",
62+
63+
"fan5_vfd_lock_flag": "baf3_vfd/locked",
64+
"fan5_vfd_lock_value": "baf3_vfd/locked_value",
65+
"fan5_vfd_lock_min": "baf3_vfd/min_pres_value",
66+
"fan5_vfd_lock_max": "baf3_vfd/max_pres_value",
67+
"fan5_vfd_fault": "baf3_vfd/status_flags/fault",
68+
"fan5_status": "baf3st/present_value",
69+
70+
"h1_name": "@HW Valve",
71+
"h1_lock_flag": "hwv/locked",
72+
"h1_lock_value": "hwv/locked_value",
73+
"h1_lock_min": "hwv/min_pres_value",
74+
"h1_lock_max": "hwv/max_pres_value",
75+
"h1_fault": "hwv/status_flags/fault",
76+
77+
"h2_1_name": "@Stage 1",
78+
"h2_1_lock_flag": "htg_stg1/locked",
79+
"h2_1_lock_value": "htg_stg1/locked_value",
80+
"h2_1_lock_min": "htg_stg1/min_pres_value",
81+
"h2_1_lock_max": "htg_stg1/max_pres_value",
82+
"h2_1_fault": "htg_stg1/status_flags/fault",
83+
84+
"h2_2_name": "@Stage 2",
85+
"h2_2_lock_flag": "htg_stg2/locked",
86+
"h2_2_lock_value": "htg_stg2/locked_value",
87+
"h2_2_lock_min": "htg_stg2/min_pres_value",
88+
"h2_2_lock_max": "htg_stg2/max_pres_value",
89+
"h2_2_fault": "htg_stg2/status_flags/fault",
90+
91+
"h3_name": "@Unit Heater",
92+
"h3_lock_flag": "unit_run/locked",
93+
"h3_lock_value": "unit_run/locked_value",
94+
"h3_lock_min": "unit_run/min_pres_value",
95+
"h3_lock_max": "unit_run/max_pres_value",
96+
"h3_fault": "unit_run/status_flags/fault",
97+
"h3_status": "sfst/present_value",
98+
99+
"off1_lock_flag": "dx1ss/locked",
100+
"off1_lock_value": "dx1ss/locked_value",
101+
"off1_lock_min": "dx1ss/min_pres_value",
102+
"off1_lock_max": "dx1ss/max_pres_value",
103+
104+
"off2_lock_flag": "dx2ss/locked",
105+
"off2_lock_value": "dx2ss/locked_value",
106+
"off2_lock_min": "dx2ss/min_pres_value",
107+
"off2_lock_max": "dx2ss/max_pres_value"
108+
}

resources/tags_generic.json

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
{
2+
"alarm": "alarm/present_value",
3+
4+
"eat": "eat/present_value",
5+
"eat_status": "eat/output2",
6+
"eat_fault": "eat/status_flags/fault",
7+
8+
"lat": "lat/present_value",
9+
"lat_status": "lat/output2",
10+
"lat_fault": "lat/status_flags/fault",
11+
12+
"oat": "oat/present_value",
13+
"oat_status": "oat/output2",
14+
"oat_fault": "oat/status_flags/fault",
15+
16+
"humidity": "humidity/present_value",
17+
"humidity_status": "humidity/output2",
18+
"humidity_fault": "humidity/status_flags/fault",
19+
20+
"dehum_lock_flag": "dehum/locked",
21+
"dehum_lock_value": "dehum/locked_value",
22+
"dehum_lock_min": "dehum/min_pres_value",
23+
"dehum_lock_max": "dehum/max_pres_value",
24+
"dehum_fault": "dehum/status_flags/fault",
25+
26+
"off#_lock_flag": "off#/locked",
27+
"off#_lock_value": "off#/locked_value",
28+
"off#_lock_min": "off#/min_pres_value",
29+
"off#_lock_max": "off#/max_pres_value",
30+
31+
"on#_lock_flag": "on#/locked",
32+
"on#_lock_value": "on#/locked_value",
33+
"on#_lock_min": "on#/min_pres_value",
34+
"on#_lock_max": "on#/max_pres_value",
35+
36+
"airflow_measured": "airflow/flow_tab/actual_flow",
37+
"airflow_setp_lock_flag": "airflow/flow_tab/lock_flags/flowsetp",
38+
"airflow_setp_lock_value": "airflow/flow_tab/flowsetp_lock",
39+
"airflow_for_max_cool": "airflow/flow_tab/max_cool",
40+
"airflow_for_max_heat": "airflow/flow_tab/max_heat",
41+
"airflow_damper_lock_flag": "airflow/flow_tab/lock_flags/damper",
42+
"airflow_damper_lock_value": "airflow/flow_tab/damper_lock",
43+
"airflow_damper_position": "airflow/flow_tab/damper_position",
44+
"airflow_fault": "airflow/flow_tab/status_flags/fault",
45+
46+
"oa_damper_lock_flag": "oa_damper/locked",
47+
"oa_damper_lock_value": "oa_damper/locked_value",
48+
"oa_damper_lock_min": "oa_damper/min_pres_value",
49+
"oa_damper_lock_max": "oa_damper/max_pres_value",
50+
"oa_damper_fault": "oa_damper/status_flags/fault",
51+
"oa_damper_min_position": "oa_damper_min/present_value",
52+
"ra_damper_lock_flag": "ra_damper/locked",
53+
"ra_damper_lock_value": "ra_damper/locked_value",
54+
"ra_damper_lock_min": "ra_damper/min_pres_value",
55+
"ra_damper_lock_max": "ra_damper/max_pres_value",
56+
"ra_damper_fault": "ra_damper/status_flags/fault",
57+
58+
"fan#_lock_flag": "fan#/locked",
59+
"fan#_lock_value": "fan#/locked_value",
60+
"fan#_lock_min": "fan#/min_pres_value",
61+
"fan#_lock_max": "fan#/max_pres_value",
62+
"fan#_fault": "fan#/status_flags/fault",
63+
"fan#_status": "fan#_status/present_value",
64+
"fan#_vfd_lock_flag": "fan#_vfd/locked",
65+
"fan#_vfd_lock_value": "fan#_vfd/locked_value",
66+
"fan#_vfd_lock_min": "fan#_vfd/min_pres_value",
67+
"fan#_vfd_lock_max": "fan#_vfd/max_pres_value",
68+
"fan#_vfd_fault": "fan#_vfd/status_flags/fault",
69+
70+
"e#_name": "@e",
71+
"e#_lock_flag": "e/locked",
72+
"e#_lock_value": "e/locked_value",
73+
"e#_lock_min": "e/min_pres_value",
74+
"e#_lock_max": "e/max_pres_value",
75+
"e#_fault": "e/status_flags/fault",
76+
"e#_status": "e_status/present_value",
77+
"e#_rv_lock_flag": "e_rv/locked",
78+
"e#_rv_lock_value": "e_rv/locked_value",
79+
"e#_rv_lock_min": "e_rv/min_pres_value",
80+
"e#_rv_lock_max": "e_rv/max_pres_value",
81+
"e#_rv_fault": "e_rv/status_flags/fault",
82+
83+
"h#_#_name": "@h",
84+
"h#_#_lock_flag": "h/locked",
85+
"h#_#_lock_value": "h/locked_value",
86+
"h#_#_lock_min": "h/min_pres_value",
87+
"h#_#_lock_max": "h/max_pres_value",
88+
"h#_#_fault": "h/status_flags/fault",
89+
"h#_#_status": "h_status/present_value",
90+
91+
"c#_#_name": "@c",
92+
"c#_#_lock_flag": "c/locked",
93+
"c#_#_lock_value": "c/locked_value",
94+
"c#_#_lock_min": "c/min_pres_value",
95+
"c#_#_lock_max": "c/max_pres_value",
96+
"c#_#_fault": "c/status_flags/fault",
97+
"c#_#_status": "c_status/present_value"
98+
}
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package aces.webctrl.scripts.terminalunits;
2+
/**
3+
* Encapsulates an airflow microblock.
4+
*/
5+
public class Airflow extends Component {
6+
public volatile double[] readings = null;
7+
private final static String measured = "airflow_measured";
8+
private final static String setp_lock_flag = "airflow_setp_lock_flag";
9+
private final static String setp_lock_value = "airflow_setp_lock_value";
10+
private final static String max_cool = "airflow_for_max_cool";
11+
private final static String max_heat = "airflow_for_max_heat";
12+
private final static String damper_lock_flag = "airflow_damper_lock_flag";
13+
private final static String damper_lock_value = "airflow_damper_lock_value";
14+
private final static String damper_position = "airflow_damper_position";
15+
private final static String fault = "airflow_fault";
16+
private volatile AnalogInput airflowActual;
17+
private volatile Output airflowSetpoint;
18+
private volatile AnalogInput damperActual;
19+
private volatile Output damperSetpoint;
20+
private volatile boolean defined;
21+
private volatile int maxCool = -1;
22+
private volatile int maxHeat = -1;
23+
public Airflow(Data d) throws InterruptedException {
24+
super(d);
25+
defined = d.x.hasMapping(measured)
26+
&& d.x.hasMapping(setp_lock_flag)
27+
&& d.x.hasMapping(setp_lock_value)
28+
&& d.x.hasMapping(max_cool)
29+
&& d.x.hasMapping(max_heat)
30+
&& d.x.hasMapping(damper_lock_flag)
31+
&& d.x.hasMapping(damper_lock_value)
32+
&& d.x.hasMapping(damper_position)
33+
&& d.x.hasMapping(fault);
34+
if (defined){
35+
try{
36+
String s;
37+
if ((s=d.x.getValue(max_heat))==null){
38+
maxHeat = 150;
39+
problem = true;
40+
}else{
41+
maxHeat = Math.max((int)Double.parseDouble(s),150);
42+
}
43+
if ((s=d.x.getValue(max_cool))==null){
44+
maxCool = maxHeat;
45+
problem = true;
46+
}else{
47+
maxCool = Math.max((int)Double.parseDouble(s),150);
48+
}
49+
}catch(NumberFormatException e){
50+
if (maxHeat==-1){
51+
maxHeat = 150;
52+
}
53+
maxCool = maxHeat;
54+
}
55+
airflowActual = new AnalogInput(d, measured);
56+
damperActual = new AnalogInput(d, damper_position);
57+
airflowSetpoint = new Output(d, "airflow_setp", 0, 0);
58+
damperSetpoint = new Output(d, "airflow_damper", 0, 0);
59+
}
60+
}
61+
/**
62+
* Controls the airflow setpoint.
63+
* @return whether the airflow setpoint was successfully set.
64+
*/
65+
public boolean setAirflow(int x) throws InterruptedException {
66+
return x>=0 && damperSetpoint.unlock() && airflowSetpoint.set(x);
67+
}
68+
/**
69+
* Controls the damper position setpoint.
70+
* @param x should be between 0 and 100.
71+
* @return whether the damper position setpoint was successfully set.
72+
*/
73+
public boolean setDamperPosition(double x) throws InterruptedException {
74+
return x>=0 && x<=100 && airflowSetpoint.unlock() && damperSetpoint.set(x);
75+
}
76+
/**
77+
* @return the ideal airflow for when cooling elements are cranked to 100%.
78+
*/
79+
public int getCoolingAirflow(){
80+
return maxCool;
81+
}
82+
/**
83+
* @return the ideal airflow for when heating elements are cranked to 100%.
84+
*/
85+
public int getHeatingAirflow(){
86+
return maxHeat;
87+
}
88+
/**
89+
* @return the {@code AnalogInput} corresponding to measured airflow.
90+
*/
91+
public AnalogInput getAirflow(){
92+
return airflowActual;
93+
}
94+
/**
95+
* @return the {@code AnalogInput} corresponding to the actual damper position.
96+
*/
97+
public AnalogInput getDamperPosition(){
98+
return damperActual;
99+
}
100+
/**
101+
* @return whether or not sufficient tag mappings exist to set the output value for this component.
102+
*/
103+
@Override public boolean isDefined(){
104+
return defined;
105+
}
106+
/**
107+
* {@inheritDoc}
108+
*/
109+
@Override protected boolean fault() throws InterruptedException {
110+
if (!defined){
111+
return true;
112+
}
113+
String s = d.x.getValue(fault);
114+
if (s==null){ problem = true; }
115+
return parseBoolean(s,true);
116+
}
117+
/**
118+
* {@inheritDoc}
119+
*/
120+
@Override public boolean hasProblem(){
121+
return problem || airflowActual.hasProblem() || airflowSetpoint.hasProblem() || damperActual.hasProblem() || damperSetpoint.hasProblem();
122+
}
123+
}

0 commit comments

Comments
 (0)