Beispiel #1
0
     def __init__(self):
         #     .MODEL KT315 NPN (IS=10F BF=584.517 VAF=100 IKF=29.2714M ISE=131.803P
         # 3:  + NE=2.08337 BR=1.95214 IKR=9.99996M ISC=100.316P RE=0 RC=0 RB=0
         # 4:  + CJE=27.3893P VJE=700.001M MJE=500.287M CJC=27.3893P VJC=700.001M
         # 5:  + MJC=500.287M TF=450.287P XTF=499.984M VTF=10 ITF=10.2268M TR=153.383P)
         #
        Fianora_MainScripts.AbstractMainScript.__init__(self)
        self.options.verbose = 1
        self.options.verbose_wrapper = 1

        inf=10e10
        #числовые значения изменены шоб было по 7 значимых
        IS = 11.23456e-15
        BF = 584.5171
        VAF = 112.3456
        VAR = inf
        IKF =  29.27141e-3     # ток перехода к высококу уровню инжекции inf
        ISE = 131.8031e-12      # генерационно-рекомбинационный ток насыщения  эмиттерного перех 0
        NE = 2.083371       # коэфф. неидеальности ген-рек тока эмиттерного перех   1
        NR = 1       # коэфф неидеальности для диффузного тока в инв режиме  1
        NF = 1       # коэфф неидеальности для диффузионного тока в нормальном режиме        1
        NC = 1       # коэфф неидеальности генерационно-рекомбинацоинного тока коллектора    1
        BR = 1.952141      # инверсный коэфф усиления тока в схеме с ОЭ 1
        IKR = 9.999961e-3     # ток перехода к высокому уровню инжекции в инверсном включении inf
        ISC = 100.3161e-12     # генерационно-рекомбинационный ток насыщения колекторного перех 0
        RE = 1      # сопротивления эмиттера, коллектора, базы 0 0 0
        RC = 5.48635
        RB = 0
        parameter_str_list = ['IS', 'BF', 'NR', 'NF', 'BR']     # список параметров
        btrue = [IS, BF, NR, NF, BR]
        Ve = np.diag([1.9e-5]*3)
        bstart = np.array(btrue)-np.array(btrue)*0.3
        bend = np.array(btrue)+np.array(btrue)*0.3
        binit = f_sf.uniformVector(bstart, bend)
        xstart = np.array([0.001, 0.001])
        xend = np.array([1, 1])
        N = 30

        self.ec = f_sf.EstimationContext(bstart, bend, btrue, binit, xstart, xend, Ve, N) #упаковывание в контекст
        self.model = f_m.StringEMTransistorModel ('Q_NPN_KT513')



        self.measurer = f_me.ModelMeasurer(self.ec.Ve, self.model, self.ec.btrue) # сделали измерителя
        self.plan_measurer = f_me.PlanMeasurer(self.measurer) # сделали измеритель по плану
        self.planner = f_p.UniformPlanner(self.ec)

        #формирование цепочки
        self.estimator = f_e.NGEstimator()

        self.measdata=None

        self.plan = self.planner.give_us_a_plan(nocache = True) # чтоб каждый раз не менять план, как оно делается,
Beispiel #2
0
    def __init__(self):

        AbstractMainScript.__init__(self)

        _btrue = [
            7.69e-8, 1.45, .0422
        ]  #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя
        Ve = np.array([[1.9e-5]])
        bstart = np.array(_btrue) - np.array(_btrue) * 0.2
        bend = np.array(_btrue) + np.array(_btrue) * 0.2

        binit = _btrue

        btrue = f_sf.rangomNormalvariateVector(bstart, bend)
        print(btrue)
        #btrue = _btrue

        xstart = [0.001]
        xend = [1]
        N = 100
        self.ec = f_sf.EstimationContext(bstart, bend, btrue, binit, xstart,
                                         xend, Ve, N)

        self.model = f_m.SimpleDiodeModel('Diode_1N')  # сделали модель
        self.ec.model = self.model

        self.measurer = f_me.ModelMeasurer(self.ec.Ve, self.model,
                                           self.ec.btrue)  # сделали измерителя
        self.plan_measurer = f_me.PlanMeasurer(
            self.measurer)  # сделали измеритель по плану
        #self.planner = f_p.DOptimalPlanner(self.ec)
        self.planner = f_p.UniformPlanner(self.ec)
        #self, ec, plancachefoldername='cache', verbose = False)

        self.measdata = None

        #формирование цепочки
        estimator = f_e.NGEstimator()
        estimator.init_parameters(self.ec, self.model)

        self.estimator = f_e.ConsoleEstimatorDecorator(estimator)
