
#定义电池参数
class BatParam:
    def __init__(self,celltype):

        #公用参数................................................................................................................................................
        self.CellTempUpLmt=119
        self.CellTempLwLmt=-39
        self.CellTempHighLv1=45
        self.CellTempHighLv2=50
        self.CellTempLowLv1=-20
        self.CellTempLowLv2=-25
        self.CellTempDiffLv1=10
        self.CellTempDiffLv2=15
        self.CellTempRate=5

       #热失控参数
        self.TrwTempHigh=60
        self.TrwTempRate=20
        self.TrwTempDiff=15
        self.TrwCellVoltDiff=2.5
        self.TrwCellVoltFall=1
        self.TrwCellVoltLow=1.5
        self.TrwPackVoltFall=1.5

        self.SocJump=3
        self.SocClamp=0.1
        self.SocLow=3
        self.SocDiff=20

        self.SohLow=65
        self.SohDiff=20

        self.OcvWeight_Temp=[-30,-20,-10,0,10,20,30,40,50]
        self.OcvWeight_StandingTime=[0,500,600,1200,1800,3600,7200,10800]
        self.OcvWeight            =[[0,0,  0,  0,    0,   0.1,0.3, 1],
                                    [0,0,  0,  0,    0,   0.1,0.3, 1],
                                    [0,0,  0,  0,    0,   0.2,0.5, 1],
                                    [0,0,  0,  0,    0.2, 0.4,0.8, 1],
                                    [0,0,  0,  0.1,  0.3, 0.6,1,   1],
                                    [0,0,  0.1,0.2,  0.5, 0.8,1,   1],
                                    [0,0,  0.1,0.3,  0.6, 1,  1,   1],
                                    [0,0,  0.1,0.3,  0.7, 1,  1,   1],
                                    [0,0,  0.2,0.3,  0.8, 1,  1,   1]]


        if celltype==1: #6040
            self.Capacity = 41
            self.PackFullChrgVolt=69.99
            self.CellFullChrgVolt=4.2
            self.CellFullChrgCrnt=-15
            self.CellVoltNums=17
            self.CellTempNums=3
            self.OtherTempNums=5
            self.FullChrgSoc=98
            self.PackCrntDec=1
            self.BalCurrent=0.015
            self.LookTab_SOC = [0,	    3.5348,	8.3581,	13.181,	18.004,	22.827,	27.651,	32.474,	37.297,	42.120,	46.944,	51.767,	56.590,	61.413,	66.237,	71.060,	75.883,	80.707,	85.530,	90.353,	95.176,	100,   105]
            self.LookTab_OCV = [3.3159,	3.4384,	3.4774,	3.5156,	3.5478,	3.5748,	3.6058,	3.6238,	3.638,	3.6535,	3.6715,	3.6951,	3.7279,	3.7757,	3.8126,	3.8529,	3.8969,	3.9446,	3.9946,	4.0491,	4.109,	4.183, 4.263]

            self.CellOvLv1=4.3
            self.CellOvLv2=4.35
            self.CellUvLv1=2.8
            self.CellUvLv2=2.5
            self.CellVoltDiffLv1=0.3
            self.CellVoltDiffLv2=0.5
            self.PackVoltOvLv1=self.CellOvLv1*self.CellVoltNums
            self.PackVoltOvLv2=self.CellOvLv2*self.CellVoltNums
            self.PackVoltUvLv1=self.CellUvLv1*self.CellVoltNums
            self.PackVoltUvLv2=self.CellUvLv2*self.CellVoltNums

            self.PackChgOc=-40
            self.PackDisOc=200

            self.LeakCurrentLv1=10
            self.LeakCurrentLv2=20
            self.LeakCurrentLv3=50

        elif celltype==2: #4840
            self.Capacity = 41
            self.PackFullChrgVolt=69.99
            self.CellFullChrgVolt=4.2
            self.CellFullChrgCrnt=-15
            self.CellVoltNums=14
            self.CellTempNums=3
            self.OtherTempNums=4
            self.FullChrgSoc=98
            self.PackCrntDec=1
            self.BalCurrent=0.015
            self.LookTab_SOC = [0,	    3.5348,	8.3581,	13.181,	18.004,	22.827,	27.651,	32.474,	37.297,	42.120,	46.944,	51.767,	56.590,	61.413,	66.237,	71.060,	75.883,	80.707,	85.530,	90.353,	95.176,	100,   105]
            self.LookTab_OCV = [3.3159,	3.4384,	3.4774,	3.5156,	3.5478,	3.5748,	3.6058,	3.6238,	3.638,	3.6535,	3.6715,	3.6951,	3.7279,	3.7757,	3.8126,	3.8529,	3.8969,	3.9446,	3.9946,	4.0491,	4.109,	4.183, 4.263]

            self.CellOvLv1=4.3
            self.CellOvLv2=4.35
            self.CellUvLv1=2.8
            self.CellUvLv2=2.5
            self.CellVoltDiffLv1=0.3
            self.CellVoltDiffLv2=0.5
            self.PackVoltOvLv1=self.CellOvLv1*self.CellVoltNums
            self.PackVoltOvLv2=self.CellOvLv2*self.CellVoltNums
            self.PackVoltUvLv1=self.CellUvLv1*self.CellVoltNums
            self.PackVoltUvLv2=self.CellUvLv2*self.CellVoltNums

            self.PackChgOc=-40
            self.PackDisOc=200

            self.LeakCurrentLv1=10
            self.LeakCurrentLv2=20
            self.LeakCurrentLv3=50

        elif celltype==3:   #力信50ah三元电芯
            self.Capacity = 51
            self.PackFullChrgVolt=80
            self.CellFullChrgVolt=4.2
            self.CellFullChrgCrnt=-15
            self.CellVoltNums=20
            self.CellTempNums=3
            self.OtherTempNums=4
            self.FullChrgSoc=98
            self.PackCrntDec=1
            self.BalCurrent=0.015
            self.LookTab_SOC = [0,	    5,	    10,	    15,	    20,	    25,	    30,	    35,	    40,	    45,	    50,	    55,	    60,	    65,	    70,	    75,	    80,	    85,	    90,	    95,	    100,   105]
            self.LookTab_OCV = [3.357, 	3.455, 	3.493, 	3.540, 	3.577, 	3.605, 	3.622, 	3.638, 	3.655, 	3.677, 	3.707, 	3.757, 	3.815, 	3.866, 	3.920, 	3.976, 	4.036, 	4.099, 	4.166, 	4.237, 	4.325, 4.415]

            self.CellOvLv1=4.3
            self.CellOvLv2=4.35
            self.CellUvLv1=2.8
            self.CellUvLv2=2.5
            self.CellVoltDiffLv1=0.3
            self.CellVoltDiffLv2=0.5
            self.PackVoltOvLv1=self.CellOvLv1*self.CellVoltNums
            self.PackVoltOvLv2=self.CellOvLv2*self.CellVoltNums
            self.PackVoltUvLv1=self.CellUvLv1*self.CellVoltNums
            self.PackVoltUvLv2=self.CellUvLv2*self.CellVoltNums

            self.PackChgOc=-40
            self.PackDisOc=200

            self.LeakCurrentLv1=10
            self.LeakCurrentLv2=20
            self.LeakCurrentLv3=50

        elif celltype==4:   #CATL 50ah三元电芯
            self.Capacity = 50
            self.PackFullChrgVolt=80
            self.CellFullChrgVolt=4.2
            self.CellFullChrgCrnt=-15
            self.CellVoltNums=20
            self.CellTempNums=2
            self.OtherTempNums=0
            self.FullChrgSoc=98
            self.PeakSoc=57
            self.PackCrntDec=-1
            self.BalCurrent=0.015
            self.LookTab_SOC = [0,	    5,	    10,	    15,	    20,	    25,	    30,	    35,	    40,	    45,	    50,	    55,	    60,	    65,	    70,	    75,	    80,	    85,	    90,	    95,	    100,   105]
            self.LookTab_OCV = [3.152, 	3.397, 	3.438, 	3.481, 	3.523, 	3.560, 	3.586, 	3.604, 	3.620, 	3.638, 	3.661, 	3.693, 	3.748, 	3.803, 	3.853, 	3.903, 	3.953, 	4.006, 	4.063, 	4.121, 	4.183, 4.253]

            self.CellOvLv1=4.3
            self.CellOvLv2=4.35
            self.CellUvLv1=2.8
            self.CellUvLv2=2.5
            self.CellVoltDiffLv1=0.3
            self.CellVoltDiffLv2=0.5
            self.PackVoltOvLv1=self.CellOvLv1*self.CellVoltNums
            self.PackVoltOvLv2=self.CellOvLv2*self.CellVoltNums
            self.PackVoltUvLv1=self.CellUvLv1*self.CellVoltNums
            self.PackVoltUvLv2=self.CellUvLv2*self.CellVoltNums

            self.PackChgOc=-40
            self.PackDisOc=200

            self.LeakCurrentLv1=10
            self.LeakCurrentLv2=20
            self.LeakCurrentLv3=50

        elif celltype==99:   #60ah磷酸铁锂电芯
            self.Capacity = 54
            self.PackFullChrgVolt=69.99
            self.CellFullChrgVolt=3.5
            self.CellFullChrgCrnt=-20
            self.OcvInflexionBelow=3.281
            self.OcvInflexion2=3.296
            self.OcvInflexion3=3.328
            self.OcvInflexionAbove=3.4
            self.SocInflexion1=30
            self.SocInflexion2=60
            self.SocInflexion3=70
            self.CellVoltNums=20
            self.CellTempNums=4
            self.OtherTempNums=5
            self.FullChrgSoc=98
            self.PeakSoc=59
            self.PeakVoltLowLmt=3.35
            self.PeakVoltUpLmt=3.4
            self.PeakCellVolt=[3.362,3.363,3.365,3.366,3.367]
            self.PackCrntDec=1
            self.BalCurrent=0.015
            self.LookTab_SOC = [0.00, 	2.40, 	6.38, 	10.37, 	14.35, 	18.33, 	22.32, 	26.30, 	30.28, 	35.26, 	40.24, 	45.22, 	50.20, 	54.19, 	58.17, 	60.16, 	65.14, 	70.12, 	75.10, 	80.08, 	84.06, 	88.05, 	92.03, 	96.02, 	100.00]
            self.LookTab_OCV = [2.7151,	3.0298,	3.1935,	3.2009,	3.2167,	3.2393,	3.2561,	3.2703,	3.2843,	3.2871,	3.2874,	3.2868,	3.2896,	3.2917,	3.2967,	3.3128,	3.3283,	3.3286,	3.3287,	3.3288,	3.3289,	3.3296,	3.3302,	3.3314,	3.3429]

            self.CellOvLv1=3.68
            self.CellOvLv2=3.7
            self.CellUvLv1=2.1
            self.CellUvLv2=2
            self.CellVoltDiffLv1=0.6
            self.CellVoltDiffLv2=1
            self.PackVoltOvLv1=self.CellOvLv1*self.CellVoltNums
            self.PackVoltOvLv2=self.CellOvLv2*self.CellVoltNums
            self.PackVoltUvLv1=self.CellUvLv1*self.CellVoltNums
            self.PackVoltUvLv2=self.CellUvLv2*self.CellVoltNums

            self.PackChgOc=-40
            self.PackDisOc=200

            self.LeakCurrentLv1=20
            self.LeakCurrentLv2=50
            self.LeakCurrentLv3=100
        else:
            print('未找到对应电池编号！！！')
            # sys.exit()

