Расчётная лабораторная работа · Восстановление электрических характеристик синхронного генератора
Последовательность решения, отчёт и критерии результата
От геометрии и обмоток переходят к потокосцеплениям и ЭДС, затем к характеристикам ХХ, КЗ, нагрузки и регулирования. Эти характеристики определяют требуемое возбуждение и допустимый электрический режим.
Результат получают из наблюдаемых величин и проверяют в условиях данного практикума.
Последовательность решения
Обосновать постановку и способ измерения. Для характеристики запишите, что фиксировано: скорость, возбуждение, напряжение, нагрузка или мощность. Скоростная ЭДС восстанавливается из пространственного потокосцепления.
Разбор учебного результата. Проверьте уравнение выбранного генераторного режима и знаки мощности до построения серии.
Потокосцепления: цепь и интеграл по проводникам. Выполните действия практикума по его исходной таблице. Методика и учебные файлы доступны. Проверки относятся к указанным в занятии примерам и версиям; заводская точность и завершённость всего численного цикла не заявляются.
Результат этого занятия. Для каждой ветви — сумма интегралов A_z по активным сторонам, затем фазное среднее и сравнение с цепями.
Оформление наблюдений. Возбуждение, скорость, фазные потокосцепления, ЭДС и согласованные токи/напряжения в объёме конкретного опыта; независимые условия каждой строки.
Как обосновать результат
Проверка из практикума. Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
Независимый контроль. Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
Критерий выполнения. Соблюдены определения, единицы, условия и критерии занятия. Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
Точность и расхождения. Уточняйте шаг возбуждения или угла отдельно от сетки. При КЗ оценивайте абсолютное остаточное напряжение и его отношение к ненулевому масштабу режима.
Основание сравнения. Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
Вывод для устройства
Свяжите полученную характеристику с выбором возбуждения, регулированием напряжения или допустимым режимом; укажите, какие проверки нужны для полной машины.
Границы вывода. Каждая характеристика требует своих независимых условий и скорости. Двумерный срез, заданные токи и статическое поле не подтверждают автоматически режим на сеть, устойчивость и полную мощность реального генератора.
Теория и вывод формул
Как проверить потокосцепление FEMM независимо от команды свойства цепи?
Механический и электрический углы; \theta e=p\theta m
рад
p
Число пар полюсов; для ТВВ-320-2 p=1
1
ULL; I
Линейное напряжение и фазный ток RMS основной симметричной составляющей
В; А
id; iq; If
Амплитудные токи d–q и постоянный ток возбуждения
А
λd; λq; λf
Потокосцепления в согласованной нормировке
Вб·виток
Pg; Qg; T
Отдаваемые активная и реактивная мощности; момент против часовой стрелки
Вт; вар; Н·м
От поля к обмотке
В двумерной постановке A=(0{,}0,A_z ), B_x =\partial A_z /\partial y и B_y =-\partial A_z /\partial x. Для распределённой активной стороны с постоянной плотностью ампер-витков её вклад в потокосцепление задаётся средним A_z, умноженным на активную длину и знаковое число витков. Противоположная сторона замкнутой катушки имеет обратный знак.
mo_blockintegral(1) уже интегрирует A_z по объёму активной длины. Поэтому программа делит его на площадь стороны в м² и умножает на знаковое число витков. Повторное умножение на 6 м дало бы ошибку ровно в шесть раз.
Независимая площадь прямоугольника берётся из построителя и сравнивается с mo_blockintegral(5). Так обнаруживается неверная метка или случайный выбор соседней области.
Nj включает знак стороны; площадь Sj — в м². Интеграл имеет единицы Вб·м², итог — Вб·виток.
При двух равных параллельных токах фазная \lambda, сопряжённая полному iA, равна среднему потокосцеплению ветвей. Суммирование вместо среднего удваивает фазную ЭДС.
Для однозначного безгистерезисного закона магнитной среды w=\int H\cdot dB, w'=B\cdot H-w. Интегралы FEMM 2 и 17 дают W и W'. При граничном A_z =0 и заданных токах сумма энергий должна совпадать с суммой icλc всех семи цепей.
Проверка полезна для выявления пропущенной цепи возбуждения, неверного масштаба длины или неправильной нормировки ветвей. Она не проверяет адекватность исходной B(H) реальной стали. В линейном материале W=W'; при насыщении равенство половин обычно неверно.
Сравнение выполняется по всему расчётному объёму, включая воздух.
Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются.
Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
Числа получены новой реализацией FEMM 5; проверены хеши снимков и результатов. Архив вложения использован только для направлений и задания токов.
PDF проверен визуально: с. 4, (3)–(13); с. 5, (15)–(24). Отличия нормировок и обнаруженный знак (24) объяснены явно. Формулы самостоятельно выведены; чужие численные результаты не использованы.
Реестр формул и библиография в файлах занятия отделяют собственные выводы от доступных первоисточников. Недоступные тексты и текстовое распознавание PDF не объявлены полной визуальной проверкой.
Разобранный численный пример
Разбор учебного результата
Дано. ТВВ-320-2; документированные входы и точные версии программ из файлов занятия.
Ответ: Для каждой ветви — сумма интегралов A_z по активным сторонам, затем фазное среднее и сравнение с цепями.
Проверка: Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
В field_results.py найдите проход по активным сторонам: mo_selectblock, интегралы 1 и 5, сброс выбора. Затем проследите суммирование по цепям.
Сравните independent_circuit_flux_Wb с третьим компонентом каждого значения circuits. Площадь стороны проверяйте до деления.
Выберите все области для интегралов энергии и коэнергии. Независимо пересчитайте сумму первых и третьих компонентов circuits.
Проверьте уровни допуска: 10⁻⁶ для нормированной невязки потокосцепления и 10⁻⁵ для энергии; это алгебраические проверки, отличные от 1% сеточной сходимости.
Ожидаемый результат. Для каждой ветви — сумма интегралов A_z по активным сторонам, затем фазное среднее и сравнение с цепями.
Как проверить. Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
Обработка и анализ результатов
Как проверить потокосцепление FEMM независимо от команды свойства цепи?
Сопоставьте контрольные величины, входы, версии и допуски.
С чем сравнить. Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
Итог работы. Для каждой ветви — сумма интегралов A_z по активным сторонам, затем фазное среднее и сравнение с цепями.
Полная программа: run_fields.py
Встроенный Python FEMM 5. Зависимости, входы и точные снимки программ доступны в файлах занятия.
Python · FEMM 5
"""Занятия 11–15: самостоятельные ненулевые решения учебной модели."""importsys,json,math,osROOT=globals().get('TVV_ROOT','')ifnotROOT:raiseValueError('Задайте TVV_ROOT')ifROOTinsys.path:sys.path.remove(ROOT)sys.path.insert(0,ROOT)# Повторный запуск редактора не должен использовать старые модули другой копии.formodulein('run_record','geometry','physics','build','field_results','material_variants'):sys.modules.pop(module,None)fromrun_recordimportstart,finish,save_json,shafrombuildimportbuildfromfield_resultsimportcollectfrommaterial_variantsimportvariantnames=['run_fields.py','field_results.py','run_record.py','build.py','geometry.py','physics.py','machine.json','winding.json','rotor-bh.json','stator-bh.json','stator-cross-bh.json','field-plan.json','model-scope.json','current-mapping.json','material_variants.py']resume=globals().get('TVV_RESUME_DIR','')selected=globals().get('TVV_CASE_ID',None);series=globals().get('TVV_SERIES','four-states')part=globals().get('TVV_PART',0);parts=globals().get('TVV_PARTS',1)ifparts<1ornot0<=part<parts:raiseValueError('Неверная часть серии')ifresume:folder=resumewithopen(folder+'/receipt.json')asf:record=json.loads(f.read())if(record.get('selected_case'),record.get('series'),record.get('part',0),record.get('parts',1))!=(selected,series,part,parts):raiseValueError('Продолжение требует того же набора заданий')forname,digestinrecord['inputs_and_programs'].items():ifsha(ROOT+'/'+name)!=digestorsha(folder+'/snapshot/'+name)!=digest:raiseValueError('Изменены входы или версия программы: '+name)if'case_outputs'notinrecord:raiseValueError('В этой квитанции нет проверяемых промежуточных результатов')else:folder,record=start(ROOT,globals().get('TVV_OUTPUT_ROOT',ROOT+'/runs'),'fields',names,'nonzero teaching model; no factory accuracy claim')record['case_outputs']={}defload(name):withopen(folder+'/snapshot/'+name+'.json')asf:returnjson.loads(f.read())plan=load('field-plan');scope=load('model-scope');rows=[]ifscope['factory_accuracy_claim']:raiseValueError('Необоснованное заявление о заводской точности')record.update(selected_case=selected,series=series,part=part,parts=parts,status='running')save_json(folder+'/receipt.json',record)try:cases=[cforcinplan['cases']if(c['id']==selectedifselectedelsec.get('series')==series)]forindex,caseinenumerate(cases):ifindex%parts!=part:continueifcase['id']inrecord['case_outputs']:forname,digestinrecord['case_outputs'][case['id']].items():ifsha(folder+'/'+name)!=digest:raiseValueError('Повреждён результат продолжения: '+name)withopen(folder+'/'+case['id']+'-result.json')asf:rows.append(json.loads(f.read()))print('TVV_FIELD_REUSED',case['id']);continuemachine=load('machine');winding=load('winding')['rows'];mesh=plan['mesh'].copy()forkeyinmesh:mesh[key]*=case.get('mesh_scale',1.)mesh.update(case.get('mesh_overrides',{}))forsection,valuesincase.get('overrides',{}).items():machine[section].update(values)materials={'rotor':load('rotor-bh'),'stator':load(case.get('stator_curve','stator')+'-bh')}machine['_bh_limits']={tag:[v['points'][0][0],v['points'][-1][0]]fortag,vinmaterials.items()}fortaginmaterials:materials[tag]['points']=variant(materials[tag]['points'],case.get('bh_mode','native'))path=folder+'/'+case['id']+'.fem'record['active_case']=case['id'];save_json(folder+'/receipt.json',record)print('TVV_FIELD_BUILD',case['id'])build(globals(),machine,winding,materials,path,mesh,case['theta_deg'],case['currents_dqf_A'])mi_close();opendocument(path);mi_analyze(1);mi_loadsolution()print('TVV_FIELD_SOLVED',case['id'],mo_numelements())row=collect(globals(),machine,winding,case['theta_deg'],case['currents_dqf_A'],folder,case['id'],case.get('coverage',True),case.get('contour_samples',1440))row['case']=case;row['mesh']=meshlimits=plan['acceptance']errors={name:abs(values[2]-row['independent_circuit_flux_Wb'][name])/max(abs(values[2]),limits['flux_absolute_scale_Wb'])forname,valuesinrow['circuits'].items()}row['flux_identity_relative_error']=max(errors.values())row['energy_identity_relative_error']=abs(row['energy_J']+row['coenergy_J']-row['sum_i_lambda_J'])/max(abs(row['sum_i_lambda_J']),limits['energy_absolute_scale_J'])rows.append(row);save_json(folder+'/results.json',rows)ifrow['max_copper_area_relative_error']>1e-8:raiseValueError('Площадь активных областей не совпадает')ifrow['flux_identity_relative_error']>limits['flux_identity_relative']:raiseValueError('Независимое потокосцепление не совпадает')ifrow['energy_identity_relative_error']>limits['energy_identity_relative']:raiseValueError('Не выполнен энергетический интеграл')mo_close();mi_close()save_json(folder+'/'+case['id']+'-result.json',row)record['case_outputs'][case['id']]={name:sha(folder+'/'+name)fornameinos.listdir(folder)ifname.startswith(case['id']+'.')orname.startswith(case['id']+'-')}save_json(folder+'/receipt.json',record);print('TVV_FIELD_CHECKED',case['id'])ifnotrows:raiseValueError('Не найдено задание расчёта')record['checks']={'cases':len(rows),'factory_validation':False,'mesh_convergence':False}finish(folder,record,'passed_field_identities_not_convergence')exceptExceptionaserror:record['error']=str(error);save_json(folder+'/results.json',rows);finish(folder,record,'failed');raiseprint('TVV_FIELDS_RESULT',folder,record['status'])
Самостоятельная работа
Пересчитайте \lambda A для состояния 2 из двух ветвей и затем Σicλc. Покажите алгебраически, почему среднее \lambda ветвей сохраняет мощностную нормировку.
Критерий выполнения: Соблюдены определения, единицы, условия и критерии занятия. Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
Пояснения и типичные ошибкиКак проверить потокосцепление FEMM независимо от команды свойства цепи?
Для каждой ветви — сумма интегралов A_z по активным сторонам, затем фазное среднее и сравнение с цепями.
Какие ограничения необходимо сохранить в выводе?
Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Схема равных токов ветвей не моделирует их циркулирующие токи. Сильнополевое продолжение B(H) остаётся допущением.
На что обратить внимание
Повторно умножить объёмный интеграл на длину.
Потерять знак возвращающей стороны.
Забыть сброс выбора блоков или обмотку возбуждения в энергетической сумме.