Beispiel #3
0
    def __init__(self):
        Fianora_MainScripts.AbstractMainScript.__init__(self)
        self.options.verbose = 0
        self.options.verbose_wrapper = 0

        btrue = [7.69e-8, 1.45 ,.0422] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя
        binit = btrue
        Ve=np.array([[1.9e-4]])
        bstart=np.array(btrue)-np.array(btrue)*0.4
        bend=np.array(btrue)+np.array(btrue)*0.4
        xstart=[0.001]
        xend=[1]
        N=100
        self.ec =f_sf.EstimationContext(bstart, bend, btrue, binit, xstart, xend, Ve, N)

        self.model = f_m.SimpleDiodeModel ('Diode_1N') # сделали модель

        #self.planner = f_p.DOptimalPlanner(self.N, self.xstart, self.xend, self.bstart, self.bend, self.model, verbose=1)
        self.planner = f_p.UniformPlanner(self.ec)
        self.measdata=None
        #формирование цепочки
        self.estimator = f_e.NGEstimator()
        self.plan = self.planner.give_us_a_plan(nocache = True) # чтоб каждый раз не менять план, как оно делается,
Beispiel #4
0
    def __init__(self):
        AbstractMainScript.__init__(self)
        #     .MODEL KT315 NPN (IS=10F BF=584.517 VAF=100 IKF=29.2714M ISE=131.803P
        # 3:  + NE=2.08337 BR=1.95214 IKR=9.99996M ISC=100.316P RE=0 RC=0 RB=0
        # 4:  + CJE=27.3893P VJE=700.001M MJE=500.287M CJC=27.3893P VJC=700.001M
        # 5:  + MJC=500.287M TF=450.287P XTF=499.984M VTF=10 ITF=10.2268M TR=153.383P)
        #
        inf = 10e10

        #IS = 10e-15
        IS = 1
        BF = 584.517
        VAF = 100
        VAR = inf
        IKF = 29.2714e-3  # ток перехода к высококу уровню инжекции inf
        ISE = 131.803e-12  # генерационно-рекомбинационный ток насыщения  эмиттерного перех 0
        NE = 2.08337  # коэфф. неидеальности ген-рек тока эмиттерного перех   1
        NR = 1  # коэфф неидеальности для диффузного тока в инв режиме  1
        NF = 1  # коэфф неидеальности для диффузионного тока в нормальном режиме        1
        NC = 1  # коэфф неидеальности генерационно-рекомбинацоинного тока коллектора    1
        BR = 1.95214  # инверсный коэфф усиления тока в схеме с ОЭ 1
        IKR = 9.99996e-3  # ток перехода к высокому уровню инжекции в инверсном включении inf
        ISC = 100.316e-12  # генерационно-рекомбинационный ток насыщения колекторного перех 0
        RE = 1  # сопротивления эмиттера, коллектора, базы 0 0 0
        RC = 5.48635
        RB = 0

        parameter_str_list = ['IS', 'BF', 'NR', 'NF',
                              'BR']  # список параметров

        b_nominal = [IS, BF, NR, NF, BR]
        bstart = np.array(b_nominal) - np.array(b_nominal) * 0.3
        bend = np.array(b_nominal) + np.array(b_nominal) * 0.3

        #btrue = f_sf.rangomNormalvariateVector(bstart, bend)
        btrue = [
            1.1204058410408533, 587.71110706589764, 1.0110737035569517,
            0.97217262436055318, 1.7709083403162802
        ]

        #btrue  = b_nominal
        binit = b_nominal

        print('Btrue set to:', btrue)

        Ve = np.diag([1.9e-5] * 3)

        xstart = np.array([0.001, 0.001])
        xend = np.array([.6, .6])
        N = 60

        ec = f_sf.EstimationContext(bstart, bend, btrue, binit, xstart, xend,
                                    Ve, N)  #упаковывание в контекст

        self.model = f_m.StringEMTransistorModel('Q_NPN_KT513')

        ec.model = self.model

        self.measurer = f_me.ModelMeasurer(ec.Ve, self.model,
                                           ec.btrue)  # сделали измерителя
        self.plan_measurer = f_me.PlanMeasurer(
            self.measurer)  # сделали измеритель по плану

        #self.planner = f_p.DOptimalPlanner(ec, 'cache', verbose=True)

        self.planner = f_p.UniformPlanner(ec)

        #формирование цепочки
        estimator = f_e.NGEstimator()
        estimator.init_parameters(ec, self.model)

        ce = f_e.ConsoleEstimatorDecorator(estimator)

        self.estimator = f_e.GraphPackEstimatorDecorator(
            ce, '../Cases/resfiles', 'NPN_KT315')