631 lines
27 KiB
Python
631 lines
27 KiB
Python
import struct
|
|
|
|
class msg_CcuStateFbMsg:
|
|
def __init__(self):
|
|
self.start1 = 0x20
|
|
self.start2 = 0x20
|
|
self.id = 0x0041
|
|
self.length = 0x0000
|
|
self.currentWorkCondition = 0x00
|
|
self.fcuState = 80
|
|
self.fcuFaultLeve = 0x20
|
|
self.powerLimit = 0x00
|
|
self.totalPowerGeneration = 0x00
|
|
self.ch4o = 0x00
|
|
self.o2 = 0x00
|
|
self.fcuVoltage = 0x0000
|
|
self.fcuCurrent = 0x0000
|
|
self.o2Level = 0x00
|
|
self.placeholder1 = 0x00
|
|
self.exchangerTemperature = 0x00
|
|
self.fcuOutPower = 0x00
|
|
self.fcuOutIns = 0x00
|
|
self.fcuVoltageIns = 0x00
|
|
self.fcuVoltagePower = 0x00
|
|
self.fcuCurrentIns = 0x00
|
|
self.fcuCurrentPower = 0x00
|
|
self.h2Concentration1 = 0x00
|
|
self.h2Concentration2 = 0x00
|
|
self.o2Concentration1 = 0x00
|
|
self.o2Concentration2 = 0x00
|
|
self.ch4oConcentration1 = 0x00
|
|
self.ch4oConcentration2 = 0x00
|
|
self.backpressure1 = 0x00
|
|
self.backpressure2 = 0x00
|
|
self.flameDetection = 0x00
|
|
self.fcuGZ_1L = 0x00
|
|
self.fcuGZ_1H = 0x00
|
|
self.fcuGZ_2L = 0x00
|
|
self.fcuGZ_2H = 0x00
|
|
self.fcuGZ_3L = 0x00
|
|
self.fcuGZ_3H = 0x00
|
|
self.insPosRelayState = 0x00
|
|
self.insNegRelayState = 0x00
|
|
self.powerPosRelayState = 0x00
|
|
self.powerNegRelayState = 0x00
|
|
self.insBatLimit = 0x00
|
|
self.powerBatLimit = 0x00
|
|
self.insBatSoc = 0x00
|
|
self.powerBatSoc = 0x00
|
|
self.insBatTotalElectricity = 0x00
|
|
self.powerBatTotalElectricity = 0x00
|
|
self.insBatCurrentElectricity = 0x00
|
|
self.powerBatCurrentElectricity = 0x00
|
|
self.insChargeState = 0x00
|
|
self.powerChargeState = 0x00
|
|
self.insLinkVoltage = 0x00
|
|
self.insPackVoltage = 0x00
|
|
self.insCurrent = 0x00
|
|
self.insPosInsulationResistance = 0x00
|
|
self.insNegInsulationResistance = 0x00
|
|
self.powerLinkVoltage = 0x00
|
|
self.powerPackVoltage = 0x00
|
|
self.powerCurrent = 0x00
|
|
self.powerPosInsulationResistance = 0x00
|
|
self.powerNegInsulationResistance = 0x00
|
|
self.insEmergencyStatusWord = 0x00
|
|
self.powerEmergencyStatusWord = 0x00
|
|
self.insAlarmIdentificationWord = 0x00
|
|
self.powerAlarmIdentificationWord = 0x00
|
|
self.insCurrentSocHold1 = 0x00
|
|
self.insCurrentSocHold2 = 0x00
|
|
self.insCurrentSocHold3 = 0x00
|
|
self.fcuCurrentToInsLimit1 = 0x00
|
|
self.fcuCurrentToinsLimit2 = 0x00
|
|
self.powerCurrentSocHold1 = 0x00
|
|
self.powerCurrentSocHold2 = 0x00
|
|
self.powerCurrentSocHold3 = 0x00
|
|
self.powerCurrentToInsLimit1 = 0x00
|
|
self.powerCurrentToinsLimit2 = 0x00
|
|
self.placeholder2 = 0x00
|
|
self.placeholder3 = 0x00
|
|
self.placeholder4 = 0x00
|
|
self.placeholder5 = 0x00
|
|
self.checkCode = 0x00
|
|
|
|
def pack(self):
|
|
# 初始化数据
|
|
self.length = 0x0000
|
|
self.checkCode = 0x0000
|
|
|
|
data = struct.pack('<B', self.start1)
|
|
data += struct.pack('<B', self.start2)
|
|
data += struct.pack('<H', self.id)
|
|
data += struct.pack('<H', self.length)
|
|
|
|
# 填充数据
|
|
data += struct.pack('<B', self.currentWorkCondition)
|
|
data += struct.pack('<B', self.fcuState)
|
|
data += struct.pack('<B', self.fcuFaultLeve)
|
|
data += struct.pack('<f', self.powerLimit)
|
|
data += struct.pack('<f', self.totalPowerGeneration)
|
|
data += struct.pack('<f', self.ch4o)
|
|
data += struct.pack('<f', self.o2)
|
|
data += struct.pack('<f', self.fcuVoltage)
|
|
data += struct.pack('<f', self.fcuCurrent)
|
|
data += struct.pack('<f', self.o2Level)
|
|
data += struct.pack('<f', self.placeholder1)
|
|
data += struct.pack('<f', self.exchangerTemperature)
|
|
data += struct.pack('<f', self.fcuOutPower)
|
|
data += struct.pack('<f', self.fcuOutIns)
|
|
data += struct.pack('<f', self.fcuVoltageIns)
|
|
data += struct.pack('<f', self.fcuVoltagePower)
|
|
data += struct.pack('<f', self.fcuCurrentIns)
|
|
data += struct.pack('<f', self.fcuCurrentPower)
|
|
data += struct.pack('<f', self.h2Concentration1)
|
|
data += struct.pack('<f', self.h2Concentration2)
|
|
data += struct.pack('<f', self.o2Concentration1)
|
|
data += struct.pack('<f', self.o2Concentration2)
|
|
data += struct.pack('<f', self.ch4oConcentration1)
|
|
data += struct.pack('<f', self.ch4oConcentration2)
|
|
data += struct.pack('<f', self.backpressure1)
|
|
data += struct.pack('<f', self.backpressure2)
|
|
data += struct.pack('<B', self.flameDetection)
|
|
data += struct.pack('<B', self.fcuGZ_1L)
|
|
data += struct.pack('<B', self.fcuGZ_1H)
|
|
data += struct.pack('<B', self.fcuGZ_2L)
|
|
data += struct.pack('<B', self.fcuGZ_2H)
|
|
data += struct.pack('<B', self.fcuGZ_3L)
|
|
data += struct.pack('<B', self.fcuGZ_3H)
|
|
data += struct.pack('<B', self.insPosRelayState)
|
|
data += struct.pack('<B', self.insNegRelayState)
|
|
data += struct.pack('<B', self.powerPosRelayState)
|
|
data += struct.pack('<B', self.powerNegRelayState)
|
|
data += struct.pack('<H', self.insBatLimit)
|
|
data += struct.pack('<H', self.powerBatLimit)
|
|
data += struct.pack('<B', self.insBatSoc)
|
|
data += struct.pack('<B', self.powerBatSoc)
|
|
data += struct.pack('<H', self.insBatTotalElectricity)
|
|
data += struct.pack('<H', self.powerBatTotalElectricity)
|
|
data += struct.pack('<H', self.insBatCurrentElectricity)
|
|
data += struct.pack('<H', self.powerBatCurrentElectricity)
|
|
data += struct.pack('<B', self.insChargeState)
|
|
data += struct.pack('<B', self.powerChargeState)
|
|
data += struct.pack('<H', self.insLinkVoltage)
|
|
data += struct.pack('<H', self.insPackVoltage)
|
|
data += struct.pack('<H', self.insCurrent)
|
|
data += struct.pack('<H', self.insPosInsulationResistance)
|
|
data += struct.pack('<H', self.insNegInsulationResistance)
|
|
data += struct.pack('<H', self.powerLinkVoltage)
|
|
data += struct.pack('<H', self.powerPackVoltage)
|
|
data += struct.pack('<H', self.powerCurrent)
|
|
data += struct.pack('<H', self.powerPosInsulationResistance)
|
|
data += struct.pack('<H', self.powerNegInsulationResistance)
|
|
data += struct.pack('<B', self.insEmergencyStatusWord)
|
|
data += struct.pack('<B', self.powerEmergencyStatusWord)
|
|
data += struct.pack('<B', self.insAlarmIdentificationWord)
|
|
data += struct.pack('<B', self.powerAlarmIdentificationWord)
|
|
data += struct.pack('<B', self.insCurrentSocHold1)
|
|
data += struct.pack('<B', self.insCurrentSocHold2)
|
|
data += struct.pack('<B', self.insCurrentSocHold3)
|
|
data += struct.pack('<B', self.fcuCurrentToInsLimit1)
|
|
data += struct.pack('<B', self.fcuCurrentToinsLimit2)
|
|
data += struct.pack('<B', self.powerCurrentSocHold1)
|
|
data += struct.pack('<B', self.powerCurrentSocHold2)
|
|
data += struct.pack('<B', self.powerCurrentSocHold3)
|
|
data += struct.pack('<B', self.powerCurrentToInsLimit1)
|
|
data += struct.pack('<B', self.powerCurrentToinsLimit2)
|
|
data += struct.pack('<f', self.placeholder2)
|
|
data += struct.pack('<f', self.placeholder3)
|
|
data += struct.pack('<f', self.placeholder4)
|
|
data += struct.pack('<f', self.placeholder5)
|
|
|
|
|
|
for i in range(len(data)):
|
|
self.checkCode += data[i]
|
|
# print(self.checkCode)
|
|
|
|
data += struct.pack('<I', self.checkCode)
|
|
|
|
|
|
last_index = len(data)
|
|
# print(struct.unpack('<i',data[last_index-4:last_index]))
|
|
|
|
# print(len(data))
|
|
|
|
return data
|
|
|
|
|
|
class msg_CcuSetParamFbMsg:
|
|
def __init__(self):
|
|
self.start1 = 0x20
|
|
self.start2 = 0x20
|
|
self.id = 0x0040
|
|
self.length = 10
|
|
self.flag = 0x01
|
|
self.failvreCode = 0x01
|
|
self.checkCode = 0x01 # 初始值,将在 pack 方法中更新
|
|
|
|
def pack(self):
|
|
# 初始化数据
|
|
# self.checkCode = self.start1 + self.start2 + self.id + self.length + self.flag + self.failvreCode
|
|
self.checkCode = 0x0000
|
|
data = struct.pack('<B', self.start1)
|
|
data += struct.pack('<B', self.start2)
|
|
data += struct.pack('<H', self.id)
|
|
data += struct.pack('<H', self.length)
|
|
|
|
# 填充数据
|
|
data += struct.pack('<B', self.flag)
|
|
data += struct.pack('<B', self.failvreCode)
|
|
# 其他参数...
|
|
for i in range(len(data)):
|
|
self.checkCode += data[i]
|
|
data += struct.pack('<I', self.checkCode)
|
|
return data
|
|
|
|
class msg_disHighVolBusFbMsg:
|
|
def __init__(self):
|
|
self.start1 = 0x20
|
|
self.start2 = 0x20
|
|
self.id = 0x0005
|
|
self.length = 10
|
|
self.DCB1 = 0x00
|
|
self.DCB2 = 0x00
|
|
self.ZK1 = 0x00
|
|
self.ZK2 = 0x00
|
|
self.ZK3 = 0x00
|
|
self.ZK4 = 0x00
|
|
self.ZK5 = 0x00
|
|
self.ZK6 = 0x00
|
|
self.ZK7 = 0x00
|
|
self.ZK8 = 0x00
|
|
self.ZK9 = 0x00
|
|
self.ZK10 = 0x00
|
|
self.busInsulationLow = 0x00
|
|
self.busAInsulationHigh = 0x00
|
|
self.lostPower = 0x00
|
|
self.lostEmerPower = 0x00
|
|
self.powerBusVoltage = 0x00
|
|
self.dcDc5ModuleCurrent = 0x00
|
|
self.powerBusCurrent = 0x00
|
|
self.busbarAVoltage = 0x00
|
|
self.propulsionMotorControlBoxCurrent = 0x00
|
|
self.busbarACurrent = 0x00
|
|
self.lithiumBatteryGroupMeterCurrent = 0x00
|
|
self.bowHighVoltageDistributionBoxCurrent = 0x00
|
|
self.sternFTDevice45Current = 0x00
|
|
self.tyzReservedSwitchCurrent = 0x00
|
|
self.sternRudderSwitch1Current = 0x00
|
|
self.reservedCurrent1 = 0x00
|
|
self.sternRudderSwitch2Current = 0x00
|
|
self.reservedCurrent2 = 0x00
|
|
self.fbReservedSwitchCurrent = 0x00
|
|
self.reservedCurrent3 = 0x00
|
|
self.checkCode = 0x0000
|
|
|
|
def pack(self):
|
|
# 初始化数据
|
|
self.checkCode = 0x0000
|
|
data = struct.pack('<B', self.start1)
|
|
data += struct.pack('<B', self.start2)
|
|
data += struct.pack('<H', self.id)
|
|
data += struct.pack('<H', self.length)
|
|
# 填充数据
|
|
data += struct.pack('<B', self.DCB1)
|
|
data += struct.pack('<B', self.DCB2)
|
|
data += struct.pack('<B', self.ZK1)
|
|
data += struct.pack('<B', self.ZK2)
|
|
data += struct.pack('<B', self.ZK3)
|
|
data += struct.pack('<B', self.ZK4)
|
|
data += struct.pack('<B', self.ZK5)
|
|
data += struct.pack('<B', self.ZK6)
|
|
data += struct.pack('<B', self.ZK7)
|
|
data += struct.pack('<B', self.ZK8)
|
|
data += struct.pack('<B', self.ZK9)
|
|
data += struct.pack('<B', self.ZK10)
|
|
data += struct.pack('<B', self.busInsulationLow)
|
|
data += struct.pack('<B', self.busAInsulationHigh)
|
|
data += struct.pack('<B', self.lostPower)
|
|
data += struct.pack('<B', self.lostEmerPower)
|
|
data += struct.pack('<H', self.powerBusVoltage)
|
|
data += struct.pack('<H', self.dcDc5ModuleCurrent)
|
|
data += struct.pack('<H', self.powerBusCurrent)
|
|
data += struct.pack('<H', self.busbarAVoltage)
|
|
data += struct.pack('<H', self.propulsionMotorControlBoxCurrent)
|
|
data += struct.pack('<H', self.busbarACurrent)
|
|
data += struct.pack('<H', self.lithiumBatteryGroupMeterCurrent)
|
|
data += struct.pack('<H', self.bowHighVoltageDistributionBoxCurrent)
|
|
data += struct.pack('<H', self.sternFTDevice45Current)
|
|
data += struct.pack('<H', self.tyzReservedSwitchCurrent)
|
|
data += struct.pack('<H', self.sternRudderSwitch1Current)
|
|
data += struct.pack('<H', self.reservedCurrent1)
|
|
data += struct.pack('<H', self.sternRudderSwitch2Current)
|
|
data += struct.pack('<H', self.reservedCurrent2)
|
|
data += struct.pack('<H', self.fbReservedSwitchCurrent)
|
|
data += struct.pack('<H', self.reservedCurrent3)
|
|
for i in range(len(data)):
|
|
self.checkCode += data[i]
|
|
checkCode_L = self.checkCode & 0xFF
|
|
data += struct.pack('<B', checkCode_L)
|
|
return data
|
|
|
|
class msg_disHighAVolBusFbMsg:
|
|
def __init__(self):
|
|
self.start1 = 0x20
|
|
self.start2 = 0x20
|
|
self.id = 0x0006
|
|
self.length = 10
|
|
self.bowFTDevice123CircuitBreaker = 0x00
|
|
self.actuatorCircuitBreaker = 0x00
|
|
self.mastSteeringGearControlBoxCircuitBreaker = 0x00
|
|
self.xczCircuitBreaker = 0x00
|
|
self.bowRudderControlBoxCircuitBreaker = 0x00
|
|
self.openWaterCoverStartCylinderCircuitBreaker = 0x00
|
|
self.instrumentPowerFailureSignal = 0x00
|
|
self.emergencyPowerFailureSignal = 0x00
|
|
self.waterIngressionAlarm = 0x00
|
|
self.busbarBVoltage = 0x0000
|
|
self.busbarBCurrent = 0x0000
|
|
self.bowFTDevice123Current = 0x0000
|
|
self.actuatorCurrent = 0x0000
|
|
self.mastSteeringGearControlBoxCurrent = 0x0000
|
|
self.xczCurrent = 0x0001
|
|
self.bowRudderControlBoxCurrent = 0x0000
|
|
self.openWaterCoverStartCylinderCurrent = 0x0000
|
|
self.checkCode = 0x0000
|
|
|
|
def pack(self):
|
|
# 初始化数据
|
|
self.checkCode = 0x0000
|
|
data = struct.pack('<B', self.start1)
|
|
data += struct.pack('<B', self.start2)
|
|
data += struct.pack('<H', self.id)
|
|
data += struct.pack('<H', self.length)
|
|
# 填充数据
|
|
data += struct.pack('<B', self.bowFTDevice123CircuitBreaker)
|
|
data += struct.pack('<B', self.actuatorCircuitBreaker)
|
|
data += struct.pack('<B', self.mastSteeringGearControlBoxCircuitBreaker)
|
|
data += struct.pack('<B', self.xczCircuitBreaker)
|
|
data += struct.pack('<B', self.bowRudderControlBoxCircuitBreaker)
|
|
data += struct.pack('<B', self.openWaterCoverStartCylinderCircuitBreaker)
|
|
data += struct.pack('<B', self.instrumentPowerFailureSignal)
|
|
data += struct.pack('<B', self.emergencyPowerFailureSignal)
|
|
data += struct.pack('<B', self.waterIngressionAlarm)
|
|
data += struct.pack('<H', self.busbarBVoltage)
|
|
data += struct.pack('<H', self.busbarBCurrent)
|
|
data += struct.pack('<H', self.bowFTDevice123Current)
|
|
data += struct.pack('<H', self.actuatorCurrent)
|
|
data += struct.pack('<H', self.mastSteeringGearControlBoxCurrent)
|
|
data += struct.pack('<H', self.xczCurrent)
|
|
data += struct.pack('<H', self.bowRudderControlBoxCurrent)
|
|
data += struct.pack('<H', self.openWaterCoverStartCylinderCurrent)
|
|
for i in range(len(data)):
|
|
self.checkCode += data[i]
|
|
checkCode_L = self.checkCode & 0xFF
|
|
data += struct.pack('<B', checkCode_L)
|
|
return data
|
|
|
|
class msg_disHighBVolBusFbMsg:
|
|
def __init__(self):
|
|
self.start1 = 0x20
|
|
self.start2 = 0x20
|
|
self.id = 0x0007
|
|
self.length = 10
|
|
self.lithiumBatteryGroupInstrumentCircuitBreaker = 0x00
|
|
self.bowLowVoltageDistributionBoxCircuitBreaker = 0x00
|
|
self.unit4InstrumentDC48VCircuitBreaker = 0x00
|
|
self.dcC1DCDistributionPanelCircuitBreaker = 0x00
|
|
self.reservedCircuitBreaker1 = 0x00
|
|
self.reservedCircuitBreaker2 = 0x00
|
|
self.emergencyLithiumBatteryGroup2CircuitBreaker = 0x00
|
|
self.instrumentPowerFailureSignal = 0x00
|
|
self.emergencyPowerFailureSignal = 0x00
|
|
self.instrumentBusbarInsulationLow = 0x00
|
|
self.instrumentBusbarVoltage = 0x0000
|
|
self.bowLowVoltageDistributionBoxCurrent = 0x0000
|
|
self.dcC1InstrumentDC48VCurrent = 0x0000
|
|
self.reservedCurrent1 = 0x0000
|
|
self.emergencyLithiumBatteryGroup2Current = 0x0000
|
|
self.lithiumBatteryGroupInstrumentCurrent = 0x0000
|
|
self.unit4InstrumentDC48VCurrent = 0x0000
|
|
self.reservedCurrent2 = 0x0000
|
|
self.emergency2BusbarVoltage = 0x0000
|
|
self.compositeEnergyManagementSystemEmergencyDC48VCurrent = 0x0000
|
|
self.fuelCellSecuritySystemEmergencyDC48VCurrent = 0x0000
|
|
self.plcControlPowerCurrent = 0x0000
|
|
self.checkCode = 0x0000
|
|
|
|
def pack(self):
|
|
# 初始化数据
|
|
self.checkCode = 0x0000
|
|
data = struct.pack('<B', self.start1)
|
|
data += struct.pack('<B', self.start2)
|
|
data += struct.pack('<H', self.id)
|
|
data += struct.pack('<H', self.length)
|
|
# 填充数据
|
|
data += struct.pack('<B', self.lithiumBatteryGroupInstrumentCircuitBreaker)
|
|
data += struct.pack('<B', self.bowLowVoltageDistributionBoxCircuitBreaker)
|
|
data += struct.pack('<B', self.unit4InstrumentDC48VCircuitBreaker)
|
|
data += struct.pack('<B', self.dcC1DCDistributionPanelCircuitBreaker)
|
|
data += struct.pack('<B', self.reservedCircuitBreaker1)
|
|
data += struct.pack('<B', self.reservedCircuitBreaker2)
|
|
data += struct.pack('<B', self.emergencyLithiumBatteryGroup2CircuitBreaker)
|
|
data += struct.pack('<B', self.instrumentPowerFailureSignal)
|
|
data += struct.pack('<B', self.emergencyPowerFailureSignal)
|
|
data += struct.pack('<B', self.instrumentBusbarInsulationLow)
|
|
data += struct.pack('<H', self.instrumentBusbarVoltage)
|
|
data += struct.pack('<H', self.bowLowVoltageDistributionBoxCurrent)
|
|
data += struct.pack('<H', self.dcC1InstrumentDC48VCurrent)
|
|
data += struct.pack('<H', self.reservedCurrent1)
|
|
data += struct.pack('<H', self.emergencyLithiumBatteryGroup2Current)
|
|
data += struct.pack('<H', self.lithiumBatteryGroupInstrumentCurrent)
|
|
data += struct.pack('<H', self.unit4InstrumentDC48VCurrent)
|
|
data += struct.pack('<H', self.reservedCurrent2)
|
|
data += struct.pack('<H', self.emergency2BusbarVoltage)
|
|
data += struct.pack('<H', self.compositeEnergyManagementSystemEmergencyDC48VCurrent)
|
|
data += struct.pack('<H', self.fuelCellSecuritySystemEmergencyDC48VCurrent)
|
|
data += struct.pack('<H', self.plcControlPowerCurrent)
|
|
for i in range(len(data)):
|
|
self.checkCode += data[i]
|
|
checkCode_L = self.checkCode & 0xFF
|
|
data += struct.pack('<B', checkCode_L)
|
|
return data
|
|
|
|
class msg_disLowBusFbMsg:
|
|
def __init__(self):
|
|
self.start1 = 0x20
|
|
self.start2 = 0x20
|
|
self.id = 0x0008
|
|
self.length = 10
|
|
self.unit1CircuitBreaker = 0x00
|
|
self.unit2CircuitBreaker = 0x00
|
|
self.unit3CircuitBreaker = 0x00
|
|
self.unit5CircuitBreaker = 0x00
|
|
self.bowPZDeviceCircuitBreaker = 0x00
|
|
self.reservedCircuitBreaker1 = 0x00
|
|
self.reservedCircuitBreaker2 = 0x00
|
|
self.emergencyLithiumBatteryGroup1CircuitBreaker = 0x00
|
|
self.powerFailureSignal = 0x00
|
|
self.waterIngressionAlarm = 0x00
|
|
self.instrumentBusbarVoltage = 0x0000
|
|
self.instrumentBusbarCurrent = 0x0000
|
|
self.unit1Current = 0x0000
|
|
self.unit2Current = 0x0000
|
|
self.unit3Current = 0x0000
|
|
self.unit5Current = 0x0000
|
|
self.bowPZDeviceCurrent = 0x0000
|
|
self.emergencyLithiumBatteryGroup1Current = 0x0000
|
|
self.emergency1BusbarVoltage = 0x0000
|
|
self.checkCode = 0x0000
|
|
|
|
def pack(self):
|
|
# 初始化数据
|
|
self.checkCode = 0x0000
|
|
data = struct.pack('<B', self.start1)
|
|
data += struct.pack('<B', self.start2)
|
|
data += struct.pack('<H', self.id)
|
|
data += struct.pack('<H', self.length)
|
|
# 填充数据
|
|
data += struct.pack('<B', self.unit1CircuitBreaker)
|
|
data += struct.pack('<B', self.unit2CircuitBreaker)
|
|
data += struct.pack('<B', self.unit3CircuitBreaker)
|
|
data += struct.pack('<B', self.unit5CircuitBreaker)
|
|
data += struct.pack('<B', self.bowPZDeviceCircuitBreaker)
|
|
data += struct.pack('<B', self.reservedCircuitBreaker1)
|
|
data += struct.pack('<B', self.reservedCircuitBreaker2)
|
|
data += struct.pack('<B', self.emergencyLithiumBatteryGroup1CircuitBreaker)
|
|
data += struct.pack('<B', self.powerFailureSignal)
|
|
data += struct.pack('<B', self.waterIngressionAlarm)
|
|
data += struct.pack('<H', self.instrumentBusbarVoltage)
|
|
data += struct.pack('<H', self.instrumentBusbarCurrent)
|
|
data += struct.pack('<H', self.unit1Current)
|
|
data += struct.pack('<H', self.unit2Current)
|
|
data += struct.pack('<H', self.unit3Current)
|
|
data += struct.pack('<H', self.unit5Current)
|
|
data += struct.pack('<H', self.bowPZDeviceCurrent)
|
|
data += struct.pack('<H', self.emergencyLithiumBatteryGroup1Current)
|
|
data += struct.pack('<H', self.emergency1BusbarVoltage)
|
|
for i in range(len(data)):
|
|
self.checkCode += data[i]
|
|
checkCode_L = self.checkCode & 0xFF
|
|
data += struct.pack('<B', checkCode_L)
|
|
return data
|
|
|
|
class msg_disHVBCmd:
|
|
def __init__(self):
|
|
self.start1 = None
|
|
self.start2 = None
|
|
self.id = None
|
|
self.length = None
|
|
self.fuelCellCircuitBreaker = None
|
|
self.powerLithiumBatteryCircuitBreaker = None
|
|
self.propulsionMotorCircuitBreaker = None
|
|
self.lithiumBatteryGroupInstrumentCircuitBreaker = None
|
|
self.dcDc5ModuleCircuitBreaker = None
|
|
self.bowHighVoltageDistributionBoxCircuitBreaker = None
|
|
self.sternFTDevice45CircuitBreaker = None
|
|
self.sternRudderSwitch1CircuitBreaker = None
|
|
self.sternRudderSwitch2CircuitBreaker = None
|
|
self.fbReservedCircuitBreaker = None
|
|
self.tyzReservedCircuitBreaker = None
|
|
self.reservedCircuitBreaker = None
|
|
self.inputWater = None
|
|
self.outputWater = None
|
|
self.dcdc5dcdc5Module = None
|
|
self.checkCode = None
|
|
|
|
def unpack(self,data):
|
|
try:
|
|
unpacked_data = struct.unpack('<BBHHBBBBBBBBBBBBBBBB',data)
|
|
self.start1 = unpacked_data[0]
|
|
self.start2 = unpacked_data[1]
|
|
self.id = unpacked_data[2]
|
|
self.length = unpacked_data[3]
|
|
self.fuelCellCircuitBreaker = unpacked_data[4]
|
|
self.powerLithiumBatteryCircuitBreaker = unpacked_data[5]
|
|
self.propulsionMotorCircuitBreaker = unpacked_data[6]
|
|
self.lithiumBatteryGroupInstrumentCircuitBreaker = unpacked_data[7]
|
|
self.dcDc5ModuleCircuitBreaker = unpacked_data[8]
|
|
self.bowHighVoltageDistributionBoxCircuitBreaker = unpacked_data[9]
|
|
self.sternFTDevice45CircuitBreaker = unpacked_data[10]
|
|
self.sternRudderSwitch1CircuitBreaker = unpacked_data[11]
|
|
self.sternRudderSwitch2CircuitBreaker = unpacked_data[12]
|
|
self.fbReservedCircuitBreaker = unpacked_data[13]
|
|
self.tyzReservedCircuitBreaker = unpacked_data[14]
|
|
self.reservedCircuitBreaker = unpacked_data[15]
|
|
self.inputWater = unpacked_data[16]
|
|
self.outputWater = unpacked_data[17]
|
|
self.dcdc5dcdc5Module = unpacked_data[18]
|
|
self.checkCode = unpacked_data[19]
|
|
except struct.error as e:
|
|
print(f"Error unpacking data: msg_disHVBCmd {e}")
|
|
class msg_disHVBACmd:
|
|
def __init__(self):
|
|
self.start1 = None
|
|
self.start2 = None
|
|
self.id = None
|
|
self.length = None
|
|
self.bowFTDevice123CircuitBreaker = None
|
|
self.actuatorCircuitBreaker = None
|
|
self.mastSteeringGearControlBoxCircuitBreaker = None
|
|
self.xczCircuitBreaker = None
|
|
self.bowRudderControlBoxCircuitBreaker = None
|
|
self.openWaterCoverStartCylinderCircuitBreaker = None
|
|
self.checkCode = None
|
|
def unpack(self,data):
|
|
try:
|
|
unpacked_data = struct.unpack('<BBHHBBBBBBB',data)
|
|
self.start1 = unpacked_data[0]
|
|
self.start2 = unpacked_data[1]
|
|
self.id = unpacked_data[2]
|
|
self.length = unpacked_data[3]
|
|
self.bowFTDevice123CircuitBreaker = unpacked_data[4]
|
|
self.actuatorCircuitBreaker = unpacked_data[5]
|
|
self.mastSteeringGearControlBoxCircuitBreaker = unpacked_data[6]
|
|
self.xczCircuitBreaker = unpacked_data[7]
|
|
self.bowRudderControlBoxCircuitBreaker = unpacked_data[8]
|
|
self.openWaterCoverStartCylinderCircuitBreaker = unpacked_data[9]
|
|
self.checkCode = unpacked_data[10]
|
|
except struct.error as e:
|
|
print(f"Error unpacking data: msg_disHVBACmd {e}")
|
|
class msg_disHVBBCmd:
|
|
def __init__(self):
|
|
self.start1 = None
|
|
self.start2 = None
|
|
self.id = None
|
|
self.length = None
|
|
self.lithiumBatteryGroupInstrumentCircuitBreaker = None
|
|
self.bowLowVoltageDistributionBoxCircuitBreaker = None
|
|
self.unit4InstrumentDC48VCircuitBreaker = None
|
|
self.dcC1DCDistributionPanelCircuitBreaker = None
|
|
self.reservedCircuitBreaker1 = None
|
|
self.reservedCircuitBreaker2 = None
|
|
self.emergencyLithiumBatteryGroup2CircuitBreaker = None
|
|
self.checkCode = None
|
|
def unpack(self,data):
|
|
try:
|
|
unpacked_data = struct.unpack('<BBHHBBBBBBBB',data)
|
|
self.start1 = unpacked_data[0]
|
|
self.start2 = unpacked_data[1]
|
|
self.id = unpacked_data[2]
|
|
self.length = unpacked_data[3]
|
|
self.lithiumBatteryGroupInstrumentCircuitBreaker = unpacked_data[4]
|
|
self.bowLowVoltageDistributionBoxCircuitBreaker = unpacked_data[5]
|
|
self.unit4InstrumentDC48VCircuitBreaker = unpacked_data[6]
|
|
self.dcC1DCDistributionPanelCircuitBreaker = unpacked_data[7]
|
|
self.reservedCircuitBreaker1 = unpacked_data[8]
|
|
self.reservedCircuitBreaker2 = unpacked_data[9]
|
|
self.emergencyLithiumBatteryGroup2CircuitBreaker = unpacked_data[10]
|
|
self.checkCode = unpacked_data[11]
|
|
except struct.error as e:
|
|
print(f"Error unpacking data: msg_disHVBBCmd {e}")
|
|
|
|
class msg_disLVBCmd:
|
|
def __init__(self):
|
|
self.start1 = None
|
|
self.start2 = None
|
|
self.id = None
|
|
self.length = None
|
|
self.unit1CircuitBreaker = None
|
|
self.unit2CircuitBreaker = None
|
|
self.unit3CircuitBreaker = None
|
|
self.unit5CircuitBreaker = None
|
|
self.bowPZDeviceCircuitBreaker = None
|
|
self.reservedCircuitBreaker1 = None
|
|
self.reservedCircuitBreaker2 = None
|
|
self.emergencyLithiumBatteryGroup1CircuitBreaker = None
|
|
self.checkCode = None
|
|
def unpack(self,data):
|
|
try:
|
|
unpacked_data = struct.unpack('<BBHHBBBBBBBBB',data)
|
|
self.start1 = unpacked_data[0]
|
|
self.start2 = unpacked_data[1]
|
|
self.id = unpacked_data[2]
|
|
self.length = unpacked_data[3]
|
|
self.unit1CircuitBreaker = unpacked_data[4]
|
|
self.unit2CircuitBreaker = unpacked_data[5]
|
|
self.unit3CircuitBreaker = unpacked_data[6]
|
|
self.unit5CircuitBreaker = unpacked_data[7]
|
|
self.bowPZDeviceCircuitBreaker = unpacked_data[8]
|
|
self.reservedCircuitBreaker1 = unpacked_data[9]
|
|
self.reservedCircuitBreaker2 = unpacked_data[10]
|
|
self.emergencyLithiumBatteryGroup1CircuitBreaker = unpacked_data[11]
|
|
self.checkCode = unpacked_data[12]
|
|
except struct.error as e:
|
|
print(f"Error unpacking data: msg_disLVBCmd {e}")
|
|
|
|
if __name__ == "__main__":
|
|
# msg = msg_CcuStateFbMsg()
|
|
msg = msg_disHVBACmd()
|
|
# msg.pack() |