Собственная учебная модель и сохранённые результаты. Статус и границы проверки указаны в тексте занятия; изображение не является снимком интерфейса FEMM.
Расчётная лабораторная работа · Восстановление электрических характеристик синхронного генератора
Последовательность решения, отчёт и критерии результата
От геометрии и обмоток переходят к потокосцеплениям и ЭДС, затем к характеристикам ХХ, КЗ, нагрузки и регулирования. Эти характеристики определяют требуемое возбуждение и допустимый электрический режим.
Результат получают из наблюдаемых величин и проверяют в условиях данного практикума.
Последовательность решения
Обосновать постановку и способ измерения. Для характеристики запишите, что фиксировано: скорость, возбуждение, напряжение, нагрузка или мощность. Скоростная ЭДС восстанавливается из пространственного потокосцепления.
Разбор учебного результата. Проверьте уравнение выбранного генераторного режима и знаки мощности до построения серии.
Характеристика холостого хода. Выполните действия практикума по его исходной таблице. Методика и учебные файлы доступны. Проверки относятся к указанным в занятии примерам и версиям; заводская точность и завершённость всего численного цикла не заявляются.
Оформление наблюдений. Возбуждение, скорость, фазные потокосцепления, ЭДС и согласованные токи/напряжения в объёме конкретного опыта; независимые условия каждой строки.
Как обосновать результат
Точность и расхождения. Уточняйте шаг возбуждения или угла отдельно от сетки. При КЗ оценивайте абсолютное остаточное напряжение и его отношение к ненулевому масштабу режима.
Вывод для устройства
Свяжите полученную характеристику с выбором возбуждения, регулированием напряжения или допустимым режимом; укажите, какие проверки нужны для полной машины.
Границы вывода. Каждая характеристика требует своих независимых условий и скорости. Двумерный срез, заданные токи и статическое поле не подтверждают автоматически режим на сеть, устойчивость и полную мощность реального генератора.
Дополнительный расчётный метод
Коэффициенты поля возбуждения явнополюсного генератора
Коэффициенты поля связывают геометрию полюса с основной ЭДС, полным потоком и потребной МДС возбуждения.
\tau — длина полюсного деления на окружности расточки; для неперекрывающихся полюсов необходимо b_p\le \tau. Это необходимое, но не достаточное условие геометрической пригодности.Численный пример применения метода
Для явнополюсной машины Di=6,50 м, p=24, ширина полюсного наконечника 306 мм. Определим полюсное деление и перекрытие.
Число полюсов равно 2p=48.
Полюсное деление \tau=πDi/(2p)=425{,}424 мм.
Относительное перекрытие полюсным наконечником \alpha =306/425{,}424=0{,}71928. Межполюсное расстояние по дуге равно 119,424 мм.
Ответ.\tau \approx 425{,}4 мм; \alpha \approx 0{,}7193. Эти величины задают геометрию рабочего зазора перед расчётом формы поля.
Страницы источника. PDF 1–2: определения; 3–4: модели и насыщение; 5: варианты исходных данных
Получаемые величины. основная ЭДС и её фазовый угол; фазные \Psi; U, I, \cos \varphi при согласованной нагрузке; поправки длины и насыщения
Проверить обмоточную таблицу и период модели.
В одном режиме получить гармонику поля и фактические потокосцепления.
Восстановить ЭДС обоими способами с общей скоростью и нормировкой.
Согласовать внешнюю цепь и сравнить прогноз на независимой точке нагрузки.
Объяснить влияние неплоской конструкции и эффективной длины.
Страницы источника. PDF 1–14 полностью: 1–5 модели и определение ЭДС; 6–9 таблицы и выводы; 10–11 литература и геометрия; 12–14 английское резюме и авторы.
Это проверяемое тождество установившейся основной составляющей. Отдельно сравнивается T_{\mathrm{dq}} со средним моментом Максвелла; совпадение не предполагается для одного углового снимка.
Во всех точках i_d=i_q=0. Отсутствие тока статора означает отсутствие падения RsI, но не отсутствие насыщения. Перебираются If=0,50,250,500,1000,1500,2500 А. Нулевая точка имеет нулевую ЭДС, поскольку модель не содержит остаточной намагниченности.
Исходные таблицы B(H) начинаются примерно с 0,6 Тл. FEMM всё равно вычисляет поле меньшей величины, используя собственное продолжение таблицы. Поэтому начало кривой условно. run_low_field_check.py сравнивает нативный вариант и явно обозначенные линейное/квадратичное продолжения на 50 и 250 А; это чувствительность к гипотезам, а не экспериментальный доверительный интервал.
Кривая построена по основной составляющей напряжения усреднённой d–q-модели. Действующее значение полной несинусоидальной ЭДС требует спектра с множителями порядка гармоники и не равно автоматически указанному E_{1}. Проверка гармоник выполнена в занятиях 16–17 отдельно.
В идеальном усреднённом холостом ходе \lambda q\approx 0; формула сохраняет обе вычисленные компоненты.
Для средней опубликованной точки средние потокосцепления \lambda d=45.85614079, \lambda q=0.004945500468 Вб·виток, токи i_d=0, i_q=0 А. Подстановка в ud=0{,}001335 i_d-314{,}1592654 \lambda q и uq=0{,}001335 i_q+314{,}1592654 \lambda d даёт ud=-1,554 В, uq=14410 В.
Максимальное нормированное изменение потокосцеплений в контрольной точке при удвоении числа углов: 195 × 10⁻⁶. Для компонент около нуля знаменатель ограничен 1 Вб·витком. Эта проверка относится к указанной контрольной точке, а не автоматически ко всем режимам всей машины.
Результаты относятся к точным снимкам программ внутри квитанции characteristic-00001. При дальнейшем изменении программы опубликованные доказательства не перезаписываются. Перед переносом чисел на новую версию требуется повторный расчёт.
Ограничения и происхождение методики
Учебная модель с документированными входами; заводская точность не заявляется.
Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
Таблица извлечена только после проверки всех хешей. Электрические соотношения выведены из выбранной нормировки Парка; чужая расчётная карта не использована.
Разобранный численный пример
Разбор учебного результата
Дано. ТВВ-320-2; документированные входы и точные версии программ из файлов занятия.
Для одной полевой оценки проследите цепочку: токи d–q → фазные токи → половина тока в каждой ветви → mi_modifycircprop → сохранение/повторное открытие FEM → mi_analyze → mo_getcircuitproperties → среднее \lambda d,\lambda q.
Проверьте каждое ограничение по итоговым U,P,Q,I,If, а затем angular-check.json. При отказе критерия исследуйте сетку, углы и поиск; не ослабляйте допуск задним числом.
Воспроизведите таблицу контрольных величин и баланс Pg+Pcu+\Omega T. Сохраните квитанцию, точные программы и входы вместе с выбранными FEM/ANS.
Ответ: Сохранённые полевые решения, журнал подбора, таблица и график характеристика холостого хода.
Проверка: Учебная модель с документированными входами; заводская точность не заявляется. Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
Распакуйте самостоятельный комплект в чистый каталог. Сначала проверьте сравнение build_series.py с подробным построителем на четырёх токовых состояниях; затем откройте файл characteristic-plan*.json из snapshot выбранной семьи (имя указано в её квитанции) и прочитайте фиксированные величины.
В редакторе встроенного Python задайте TVV_ROOT как абсолютный путь и TVV_CHARACTERISTIC="occ". Выполните exec(open(TVV_ROOT+"/run_characteristics.py").read(), globals()). Для точного повторения опубликованной версии используйте reproduce.py и snapshot из examples/checked-04/occ. Внешний Python и sim не требуются.
Для одной полевой оценки проследите цепочку: токи d–q → фазные токи → половина тока в каждой ветви → mi_modifycircprop → сохранение/повторное открытие FEM → mi_analyze → mo_getcircuitproperties → среднее \lambda d,\lambda q.
Откройте results.json и evaluations.json. Первое содержит принятые точки характеристики, второе — также промежуточные полевые оценки. Не наносите промежуточные итерации как физические точки заданной характеристики.
Проверьте каждое ограничение по итоговым U,P,Q,I,If, а затем angular-check.json. При отказе критерия исследуйте сетку, углы и поиск; не ослабляйте допуск задним числом.
Воспроизведите таблицу контрольных величин и баланс Pg+Pcu+\Omega T. Сохраните квитанцию, точные программы и входы вместе с выбранными FEM/ANS.
Ожидаемый результат. Сохранённые полевые решения, журнал подбора, таблица и график характеристика холостого хода.
Как проверить. Учебная модель с документированными входами; заводская точность не заявляется. Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
Обработка и анализ результатов
Как меняется основная ЭДС при изменении возбуждения и где проявляется насыщение?
Сопоставьте контрольные величины, входы, версии и допуски.
Полная программа: run_characteristics.py
Встроенный Python FEMM 5. Зависимости, входы и точные снимки программ доступны в файлах занятия.
Python · FEMM 5
"""Шесть характеристик и обратный режим: полевые оценки и полный журнал поиска."""importsys,json,math,osROOT=globals().get('TVV_ROOT','')ifROOTinsys.path:sys.path.remove(ROOT)sys.path.insert(0,ROOT)fromrun_recordimportstart,finish,save_json,shafromseries_sessionimportFieldSessionfromregimesimportelectrical,searchnames=['run_characteristics.py','series_session.py','build_series.py','geometry.py','physics.py','regimes.py','numerics.py','run_record.py','machine.json','winding.json','rotor-bh.json','stator-bh.json','characteristic-plan.json','model-scope.json']family=globals().get('TVV_CHARACTERISTIC','occ')resume=globals().get('TVV_RESUME_DIR','')ifresume:folder=resumewithopen(folder+'/receipt.json')asf:record=json.loads(f.read())ifrecord['family']!=familyor'completed_evaluations'notinrecord:raiseValueError('Несовместимый запуск характеристики')forname,digestinrecord['inputs_and_programs'].items():ifsha(ROOT+'/'+name)!=digestorsha(folder+'/snapshot/'+name)!=digest:raiseValueError('Изменена версия: '+name)else:folder,record=start(ROOT,globals().get('TVV_OUTPUT_ROOT',ROOT+'/runs'),'characteristic',names,'2D active-section educational characteristics; Lend excluded, DC resistance at 15 C')record.update(family=family,completed_evaluations={},field_points={})defload(name):withopen(folder+'/snapshot/'+name+'.json')asf:returnjson.loads(f.read())machine=load('machine');plan=load('characteristic-plan');rs=machine['resistance']['stator_phase_ohm'];omega=2*math.pi*50session=FieldSession(globals(),machine,load('winding')['rows'],{'rotor':load('rotor-bh'),'stator':load('stator-bh')},folder,plan['mesh'])cache={};rows=[];evaluations=[]forkey,iteminrecord['completed_evaluations'].items():forname,digestinitem['files'].items():ifsha(folder+'/'+name)!=digest:raiseValueError('Повреждена полевая оценка')cache[key]=item['value'];evaluations.append(item['value'])evaluations.sort(key=lambdarow:row['evaluation'])deffield(current,n=None):n=plan['angles']ifnisNoneelsen;key=','.join('%.12g'%vforvincurrent)+'/'+str(n)ifkeyincache:returncache[key]index=len(evaluations);values=[]forkinrange(n):stem='eval-%04d-a%03d'%(index,k)ifsteminrecord['field_points']:forname,digestinrecord['field_points'][stem].items():ifsha(folder+'/'+name)!=digest:raiseValueError('Повреждена промежуточная точка')withopen(folder+'/'+stem+'.json')asf:row=json.loads(f.read())ifrow['currents_dqf_A']!=currentorabs(row['theta_deg']-360*k/n)>1e-9:raiseValueError('Другие входы промежуточной точки')else:row=session.solve(360*k/n,current,stem);save_json(folder+'/'+stem+'.json',row)record['field_points'][stem]={stem+ext:sha(folder+'/'+stem+ext)forextin('.json','.fem','.ans')}save_json(folder+'/receipt.json',record)values.append(row)mean={key:sum(r[key]forrinvalues)/nforkeyin('energy_J','coenergy_J')}mean.update(currents_A=current[:],angles=n,lambda_dqf_Wb=[sum(r['lambda_dqf_Wb'][j]forrinvalues)/nforjinrange(3)],mean_torque_Nm=sum(r['force_torque'][2]forrinvalues)/n,evaluation=index)mean.update(electrical(current,mean['lambda_dqf_Wb'],rs))mean['torque_identity_scaled_error']=abs(mean['mean_torque_Nm']-mean['torque_dq_Nm'])/max(abs(mean['mean_torque_Nm']),10000.)ifmean['torque_identity_scaled_error']>.02:raiseValueError('Средний момент не согласован с dq-мощностью')evaluations.append(mean);cache[key]=mean;save_json(folder+'/evaluations.json',evaluations)files={}forkinrange(n):files.update(record['field_points']['eval-%04d-a%03d'%(index,k)])record['completed_evaluations'][key]={'value':mean,'files':files}record['evaluations']=len(evaluations);save_json(folder+'/receipt.json',record);print('TVV_CURVE_EVALUATION',family,index,current)returnmeandefsolve(initial,bounds,residual,current_from_unknown):result=search(lambdax:residual(field(current_from_unknown(x))),initial,bounds,plan['scaled_residual'])save_json(folder+'/latest-search.json',result)ifnotresult['converged']:raiseValueError('Недостижимый режим/поиск: '+result['reason'])value=field(current_from_unknown(result['x']));value=dict(value,search=result)returnvalue,result['x']defappend(value):rows.append(value);save_json(folder+'/results.json',rows)try:iffamily=='occ':forexcitationinplan['occ_If_A']:append(field([0.,0.,excitation]))eliffamily=='nominal'orfamily=='regulation':voltage=plan['U_line_V'];tanphi=math.tan(math.acos(plan['power_factor']));initial=[1500.,-2.1]amplitudes=[math.sqrt(2)*plan['P_nominal_W']/(math.sqrt(3)*voltage*plan['power_factor'])]iffamily=='nominal'else[math.sqrt(2)*iforiinplan['current_rms_A']ifi>0]foramplitudeinamplitudes:current=lambdax:[amplitude*math.cos(x[1]),amplitude*math.sin(x[1]),x[0]]residual=lambdav:[(v['U_line_rms_V']-voltage)/voltage,(v['Q_generator_var']-v['P_generator_W']*tanphi)/plan['P_nominal_W']]value,initial=solve(initial,[(0.,6000.),(-math.pi+.001,-.001)],residual,current);append(value)eliffamily=='scc':initial=[-1000.,-1.]forexcitationinplan['scc_If_A']:current=lambdax:[x[0],x[1],excitation]value,initial=solve(initial,[(-60000.,0.),(-6000.,6000.)],lambdav:[v['ud_V']/plan['short_voltage_scale_V'],v['uq_V']/plan['short_voltage_scale_V']],current);append(value)eliffamily=='external':excitation=plan['fixed_If_A'];tanphi=math.tan(math.acos(plan['power_factor']));initial=[-2.1]forrmsinplan['current_rms_A']:ifnotrms:append(field([0.,0.,excitation]));continueamplitude=math.sqrt(2)*rms;current=lambdax:[amplitude*math.cos(x[0]),amplitude*math.sin(x[0]),excitation]value,initial=solve(initial,[(-math.pi+.001,-.001)],lambdav:[(v['Q_generator_var']-v['P_generator_W']*tanphi)/plan['P_nominal_W']],current);append(value)eliffamily=='angle':initial=[-5000.,-100.];peak=plan['U_line_V']*math.sqrt(2/3)forangleinplan['load_angle_deg']:ud=peak*math.sin(math.radians(angle));uq=peak*math.cos(math.radians(angle))value,initial=solve(initial,[(-60000.,30000.),(-60000.,30000.)],lambdav:[(v['ud_V']-ud)/peak,(v['uq_V']-uq)/peak],lambdax:[x[0],x[1],plan['fixed_If_A']]);append(dict(value,target_delta_deg=angle))eliffamily=='u-curve':initial=[-3000.,-7000.]forexcitationinplan['u_If_A']:value,initial=solve(initial,[(-60000.,30000.),(-60000.,0.)],lambdav:[(v['U_line_rms_V']-plan['U_line_V'])/plan['U_line_V'],(v['P_generator_W']-plan['u_power_W'])/plan['P_nominal_W']],lambdax:[x[0],x[1],excitation]);append(value)# Add both midpoints around the computed minimum, without changing U or P.ranked=sorted(rows,key=lambdar:r['currents_A'][2]);index=min(range(len(ranked)),key=lambdai:ranked[i]['I_phase_rms_A'])ifindex==0orindex==len(ranked)-1:raiseValueError('Минимум U-кривой не охвачен диапазоном возбуждения')forneighborin(index-1,index+1):excitation=(ranked[index]['currents_A'][2]+ranked[neighbor]['currents_A'][2])/2value,initial=solve(ranked[index]['currents_A'][:2],[(-60000.,30000.),(-60000.,0.)],lambdav:[(v['U_line_rms_V']-plan['U_line_V'])/plan['U_line_V'],(v['P_generator_W']-plan['u_power_W'])/plan['P_nominal_W']],lambdax:[x[0],x[1],excitation]);append(value)else:raiseValueError('Неизвестная характеристика')# Independent angular refinement of the middle curve point, not just a software check.reference=rows[len(rows)//2];refined=field(reference['currents_A'],2*plan['angles'])differences=[abs(a-b)/max(abs(b),1.)fora,binzip(reference['lambda_dqf_Wb'],refined['lambda_dqf_Wb'])]ifmax(differences)>.01:raiseValueError('Угловое среднее характеристики не сошлось')iffamily=='scc'andmax(abs(refined['ud_V']),abs(refined['uq_V']))/plan['short_voltage_scale_V']>plan['scaled_residual']:raiseValueError('Уточнённая угловая серия КЗ не удовлетворяет U=0 в заданном абсолютном допуске')save_json(folder+'/angular-check.json',{'base':reference,'refined':refined,'flux_scaled_changes':differences})finish(folder,record,'passed_characteristic_points_and_selected_angular_check')exceptExceptionaserror:record['error']=str(error);save_json(folder+'/results.json',rows);finish(folder,record,'failed');raiseprint('TVV_CHARACTERISTIC_RESULT',folder,family,len(rows))
Самостоятельная работа
Вычислите наклоны на интервалах 250–500 А и 2500–4000 А. Объясните разницу через насыщение; отдельно укажите диапазон чувствительности к слабополевому продолжению.
Критерий выполнения: Соблюдены определения, единицы, условия и критерии занятия. Учебная модель с документированными входами; заводская точность не заявляется. Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
Пояснения и типичные ошибкиКакие ограничения необходимо сохранить в выводе?
Учебная модель с документированными входами; заводская точность не заявляется. Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
На что обратить внимание
Приписать модели остаточную ЭДС без гистерезиса.
Продолжить измеренную кривую произвольными точками и подписать их как исходные данные.
Забыть, что найденные U/P относятся к оговорённому активному сечению без лобового рассеяния.