updates
This commit is contained in:
@@ -28,6 +28,90 @@
|
||||
#include <ModbusRTU.h>
|
||||
#endif
|
||||
|
||||
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");
|
||||
Modbus_Point<ModbusIP>* returnTempLowAlarmSP = equipment->getModbus_Point("Return Air Temp Alarm Low SP");
|
||||
//Modbus_Point<ModbusIP>* returnTempHighAlarm = equipment->getModbus_Point("Alarm High Return Air Temp");
|
||||
//Modbus_Point<ModbusIP>* returnTempLowAlarm = equipment->getModbus_Point("Alarm Low Return Air Temp");
|
||||
|
||||
int RATemp = returnAirTemp->getValue();
|
||||
int RATempHighAlm = returnTempHighAlarmSP->getValue();
|
||||
int RATempLowAlm = returnTempLowAlarmSP->getValue();
|
||||
|
||||
equipment->setModbus_Point("RATemp Value", RATemp);
|
||||
equipment->setModbus_Point("RATempHighAlm Value", RATempHighAlm);
|
||||
equipment->setModbus_Point("RATempLowAlm Value", RATempLowAlm);
|
||||
|
||||
if (returnAirTemp->getValue() < returnTempLowAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm High Return Air Temp", 1);
|
||||
//returnTempHighAlarm->setValue(1);
|
||||
}
|
||||
else if (returnAirTemp->getValue() < returnTempLowAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm Low Return Air Temp", 1);
|
||||
//returnTempLowAlarm->setValue(1);
|
||||
}
|
||||
else{
|
||||
equipment->setModbus_Point("Alarm High Return Air Temp", 0);
|
||||
equipment->setModbus_Point("Alarm Low Return Air Temp", 0);
|
||||
//returnTempHighAlarm->setValue(0);
|
||||
//returnTempLowAlarm->setValue(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void updateSupplyAirTempAlarms(Equipment<ModbusIP>* equipment){
|
||||
Modbus_Point<ModbusIP>* supplyAirTemp = equipment -> getModbus_Point("Supply Air Temp");
|
||||
Modbus_Point<ModbusIP>* supplyTempHighAlarmSP = equipment->getModbus_Point("Supply Air Temp Alarm High SP");
|
||||
Modbus_Point<ModbusIP>* supplyTempLowAlarmSP = equipment->getModbus_Point("Supply Air Temp Alarm Low SP");
|
||||
|
||||
int SATemp = supplyAirTemp->getValue();
|
||||
int SATempHighAlm = supplyTempHighAlarmSP->getValue();
|
||||
int SATempLowAlm = supplyTempLowAlarmSP->getValue();
|
||||
|
||||
equipment->setModbus_Point("SATemp Value", SATemp);
|
||||
equipment->setModbus_Point("SATempHighAlm Value", SATempHighAlm);
|
||||
equipment->setModbus_Point("SATempLowAlm Value", SATempLowAlm);
|
||||
|
||||
|
||||
if (supplyAirTemp->getValue() > supplyTempHighAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm High Supply Temp", 1);
|
||||
}
|
||||
else if (supplyAirTemp->getValue() < supplyTempLowAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm Low Supply Temp", 1);
|
||||
}
|
||||
else{
|
||||
equipment->setModbus_Point("Alarm High Supply Temp", 0);
|
||||
equipment->setModbus_Point("Alarm Low Supply Temp", 0);
|
||||
}
|
||||
}
|
||||
|
||||
void updateReturnHumidityAlarms(Equipment<ModbusIP>* equipment){
|
||||
Modbus_Point<ModbusIP>* returnHumidity = equipment -> getModbus_Point("Return Humidity");
|
||||
Modbus_Point<ModbusIP>* returnHumHighAlarmSP = equipment->getModbus_Point("Return Humidity Alarm High SP");
|
||||
Modbus_Point<ModbusIP>* returnHumLowAlarmSP = equipment->getModbus_Point("Return Humidity Alarm Low SP");
|
||||
|
||||
int RAHum = returnHumidity->getValue();
|
||||
int RAHumHighAlm = returnHumHighAlarmSP->getValue();
|
||||
int RAHumLowAlm = returnHumLowAlarmSP->getValue();
|
||||
|
||||
equipment->setModbus_Point("RATemp Value", RAHum);
|
||||
equipment->setModbus_Point("RATempHighAlm Value", RAHumHighAlm);
|
||||
equipment->setModbus_Point("RATempLowAlm Value", RAHumLowAlm);
|
||||
|
||||
if (returnHumidity->getValue() > returnHumHighAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("Alarm High Return Humidity", 1);
|
||||
}
|
||||
else if (returnHumidity->getValue() < returnHumLowAlarmSP->getValue()) {
|
||||
equipment->setModbus_Point("AAlarm Low Return Humidity", 1);
|
||||
}
|
||||
else{
|
||||
equipment->setModbus_Point("Alarm High Return Humidity", 0);
|
||||
equipment->setModbus_Point("Alarm Low Return Humidity", 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief This function will update the Alarm status DI bits according to the Alarm Commands from Coils (Modscan)
|
||||
* It will also update the Common Alarm: if any alarm is active, the Common alarm will also be active.
|
||||
@@ -62,48 +146,7 @@ void updateAlarms(Equipment<ModbusIP>* equipment){
|
||||
"Common Alarm ON", "Alarm Pump Failure ON", "Alarm Comm Loss Condenser 1 ON", "Alarm Comm Loss Condenser 2 ON",
|
||||
"Alarm Compressor 1B Overload ON", "Alarm Compressor 2B Overload ON"
|
||||
};
|
||||
|
||||
Modbus_Point<ModbusIP>* returnAirTemp = equipment -> getModbus_Point("Return Air Temp");
|
||||
Modbus_Point<ModbusIP>* supplyAirTemp = equipment -> getModbus_Point("Supply Air Temp");
|
||||
Modbus_Point<ModbusIP>* returnHumidity = equipment -> getModbus_Point("Return Humidity");
|
||||
//int supplyAirTemp = getPointValue(equipment, "Supply Air Temp");
|
||||
//int returnHumidity = getPointValue(equipment, "Return Humidity");
|
||||
|
||||
// Update Return Air Temp Alarms
|
||||
if (returnAirTemp > equipment->getModbus_Point("Return Air Temp Alarm High SP")) {
|
||||
equipment->setModbus_Point("Alarm High Return Air Temp", 1);
|
||||
}
|
||||
else if (returnAirTemp < equipment->getModbus_Point("Return Air Temp Alarm Low SP")) {
|
||||
equipment->setModbus_Point("Alarm Low Return Air Temp", 1);
|
||||
}
|
||||
else{
|
||||
equipment->setModbus_Point("Alarm High Return Air Temp", 0);
|
||||
equipment->setModbus_Point("Alarm Low Return Air Temp", 0);
|
||||
}
|
||||
|
||||
// Update Supply Air Temp Alarms
|
||||
if (supplyAirTemp > equipment->getModbus_Point("Supply Air Temp Alarm High SP")) {
|
||||
equipment->setModbus_Point("Alarm High Supply Temp", 1);
|
||||
}
|
||||
else if (supplyAirTemp < equipment->getModbus_Point("Supply Air Temp Alarm Low SP")) {
|
||||
equipment->setModbus_Point("Alarm Low Supply Temp", 1);
|
||||
}
|
||||
else{
|
||||
equipment->setModbus_Point("Alarm High Supply Temp", 0);
|
||||
equipment->setModbus_Point("Alarm Low Supply Temp", 0);
|
||||
}
|
||||
|
||||
// Update Return Humidity Alarms
|
||||
if (returnHumidity > equipment->getModbus_Point("Return Humidity Alarm High SP")) {
|
||||
equipment->setModbus_Point("Alarm High Return Humidity", 1);
|
||||
}
|
||||
else if (returnHumidity < equipment->getModbus_Point("Return Humidity Alarm Low SP")) {
|
||||
equipment->setModbus_Point("AAlarm Low Return Humidity", 1);
|
||||
}
|
||||
else{
|
||||
equipment->setModbus_Point("Alarm High Return Humidity", 0);
|
||||
equipment->setModbus_Point("Alarm Low Return Humidity", 0);
|
||||
}
|
||||
|
||||
int numAlarms = 0;
|
||||
for (int i =0; i< alarmCommands.size() && i < alarmDescriptions.size(); ++i) {
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
template <typename T>
|
||||
class State;
|
||||
|
||||
void updateReturnAirTempAlarms(Equipment<ModbusIP>* equipment);
|
||||
void updateSupplyAirTempAlarms(Equipment<ModbusIP>* equipment);
|
||||
void updateReturnHumidityAlarms(Equipment<ModbusIP>* equipment);
|
||||
|
||||
/**
|
||||
* @brief Checks common alarms (non-fail alarms) and updates the Common Alarm Modbus point.
|
||||
* @param equipment Pointer to the Equipment instance.
|
||||
|
||||
@@ -62,6 +62,9 @@ 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
|
||||
updateReturnAirTempAlarms(equipment);
|
||||
updateSupplyAirTempAlarms(equipment);
|
||||
updateReturnHumidityAlarms(equipment);
|
||||
updateAlarms(equipment);
|
||||
updateDehumidifier(equipment); // Dehumidifier mode can be toggled while in FailState (for ease of Ignition HMI verification)
|
||||
|
||||
|
||||
@@ -47,6 +47,11 @@ 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 SingleValueStrategy(10.0f, 0.0f, 1000));
|
||||
//addStrategy("Return Air Temp", new SingleValueStrategy(50.0f, 0.0f, 1000));
|
||||
//addStrategy("Supply Air Temp", new SingleValueStrategy(60.0f, 0.0f, 1000));
|
||||
|
||||
addStrategy("Supply Air Flow", new SawStrategy(7.0f, 10.0f, 1.0f, 1000));
|
||||
addStrategy("Fan Speed", new PIDStrategy("Return Air Temp Setpoint", 1000, "Return Air Temp"));
|
||||
addStrategy("Fluid Control Valve Position 1", new PIDStrategy("Supply Air Temp Setpoint", 1000, "Supply Air Temp"));
|
||||
@@ -72,6 +77,10 @@ template<>
|
||||
State<ModbusIP>* RunningState<ModbusIP>::update(Equipment<ModbusIP>* equipment) {
|
||||
Serial.println("Running update function");
|
||||
|
||||
updateReturnAirTempAlarms(equipment);
|
||||
updateSupplyAirTempAlarms(equipment);
|
||||
updateReturnHumidityAlarms(equipment);
|
||||
|
||||
updateAlarms(equipment);
|
||||
updateDehumidifier(equipment);
|
||||
|
||||
|
||||
@@ -46,6 +46,13 @@ StandbyState<ModbusIP>::StandbyState() {
|
||||
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));
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -67,6 +74,10 @@ 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");
|
||||
|
||||
updateReturnAirTempAlarms(equipment);
|
||||
updateSupplyAirTempAlarms(equipment);
|
||||
updateReturnHumidityAlarms(equipment);
|
||||
|
||||
updateAlarms(equipment);
|
||||
updateDehumidifier(equipment);
|
||||
|
||||
|
||||
@@ -93,6 +93,9 @@ 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
|
||||
|
||||
{DI, 24, 0, "Supply Fan Status"},
|
||||
{DI, 25, 0, "Cooling Status"},
|
||||
{DI, 26, 0, "Free Cooling Status"},
|
||||
@@ -146,12 +149,28 @@ modbusMap mb_map[] =
|
||||
|
||||
{HR_10x, 53, 60, "Return Humidity Alarm High SP"},
|
||||
{HR_10x, 54, 20, "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, 100, "Return Air Temp Alarm High SP"},
|
||||
{HR_10x, 739, 72, "Return Air Temp Alarm Low SP"},
|
||||
|
||||
|
||||
{HR_10x, 738, 0, "Return Air Temp Alarm High SP"},
|
||||
{HR_10x, 739, 0, "Return Air Temp Alarm Low SP"},
|
||||
{HR, 740, 0, "RATemp Value"},
|
||||
{HR, 741, 0, "RATempHighAlm Value"},
|
||||
{HR, 742, 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, 740, 0, "SATemp Value"},
|
||||
{HR, 741, 0, "SATempHighAlm Value"},
|
||||
{HR, 742, 0, "SATempLowAlm Value"},
|
||||
|
||||
|
||||
};
|
||||
//Size of modbus map used in FOR cycles, automatically calculated.
|
||||
|
||||
Reference in New Issue
Block a user