Return Humidity, Temp, Supply Temp
Added capability for RA Temp, SA Temp, RA Humidity to alarm (register) using Coils (Low, Normal, High), and adjusted Common Alarm code accordingly.
This commit is contained in:
@@ -28,6 +28,54 @@
|
||||
#include <ModbusRTU.h>
|
||||
#endif
|
||||
|
||||
void updateAnalogs(Equipment<ModbusIP>* equipment){
|
||||
if (equipment->getModbus_Point("RA Temp NORMAL")->getValue()==1){
|
||||
equipment->setModbus_Point("Return Air Temp", 84.0f);
|
||||
equipment->setModbus_Point("RA Temp Low Alarm ON", 0);
|
||||
equipment->setModbus_Point("RA Temp High Alarm ON", 0);
|
||||
equipment->setModbus_Point("RA Temp NORMAL", 0);
|
||||
}
|
||||
else if (equipment->getModbus_Point("RA Temp Low Alarm ON")->getValue() ==1){
|
||||
equipment->setModbus_Point("Return Air Temp", 60.0f);
|
||||
equipment->setModbus_Point("RA Temp High Alarm ON", 0);
|
||||
}
|
||||
else if (equipment->getModbus_Point("RA Temp High Alarm ON")->getValue()==1){
|
||||
equipment->setModbus_Point("Return Air Temp", 110.0f);
|
||||
equipment->setModbus_Point("RA Temp Low Alarm ON", 0);
|
||||
}
|
||||
|
||||
if (equipment->getModbus_Point("RA Humidity NORMAL")->getValue()==1){
|
||||
equipment->setModbus_Point("Return Humidity", 25.0f);
|
||||
equipment->setModbus_Point("RA Humidity Low Alarm ON", 0);
|
||||
equipment->setModbus_Point("RA Humidity High Alarm ON", 0);
|
||||
equipment->setModbus_Point("RA Humidity NORMAL", 0);
|
||||
}
|
||||
else if (equipment->getModbus_Point("RA Humidity Low Alarm ON")->getValue()==1){
|
||||
equipment->setModbus_Point("Return Humidity", 5.0f);
|
||||
equipment->setModbus_Point("RA Humidity High Alarm ON", 0);
|
||||
}
|
||||
else if (equipment->getModbus_Point("RA Humidity High Alarm ON")->getValue()==1){
|
||||
equipment->setModbus_Point("Return Humidity", 80.0f);
|
||||
equipment->setModbus_Point("RA Humidity Low Alarm ON", 0);
|
||||
}
|
||||
|
||||
if (equipment->getModbus_Point("SA Temp NORMAL")->getValue()==1){
|
||||
equipment->setModbus_Point("Supply Air Temp", 76.0f);
|
||||
equipment->setModbus_Point("SA Temp Low Alarm ON", 0);
|
||||
equipment->setModbus_Point("SA Temp High Alarm ON", 0);
|
||||
equipment->setModbus_Point("SA Temp NORMAL", 0);
|
||||
}
|
||||
else if (equipment->getModbus_Point("SA Temp Low Alarm ON")->getValue() ==1){
|
||||
equipment->setModbus_Point("Supply Air Temp", 60.0f);
|
||||
equipment->setModbus_Point("SA Temp High Alarm ON", 0);
|
||||
}
|
||||
else if (equipment->getModbus_Point("SA Temp High Alarm ON")->getValue()==1){
|
||||
equipment->setModbus_Point("Supply Air Temp", 90.0f);
|
||||
equipment->setModbus_Point("SA Temp Low Alarm ON", 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void updateReturnAirTempAlarms(Equipment<ModbusIP>* equipment){
|
||||
Modbus_Point<ModbusIP>* returnAirTemp = equipment -> getModbus_Point("Return Air Temp");
|
||||
Modbus_Point<ModbusIP>* returnTempHighAlarmSP = equipment->getModbus_Point("Return Air Temp Alarm High SP");
|
||||
@@ -44,12 +92,13 @@ void updateReturnAirTempAlarms(Equipment<ModbusIP>* equipment){
|
||||
equipment->setModbus_Point("RATempLowAlm Value", RATempLowAlm);
|
||||
|
||||
if (returnAirTemp->getValue() < returnTempLowAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm High Return Air Temp", 1);
|
||||
equipment->setModbus_Point("Alarm High Return Air Temp", 1);
|
||||
equipment->setModbus_Point("Alarm Low Return Air Temp", 1);
|
||||
equipment->setModbus_Point("Alarm High Return Air Temp", 0);
|
||||
//returnTempHighAlarm->setValue(1);
|
||||
}
|
||||
else if (returnAirTemp->getValue() < returnTempLowAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm Low Return Air Temp", 1);
|
||||
else if (returnAirTemp->getValue() > returnTempHighAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm High Return Air Temp", 1);
|
||||
equipment->setModbus_Point("Alarm Low Return Air Temp", 0);
|
||||
//returnTempLowAlarm->setValue(1);
|
||||
}
|
||||
else{
|
||||
@@ -77,9 +126,11 @@ void updateSupplyAirTempAlarms(Equipment<ModbusIP>* equipment){
|
||||
|
||||
if (supplyAirTemp->getValue() > supplyTempHighAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm High Supply Temp", 1);
|
||||
equipment->setModbus_Point("Alarm Low Supply Temp", 0);
|
||||
}
|
||||
else if (supplyAirTemp->getValue() < supplyTempLowAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm Low Supply Temp", 1);
|
||||
equipment->setModbus_Point("Alarm High Supply Temp", 0);
|
||||
}
|
||||
else{
|
||||
equipment->setModbus_Point("Alarm High Supply Temp", 0);
|
||||
@@ -102,9 +153,11 @@ void updateReturnHumidityAlarms(Equipment<ModbusIP>* equipment){
|
||||
|
||||
if (returnHumidity->getValue() > returnHumHighAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm High Return Humidity", 1);
|
||||
equipment->setModbus_Point("Alarm Low Return Humidity", 0);
|
||||
}
|
||||
else if (returnHumidity->getValue() < returnHumLowAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm Low Return Humidity", 1);
|
||||
equipment->setModbus_Point("Alarm High Return Humidity", 0);
|
||||
}
|
||||
else{
|
||||
equipment->setModbus_Point("Alarm High Return Humidity", 0);
|
||||
@@ -153,7 +206,6 @@ void updateAlarms(Equipment<ModbusIP>* equipment){
|
||||
"Alarm High Supply Temp", "Alarm Low Supply Temp"
|
||||
};
|
||||
|
||||
|
||||
// If any Alarm Commands = 1, set the appropriate Alarm = 1 and increment counter for number of active alarms
|
||||
int numAlarms = 0;
|
||||
for (int i =0; i< alarmCommands.size() && i < alarmDescriptions.size(); ++i) {
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
template <typename T>
|
||||
class State;
|
||||
|
||||
void updateAnalogs(Equipment<ModbusIP>* equipment);
|
||||
void updateReturnAirTempAlarms(Equipment<ModbusIP>* equipment);
|
||||
void updateSupplyAirTempAlarms(Equipment<ModbusIP>* equipment);
|
||||
void updateReturnHumidityAlarms(Equipment<ModbusIP>* equipment);
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
template<>
|
||||
FailState<ModbusIP>::FailState(const std::vector<std::string>& activeAlarms) {
|
||||
addStrategy("Fan Speed", new RampStrategy(0.0f, 10.0f, 1000));
|
||||
addStrategy("Return Humidity", new SawStrategy(0.0f, 80.0f, 5.0f, 1000));
|
||||
addStrategy("Return Air Temp", new SingleValueStrategy(80.0f, 1.0f, 1000));
|
||||
addStrategy("Supply Air Temp", new SingleValueStrategy(80.0f, 1.0f, 1000));
|
||||
addStrategy("Return Humidity", new SawStrategy(25.0f, 35.0f, 1.0f, 2000));
|
||||
addStrategy("Return Air Temp", new SingleValueStrategy(80.0f, 1.0f, 3000));
|
||||
addStrategy("Supply Air Temp", new SingleValueStrategy(76.0f, 1.0f, 3000));
|
||||
addStrategy("Supply Air Flow", new RampStrategy(0.0f, 1.0f, 1000));
|
||||
addStrategy("Fluid Control Valve Position 1", new RampStrategy(0.0f, 5.0f, 1000));
|
||||
addStrategy("Fluid Control Valve Position 2", new RampStrategy(0.0f, 5.0f, 1000));
|
||||
@@ -62,6 +62,7 @@ State<ModbusIP>* FailState<ModbusIP>::update(Equipment<ModbusIP>* equipment) {
|
||||
Serial.println("Fail update function");
|
||||
|
||||
setPointValue(equipment, "System On/Off Control", 0); // my programming logic: when clear fault, should be sent to Standby Mode
|
||||
updateAnalogs(equipment);
|
||||
updateReturnAirTempAlarms(equipment);
|
||||
updateSupplyAirTempAlarms(equipment);
|
||||
updateReturnHumidityAlarms(equipment);
|
||||
|
||||
@@ -44,9 +44,9 @@
|
||||
*/
|
||||
template<>
|
||||
RunningState<ModbusIP>::RunningState() {
|
||||
addStrategy("Return Humidity", new SawStrategy(2.0f, 80.0f, 2.0f, 1000));
|
||||
addStrategy("Return Air Temp", new SawStrategy(66.0f, 110.0f, 2.0f, 1000));
|
||||
addStrategy("Supply Air Temp", new SawStrategy(68.0f, 86.0f, 1.0f, 1000));
|
||||
addStrategy("Return Humidity", new SawStrategy(25.0f, 35.0f, 1.0f, 2000));
|
||||
addStrategy("Return Air Temp", new SawStrategy(78.0f, 88.0f, 1.0f, 3000));
|
||||
addStrategy("Supply Air Temp", new SawStrategy(73.0f, 77.0f, 1.0f, 5000));
|
||||
|
||||
//addStrategy("Return Humidity", new SingleValueStrategy(10.0f, 0.0f, 1000));
|
||||
//addStrategy("Return Air Temp", new SingleValueStrategy(50.0f, 0.0f, 1000));
|
||||
@@ -77,6 +77,7 @@ template<>
|
||||
State<ModbusIP>* RunningState<ModbusIP>::update(Equipment<ModbusIP>* equipment) {
|
||||
Serial.println("Running update function");
|
||||
|
||||
updateAnalogs(equipment);
|
||||
updateReturnAirTempAlarms(equipment);
|
||||
updateSupplyAirTempAlarms(equipment);
|
||||
updateReturnHumidityAlarms(equipment);
|
||||
|
||||
@@ -40,19 +40,19 @@
|
||||
template<>
|
||||
StandbyState<ModbusIP>::StandbyState() {
|
||||
addStrategy("Fan Speed", new RampStrategy(0.0f, 10.0f, 1000));
|
||||
addStrategy("Return Humidity", new SawStrategy(0.0f, 80.0f, 2.0f, 1000));
|
||||
addStrategy("Return Air Temp", new SingleValueStrategy(80.0f, 1.0f, 1000));
|
||||
addStrategy("Supply Air Temp", new SingleValueStrategy(80.0f, 1.0f, 1000));
|
||||
addStrategy("Supply Air Flow", new RampStrategy(0.0f, 1.0f, 1000));
|
||||
addStrategy("Return Humidity", new SawStrategy(25.0f, 35.0f, 1.0f, 2000));
|
||||
addStrategy("Return Air Temp", new SingleValueStrategy(80.0f, 1.0f, 3000));
|
||||
addStrategy("Supply Air Temp", new SingleValueStrategy(76.0f, 1.0f, 3000));
|
||||
addStrategy("Supply Air Flow", new RampStrategy(0.0f, 1.0f, 5000));
|
||||
addStrategy("Fluid Control Valve Position 1", new RampStrategy(0.0f, 5.0f, 1000));
|
||||
addStrategy("Fluid Control Valve Position 2", new RampStrategy(0.0f, 5.0f, 1000));
|
||||
|
||||
addStrategy("Return Humidity Alarm High SP", new SingleValueStrategy(60.0f, 0.0f, 1000));
|
||||
addStrategy("Return Humidity Alarm Low SP", new SingleValueStrategy(20.0f, 0.0f, 1000));
|
||||
addStrategy("Return Air Temp Alarm High SP", new SingleValueStrategy(100.0f, 0.0f, 1000));
|
||||
addStrategy("Return Air Temp Alarm Low SP", new SingleValueStrategy(72.0f, 0.0f, 1000));
|
||||
addStrategy("Supply Air Temp Alarm High SP", new SingleValueStrategy(78.0f, 1.0f, 1000));
|
||||
addStrategy("Supply Air Temp Alarm Low SP", new SingleValueStrategy(72.0f, 1.0f, 1000));
|
||||
//addStrategy("Return Humidity Alarm High SP", new SingleValueStrategy(60.0f, 0.0f, 1000));
|
||||
//addStrategy("Return Humidity Alarm Low SP", new SingleValueStrategy(20.0f, 0.0f, 1000));
|
||||
//addStrategy("Return Air Temp Alarm High SP", new SingleValueStrategy(100.0f, 0.0f, 1000));
|
||||
//addStrategy("Return Air Temp Alarm Low SP", new SingleValueStrategy(72.0f, 0.0f, 1000));
|
||||
//addStrategy("Supply Air Temp Alarm High SP", new SingleValueStrategy(78.0f, 0.0f, 1000));
|
||||
//addStrategy("Supply Air Temp Alarm Low SP", new SingleValueStrategy(72.0f, 0.0f, 1000));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,6 +74,7 @@ State<ModbusIP>* StandbyState<ModbusIP>::update(Equipment<ModbusIP>* equipment)
|
||||
// STATE control, add conditions if change to a different state is needed
|
||||
Serial.println("Standby update function");
|
||||
|
||||
updateAnalogs(equipment);
|
||||
updateReturnAirTempAlarms(equipment);
|
||||
updateSupplyAirTempAlarms(equipment);
|
||||
updateReturnHumidityAlarms(equipment);
|
||||
|
||||
@@ -93,8 +93,17 @@ modbusMap mb_map[] =
|
||||
{COIL, 30, 0, "Alarm Compressor 1B Overload ON"}, // For Arduino testing only
|
||||
{COIL, 31, 0, "Alarm Compressor 2B Overload ON"}, // For Arduino testing only
|
||||
|
||||
//{COIL, 32, 0, "Return Humidity LOW"}, // For Arduino testing only
|
||||
//{COIL, 33, 0, "Return Humidity HIGH"}, // For Arduino testing only
|
||||
{COIL, 32, 0, "RA Temp Low Alarm ON"}, // For Arduino testing only - sets RA Temp = 60
|
||||
{COIL, 33, 0, "RA Temp NORMAL"}, // For Arduino testing only - sets RA Temp = 84
|
||||
{COIL, 34, 0, "RA Temp High Alarm ON"}, // For Arduino testing only - sets RA Temp = 110
|
||||
|
||||
{COIL, 35, 0, "RA Humidity Low Alarm ON"}, // For Arduino testing only - sets RA Humidity = 5
|
||||
{COIL, 36, 0, "RA Humidity NORMAL"}, // For Arduino testing only - sets RA Humidity = 25
|
||||
{COIL, 37, 0, "RA Humidity High Alarm ON"}, // For Arduino testing only - sets RA Humidity = 80
|
||||
|
||||
{COIL, 38, 0, "SA Temp Low Alarm ON"}, // For Arduino testing only - sets SA Temp = 60
|
||||
{COIL, 39, 0, "SA Temp NORMAL"}, // For Arduino testing only - sets SA Temp = 76
|
||||
{COIL, 40, 0, "SA Temp High Alarm ON"}, // For Arduino testing only - sets SA Temp = 90
|
||||
|
||||
{DI, 24, 0, "Supply Fan Status"},
|
||||
{DI, 25, 0, "Cooling Status"},
|
||||
@@ -140,33 +149,31 @@ modbusMap mb_map[] =
|
||||
|
||||
{IR, 99, 0, "Unit Status"}, // 0:off, 1:on, 2:standby
|
||||
{IR, 102, 0, "Fan Speed"},
|
||||
{IR_10x, 129, 0, "Return Humidity"},
|
||||
{IR_10x, 742, 0, "Return Air Temp"},
|
||||
{IR_10x, 743, 0, "Supply Air Temp"},
|
||||
{IR_10x, 129, 250, "Return Humidity"},
|
||||
{IR_10x, 742, 840, "Return Air Temp"},
|
||||
{IR_10x, 743, 760, "Supply Air Temp"},
|
||||
{IR, 1465, 0, "Supply Air Flow"},
|
||||
{IR, 2050, 0, "Fluid Control Valve Position 1"},
|
||||
{IR, 2051, 0, "Fluid Control Valve Position 2"},
|
||||
|
||||
{HR_10x, 53, 60, "Return Humidity Alarm High SP"},
|
||||
{HR_10x, 54, 20, "Return Humidity Alarm Low SP"},
|
||||
{HR_10x, 53, 600, "Return Humidity Alarm High SP"},
|
||||
{HR_10x, 54, 200, "Return Humidity Alarm Low SP"},
|
||||
{HR, 56, 0, "RAHum Value"},
|
||||
{HR, 57, 0, "RAHumHighAlm Value"},
|
||||
{HR, 58, 0, "RAHumLowAlm Value"},
|
||||
|
||||
|
||||
{HR, 732, 73, "Supply Air Temp Setpoint"},
|
||||
|
||||
|
||||
{HR_10x, 738, 0, "Return Air Temp Alarm High SP"},
|
||||
{HR_10x, 739, 0, "Return Air Temp Alarm Low SP"},
|
||||
{HR_10x, 738, 1000, "Return Air Temp Alarm High SP"},
|
||||
{HR_10x, 739, 720, "Return Air Temp Alarm Low SP"},
|
||||
{HR, 741, 0, "RATemp Value"},
|
||||
{HR, 742, 0, "RATempHighAlm Value"},
|
||||
{HR, 743, 0, "RATempLowAlm Value"},
|
||||
|
||||
|
||||
{HR, 753, 80, "Return Air Temp Setpoint"},
|
||||
{HR_10x, 754, 78, "Supply Air Temp Alarm High SP"},
|
||||
{HR_10x, 755, 72, "Supply Air Temp Alarm Low SP"},
|
||||
{HR_10x, 754, 780, "Supply Air Temp Alarm High SP"},
|
||||
{HR_10x, 755, 720, "Supply Air Temp Alarm Low SP"},
|
||||
{HR, 757, 0, "SATemp Value"},
|
||||
{HR, 758, 0, "SATempHighAlm Value"},
|
||||
{HR, 759, 0, "SATempLowAlm Value"},
|
||||
|
||||
Reference in New Issue
Block a user