public void SimulateSOCCan() { CanService.Instance.ConnectViaLoopBack(); CMU cmu = new CMU(0x203, true); Assert.IsNull(cmu.CellTemp); Assert.AreEqual(cmu.State, CanReceivingNode.STATE_NA); CanPacket PCBcanPacket = new CanPacket(0x203); PCBcanPacket.SetInt16(2, 520); // PCB Temp PCBcanPacket.SetInt16(3, 320); // PCB Temp cmu.TestCanPacketReceived(PCBcanPacket); Assert.AreEqual(cmu.PCBTemp, 52); Assert.AreEqual(cmu.CellTemp, 32); Assert.AreEqual(cmu.State, CanReceivingNode.STATE_ON); CanPacket Battery1canPacket = new CanPacket(0x204); Battery1canPacket.SetUint16(0, 1); Battery1canPacket.SetUint16(1, 11); Battery1canPacket.SetUint16(2, 21); Battery1canPacket.SetUint16(3, 31); cmu.TestCanPacketReceived(Battery1canPacket); CanPacket Battery2canPacket = new CanPacket(0x205); Battery2canPacket.SetUint16(0, 41); Battery2canPacket.SetUint16(1, 51); Battery2canPacket.SetUint16(2, 61); Battery2canPacket.SetUint16(3, 71); cmu.TestCanPacketReceived(Battery2canPacket); Assert.AreEqual(cmu.Cell0mV, (uint)1); Assert.AreEqual(cmu.Cell1mV, (uint)11); Assert.AreEqual(cmu.Cell2mV, (uint)21); Assert.AreEqual(cmu.Cell3mV, (uint)31); Assert.AreEqual(cmu.Cell4mV, (uint)41); Assert.AreEqual(cmu.Cell5mV, (uint)51); Assert.AreEqual(cmu.Cell6mV, (uint)61); Assert.AreEqual(cmu.Cell7mV, (uint)71); Assert.AreEqual(cmu.State, CanReceivingNode.STATE_ON); CanService.Instance.Disconnect(); }
private BatteryService() { BatteryData = new Battery(TimeoutApplies); // Set up the heartbeat for the battery so that we are ready to go CanPacket ControlPacket500 = new CanPacket(0x500); // 0x500 ControlPacket500.SetInt16(0, 4098); ControlPacket500.SetInt16(2, 1); CanService.Instance.SetCanToSendAt10Hertz(ControlPacket500); // If we are not currently sending x505s then lets start as the battery likes them if (!CanService.Instance.IsPacketCurrent(0x505, 1000)) { CanPacket ControlPacket505 = new CanPacket(0x505); // 0x505 ControlPacket505.SetInt8(0, 0); CanService.Instance.SetCanToSendAt10Hertz(ControlPacket505); } }
private void SetChargeVoltageError(Battery battery, int voltageError, int cellTempMargin) { CanPacket ccVEOne = new CanPacket(0x6F6); CanPacket ccVETwo = new CanPacket(0x2F6); ccVEOne.SetInt16(0, voltageError); ccVETwo.SetInt16(0, voltageError); ccVEOne.SetInt16(1, cellTempMargin); ccVETwo.SetInt16(1, cellTempMargin); if (battery.GetBMU(0) != null) { battery.GetBMU(0).CanPacketReceived(ccVEOne); } if (battery.GetBMU(1) != null) { battery.GetBMU(1).CanPacketReceived(ccVETwo); } }
private void SetCellVoltages(Battery battery, uint voltages) { uint baseCanId = 0x601; CanPacket PCBcanPacket = new CanPacket(baseCanId); PCBcanPacket.SetInt16(2, 520); // PCB Temp PCBcanPacket.SetInt16(3, 320); // PCB Temp CanPacket Battery1canPacket1 = new CanPacket(baseCanId + 1); Battery1canPacket1.SetUint16(0, voltages); Battery1canPacket1.SetUint16(1, voltages); Battery1canPacket1.SetUint16(2, voltages); Battery1canPacket1.SetUint16(3, voltages); CanPacket Battery1canPacket2 = new CanPacket(baseCanId + 2); Battery1canPacket2.SetUint16(0, voltages); Battery1canPacket2.SetUint16(1, voltages); Battery1canPacket2.SetUint16(2, voltages); Battery1canPacket2.SetUint16(3, voltages); if (battery.GetBMU(0) != null) { battery.GetBMU(0).GetCMU(0).TestCanPacketReceived(PCBcanPacket); } if (battery.GetBMU(0) != null) { battery.GetBMU(0).GetCMU(0).TestCanPacketReceived(Battery1canPacket1); } if (battery.GetBMU(0) != null) { battery.GetBMU(0).GetCMU(0).TestCanPacketReceived(Battery1canPacket2); } baseCanId = 0x201; CanPacket PCBcanPacket2 = new CanPacket(baseCanId); PCBcanPacket.SetInt16(2, 520); // PCB Temp PCBcanPacket.SetInt16(3, 320); // PCB Temp CanPacket Battery2canPacket1 = new CanPacket(baseCanId + 1); Battery2canPacket1.SetUint16(0, voltages); Battery2canPacket1.SetUint16(1, voltages); Battery2canPacket1.SetUint16(2, voltages); Battery2canPacket1.SetUint16(3, voltages); CanPacket Battery2canPacket2 = new CanPacket(baseCanId + 2); Battery2canPacket2.SetUint16(0, voltages); Battery2canPacket2.SetUint16(1, voltages); Battery2canPacket2.SetUint16(2, voltages); Battery2canPacket2.SetUint16(3, voltages); if (battery.GetBMU(1) != null) { battery.GetBMU(1).GetCMU(0).TestCanPacketReceived(PCBcanPacket2); } if (battery.GetBMU(1) != null) { battery.GetBMU(1).GetCMU(0).TestCanPacketReceived(Battery2canPacket1); } if (battery.GetBMU(1) != null) { battery.GetBMU(1).GetCMU(0).TestCanPacketReceived(Battery2canPacket2); } }