351 lines
12 KiB
C#
351 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
using DevExpress.XtraEditors;
|
|
|
|
using LFP_Manager.DataStructure;
|
|
using LFP_Manager.Function;
|
|
using LFP_Manager.Controls;
|
|
|
|
namespace LFP_Manager.Forms
|
|
{
|
|
public delegate void ParamUpdateEvent(object sendor);
|
|
public delegate void ParamCmdEvent(int sId, int mode, int flag, ref DeviceParamData aParam, ref DeviceCalibration aCalib);
|
|
|
|
public partial class fmxParamConfig : DevExpress.XtraEditors.XtraForm
|
|
{
|
|
#region VARIABLES
|
|
|
|
int SystemId = 0;
|
|
DeviceParamData Param;
|
|
DeviceCalibration Calib;
|
|
|
|
public event ParamUpdateEvent OnUpdate = null;
|
|
public event ParamCmdEvent OnCommand = null;
|
|
|
|
#endregion
|
|
|
|
#region CONSTRUCTORS
|
|
|
|
public fmxParamConfig()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public fmxParamConfig(int sId, DeviceParamData aParam)
|
|
{
|
|
InitializeComponent();
|
|
|
|
SystemId = sId;
|
|
Param = aParam;
|
|
|
|
InitComponent();
|
|
|
|
tmrDisplay.Enabled = true;
|
|
}
|
|
|
|
public void InitComponent()
|
|
{
|
|
// Cell Voltage Parameter
|
|
ucCOVParam.SetParamName(0, "Cell Over Voltage");
|
|
ucCOVParam.SetParamName(1, "mV");
|
|
ucCOVParam.SetId(0);
|
|
ucCOVParam.OnCommand += OnCmdEvent;
|
|
|
|
ucCUVParam.SetParamName(0, "Cell Under Voltage");
|
|
ucCUVParam.SetParamName(1, "mV");
|
|
ucCUVParam.SetId(1);
|
|
ucCUVParam.OnCommand += OnCmdEvent;
|
|
//ucCUVParam.EnableItem(0, false);
|
|
|
|
// System Voltage Parameter
|
|
ucSOVParam.SetParamName(0, "System Over Voltage");
|
|
ucSOVParam.SetParamName(1, "V");
|
|
ucSOVParam.SetId(2);
|
|
ucSOVParam.OnCommand += OnCmdEvent;
|
|
|
|
ucSUVParam.SetParamName(0, "System Under Voltage");
|
|
ucSUVParam.SetParamName(1, "V");
|
|
ucSUVParam.SetId(3);
|
|
ucSUVParam.OnCommand += OnCmdEvent;
|
|
//ucSUVParam.EnableItem(0, false);
|
|
|
|
// Charge Temperature Parameter
|
|
ucCHTParam.SetParamName(0, "Charge High Temp");
|
|
ucCHTParam.SetParamName(1, "C");
|
|
ucCHTParam.SetId(4);
|
|
ucCHTParam.OnCommand += OnCmdEvent;
|
|
|
|
ucCLTParam.SetParamName(0, "Charge Low Temp");
|
|
ucCLTParam.SetParamName(1, "C");
|
|
ucCLTParam.SetId(5);
|
|
ucCLTParam.OnCommand += OnCmdEvent;
|
|
|
|
// Discharge Temperature Parameter
|
|
ucDHTParam.SetParamName(0, "Discharge High Temp");
|
|
ucDHTParam.SetParamName(1, "C");
|
|
ucDHTParam.SetId(6);
|
|
ucDHTParam.OnCommand += OnCmdEvent;
|
|
//ucDHTParam.EnableItem(0, false);
|
|
|
|
ucDLTParam.SetParamName(0, "Discharge Low Temp");
|
|
ucDLTParam.SetParamName(1, "C");
|
|
ucDLTParam.SetId(7);
|
|
ucDLTParam.OnCommand += OnCmdEvent;
|
|
//ucDLTParam.EnableItem(0, false);
|
|
|
|
// Discharge Temperature Parameter
|
|
ucCOCParam.SetParamName(0, "Charge Over Current");
|
|
ucCOCParam.SetParamName(1, "A");
|
|
ucCOCParam.SetId(8);
|
|
ucCOCParam.OnCommand += OnCmdEvent;
|
|
|
|
ucDOCParam.SetParamName(0, "Discharge Over Current");
|
|
ucDOCParam.SetParamName(1, "A");
|
|
ucDOCParam.SetId(9);
|
|
ucDOCParam.OnCommand += OnCmdEvent;
|
|
//ucDOCParam.EnableItem(0, false);
|
|
|
|
// SOC Parameter
|
|
ucLowSocParam.SetParamName(0, "Low SOC");
|
|
ucLowSocParam.SetParamName(1, "%");
|
|
ucLowSocParam.SetId(10);
|
|
ucLowSocParam.OnCommand += OnCmdEvent;
|
|
ucLowSocParam.EnableItem(0, false);
|
|
|
|
// SOC Parameter
|
|
ucCvDiffParam.SetParamName(0, "Cell Voltage Diff");
|
|
ucCvDiffParam.SetParamName(1, "mV");
|
|
ucCvDiffParam.SetId(11);
|
|
ucCvDiffParam.OnCommand += OnCmdEvent;
|
|
//ucCvDiffParam.EnableItem(0, false);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region COMMAND EVENT
|
|
|
|
private void OnCmdEvent(int mode, int flag, ParamData aParam)
|
|
{
|
|
int cmd = 0;
|
|
DeviceParamData wParam = Param;
|
|
|
|
switch (mode)
|
|
{
|
|
case 0: // Cell Over Voltage
|
|
cmd = 5;
|
|
wParam.CellOverVoltageTrip = aParam.Fault;
|
|
wParam.CellOverVoltageWarning = aParam.Warning;
|
|
wParam.CellOverVoltageRelease = aParam.Release;
|
|
break;
|
|
case 1: // Cell Under Voltage
|
|
cmd = 5;
|
|
wParam.CellUnderVoltageTrip = aParam.Fault;
|
|
wParam.CellUnderVoltageWarning = aParam.Warning;
|
|
wParam.CellUnderVoltageRelease = aParam.Release;
|
|
break;
|
|
case 2: // System Over Voltage
|
|
cmd = 7;
|
|
wParam.SysOverVoltageTrip = aParam.Fault;
|
|
wParam.SysOverVoltageWarning = aParam.Warning;
|
|
wParam.SysOverVoltageRelease = aParam.Release;
|
|
break;
|
|
case 3: // System Under Voltage
|
|
cmd = 7;
|
|
wParam.SysUnderVoltageTrip = aParam.Fault;
|
|
wParam.SysUnderVoltageWarning = aParam.Warning;
|
|
wParam.SysUnderVoltageRelease = aParam.Release;
|
|
break;
|
|
case 4: // Charge High Temperature
|
|
cmd = 6;
|
|
wParam.ChaHighTempTrip = aParam.Fault;
|
|
wParam.ChaHighTempWarning = aParam.Warning;
|
|
wParam.ChaHighTempRelease = aParam.Release;
|
|
break;
|
|
case 5: // Charge Low Temperature
|
|
cmd = 6;
|
|
wParam.ChaLowTempTrip = aParam.Fault;
|
|
wParam.ChaLowTempWarning = aParam.Warning;
|
|
wParam.ChaLowTempRelease = aParam.Release;
|
|
break;
|
|
case 6: // Discharge High Temperature
|
|
cmd = 6;
|
|
wParam.DchHighTempTrip = aParam.Fault;
|
|
wParam.DchHighTempWarning = aParam.Warning;
|
|
wParam.DchHighTempRelease = aParam.Release;
|
|
break;
|
|
case 7: // Discharge Low Temperature
|
|
cmd = 6;
|
|
wParam.DchLowTempTrip = aParam.Fault;
|
|
wParam.DchLowTempWarning = aParam.Warning;
|
|
wParam.DchLowTempRelease = aParam.Release;
|
|
break;
|
|
case 8: // Charge Over Current
|
|
cmd = 22;
|
|
wParam.ChaOverCurrentTrip = aParam.Fault;
|
|
wParam.ChaOverCurrentWarning = aParam.Warning;
|
|
wParam.ChaOverCurrentRelease = aParam.Release;
|
|
break;
|
|
case 9: // Discharge Over Current
|
|
cmd = 22;
|
|
wParam.DchOverCurrentTrip = aParam.Fault;
|
|
wParam.DchOverCurrentWarning = aParam.Warning;
|
|
wParam.DchOverCurrentRelease = aParam.Release;
|
|
break;
|
|
case 10: // Low SOC
|
|
cmd = 14;
|
|
wParam.LowSocWarning = aParam.Warning;
|
|
wParam.LowSocRelease = aParam.Release;
|
|
break;
|
|
case 11: // Cell Voltage Difference
|
|
cmd = 2;
|
|
wParam.CellVoltageDifferenceTrip = aParam.Fault;
|
|
wParam.CellVoltageDifferenceWarning = aParam.Warning;
|
|
wParam.CellVoltageDifferenceRelease = aParam.Release;
|
|
break;
|
|
case 16: // Default Parameter
|
|
cmd = 16;
|
|
wParam.DefalutParamOption = aParam.Fault;
|
|
wParam.DefalutParamAll = aParam.Release;
|
|
break;
|
|
case 99:
|
|
cmd = 99; // All parameter read
|
|
break;
|
|
}
|
|
OnCommand?.Invoke(SystemId, cmd, flag, ref wParam, ref Calib);
|
|
}
|
|
|
|
#endregion
|
|
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
public void UpdateData(DeviceParamData aParam, DeviceCalibration aCalib)
|
|
{
|
|
Param = aParam;
|
|
Calib = aCalib;
|
|
}
|
|
|
|
private void tmrDisplay_Tick(object sender, EventArgs e)
|
|
{
|
|
DisplayValue();
|
|
|
|
OnUpdate?.Invoke(this);
|
|
}
|
|
|
|
private void DisplayValue()
|
|
{
|
|
ParamData pData = new ParamData();
|
|
|
|
// Cell Voltage Parameter
|
|
pData.Fault = Param.CellOverVoltageTrip;
|
|
pData.Warning = Param.CellOverVoltageWarning;
|
|
pData.Release = Param.CellOverVoltageRelease;
|
|
|
|
ucCOVParam.UpdateData(pData);
|
|
|
|
pData.Fault = Param.CellUnderVoltageTrip;
|
|
pData.Warning = Param.CellUnderVoltageWarning;
|
|
pData.Release = Param.CellUnderVoltageRelease;
|
|
|
|
ucCUVParam.UpdateData(pData);
|
|
|
|
// System Voltage Parameter
|
|
pData.Fault = Param.SysOverVoltageTrip;
|
|
pData.Warning = Param.SysOverVoltageWarning;
|
|
pData.Release = Param.SysOverVoltageRelease;
|
|
|
|
ucSOVParam.UpdateData(pData);
|
|
|
|
pData.Fault = Param.SysUnderVoltageTrip;
|
|
pData.Warning = Param.SysUnderVoltageWarning;
|
|
pData.Release = Param.SysUnderVoltageRelease;
|
|
|
|
ucSUVParam.UpdateData(pData);
|
|
|
|
// Charge Temp Parameter
|
|
pData.Fault = Param.ChaHighTempTrip;
|
|
pData.Warning = Param.ChaHighTempWarning;
|
|
pData.Release = Param.ChaHighTempRelease;
|
|
|
|
ucCHTParam.UpdateData(pData);
|
|
|
|
pData.Fault = Param.ChaLowTempTrip;
|
|
pData.Warning = Param.ChaLowTempWarning;
|
|
pData.Release = Param.ChaLowTempRelease;
|
|
|
|
ucCLTParam.UpdateData(pData);
|
|
|
|
// Discharge Temp Parameter
|
|
pData.Fault = Param.DchHighTempTrip;
|
|
pData.Warning = Param.DchHighTempWarning;
|
|
pData.Release = Param.DchHighTempRelease;
|
|
|
|
ucDHTParam.UpdateData(pData);
|
|
|
|
pData.Fault = Param.DchLowTempTrip;
|
|
pData.Warning = Param.DchLowTempWarning;
|
|
pData.Release = Param.DchLowTempRelease;
|
|
|
|
ucDLTParam.UpdateData(pData);
|
|
|
|
// Charge Over Current
|
|
pData.Fault = Param.ChaOverCurrentTrip;
|
|
pData.Warning = Param.ChaOverCurrentWarning;
|
|
pData.Release = Param.ChaOverCurrentRelease;
|
|
|
|
ucCOCParam.UpdateData(pData);
|
|
|
|
// Discharge Over Current
|
|
pData.Fault = Param.DchOverCurrentTrip;
|
|
pData.Warning = Param.DchOverCurrentWarning;
|
|
pData.Release = Param.DchOverCurrentRelease;
|
|
|
|
ucDOCParam.UpdateData(pData);
|
|
|
|
// Low SOC
|
|
pData.Fault = Param.LowSocTrip;
|
|
pData.Warning = Param.LowSocWarning;
|
|
pData.Release = Param.LowSocRelease;
|
|
|
|
ucLowSocParam.UpdateData(pData);
|
|
|
|
// Cell Votage Difference
|
|
pData.Fault = Param.CellVoltageDifferenceTrip;
|
|
pData.Warning = Param.CellVoltageDifferenceWarning;
|
|
pData.Release = Param.CellVoltageDifferenceRelease;
|
|
|
|
ucCvDiffParam.UpdateData(pData);
|
|
}
|
|
|
|
private void btnGetAll_Click(object sender, EventArgs e)
|
|
{
|
|
ParamData aa = new ParamData();
|
|
OnCmdEvent(99, 0, aa);
|
|
}
|
|
|
|
private void btnDefaultSet_Click(object sender, EventArgs e)
|
|
{
|
|
ParamData aa = new ParamData();
|
|
|
|
if (cbFactoryDefault.Checked)
|
|
aa.Fault = 1;
|
|
else
|
|
aa.Fault = 0;
|
|
|
|
if (chbAll.Checked)
|
|
aa.Release = 1;
|
|
else
|
|
aa.Release = 0;
|
|
|
|
OnCmdEvent(16, 1, aa);
|
|
}
|
|
}
|
|
} |