Files
PR_PRM_GUI/LFP_Manager_PRM/Function/csMakeDataFunction.cs
2026-02-11 10:10:43 +09:00

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;
}
}
}