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) # чтоб каждый раз не менять план, как оно делается,
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)
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) # чтоб каждый раз не менять план, как оно делается,
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')