Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...