643 lines
29 KiB
Python
643 lines
29 KiB
Python
import sqlite3
|
|
import threading
|
|
from datetime import datetime
|
|
from udpMsg import (
|
|
msg_disHighVolBusFbMsg,
|
|
msg_disHighAVolBusFbMsg,
|
|
msg_disLowMainBusFbMsg,
|
|
msg_disLowBusFbMsg,
|
|
msg_disHVBCmdMsg,
|
|
msg_disHVBACmdMsg,
|
|
msg_disLVMBCmdMsg,
|
|
msg_disLVBCmdMsg
|
|
)
|
|
|
|
class DB:
|
|
def __init__(self, db_name):
|
|
self.db_name = db_name
|
|
self.conn = None
|
|
self.lock = threading.Lock()
|
|
|
|
def setPath(self, path):
|
|
self.db_name = path
|
|
|
|
def connect(self):
|
|
self.conn = sqlite3.connect(self.db_name, check_same_thread=False)
|
|
self.conn.row_factory = sqlite3.Row
|
|
self.createTable()
|
|
print("数据库连接成功")
|
|
|
|
def createTable(self):
|
|
'''创建UDP消息数据表'''
|
|
cursor = self.conn.cursor()
|
|
|
|
# 高压母线配电反馈表
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS msg_disHighVolBusFbMsg (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT (datetime('now', 'localtime')),
|
|
fuelCellCircuitBreaker INTEGER,
|
|
powerLithiumBatteryCircuitBreaker INTEGER,
|
|
propulsionMotorCircuitBreaker INTEGER,
|
|
lithiumBatteryGroupInstrumentCircuitBreaker INTEGER,
|
|
dcDc5ModuleCircuitBreaker INTEGER,
|
|
bowHighVoltageDistributionBoxCircuitBreaker INTEGER,
|
|
sternFTDevice45CircuitBreaker INTEGER,
|
|
sternRudderSwitch1CircuitBreaker INTEGER,
|
|
sternRudderSwitch2CircuitBreaker INTEGER,
|
|
fbReservedCircuitBreaker INTEGER,
|
|
tyzReservedCircuitBreaker INTEGER,
|
|
reservedCircuitBreaker INTEGER,
|
|
dcDcFaultWord1 INTEGER,
|
|
dcDcFaultWord2 INTEGER,
|
|
powerBusInsulationStatus INTEGER,
|
|
aBusInsulationStatus INTEGER,
|
|
meterPowerLossSignal INTEGER,
|
|
emergencyPowerLossSignal INTEGER,
|
|
dcdcTemperature INTEGER,
|
|
powerBusVoltage INTEGER,
|
|
dcDc5ModuleCurrent INTEGER,
|
|
powerBusCurrent INTEGER,
|
|
busbarAVoltage INTEGER,
|
|
propulsionMotorControlBoxCurrent INTEGER,
|
|
busbarACurrent INTEGER,
|
|
lithiumBatteryGroupMeterCurrent INTEGER,
|
|
bowHighVoltageDistributionBoxCurrent INTEGER,
|
|
sternFTDevice45Current INTEGER,
|
|
tyzReservedSwitchCurrent INTEGER,
|
|
sternRudderSwitch1Current INTEGER,
|
|
reservedCurrent1 INTEGER,
|
|
sternRudderSwitch2Current INTEGER,
|
|
reservedCurrent2 INTEGER,
|
|
fbReservedSwitchCurrent INTEGER,
|
|
reservedCurrent3 INTEGER,
|
|
coolWaterPressure INTEGER
|
|
)
|
|
''')
|
|
|
|
# 高压母线A配电反馈表
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS msg_disHighAVolBusFbMsg (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT (datetime('now', 'localtime')),
|
|
bowFTDevice123CircuitBreaker INTEGER,
|
|
actuatorCircuitBreaker INTEGER,
|
|
mastSteeringGearControlBoxCircuitBreaker INTEGER,
|
|
xczCircuitBreaker INTEGER,
|
|
bowRudderControlBoxCircuitBreaker INTEGER,
|
|
openWaterCoverStartCylinderCircuitBreaker INTEGER,
|
|
instrumentPowerFailureSignal INTEGER,
|
|
emergencyPowerFailureSignal INTEGER,
|
|
waterIngressionAlarm INTEGER,
|
|
busbarBVoltage INTEGER,
|
|
busbarBCurrent INTEGER,
|
|
bowFTDevice123Current INTEGER,
|
|
actuatorCurrent INTEGER,
|
|
mastSteeringGearControlBoxCurrent INTEGER,
|
|
xczCurrent INTEGER,
|
|
bowRudderControlBoxCurrent INTEGER,
|
|
openWaterCoverStartCylinderCurrent INTEGER
|
|
)
|
|
''')
|
|
|
|
# 仪表母线配电反馈表
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS msg_disLowMainBusFbMsg (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT (datetime('now', 'localtime')),
|
|
lithiumBatteryGroupInstrumentCircuitBreaker INTEGER,
|
|
bowLowVoltageDistributionBoxCircuitBreaker INTEGER,
|
|
unit4InstrumentDC48VCircuitBreaker INTEGER,
|
|
dcC1DCDistributionPanelCircuitBreaker INTEGER,
|
|
reservedCircuitBreaker1 INTEGER,
|
|
reservedCircuitBreaker2 INTEGER,
|
|
emergencyLithiumBatteryGroup2CircuitBreaker INTEGER,
|
|
instrumentPowerFailureSignal INTEGER,
|
|
emergencyPowerFailureSignal INTEGER,
|
|
instrumentBusbarInsulationLow INTEGER,
|
|
instrumentBusbarVoltage INTEGER,
|
|
bowLowVoltageDistributionBoxCurrent INTEGER,
|
|
dcC1InstrumentDC48VCurrent INTEGER,
|
|
reservedCurrent1 INTEGER,
|
|
emergencyLithiumBatteryGroup2Current INTEGER,
|
|
lithiumBatteryGroupInstrumentCurrent INTEGER,
|
|
unit4InstrumentDC48VCurrent INTEGER,
|
|
reservedCurrent2 INTEGER,
|
|
emergency2BusbarVoltage INTEGER,
|
|
compositeEnergyManagementSystemEmergencyDC48VCurrent INTEGER,
|
|
fuelCellSecuritySystemEmergencyDC48VCurrent INTEGER,
|
|
plcControlPowerCurrent INTEGER
|
|
)
|
|
''')
|
|
|
|
# 仪表汇流排配电反馈表
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS msg_disLowBusFbMsg (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT (datetime('now', 'localtime')),
|
|
unit1CircuitBreaker INTEGER,
|
|
unit2CircuitBreaker INTEGER,
|
|
unit3CircuitBreaker INTEGER,
|
|
unit5CircuitBreaker INTEGER,
|
|
bowPZDeviceCircuitBreaker INTEGER,
|
|
reservedCircuitBreaker1 INTEGER,
|
|
reservedCircuitBreaker2 INTEGER,
|
|
emergencyLithiumBatteryGroup1CircuitBreaker INTEGER,
|
|
powerFailureSignal INTEGER,
|
|
waterIngressionAlarm INTEGER,
|
|
instrumentBusbarVoltage INTEGER,
|
|
instrumentBusbarCurrent INTEGER,
|
|
unit1Current INTEGER,
|
|
unit2Current INTEGER,
|
|
unit3Current INTEGER,
|
|
unit5Current INTEGER,
|
|
bowPZDeviceCurrent INTEGER,
|
|
emergencyLithiumBatteryGroup1Current INTEGER,
|
|
emergency1BusbarVoltage INTEGER
|
|
)
|
|
''')
|
|
|
|
# 高压母线命令表
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS msg_disHVBCmdMsg (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT (datetime('now', 'localtime')),
|
|
fuelCellCircuitBreakerCmd INTEGER,
|
|
powerLithiumBatteryCircuitBreakerCmd INTEGER,
|
|
propulsionMotorCircuitBreakerCmd INTEGER,
|
|
lithiumBatteryGroupInstrumentCircuitBreakerCmd INTEGER,
|
|
dcDc5ModuleCircuitBreakerCmd INTEGER,
|
|
bowHighVoltageDistributionBoxCircuitBreakerCmd INTEGER,
|
|
sternFTDevice45CircuitBreakerCmd INTEGER,
|
|
sternRudderSwitch1CircuitBreakerCmd INTEGER,
|
|
sternRudderSwitch2CircuitBreakerCmd INTEGER,
|
|
fbReservedCircuitBreakerCmd INTEGER,
|
|
tyzReservedCircuitBreakerCmd INTEGER,
|
|
reservedCircuitBreakerCmd INTEGER,
|
|
dcdc5ModuleCmd INTEGER,
|
|
coolingSystemCmd INTEGER
|
|
)
|
|
''')
|
|
|
|
# 高压母线A命令表
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS msg_disHVBACmdMsg (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT (datetime('now', 'localtime')),
|
|
bowFTDevice123CircuitBreakerCmd INTEGER,
|
|
actuatorCircuitBreakerCmd INTEGER,
|
|
mastSteeringGearControlBoxCircuitBreakerCmd INTEGER,
|
|
xczCircuitBreakerCmd INTEGER,
|
|
bowRudderControlBoxCircuitBreakerCmd INTEGER,
|
|
openWaterCoverStartCylinderCircuitBreakerCmd INTEGER
|
|
)
|
|
''')
|
|
|
|
# 仪表母线命令表
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS msg_disLVMBCmdMsg (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT (datetime('now', 'localtime')),
|
|
lithiumBatteryGroupInstrumentCircuitBreakerCmd INTEGER,
|
|
bowLowVoltageDistributionBoxCircuitBreakerCmd INTEGER,
|
|
unit4InstrumentDC48VCircuitBreakerCmd INTEGER,
|
|
dcC1DCDistributionPanelCircuitBreakerCmd INTEGER,
|
|
reservedCircuitBreakerCmd1 INTEGER,
|
|
reservedCircuitBreakerCmd2 INTEGER,
|
|
emergencyLithiumBatteryGroup2CircuitBreakerCmd INTEGER
|
|
)
|
|
''')
|
|
|
|
# 仪表汇流排命令表
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS msg_disLVBCmdMsg (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT (datetime('now', 'localtime')),
|
|
unit1CircuitBreakerCmd INTEGER,
|
|
unit2CircuitBreakerCmd INTEGER,
|
|
unit3CircuitBreakerCmd INTEGER,
|
|
unit5CircuitBreakerCmd INTEGER,
|
|
bowPZDeviceCircuitBreakerCmd INTEGER,
|
|
reservedCircuitBreakerCmd1 INTEGER,
|
|
reservedCircuitBreakerCmd2 INTEGER,
|
|
emergencyLithiumBatteryGroup1CircuitBreakerCmd INTEGER
|
|
)
|
|
''')
|
|
|
|
self.conn.commit()
|
|
|
|
def _insert_data(self, table_name, data_dict):
|
|
'''内部方法:执行实际的数据库插入操作'''
|
|
with self.lock:
|
|
try:
|
|
# 检查并建立连接
|
|
if not self.conn:
|
|
self.connect()
|
|
if not self.conn:
|
|
print('-----------------connection failed')
|
|
return False
|
|
# 创建cursor
|
|
try:
|
|
cursor = self.conn.cursor()
|
|
except sqlite3.Error as e:
|
|
print(f'-----------------cursor creation failed: {e}')
|
|
return False
|
|
|
|
# 准备查询
|
|
columns = ', '.join(data_dict.keys())
|
|
placeholders = ', '.join(['?'] * len(data_dict))
|
|
query = f'INSERT INTO {table_name} ({columns}) VALUES ({placeholders})'
|
|
# print(f'-----------------prepared query: {query}')
|
|
|
|
# 执行查询
|
|
try:
|
|
# print('-----------------executing query')
|
|
cursor.execute(query, list(data_dict.values()))
|
|
self.conn.commit()
|
|
# print(f"-----------------Data inserted successfully into {table_name}")
|
|
return True
|
|
except sqlite3.Error as e:
|
|
print(f"-----------------Error executing query: {e}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f'-----------------unexpected error in _insert_data: {e}')
|
|
return False
|
|
|
|
def insertHighVolBusData(self, data:msg_disHighVolBusFbMsg):
|
|
'''插入高压母线配电反馈数据'''
|
|
# print('-----------------insertHighVolBusData')
|
|
data_dict = {
|
|
'fuelCellCircuitBreaker': data.fuelCellCircuitBreaker,
|
|
'powerLithiumBatteryCircuitBreaker': data.powerLithiumBatteryCircuitBreaker,
|
|
'propulsionMotorCircuitBreaker': data.propulsionMotorCircuitBreaker,
|
|
'lithiumBatteryGroupInstrumentCircuitBreaker': data.lithiumBatteryGroupInstrumentCircuitBreaker,
|
|
'dcDc5ModuleCircuitBreaker': data.dcDc5ModuleCircuitBreaker,
|
|
'bowHighVoltageDistributionBoxCircuitBreaker': data.bowHighVoltageDistributionBoxCircuitBreaker,
|
|
'sternFTDevice45CircuitBreaker': data.sternFTDevice45CircuitBreaker,
|
|
'sternRudderSwitch1CircuitBreaker': data.sternRudderSwitch1CircuitBreaker,
|
|
'sternRudderSwitch2CircuitBreaker': data.sternRudderSwitch2CircuitBreaker,
|
|
'fbReservedCircuitBreaker': data.fbReservedCircuitBreaker,
|
|
'tyzReservedCircuitBreaker': data.tyzReservedCircuitBreaker,
|
|
'reservedCircuitBreaker': data.reservedCircuitBreaker,
|
|
'dcDcFaultWord1': data.dcDcFaultWord1,
|
|
'dcDcFaultWord2': data.dcDcFaultWord2,
|
|
'powerBusInsulationStatus': data.powerBusInsulationStatus,
|
|
'aBusInsulationStatus': data.aBusInsulationStatus,
|
|
'meterPowerLossSignal': data.meterPowerLossSignal,
|
|
'emergencyPowerLossSignal': data.emergencyPowerLossSignal,
|
|
'dcdcTemperature': data.dcdcTemperature,
|
|
'powerBusVoltage': data.powerBusVoltage,
|
|
'dcDc5ModuleCurrent': data.dcDc5ModuleCurrent,
|
|
'powerBusCurrent': data.powerBusCurrent,
|
|
'busbarAVoltage': data.busbarAVoltage,
|
|
'propulsionMotorControlBoxCurrent': data.propulsionMotorControlBoxCurrent,
|
|
'busbarACurrent': data.busbarACurrent,
|
|
'lithiumBatteryGroupMeterCurrent': data.lithiumBatteryGroupMeterCurrent,
|
|
'bowHighVoltageDistributionBoxCurrent': data.bowHighVoltageDistributionBoxCurrent,
|
|
'sternFTDevice45Current': data.sternFTDevice45Current,
|
|
'tyzReservedSwitchCurrent': data.tyzReservedSwitchCurrent,
|
|
'sternRudderSwitch1Current': data.sternRudderSwitch1Current,
|
|
'reservedCurrent1': data.reservedCurrent1,
|
|
'sternRudderSwitch2Current': data.sternRudderSwitch2Current,
|
|
'reservedCurrent2': data.reservedCurrent2,
|
|
'fbReservedSwitchCurrent': data.fbReservedSwitchCurrent,
|
|
'reservedCurrent3': data.reservedCurrent3,
|
|
'coolWaterPressure': data.coolWaterPressure
|
|
}
|
|
return self._insert_data('msg_disHighVolBusFbMsg', data_dict)
|
|
|
|
def insertHighAVolBusData(self, data:msg_disHighAVolBusFbMsg):
|
|
'''插入高压母线A配电反馈数据'''
|
|
data_dict = {
|
|
'bowFTDevice123CircuitBreaker': data.bowFTDevice123CircuitBreaker,
|
|
'actuatorCircuitBreaker': data.actuatorCircuitBreaker,
|
|
'mastSteeringGearControlBoxCircuitBreaker': data.mastSteeringGearControlBoxCircuitBreaker,
|
|
'xczCircuitBreaker': data.xczCircuitBreaker,
|
|
'bowRudderControlBoxCircuitBreaker': data.bowRudderControlBoxCircuitBreaker,
|
|
'openWaterCoverStartCylinderCircuitBreaker': data.openWaterCoverStartCylinderCircuitBreaker,
|
|
'instrumentPowerFailureSignal': data.instrumentPowerFailureSignal,
|
|
'emergencyPowerFailureSignal': data.emergencyPowerFailureSignal,
|
|
'waterIngressionAlarm': data.waterIngressionAlarm,
|
|
'busbarBVoltage': data.busbarBVoltage,
|
|
'busbarBCurrent': data.busbarBCurrent,
|
|
'bowFTDevice123Current': data.bowFTDevice123Current,
|
|
'actuatorCurrent': data.actuatorCurrent,
|
|
'mastSteeringGearControlBoxCurrent': data.mastSteeringGearControlBoxCurrent,
|
|
'xczCurrent': data.xczCurrent,
|
|
'bowRudderControlBoxCurrent': data.bowRudderControlBoxCurrent,
|
|
'openWaterCoverStartCylinderCurrent': data.openWaterCoverStartCylinderCurrent
|
|
}
|
|
return self._insert_data('msg_disHighAVolBusFbMsg', data_dict)
|
|
|
|
def insertLowMainBusData(self, data:msg_disLowMainBusFbMsg):
|
|
'''插入仪表母线配电反馈数据'''
|
|
data_dict = {
|
|
'lithiumBatteryGroupInstrumentCircuitBreaker': data.lithiumBatteryGroupInstrumentCircuitBreaker,
|
|
'bowLowVoltageDistributionBoxCircuitBreaker': data.bowLowVoltageDistributionBoxCircuitBreaker,
|
|
'unit4InstrumentDC48VCircuitBreaker': data.unit4InstrumentDC48VCircuitBreaker,
|
|
'dcC1DCDistributionPanelCircuitBreaker': data.dcC1DCDistributionPanelCircuitBreaker,
|
|
'reservedCircuitBreaker1': data.reservedCircuitBreaker1,
|
|
'reservedCircuitBreaker2': data.reservedCircuitBreaker2,
|
|
'emergencyLithiumBatteryGroup2CircuitBreaker': data.emergencyLithiumBatteryGroup2CircuitBreaker,
|
|
'instrumentPowerFailureSignal': data.instrumentPowerFailureSignal,
|
|
'emergencyPowerFailureSignal': data.emergencyPowerFailureSignal,
|
|
'instrumentBusbarInsulationLow': data.instrumentBusbarInsulationLow,
|
|
'instrumentBusbarVoltage': data.instrumentBusbarVoltage,
|
|
'bowLowVoltageDistributionBoxCurrent': data.bowLowVoltageDistributionBoxCurrent,
|
|
'dcC1InstrumentDC48VCurrent': data.dcC1InstrumentDC48VCurrent,
|
|
'reservedCurrent1': data.reservedCurrent1,
|
|
'emergencyLithiumBatteryGroup2Current': data.emergencyLithiumBatteryGroup2Current,
|
|
'lithiumBatteryGroupInstrumentCurrent': data.lithiumBatteryGroupInstrumentCurrent,
|
|
'unit4InstrumentDC48VCurrent': data.unit4InstrumentDC48VCurrent,
|
|
'reservedCurrent2': data.reservedCurrent2,
|
|
'emergency2BusbarVoltage': data.emergency2BusbarVoltage,
|
|
'compositeEnergyManagementSystemEmergencyDC48VCurrent': data.compositeEnergyManagementSystemEmergencyDC48VCurrent,
|
|
'fuelCellSecuritySystemEmergencyDC48VCurrent': data.fuelCellSecuritySystemEmergencyDC48VCurrent,
|
|
'plcControlPowerCurrent': data.plcControlPowerCurrent
|
|
}
|
|
return self._insert_data('msg_disLowMainBusFbMsg', data_dict)
|
|
|
|
def insertLowBusData(self, data:msg_disLowBusFbMsg):
|
|
'''插入仪表汇流排配电反馈数据'''
|
|
data_dict = {
|
|
'unit1CircuitBreaker': data.unit1CircuitBreaker,
|
|
'unit2CircuitBreaker': data.unit2CircuitBreaker,
|
|
'unit3CircuitBreaker': data.unit3CircuitBreaker,
|
|
'unit5CircuitBreaker': data.unit5CircuitBreaker,
|
|
'bowPZDeviceCircuitBreaker': data.bowPZDeviceCircuitBreaker,
|
|
'reservedCircuitBreaker1': data.reservedCircuitBreaker1,
|
|
'reservedCircuitBreaker2': data.reservedCircuitBreaker2,
|
|
'emergencyLithiumBatteryGroup1CircuitBreaker': data.emergencyLithiumBatteryGroup1CircuitBreaker,
|
|
'powerFailureSignal': data.powerFailureSignal,
|
|
'waterIngressionAlarm': data.waterIngressionAlarm,
|
|
'instrumentBusbarVoltage': data.instrumentBusbarVoltage,
|
|
'instrumentBusbarCurrent': data.instrumentBusbarCurrent,
|
|
'unit1Current': data.unit1Current,
|
|
'unit2Current': data.unit2Current,
|
|
'unit3Current': data.unit3Current,
|
|
'unit5Current': data.unit5Current,
|
|
'bowPZDeviceCurrent': data.bowPZDeviceCurrent,
|
|
'emergencyLithiumBatteryGroup1Current': data.emergencyLithiumBatteryGroup1Current,
|
|
'emergency1BusbarVoltage': data.emergency1BusbarVoltage
|
|
}
|
|
return self._insert_data('msg_disLowBusFbMsg', data_dict)
|
|
|
|
def insertHighVolBusCmd(self, data:msg_disHVBCmdMsg):
|
|
'''插入高压母线命令数据'''
|
|
data_dict = {
|
|
'fuelCellCircuitBreakerCmd': data.fuelCellCircuitBreaker,
|
|
'powerLithiumBatteryCircuitBreakerCmd': data.powerLithiumBatteryCircuitBreaker,
|
|
'propulsionMotorCircuitBreakerCmd': data.propulsionMotorCircuitBreaker,
|
|
'lithiumBatteryGroupInstrumentCircuitBreakerCmd': data.lithiumBatteryGroupInstrumentCircuitBreaker,
|
|
'dcDc5ModuleCircuitBreakerCmd': data.dcDc5ModuleCircuitBreaker,
|
|
'bowHighVoltageDistributionBoxCircuitBreakerCmd': data.bowHighVoltageDistributionBoxCircuitBreaker,
|
|
'sternFTDevice45CircuitBreakerCmd': data.sternFTDevice45CircuitBreaker,
|
|
'sternRudderSwitch1CircuitBreakerCmd': data.sternRudderSwitch1CircuitBreaker,
|
|
'sternRudderSwitch2CircuitBreakerCmd': data.sternRudderSwitch2CircuitBreaker,
|
|
'fbReservedCircuitBreakerCmd': data.fbReservedCircuitBreaker,
|
|
'tyzReservedCircuitBreakerCmd': data.tyzReservedCircuitBreaker,
|
|
'reservedCircuitBreakerCmd': data.reservedCircuitBreaker,
|
|
'dcdc5ModuleCmd': data.dcdc5Module,
|
|
'coolingSystemCmd': data.coolingSystem
|
|
}
|
|
return self._insert_data('msg_disHVBCmdMsg', data_dict)
|
|
|
|
def insertHighAVolBusCmd(self, data:msg_disHVBACmdMsg):
|
|
'''插入高压母线A命令数据'''
|
|
data_dict = {
|
|
'bowFTDevice123CircuitBreakerCmd': data.bowFTDevice123CircuitBreaker,
|
|
'actuatorCircuitBreakerCmd': data.actuatorCircuitBreaker,
|
|
'mastSteeringGearControlBoxCircuitBreakerCmd': data.mastSteeringGearControlBoxCircuitBreaker,
|
|
'xczCircuitBreakerCmd': data.xczCircuitBreaker,
|
|
'bowRudderControlBoxCircuitBreakerCmd': data.bowRudderControlBoxCircuitBreaker,
|
|
'openWaterCoverStartCylinderCircuitBreakerCmd': data.openWaterCoverStartCylinderCircuitBreaker
|
|
}
|
|
return self._insert_data('msg_disHVBACmdMsg', data_dict)
|
|
|
|
def insertLowMainBusCmd(self, data:msg_disLVMBCmdMsg):
|
|
'''插入仪表母线命令数据'''
|
|
data_dict = {
|
|
'lithiumBatteryGroupInstrumentCircuitBreakerCmd': data.lithiumBatteryGroupInstrumentCircuitBreaker,
|
|
'bowLowVoltageDistributionBoxCircuitBreakerCmd': data.bowLowVoltageDistributionBoxCircuitBreaker,
|
|
'unit4InstrumentDC48VCircuitBreakerCmd': data.unit4InstrumentDC48VCircuitBreaker,
|
|
'dcC1DCDistributionPanelCircuitBreakerCmd': data.dcC1DCDistributionPanelCircuitBreaker,
|
|
'reservedCircuitBreakerCmd1': data.reservedCircuitBreaker1,
|
|
'reservedCircuitBreakerCmd2': data.reservedCircuitBreaker2,
|
|
'emergencyLithiumBatteryGroup2CircuitBreakerCmd': data.emergencyLithiumBatteryGroup2CircuitBreaker
|
|
}
|
|
return self._insert_data('msg_disLVMBCmdMsg', data_dict)
|
|
|
|
|
|
|
|
def insertLowBusCmd(self, data:msg_disLVBCmdMsg):
|
|
'''插入仪表汇流排命令数据'''
|
|
data_dict = {
|
|
'unit1CircuitBreakerCmd': data.unit1CircuitBreaker,
|
|
'unit2CircuitBreakerCmd': data.unit2CircuitBreaker,
|
|
'unit3CircuitBreakerCmd': data.unit3CircuitBreaker,
|
|
'unit5CircuitBreakerCmd': data.unit5CircuitBreaker,
|
|
'bowPZDeviceCircuitBreakerCmd': data.bowPZDeviceCircuitBreaker,
|
|
'reservedCircuitBreakerCmd1': data.reservedCircuitBreaker1,
|
|
'reservedCircuitBreakerCmd2': data.reservedCircuitBreaker2,
|
|
'emergencyLithiumBatteryGroup1CircuitBreakerCmd': data.emergencyLithiumBatteryGroup1CircuitBreaker
|
|
}
|
|
return self._insert_data('msg_disLVBCmdMsg', data_dict)
|
|
|
|
|
|
def close(self):
|
|
if self.conn:
|
|
self.conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
# 创建数据库实例
|
|
db = DB('/home/zjk/project/H100/H100PowerManger/test/disSysTest/test.db')
|
|
db.connect()
|
|
|
|
# 创建测试数据
|
|
from udpMsg import (
|
|
msg_disHighVolBusFbMsg,
|
|
msg_disHighAVolBusFbMsg,
|
|
msg_disLowMainBusFbMsg,
|
|
msg_disLowBusFbMsg,
|
|
msg_disHVBCmdMsg,
|
|
msg_disHVBACmdMsg,
|
|
msg_disLVMBCmdMsg,
|
|
msg_disLVBCmdMsg
|
|
)
|
|
|
|
# 测试反馈消息存储
|
|
fb1 = msg_disHighVolBusFbMsg()
|
|
fb1.fuelCellCircuitBreaker = 1
|
|
fb1.powerLithiumBatteryCircuitBreaker = 1
|
|
fb1.propulsionMotorCircuitBreaker = 1
|
|
fb1.lithiumBatteryGroupInstrumentCircuitBreaker = 1
|
|
fb1.dcDc5ModuleCircuitBreaker = 1
|
|
fb1.bowHighVoltageDistributionBoxCircuitBreaker = 1
|
|
fb1.sternFTDevice45CircuitBreaker = 1
|
|
fb1.sternRudderSwitch1CircuitBreaker = 1
|
|
fb1.sternRudderSwitch2CircuitBreaker = 1
|
|
fb1.fbReservedCircuitBreaker = 1
|
|
fb1.tyzReservedCircuitBreaker = 1
|
|
fb1.reservedCircuitBreaker = 1
|
|
fb1.dcDcFaultWord1 = 0
|
|
fb1.dcDcFaultWord2 = 0
|
|
fb1.powerBusInsulationStatus = 1
|
|
fb1.aBusInsulationStatus = 1
|
|
fb1.meterPowerLossSignal = 0
|
|
fb1.emergencyPowerLossSignal = 0
|
|
fb1.powerBusVoltage = 220
|
|
fb1.dcDc5ModuleCurrent = 10
|
|
fb1.powerBusCurrent = 100
|
|
fb1.busbarAVoltage = 220
|
|
fb1.propulsionMotorControlBoxCurrent = 50
|
|
fb1.busbarACurrent = 100
|
|
fb1.lithiumBatteryGroupMeterCurrent = 10
|
|
fb1.bowHighVoltageDistributionBoxCurrent = 20
|
|
fb1.sternFTDevice45Current = 30
|
|
fb1.tyzReservedSwitchCurrent = 0
|
|
fb1.sternRudderSwitch1Current = 10
|
|
fb1.reservedCurrent1 = 0
|
|
fb1.sternRudderSwitch2Current = 10
|
|
fb1.reservedCurrent2 = 0
|
|
fb1.fbReservedSwitchCurrent = 0
|
|
fb1.reservedCurrent3 = 0
|
|
fb1.coolWaterPressure = 100
|
|
|
|
fb2 = msg_disHighAVolBusFbMsg()
|
|
fb2.bowFTDevice123CircuitBreaker = 1
|
|
fb2.actuatorCircuitBreaker = 1
|
|
fb2.mastSteeringGearControlBoxCircuitBreaker = 1
|
|
fb2.xczCircuitBreaker = 1
|
|
fb2.bowRudderControlBoxCircuitBreaker = 1
|
|
fb2.openWaterCoverStartCylinderCircuitBreaker = 1
|
|
fb2.instrumentPowerFailureSignal = 0
|
|
fb2.emergencyPowerFailureSignal = 0
|
|
fb2.waterIngressionAlarm = 0
|
|
fb2.busbarBVoltage = 220
|
|
fb2.busbarBCurrent = 100
|
|
fb2.bowFTDevice123Current = 20
|
|
fb2.actuatorCurrent = 30
|
|
fb2.mastSteeringGearControlBoxCurrent = 10
|
|
fb2.xczCurrent = 5
|
|
fb2.bowRudderControlBoxCurrent = 15
|
|
fb2.openWaterCoverStartCylinderCurrent = 5
|
|
|
|
fb3 = msg_disLowMainBusFbMsg()
|
|
fb3.lithiumBatteryGroupInstrumentCircuitBreaker = 1
|
|
fb3.bowLowVoltageDistributionBoxCircuitBreaker = 1
|
|
fb3.unit4InstrumentDC48VCircuitBreaker = 1
|
|
fb3.dcC1DCDistributionPanelCircuitBreaker = 1
|
|
fb3.reservedCircuitBreaker1 = 0
|
|
fb3.reservedCircuitBreaker2 = 0
|
|
fb3.emergencyLithiumBatteryGroup2CircuitBreaker = 1
|
|
fb3.instrumentPowerFailureSignal = 0
|
|
fb3.emergencyPowerFailureSignal = 0
|
|
fb3.instrumentBusbarInsulationLow = 0
|
|
fb3.instrumentBusbarVoltage = 48
|
|
fb3.bowLowVoltageDistributionBoxCurrent = 10
|
|
fb3.dcC1InstrumentDC48VCurrent = 5
|
|
fb3.reservedCurrent1 = 0
|
|
fb3.emergencyLithiumBatteryGroup2Current = 10
|
|
fb3.lithiumBatteryGroupInstrumentCurrent = 5
|
|
fb3.unit4InstrumentDC48VCurrent = 5
|
|
fb3.reservedCurrent2 = 0
|
|
fb3.emergency2BusbarVoltage = 48
|
|
fb3.compositeEnergyManagementSystemEmergencyDC48VCurrent = 5
|
|
fb3.fuelCellSecuritySystemEmergencyDC48VCurrent = 5
|
|
fb3.plcControlPowerCurrent = 5
|
|
|
|
fb4 = msg_disLowBusFbMsg()
|
|
fb4.unit1CircuitBreaker = 1
|
|
fb4.unit2CircuitBreaker = 1
|
|
fb4.unit3CircuitBreaker = 1
|
|
fb4.unit5CircuitBreaker = 1
|
|
fb4.bowPZDeviceCircuitBreaker = 1
|
|
fb4.reservedCircuitBreaker1 = 0
|
|
fb4.reservedCircuitBreaker2 = 0
|
|
fb4.emergencyLithiumBatteryGroup1CircuitBreaker = 1
|
|
fb4.powerFailureSignal = 0
|
|
fb4.waterIngressionAlarm = 0
|
|
fb4.instrumentBusbarVoltage = 48
|
|
fb4.instrumentBusbarCurrent = 10
|
|
fb4.unit1Current = 2
|
|
fb4.unit2Current = 2
|
|
fb4.unit3Current = 2
|
|
fb4.unit5Current = 2
|
|
fb4.bowPZDeviceCurrent = 2
|
|
fb4.emergencyLithiumBatteryGroup1Current = 10
|
|
fb4.emergency1BusbarVoltage = 48
|
|
|
|
db.insertHighVolBusData(fb1)
|
|
db.insertHighAVolBusData(fb2)
|
|
db.insertLowMainBusData(fb3)
|
|
db.insertLowBusData(fb4)
|
|
db.insertHighVolBusData(fb1)
|
|
db.insertHighAVolBusData(fb2)
|
|
db.insertLowMainBusData(fb3)
|
|
db.insertLowBusData(fb4)
|
|
db.insertHighVolBusData(fb1)
|
|
db.insertHighAVolBusData(fb2)
|
|
db.insertLowMainBusData(fb3)
|
|
db.insertLowBusData(fb4)
|
|
# 测试命令消息存储
|
|
cmd1 = msg_disHVBCmdMsg()
|
|
cmd1.fuelCellCircuitBreaker = 1
|
|
cmd1.powerLithiumBatteryCircuitBreaker = 1
|
|
cmd1.propulsionMotorCircuitBreaker = 1
|
|
cmd1.lithiumBatteryGroupInstrumentCircuitBreaker = 1
|
|
cmd1.dcDc5ModuleCircuitBreaker = 1
|
|
cmd1.bowHighVoltageDistributionBoxCircuitBreaker = 1
|
|
cmd1.sternFTDevice45CircuitBreaker = 1
|
|
cmd1.sternRudderSwitch1CircuitBreaker = 1
|
|
cmd1.sternRudderSwitch2CircuitBreaker = 1
|
|
cmd1.fbReservedCircuitBreaker = 0
|
|
cmd1.tyzReservedCircuitBreaker = 0
|
|
cmd1.reservedCircuitBreaker = 0
|
|
cmd1.dcdc5Module = 1
|
|
cmd1.coolingSystem = 1
|
|
|
|
cmd2 = msg_disHVBACmdMsg()
|
|
cmd2.bowFTDevice123CircuitBreaker = 1
|
|
cmd2.actuatorCircuitBreaker = 1
|
|
cmd2.mastSteeringGearControlBoxCircuitBreaker = 1
|
|
cmd2.xczCircuitBreaker = 1
|
|
cmd2.bowRudderControlBoxCircuitBreaker = 1
|
|
cmd2.openWaterCoverStartCylinderCircuitBreaker = 1
|
|
|
|
cmd3 = msg_disLVMBCmdMsg()
|
|
cmd3.lithiumBatteryGroupInstrumentCircuitBreaker = 1
|
|
cmd3.bowLowVoltageDistributionBoxCircuitBreaker = 1
|
|
cmd3.unit4InstrumentDC48VCircuitBreaker = 1
|
|
cmd3.dcC1DCDistributionPanelCircuitBreaker = 1
|
|
cmd3.reservedCircuitBreaker1 = 0
|
|
cmd3.reservedCircuitBreaker2 = 0
|
|
cmd3.emergencyLithiumBatteryGroup2CircuitBreaker = 1
|
|
|
|
cmd4 = msg_disLVBCmdMsg()
|
|
cmd4.unit1CircuitBreaker = 1
|
|
cmd4.unit2CircuitBreaker = 1
|
|
cmd4.unit3CircuitBreaker = 1
|
|
cmd4.unit5CircuitBreaker = 1
|
|
cmd4.bowPZDeviceCircuitBreaker = 1
|
|
cmd4.reservedCircuitBreaker1 = 0
|
|
cmd4.reservedCircuitBreaker2 = 0
|
|
cmd4.emergencyLithiumBatteryGroup1CircuitBreaker = 1
|
|
|
|
db.insertHighVolBusCmd(cmd1)
|
|
db.insertHighAVolBusCmd(cmd2)
|
|
db.insertLowMainBusCmd(cmd3)
|
|
db.insertLowBusCmd(cmd4)
|
|
|
|
db.insertHighVolBusCmd(cmd1)
|
|
db.insertHighAVolBusCmd(cmd2)
|
|
db.insertLowMainBusCmd(cmd3)
|
|
db.insertLowBusCmd(cmd4)
|
|
|
|
db.insertHighVolBusCmd(cmd1)
|
|
db.insertHighAVolBusCmd(cmd2)
|
|
db.insertLowMainBusCmd(cmd3)
|
|
db.insertLowBusCmd(cmd4)
|
|
|
|
print("测试数据已成功插入数据库")
|