Пример 2. Оптимизация размеров поперечного сечения магнитоэлектрической синхронной машины
Составим Lua-сценарий для формирования конечно-элементной модели поперечного сечения трехфазной четырехполюсной синхронной машины небольшой мощности с поверхностными постоянными магнитами на роторе. Начало программы – такое же, как в предыдущем примере:
create("c:\\MyFEMMfiles\\PMSM_cross_section.fem",0) mi_saveas("c:\\MyFEMMfiles\\PMSM_cross_section.fem") mi_probdef(0,"millimeters","planar",1e-8,1,20)
Для записи результатов откроем два текстовых файла – один для данных о распределении индукции в воздушном зазоре и второй – для значений электромагнитного момента
outfile_1 = "c:\\MyFEMMfiles\\PMSM_res_Bdlt.txt" handle=openfile(outfile_1,"w") outfile_2 = "c:\\MyFEMMfiles\\PMSM_res_Trq.txt" handle=openfile(outfile_2,"w")
При моделировании полного поперечного сечения машины в качестве граничных условий нам понадобится только однородное условие Дирихле, которое в этом случае задается на внешней границе области задачи (или на всех внешних границах, если область задачи не является односвязной)
mi_addboundprop("outer",0,0,0,0,0,0,0,0,0)
Кроме воздуха зададим материал сердечников статора и ротора, в качестве которого для начала выберем сталь с относительной магнитной проницаемостью, равной 1000.
mi_addmaterial("air") mi_addmaterial("iron_1000",1000,1000)
В качестве материала постоянных магнитов выберем сплав NdFeB с максимальной энергией 40 МГсЭ (свойства этого материала приведены в библиотеке материалов программы FEMM).
mi_addmaterial("PM",1.049,1.049,979000,0,0,0.667,0)
Плотности тока на участках модели, соответствующих начальным и конечным сторонам катушечных сторон фаз обмотки статора, зададим вначале для момента времени, в который ток фазы A-X положителен и равен амплитудному значению:
JA=2 mi_addmaterial("A",1,1,0,JA) mi_addmaterial("X",1,1,0,-JA) mi_addmaterial("B",1,1,0,-JA*0.5) mi_addmaterial("Y",1,1,0,JA*0.5) mi_addmaterial("C",1,1,0,-JA*0.5) mi_addmaterial("Z",1,1,0,JA*0.5)
Блок исходных данных (размеры даны в мм)
pi=3.14159 -- число пазов статора Z1 = 24 -- радиус расточки статора rstat=100 --ширина зубца статора bz=7 -- глубина паза статора hz=15 -- угол, соответствующий одному зубцовому делению статора alphaz=360/Z1 --угол, соответствующий ширине одного зубца статора alphabz=(bz/(pi*rstat))*180 -- угол, соответствующий одному пазу статора alphasl=alphaz-alphabz -- раскрытие (шлиц) паза статора bs=5 -- глубина шлица паза статора hs=1 --высота клиновой зоны паза статора hw=4.5 --толщина ярма статора ha=hz*0.8 --воздушный зазор airgap=1 -- толщина магнитов ротора hPM=10 -- толщина втулки ротора hhub=15 -- угол, соответствующий ширине магнита alphaPM=80
При построении окружности расточки статора следует задать достаточно малый угловой размер сегментов, из которых составляется дуга (последний параметр в соманде mi_addarc)
mi_addnode(0,0) mi_addnode(-rstat,0) mi_addnode(rstat,0) mi_addarc(rstat,0,-rstat,0,180,1) mi_addarc(-rstat,0,rstat,0,180,1)
В рассматриваемом здесь примере при графических построениях целесообразно предварительно вычислить некоторые характерные углы и координаты некоторых характерных точек поперечного сечения машины (см. рис. 5.3.)
dlt0=(bz*0.5)/sin(alphaz*0.5) x2=-rstat-hs y2=-bs*0.5 x3=x2-hw y3=-((-x3-dlt0)*tan(alphaz*0.5)) x4=-(rstat+hz)*cos(alphaz*0.5) y4=-((-x4-dlt0)*tan(alphaz*0.5)) x5=x4 y5=-y4 x6=x3 y6=-y3 x7=x2 y7=-y2 Рис. 5.5. К расчету координат характерных узлов поперечного сечения
mi_addnode(x2,y2) mi_addnode(x3,y3) mi_addnode(x4,y4) mi_addnode(x5,y5) mi_addnode(x6,y6) mi_addnode(x7,y7)
mi_addsegment(x2,y2,x3,y3) mi_addsegment(x3,y3,x4,y4) mi_addarc(x5,y5,x4,y4,alphasl,1) mi_addsegment(x5,y5,x6,y6) mi_addsegment(x6,y6,x7,y7)
mi_selectnode(x2,y2) mi_selectnode(x7,y7) mi_copytranslate(hs*2,0,1,0)
mi_addsegment(x2,y2,x2+hs*2,y2) mi_addsegment(x7,y7,x7+hs*2,y7) mi_selectnode(x2+hs*2,y2) mi_selectnode(x7+hs*2,y7) mi_deleteselected()
mi_addarc(x7,y7,x2,y2,alphasl,1)
mi_selectnode(-rstat,0) mi_deleteselected()
mi_zoomnatural()
Последняя команда позволяет посмотреть результаты выполненных построений. Для временной остановки процесса формирования модели здесь можно воспользоваться командой pause. Убедившись в том, что паз построен правильно, его контуры следует скопировать (Z 1 -1) раз:
mi_selectnode(-rstat,-bs*0.5) mi_copyrotate(0,0,-alphaz,1,0)
mi_selectarcsegment(rstat,0) mi_deleteselected() mi_selectarcsegment(rstat,0) mi_deleteselected()
mi_selectsegment(-rstat,-bs*0.5) mi_selectsegment(x2,y2) mi_selectsegment(x4,y4) mi_selectsegment(x5,y5) mi_selectsegment(x7,y7) mi_selectsegment(-rstat,bs*0.5) mi_copyrotate(0,0,-alphaz,Z1-1,1)
mi_selectarcsegment(x4,y4) mi_selectarcsegment(x2,y2) mi_selectarcsegment(-rstat,bs*0.5) mi_copyrotate(0,0,-alphaz,Z1-1,3)
При построении внешней окружности ярма размер образующих сегментов следует увеличить с тем, чтобы конечно-элементная сетка не была чрезмерно подробной там, где в этом нет необходимости.
mi_addnode(-rstat-hz-ha,0) mi_addnode(rstat+hz+ha,0) mi_addarc(rstat+hz+ha,0,-rstat-hz-ha,0,180,5) mi_selectarcsegment(rstat+hz+ha,0) mi_setarcsegmentprop(5,“outer”) mi_copyrotate(0,0,180,1,3) mi_zoomnatural()
Закончим построение контуров блоков ротора и назначим граничное условие Дирихле на внутренней границе области задачи:
mi_addnode(-rstat+airgap,0) mi_addnode(rstat-airgap,0) mi_addnode(-rstat+airgap+hPM,0) mi_addnode(rstat-airgap-hPM,0) mi_addnode(-rstat+airgap+hPM+hhub,0) mi_addnode(rstat-airgap-hPM-hhub,0)
mi_addarc(-rstat+airgap,0,rstat-airgap,0,180,1) mi_addarc(rstat-airgap,0,-rstat+airgap,0,180,1) mi_addarc(-rstat+airgap+hPM,0,rstat-airgap-hPM,0,180,5) mi_addarc(rstat-airgap-hPM,0,-rstat+airgap+hPM,0,180,5) mi_addarc(-rstat+airgap+hPM+hhub,0,rstat-airgap-hPM- hhub,0,180,5)
mi_selectarcsegment(-rstat+airgap+hPM+hhub,0) mi_setarcsegmentprop(5,“outer”,0,1) mi_copyrotate(0,0,180,1,3) mi_zoomnatural()
Назначение имен блоков. Для наглядности в рассматриваемом примере эта часть сценария написана для конкретных значений чисел q и Z 1, равных 2 и 24. Формализовать эту часть программы можно, организовав соответствующие циклы по пронумерованным именам блоков и углу поворота alphaz*n.
mi_addblocklabel(-rstat-hz*0.5,0) mi_selectlabel(-rstat-hz*0.5,0) mi_setblockprop(“A”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*2),(rstat+hz*0.5)*sin(alphaz*2)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*2),(rstat+hz*0.5)*sin(alphaz*2)) mi_setblockprop(“Z”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*4),(rstat+hz*0.5)*sin(alphaz*4)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*4),(rstat+hz*0.5)*sin(alphaz*4)) mi_setblockprop(“B”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*6),(rstat+hz*0.5)*sin(alphaz*6)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*6),(rstat+hz*0.5)*sin(alphaz*6)) mi_setblockprop(“X”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*8),(rstat+hz*0.5)*sin(alphaz*8)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*8),(rstat+hz*0.5)*sin(alphaz*8))
mi_setblockprop(“C”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*10),(rstat+hz*0.5)*sin(alphaz*10)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*10),(rstat+hz*0.5)*sin(alphaz*10)) mi_setblockprop(“Y”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*12),(rstat+hz*0.5)*sin(alphaz*12)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*12),(rstat+hz*0.5)*sin(alphaz*12)) mi_setblockprop(“A”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*14),(rstat+hz*0.5)*sin(alphaz*14)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*14),(rstat+hz*0.5)*sin(alphaz*14)) mi_setblockprop(“Z”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*16),(rstat+hz*0.5)*sin(alphaz*16)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*16),(rstat+hz*0.5)*sin(alphaz*16)) mi_setblockprop(“B”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*18),(rstat+hz*0.5)*sin(alphaz*18)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*18),(rstat+hz*0.5)*sin(alphaz*18)) mi_setblockprop(“X”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*20),(rstat+hz*0.5)*sin(alphaz*20)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*20),(rstat+hz*0.5)*sin(alphaz*20)) mi_setblockprop(“C”,0,1) mi_copyrotate(0,0,-alphaz,1,2)
mi_addblocklabel((-rstat-hz*0.5)*cos(alphaz*22),(rstat+hz*0.5)*sin(alphaz*22)) mi_selectlabel((-rstat-hz*0.5)*cos(alphaz*22),(rstat+hz*0.5)*sin(alphaz*22)) mi_setblockprop(“Y”,0,1) mi_copyrotate(0,0,-alphaz,1,2) mi_zoomnatural()
Назначение имен блоков ротора:
mi_addblocklabel((-rstat-hz*0.5-ha),0) mi_selectlabel((-rstat-hz*0.5-ha),0) mi_setblockprop(“iron_1000”,0,1) mi_addsegment(-rstat+airgap,0,-rstat+airgap+hPM,0) mi_addsegment(rstat-airgap,0,rstat-airgap-hPM,0) mi_selectsegment(-rstat+airgap,0) mi_selectsegment(rstat-airgap,0) mi_copyrotate(0,0,-alphaPM,1,1) mi_selectsegment(-rstat+airgap,0) mi_selectsegment(rstat-airgap,0) mi_selectsegment((-rstat+airgap)*cos(alphaPM),(rstat-airgap)*sin(alphaPM)) mi_selectsegment((rstat-airgap)*cos(alphaPM),(rstat-airgap)*(-sin(alphaPM))) mi_copyrotate(0,0,-90,1,1)
V1=(-rstat+airgap+hPM*0.5) mi_addblocklabel(V1*cos(alphaPM*0.5),(-V1)*sin(alphaPM*0.5)) mi_selectlabel(V1*cos(alphaPM*0.5),(-V1)*sin(alphaPM*0.5)) mi_setblockprop(“PM”,0,1,0,140,1,0) mi_copyrotate(0,0,180,1,2) V2=alphaPM*0.5+90 mi_addblocklabel(V1*cos(V2),(-V1)*sin(V2)) mi_selectlabel(V1*cos(V2),(-V1)*sin(V2)) mi_setblockprop(“PM”,0,1,0,140-90+180,1,0) mi_copyrotate(0,0,180,1,2) V3=(90-alphaPM)*0.5 mi_addblocklabel(V1*cos(V3),(-V1)*sin(-V3)) mi_selectlabel(V1*cos(V3),(-V1)*sin(-V3)) mi_setblockprop(“air”,0,1,0,0,1,0) mi_copyrotate(0,0,90,3,2) V4=V1+hhub mi_addblocklabel(V4,0) mi_selectlabel(V4,0) mi_setblockprop(“iron_1000”,0,1,0,0,1,0) mi_clearselected() mi_addblocklabel(-rstat-airgap*0.5,0) mi_selectlabel(-rstat-airgap*0.5,0) mi_setblockprop(“air”,0,1) mi_clearselected() mi_addblocklabel(-rstat*0.3,0) mi_selectlabel(-rstat*0.3,0) mi_setblockprop(“air”) mi_clearselected() mi_zoomnatural()
Перед решением полезно убедиться в правильности формирования модели визуально и, проверив свойства блоков и границ.
Рис. 5.6. Сформированная модель поперечного сечения машины
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|