Расчётная лабораторная работа · Восстановление электрических характеристик синхронного генератора
Последовательность решения, отчёт и критерии результата
От геометрии и обмоток переходят к потокосцеплениям и ЭДС, затем к характеристикам ХХ, КЗ, нагрузки и регулирования. Эти характеристики определяют требуемое возбуждение и допустимый электрический режим.
Результат получают из наблюдаемых величин и проверяют в условиях данного практикума.
Последовательность решения
Обосновать постановку и способ измерения. Для характеристики запишите, что фиксировано: скорость, возбуждение, напряжение, нагрузка или мощность. Скоростная ЭДС восстанавливается из пространственного потокосцепления.
Разбор учебного результата. Проверьте уравнение выбранного генераторного режима и знаки мощности до построения серии.
Угловая характеристика при заданной сети. Выполните действия практикума по его исходной таблице. Методика и учебные файлы доступны. Проверки относятся к указанным в занятии примерам и версиям; заводская точность и завершённость всего численного цикла не заявляются.
Оформление наблюдений. Возбуждение, скорость, фазные потокосцепления, ЭДС и согласованные токи/напряжения в объёме конкретного опыта; независимые условия каждой строки.
Как обосновать результат
Точность и расхождения. Уточняйте шаг возбуждения или угла отдельно от сетки. При КЗ оценивайте абсолютное остаточное напряжение и его отношение к ненулевому масштабу режима.
Вывод для устройства
Свяжите полученную характеристику с выбором возбуждения, регулированием напряжения или допустимым режимом; укажите, какие проверки нужны для полной машины.
Границы вывода. Каждая характеристика требует своих независимых условий и скорости. Двумерный срез, заданные токи и статическое поле не подтверждают автоматически режим на сеть, устойчивость и полную мощность реального генератора.
Теория и вывод формул
Как изменяются мощность и реактивная нагрузка при заданном угле напряжения?
Механический и электрический углы; \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
Отдаваемые активная и реактивная мощности; момент против часовой стрелки
Вт; вар; Н·м
От полевой задачи к заданному электрическому режиму
Ротор физически поворачивается на \theta k=2\pi k/N. Для каждой позиции фазные токи меняются вместе с преобразованием Парка так, чтобы i_d, i_q, If оставались заданными. Полная область сохраняется; сокращение угла до пазового периода не предполагается. Сначала усредняются потокосцепления в d–q, затем вычисляется основная установившаяся электрическая составляющая. Пульсации отдельно сохраняются в угловых решениях.
Вектор q направлен на +90^\circ от d; строка q преобразования Парка содержит -\sin. Токи статора положительны внутрь машины. Поэтому отдаваемая генератором мощность имеет знак минус относительно пассивной мощности u\cdot i. \Omega =\omega =314{,}1592654 рад/с для одной пары полюсов. Положительный электромагнитный момент направлен против часовой стрелки.
Сопротивление фазы 0,001335 Ом относится к документированному входу при 15 °C. В этом учебном расчёте используется только активное поперечное сечение. Лобовая индуктивность исключена явно: формулы описывают данную 2D-модель и не являются заводской характеристикой выводов машины. Подстановка неизвестного «типового» лобового рассеяния запрещена.
Для серий используется отдельно проверенная пазовая катушка ротора с семью витками и явными сеточными ограничениями. До расчётов сравниваются её четыре токовых состояния с моделью, имеющей 252 отдельные стороны, и три сетки. Ускоренный построитель build_series.py не заменяет подробный построитель первых занятий.
Усреднение выполняется после перехода в вращающуюся систему. Среднее фазной переменной полного периода почти равно нулю и не заменяет эту операцию.
Это проверяемое тождество установившейся основной составляющей. Отдельно сравнивается T_{\mathrm{dq}} со средним моментом Максвелла; совпадение не предполагается для одного углового снимка.
Задаются модуль напряжения 20 кВ, If=1500 А и \delta =0…60° с шагом 10^\circ. Неизвестны обе составляющие тока. Это связь машины с идеальной симметричной сетью основной частоты в рамках активного сечения; регулирование возбуждения отсутствует.
Угол \delta=atan2(ud,uq) положителен при повороте от оси q к оси d, то есть по часовой стрелке: ось q направлена на +90^\circ от d. Это отдельное соглашение об угле нагрузки; механический угол ротора положителен против часовой стрелки. Формулу Pmax \sin \delta здесь не подставляют вместо поля: насыщение и явнополюсность могут изменить форму. Рассчитанный диапазон 0…60° сам по себе не устанавливает полный предел статической устойчивости.
Переход от линейного RMS-напряжения к амплитудным d–q-компонентам.
Одна оценка функции невязки включает N самостоятельных нелинейных решений. series_session.py создаёт и кэширует только собственную геометрию при данном угле; mi_modifycircprop меняет ток каждой цепи. Перед решением сохраняется новый FEM, документ закрывается и открывается заново. Из mo_getcircuitproperties извлекаются реальные токи и потокосцепления; равные параллельные ветви дают среднее фазное потокосцепление.
Неизвестные нормируются ширинами разрешённых интервалов. Начальный якобиан берётся конечной разностью с шагом 0,002 нормированной координаты, далее используется обновление Бройдена. Шаг ограничен 0,15 ширины интервала; при росте невязки уменьшается вдвое. Ни выход за границы, ни исчерпание итераций не признаются найденным режимом.
В latest-search.json и results.json сохраняются неизвестные, физические невязки после нормировки и их максимум. Отказ поиска означает лишь, что данный алгоритм из выбранной начальной точки не подтвердил режим в указанных границах. Он не доказывает физическую невозможность режима.
Продолжение с TVV_RESUME_DIR сверяет версии программ, входы и SHA-256 сохранённых FEM/ANS/JSON. Повторное использование результата с другими токами или углом запрещено. Обычный запуск всегда создаёт новый каталог.
Нормировка неизвестных не меняет размерность физических x; ток возбуждения остаётся в амперах, угол — в радианах.
Масштабы каждой компоненты заданы в файле characteristic-plan*.json точного snapshot соответствующей серии. Малое значение одной компоненты не компенсирует большую другую.
Для средней опубликованной точки средние потокосцепления \lambda d=45.04229359, \lambda q=-25.98467396 Вб·виток, токи i_d=-3596.369826, i_q=-5029.26159 А. Подстановка в ud=0{,}001335 i_d-314{,}1592654 \lambda q и uq=0{,}001335 i_q+314{,}1592654 \lambda d даёт ud=8159 В, uq=14140 В.
Максимальное нормированное изменение потокосцеплений в контрольной точке при удвоении числа углов: 75,02 × 10⁻⁶. Для компонент около нуля знаменатель ограничен 1 Вб·витком. Эта проверка относится к указанной контрольной точке, а не автоматически ко всем режимам всей машины.
Результаты относятся к точным снимкам программ внутри квитанции characteristic-00007. При дальнейшем изменении программы опубликованные доказательства не перезаписываются. Перед переносом чисел на новую версию требуется повторный расчёт.
Ограничения и происхождение методики
Учебная модель с документированными входами; заводская точность не заявляется.
Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
Таблица извлечена только после проверки всех хешей. Электрические соотношения выведены из выбранной нормировки Парка; чужая расчётная карта не использована.
Реестр формул и библиография в файлах занятия отделяют собственные выводы от доступных первоисточников. Недоступные тексты и текстовое распознавание PDF не объявлены полной визуальной проверкой.
Разобранный численный пример
Разбор учебного результата
Дано. ТВВ-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.
Ответ: Сохранённые полевые решения, журнал подбора, таблица и график угловая характеристика при заданной сети.
Проверка: Учебная модель с документированными входами; заводская точность не заявляется. Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
U = 19999.82 В; I = 1845.4799 А; P = 0.075697865 МВт; Q = 63.928677 Мвар
SI; токи d–q амплитудные
If = 1500 А; i_d = -2719.47 А; i_q = -1714.27 А
U = 20001.361 В; I = 2273.1323 А; P = 52.903124 МВт; Q = 58.332322 Мвар
SI; токи d–q амплитудные
If = 1500 А; i_d = -3045.67 А; i_q = -3398.91 А
U = 19999.965 В; I = 3227.1302 А; P = 103.73152 МВт; Q = 41.676972 Мвар
SI; токи d–q амплитудные
If = 1500 А; i_d = -3596.37 А; i_q = -5029.26 А
U = 19997.759 В; I = 4371.9188 А; P = 150.71046 МВт; Q = 14.752144 Мвар
SI; токи d–q амплитудные
If = 1500 А; i_d = -4382.81 А; i_q = -6571.54 А
U = 19996.723 В; I = 5585.4365 А; P = 192.29288 МВт; Q = -21.158983 Мвар
SI; токи d–q амплитудные
If = 1500 А; i_d = -5413.55 А; i_q = -7975.86 А
U = 19996.088 В; I = 6816.1901 А; P = 227.13976 МВт; Q = -64.329323 Мвар
SI; токи d–q амплитудные
If = 1500 А; i_d = -6675.87 А; i_q = -9174.09 А
U = 19997.108 В; I = 8022.818 А; P = 253.96958 МВт; Q = -112.76456 Мвар
SI; токи d–q амплитудные
Распакуйте самостоятельный комплект в чистый каталог. Сначала проверьте сравнение build_series.py с подробным построителем на четырёх токовых состояниях; затем откройте файл characteristic-plan*.json из snapshot выбранной семьи (имя указано в её квитанции) и прочитайте фиксированные величины.
В редакторе встроенного Python задайте TVV_ROOT как абсолютный путь и TVV_CHARACTERISTIC="angle". Выполните exec(open(TVV_ROOT+"/run_characteristics_v3.py").read(), globals()). Для точного повторения опубликованной версии используйте reproduce.py и snapshot из examples/checked-04/angle. Внешний 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_v3.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_v3.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-v3.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-v3');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)/max((v['P_generator_W']**2+v['Q_generator_var']**2)**.5,1e6)]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['external_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)/max((v['P_generator_W']**2+v['Q_generator_var']**2)**.5,1e6)],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=='external'andreference['I_phase_rms_A']andabs(refined['power_factor']-plan['power_factor'])>.001: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))
Самостоятельная работа
Вычислите локальный наклон \Delta P/\Delta \delta в рад/согласованных единицах для соседних точек. Укажите, каких данных и расчётов не хватает для анализа динамической устойчивости турбоагрегата.
Критерий выполнения: Соблюдены определения, единицы, условия и критерии занятия. Учебная модель с документированными входами; заводская точность не заявляется. Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
Пояснения и типичные ошибкиКакие ограничения необходимо сохранить в выводе?
Учебная модель с документированными входами; заводская точность не заявляется. Полный выпуск требует независимого аудита всех точек, файлов и границ применимости.
На что обратить внимание
Вместо угла напряжения изменять \beta при неизменном токе и назвать это той же характеристикой.
Объявить последнюю точку максимальной мощностью без поиска максимума.
Забыть, что найденные U/P относятся к оговорённому активному сечению без лобового рассеяния.