88 lines
5.0 KiB
C#
88 lines
5.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
using LFP_Manager.DataStructure;
|
|
using LFP_Manager.Utils;
|
|
|
|
namespace LFP_Manager.Function
|
|
{
|
|
class csMakeDataFunction
|
|
{
|
|
private static DeviceSystemData MakeAlarmTripData(int id, short ndata, DeviceSystemData rSystemData)
|
|
{
|
|
bool[] aData = csUtils.Int16ToBitArray(ndata);
|
|
short bFault = rSystemData.StatusData.protect;
|
|
short bWarning = rSystemData.StatusData.warning;
|
|
int i = 0;
|
|
|
|
switch (id)
|
|
{
|
|
case 0: // Warning
|
|
if (aData[i++]) bWarning |= (1 << 2); // Bit 0 : Over voltage warning
|
|
else bWarning &= ~(1 << 2);
|
|
if (aData[i++]) bWarning |= (1 << 4); // Bit 1 : Cell Over voltage warning
|
|
else bWarning &= ~(1 << 4);
|
|
if (aData[i++]) bWarning |= (1 << 3); // Bit 2 : Low voltage warning
|
|
else bWarning &= ~(1 << 3);
|
|
if (aData[i++]) bWarning |= (1 << 5); // Bit 3 : Low cell voltage warning
|
|
else bWarning &= ~(1 << 5);
|
|
if (aData[i++]) bWarning |= (1 << 6); // Bit 4 : Charge over current warning
|
|
else bWarning &= ~(1 << 6);
|
|
if (aData[i++]) bWarning |= (1 << 7); // Bit 5 : Discharge over current warning
|
|
else bWarning &= ~(1 << 7);
|
|
i++; // 06 Abnormal balancing current
|
|
i++; // 07 Reserved
|
|
if ((aData[8]) || (aData[9])) bWarning |= (1 << 0); // Bit 8 : Charge over temperature warning, Bit 9 : Discharge over temperature warning
|
|
else bWarning &= ~(1 << 0);
|
|
i++; // 08
|
|
i++; // 09
|
|
if ((aData[10]) || (aData[11])) bWarning |= (1 << 1); // Bit 10 : Charge low temperature warning, Bit 11 : Discharge low temperature warning
|
|
else bWarning &= ~(1 << 1);
|
|
i++; // 10
|
|
i++; // 11
|
|
if (aData[i++]) bWarning |= (1 << 11); // 12 : Low capacity warning
|
|
else bWarning &= ~(1 << 11);
|
|
i++; // 13
|
|
if (aData[i++]) bWarning |= (1 << 9); // 14 Cell Voltage Difference Warning
|
|
else bWarning &= ~(1 << 9);
|
|
break;
|
|
case 1: // Status Code 2
|
|
if (aData[i++]) bFault |= (1 << 2); // Bit 0 : Over voltage warning
|
|
else bFault &= ~(1 << 2);
|
|
if (aData[i++]) bFault |= (1 << 4); // Bit 1 : Cell Over voltage warning
|
|
else bFault &= ~(1 << 4);
|
|
if (aData[i++]) bFault |= (1 << 3); // Bit 2 : Low voltage warning
|
|
else bFault &= ~(1 << 3);
|
|
if (aData[i++]) bFault |= (1 << 5); // Bit 3 : Low cell voltage warning
|
|
else bFault &= ~(1 << 5);
|
|
if (aData[i++]) bFault |= (1 << 6); // Bit 4 : Charge over current warning
|
|
else bFault &= ~(1 << 6);
|
|
if (aData[i++]) bFault |= (1 << 7); // Bit 5 : Discharge over current warning
|
|
else bFault &= ~(1 << 7);
|
|
i++; // 06 Abnormal balancing current
|
|
i++; // 07 Reserved
|
|
if ((aData[8]) || (aData[9])) bFault |= (1 << 0); // Bit 8 : Charge over temperature warning, Bit 9 : Discharge over temperature warning
|
|
else bFault &= ~(1 << 0);
|
|
i++; // 08
|
|
i++; // 09
|
|
if ((aData[10]) || (aData[11])) bFault |= (1 << 1); // Bit 10 : Charge low temperature warning, Bit 11 : Discharge low temperature warning
|
|
else bFault &= ~(1 << 1);
|
|
i++; // 10
|
|
i++; // 11
|
|
i++; // 12
|
|
i++; // 13
|
|
if (aData[i++]) bFault |= (1 << 9); // 14 Cell Voltage Difference Warning
|
|
else bFault &= ~(1 << 9);
|
|
break;
|
|
}
|
|
|
|
rSystemData.StatusData.protect = bFault;
|
|
rSystemData.StatusData.warning = bWarning;
|
|
|
|
return rSystemData;
|
|
}
|
|
}
|
|
}
|