private PvData CreatePvData(DaegunPacketClass _packet) { DaegunMeterPacket pv_pack = _packet.Packet.Pv; PvData pv = new PvData(); pv.deviceId = $"DS{_packet.Packet.sSiteId}_PV{pv_pack.DeviceIndex}"; pv.groupId = 3; pv.siteId = _packet.Packet.sSiteId; pv.groupName = "PV_SYSTEM"; pv.TotalActivePower = pv_pack.TotalActivePower; pv.TotalReactivePower = pv_pack.TotalReactivePower; pv.ReverseActivePower = pv_pack.ReverseActivePower; pv.ReverseReactivePower = pv_pack.ReverseReactivePower; pv.vltR = pv_pack.Voltage.R; pv.vltS = pv_pack.Voltage.S; pv.vltT = pv_pack.Voltage.T; pv.crtR = pv_pack.Current.R; pv.crtS = pv_pack.Current.S; pv.crtT = pv_pack.Current.T; pv.Frequency = pv_pack.Frequency; pv.EnergyTotalActivePower = pv_pack.EnergyTotalActivePower; pv.EnergyTotalReactivePower = pv_pack.EnergyTotalReactivePower; pv.EnergyTotalReverseActivePower = pv_pack.EnergyTotalReverseActivePower; pv.timestamp = _packet.Timestamp; return(pv); }
public static bool ConvertPcs(DaegunPacket packet, DateTime timestamp, ref string pcs_string, ref string bms_string, ref string pv_string) { DaegunPcsPacket pcsPacket = packet.Pcs; DaegunBSCPacket bmsPacket = packet.Bsc; DaegunMeterPacket bms_meter_packet = packet.Ess; DaegunMeterPacket pv_pack = packet.Pv; JObject obj = CreateTemporary(1, "PCS_SYSTEM", $"PCS{pcsPacket.PcsNumber}", packet.sSiteId, timestamp); obj.Add("freq", pcsPacket.Frequency); obj.Add("acGridVlt", 0); obj.Add("acGridCrtLow", 0); obj.Add("acGridCrtHigh", 0); obj.Add("acGridPwr", 0); obj.Add("actPwrKw", pcsPacket.ActivePower); obj.Add("rctPwrKw", pcsPacket.ReactivePower); obj.Add("pwrFact", pcsPacket.PowerFactor); obj.Add("acGridVltR", pcsPacket.AC_phase_voltage.R); obj.Add("acGridVltS", pcsPacket.AC_phase_voltage.S); obj.Add("acGridVltT", pcsPacket.AC_phase_voltage.T); obj.Add("acGridCrtR", pcsPacket.AC_phase_current.R); obj.Add("acGridCrtS", pcsPacket.AC_phase_current.S); obj.Add("acGridCrtT", pcsPacket.AC_phase_current.T); obj.Add("actCmdLimitLowChg", 0); obj.Add("actCmdLimitLowDhg", 0); obj.Add("actCmdLimitHighChg", bmsPacket.ChargePowerLimit); obj.Add("actCmdLimitHighDhg", bmsPacket.DischargePowerLimit); pcs_string = obj.ToString(); obj = CreateTemporary(2, "PCS_BATTERY", $"BMS{bmsPacket.PcsIndex}", packet.sSiteId, timestamp); obj.Add("bms_soc", bmsPacket.Soc); obj.Add("bms_soh", bmsPacket.Soh); obj.Add("dcCellPwr", packet.Pcs.Dc_battery_power); obj.Add("dcCellVlt", packet.Pcs.Dc_battery_voltage); obj.Add("dcCellCrt", packet.Pcs.Dc_battery_current); obj.Add("dcCellTmpMx", packet.Bsc.ModuleTempRange.Max); obj.Add("dcCellTmpMn", packet.Bsc.ModuleTempRange.Min); obj.Add("dcCellVltMx", packet.Bsc.CellVoltageRange.Max); obj.Add("dcCellVltMn", packet.Bsc.CellVoltageRange.Min); bms_string = obj.ToString(); obj = CreateTemporary(4, "PV_SYSTEM", $"PV{pv_pack.PmsIndex}", packet.sSiteId, timestamp); obj.Add("TotalActivePower", pv_pack.TotalActivePower); obj.Add("TotalReactivePower", pv_pack.TotalReactivePower); obj.Add("ReverseActivePower", pv_pack.ReverseActivePower); obj.Add("ReverseReactivePower", pv_pack.ReverseReactivePower); obj.Add("vltR", pv_pack.Voltage.R); obj.Add("vltS", pv_pack.Voltage.S); obj.Add("vltT", pv_pack.Voltage.T); obj.Add("crtR", pv_pack.Current.R); obj.Add("crtS", pv_pack.Current.S); obj.Add("crtT", pv_pack.Current.T); obj.Add("Frequency", pv_pack.Frequency); if (pv_pack.EnergyTotalActivePower != 0) { } obj.Add("EnergyTotalActivePower", pv_pack.EnergyTotalActivePower); obj.Add("EnergyTotalReactivePower", pv_pack.EnergyTotalReactivePower); obj.Add("EnergyTotalReverseActivePower", pv_pack.EnergyTotalReverseActivePower); pv_string = obj.ToString(); return(true); }