От постановки задачи к готовому решению
Машина со встроенными постоянными магнитами
Четыре встроенных магнитных участка с заданным направлением намагничивания.
Проверка учебной модели
Исходный учебный пример повторно рассчитан в FEMM 5 15 октября 2026 года. Его модель также построена и решена из учебной Python-программы. Результат проверки.
Проходите этапы по порядку. Файл каждого этапа содержит накопленное состояние модели: его можно открыть отдельно и продолжить с указанного шага. Названия материалов, цепей и файлов приведены по-русски; названия команд интерфейса FEMM сохранены для точного поиска в программе.
Числа в таблицах позволяют сверить результат на указанной сетке. Количество выведенных знаков не задаёт физическую точность модели; для силы и момента проверяйте сетку и устойчивость метода вычисления.
Файлы исходных 11 этапов
Итоговая модель FEMMСохранённое решение FEMMВоспроизведение итоговой модели во встроенном Python
Если нужен промежуточный результат построения, скачайте файл соответствующего этапа ниже.
Проверка сетки · 15 октября 2026 года
Сходимость момента и рекомендуемая сетка
Момент на выбранной сетке: −0,005569 Н·м. Число элементов: 2 334 964.
Размеры всех блоков уменьшены в 8 раз. В зазоре задано 0,04375 мм; дуги ограничены по соответствующей длине хорды, прямые сегменты также сгущены. Первая строка серии уже содержит более подробное разбиение дуг, чем исходные 11 этапов.
Модель с проверенной сеткойСохранённое решение FEMMПроверить момент в FEMM · PythonСеточная серия и угловые шаги · JSON
Этапы 1–11 ниже сохраняют исходную учебную сетку и относящиеся к ней снимки. Для проверки уточнённого момента используйте файлы этого раздела. Геометрия, материалы, токи и активная длина модели сохранены.


| Сетка | Размер блока в зазоре, мм | Элементов | WST, Н·м | Перемена WST |
|---|---|---|---|---|
| Сетка 1 | 0,35 | 89 636 | -0,005630365 | — |
| Сетка 2 | 0,175 | 232 314 | -0,005599997 | 0,542% |
| Сетка 3 | 0,0875 | 698 576 | -0,005577697 | 0,4% |
| Сетка 4 · выбрана | 0,04375 | 2 334 964 | -0,00556883 | 0,159% |
Критерии: две последние перемены взвешенного интеграла не более 1%; расхождения контурных оценок и производной коэнергии с ним не более 2%. Дополнительно проверяется устойчивость производной на соседних угловых шагах. Нижний абсолютный допуск — 0,00001 Н·м.
| Метод | Момент, Н·м | Условия проверки |
|---|---|---|
| Взвешенный интеграл Максвелла (WST) | -0,005569 | Интеграл 22; все области ротора, группа 2 |
| Контуры без сглаживания | -0,005584 … -0,005533 | Точное интегрирование кусочно-постоянного поля на трёх окружностях |
| Контуры со сглаживанием | -0,005574 … -0,005571 | Три радиуса; 46080 точек на каждой окружности |
| Производная коэнергии | -0,005632 … -0,005586 | Шаги: 1, 2^\circ |
Угловые шаги и производная коэнергии
Для каждого положительного и отрицательного угла выполнен отдельный полевой расчёт при неизменных токах. В знаменателе центральной разности использован механический угол в радианах. В таблице сохранены все проверенные шаги на выбранной сетке; слишком малый шаг может усиливать ошибку разности коэнергий.
| Шаг, град. | Производная, Н·м | Расхождение с WST | Проверка |
|---|---|---|---|
| 1 | -0,005586 | 0,308% | Принят |
| 2 | -0,005632 | 1,13% | Принят |
Проверено указанное положение ротора и заданные токи. Согласие методов относится к этой двумерной линейной модели; оно не оценивает влияние насыщения, концевых эффектов и отклонений реальной машины. Выведенные дополнительные цифры нужны для повторения расчёта.
Этап 1 из 11
Постановка задачи
- Создайте магнитную задачу через «Файл → Новая» (File → New → Magnetics Problem).
- В окне «Постановка задачи» (Problem Definition) выберите миллиметры, тип «плоскопараллельная» и частоту 0 Гц.
- Введите точность, минимальный угол сетки и остальные значения таблицы. В таблицах используется десятичная запятая; при вводе чисел в FEMM заменяйте её точкой.
- Поле файла предыдущего решения оставьте пустым. В осесимметричной задаче поле глубины не задаёт физическую длину: координаты обозначают радиус r и высоту z. В плоскопараллельной задаче глубина задаёт длину модели перпендикулярно плоскости чертежа.
| Параметр | Значение |
|---|---|
| Частота, Гц | 0 |
| Точность | 10 × 10⁻⁹ |
| Минимальный угол, {}^\circ | 25 |
| Умная сетка: 1 — включена | 1 |
| Глубина плоской задачи, мм | 80 |
| Единицы | миллиметры |
| Тип задачи | плоскопараллельная |
| Координаты | декартовы |
| Гармонический решатель: 0 — последовательные приближения | 0 |
| Предыдущее решение: 0 — отсутствует | 0 |
| Файл предыдущего решения | Не задан |
Сохранённое состояние этапа
Модель после шага 1Встроенный Python: шаг 1
Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 1: Постановка задачи
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 1. Модель неполная: переходите к следующему этапу, не запускайте решение.")

Этап 2 из 11
Материалы и характеристика B–H
- Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
- Откройте «Свойства → Материалы» (Properties → Materials) и последовательно создайте материалы из таблиц.
- Для каждого материала укажите обе относительные проницаемости, коэрцитивную силу, заданную объёмную плотность тока, проводимость и параметры шихтовки. Удельная электрическая проводимость вводится в МСм/м, а не в См/м.
- Если дана таблица B–H, включите нелинейную характеристику и внесите каждую пару: B в Тл, H в А/м. Числа не заменяются свойствами одноимённого материала из другой библиотеки.
- Список сохраняет все материалы исходника. Столбец использования показывает, какие из них действительно назначены областям данного варианта.
| Параметр | Значение |
|---|---|
| Назначен областям | Да |
| Относительная магнитная проницаемость по x/r | 1 |
| Относительная магнитная проницаемость по y/z | 1 |
| Коэрцитивная сила, А/м | 0 |
| Угол направления коэрцитивной силы, {}^\circ | 0 |
| Действительная часть плотности тока, МА/м² | 0 |
| Мнимая часть плотности тока, МА/м² | 0 |
| Удельная электрическая проводимость, МСм/м | 0 |
| Толщина листа, мм | 0 |
| Угол гистерезиса, {}^\circ | 0 |
| Угол гистерезисного запаздывания по x, {}^\circ | 0 |
| Угол гистерезисного запаздывания по y, {}^\circ | 0 |
| Тип: 0 — без шихтовки | 0 |
| Коэффициент заполнения | 1 |
| Число жил | 0 |
| Диаметр провода, мм | 0 |
| Параметр | Значение |
|---|---|
| Назначен областям | Да |
| Относительная магнитная проницаемость по x/r | 1 |
| Относительная магнитная проницаемость по y/z | 1 |
| Коэрцитивная сила, А/м | 0 |
| Угол направления коэрцитивной силы, {}^\circ | 0 |
| Действительная часть плотности тока, МА/м² | 0 |
| Мнимая часть плотности тока, МА/м² | 0 |
| Удельная электрическая проводимость, МСм/м | 0 |
| Толщина листа, мм | 0 |
| Угол гистерезиса, {}^\circ | 0 |
| Угол гистерезисного запаздывания по x, {}^\circ | 0 |
| Угол гистерезисного запаздывания по y, {}^\circ | 0 |
| Тип: 0 — без шихтовки | 0 |
| Коэффициент заполнения | 1 |
| Число жил | 0 |
| Диаметр провода, мм | 0 |
| Параметр | Значение |
|---|---|
| Назначен областям | Да |
| Относительная магнитная проницаемость по x/r | 1000 |
| Относительная магнитная проницаемость по y/z | 1000 |
| Коэрцитивная сила, А/м | 0 |
| Угол направления коэрцитивной силы, {}^\circ | 0 |
| Действительная часть плотности тока, МА/м² | 0 |
| Мнимая часть плотности тока, МА/м² | 0 |
| Удельная электрическая проводимость, МСм/м | 0 |
| Толщина листа, мм | 0 |
| Угол гистерезиса, {}^\circ | 0 |
| Угол гистерезисного запаздывания по x, {}^\circ | 0 |
| Угол гистерезисного запаздывания по y, {}^\circ | 0 |
| Тип: 0 — без шихтовки | 0 |
| Коэффициент заполнения | 1 |
| Число жил | 0 |
| Диаметр провода, мм | 0 |
| Параметр | Значение |
|---|---|
| Назначен областям | Нет, сохранён в списке исходника |
| Относительная магнитная проницаемость по x/r | 1 |
| Относительная магнитная проницаемость по y/z | 1 |
| Коэрцитивная сила, А/м | 0 |
| Угол направления коэрцитивной силы, {}^\circ | 0 |
| Действительная часть плотности тока, МА/м² | 0 |
| Мнимая часть плотности тока, МА/м² | 0 |
| Удельная электрическая проводимость, МСм/м | 0 |
| Толщина листа, мм | 0 |
| Угол гистерезиса, {}^\circ | 0 |
| Угол гистерезисного запаздывания по x, {}^\circ | 0 |
| Угол гистерезисного запаздывания по y, {}^\circ | 0 |
| Тип: 0 — без шихтовки | 0 |
| Коэффициент заполнения | 1 |
| Число жил | 0 |
| Диаметр провода, мм | 0 |
| B, Тл | H, А/м |
|---|---|
| 0 | 0 |
| 0,25 | 100 |
| 0,5 | 200 |
| 0,9 | 400 |
| 1,2 | 800 |
| 1,45 | 2000 |
| 1,6 | 5000 |
| 1,7 | 10000 |
| Параметр | Значение |
|---|---|
| Назначен областям | Да |
| Относительная магнитная проницаемость по x/r | 1,05 |
| Относительная магнитная проницаемость по y/z | 1,05 |
| Коэрцитивная сила, А/м | 909500 |
| Угол направления коэрцитивной силы, {}^\circ | 0 |
| Действительная часть плотности тока, МА/м² | 0 |
| Мнимая часть плотности тока, МА/м² | 0 |
| Удельная электрическая проводимость, МСм/м | 0 |
| Толщина листа, мм | 0 |
| Угол гистерезиса, {}^\circ | 0 |
| Угол гистерезисного запаздывания по x, {}^\circ | 0 |
| Угол гистерезисного запаздывания по y, {}^\circ | 0 |
| Тип: 0 — без шихтовки | 0 |
| Коэффициент заполнения | 1 |
| Число жил | 0 |
| Диаметр провода, мм | 0 |
Сохранённое состояние этапа
Модель после шага 2Встроенный Python: шаг 2
Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 2: Материалы и характеристика B–H
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 2. Модель неполная: переходите к следующему этапу, не запускайте решение.")

Этап 3 из 11
Цепи и токи возбуждения
- Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
- Откройте «Свойства → Цепи» (Properties → Circuits) и создайте каждую указанную цепь.
- Выберите последовательное соединение (Series), если в таблице стоит код 1; код 0 соответствует параллельному соединению. Число витков задаётся позже в метке каждой области.
- В этой магнитостатической задаче задайте действительную часть тока из таблицы; мнимая часть равна нулю. Цепи с нулевым током также создайте: они нужны для получения потокосцепления соответствующих обмоток.
- Это неподвижное токовое состояние. Скоростная ЭДС, коммутация и полный привод не возникают от одной карты поля; для них требуются описанные в курсе серии положений и внешние соотношения.
Широкую таблицу можно прокрутить по горизонтали.
| Цепь | Действительная часть тока, А | Мнимая часть тока, А | Тип |
|---|---|---|---|
| Фаза А | 1 | 0 | Последовательная (1) |
| Фаза В | 1 | 0 | Последовательная (1) |
| Фаза С | -2 | 0 | Последовательная (1) |
Сохранённое состояние этапа
Модель после шага 3Встроенный Python: шаг 3
Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 3: Цепи и токи возбуждения
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 3. Модель неполная: переходите к следующему этапу, не запускайте решение.")

Этап 4 из 11
Граничные условия
- Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
- В «Свойства → Граничные условия» (Properties → Boundary) создайте определения из таблиц.
- Тип 0 — заданный потенциал (Prescribed A); нулевые A_{0}, A_{1} и A_{2} дают A=0. Тип 5 — антипериодическое условие (Anti-periodic).
- На этом этапе условие только определено. Назначайте его конкретным отрезкам и дугам на этапе «Отрезки и дуги» по приведённым там таблицам.
- Имена созданных условий должны совпадать с именами в таблицах отрезков и дуг. Не назначайте внешнее граничное условие внутренним контурам, если это не указано в таблице.
| Параметр | Значение |
|---|---|
| Тип границы | 0 |
| A_{0} | 0 |
| A_{1} | 0 |
| A_{2} | 0 |
| Фаза, {}^\circ | 0 |
| Действительная часть коэффициента c_{0} | 0 |
| Мнимая часть коэффициента c_{0} | 0 |
| Действительная часть коэффициента c_{1} | 0 |
| Мнимая часть коэффициента c_{1} | 0 |
| Относительная магнитная проницаемость при малой глубине проникновения | 0 |
| Удельная электрическая проводимость для условия малой глубины проникновения | 0 |
| Внутренний угол, {}^\circ | 0 |
| Внешний угол, {}^\circ | 0 |
Сохранённое состояние этапа
Модель после шага 4Встроенный Python: шаг 4
Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 4: Граничные условия
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 4. Модель неполная: переходите к следующему этапу, не запускайте решение.")

Этап 5 из 11
Узлы и размеры геометрии
- Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
- Переключитесь в режим узлов. Создавайте точки в порядке строк таблицы, вводя указанные координаты. Номер строки служит ссылкой для последующего соединения точек; это не имя, которое нужно присвоить узлу в FEMM.
- Размеры заданы в миллиметрах. Очень малые координаты порядка 10⁻¹⁴ мм означают вычислительный нуль. Таблицы округлены для чтения; полный набор исходных чисел сохранён в приложенной модели и программе этапа.
- Пока присутствуют только точки. Контуры, материалы областей и токовые назначения ещё не завершены.
Широкую таблицу можно прокрутить по горизонтали.
| № узла | x или r, мм | y или z, мм | Группа |
|---|---|---|---|
| 0 | -170 | -170 | 0 |
| 1 | 170 | -170 | 0 |
| 2 | 170 | 170 | 0 |
| 3 | -170 | 170 | 0 |
| 4 | 60 | 0 | 0 |
| 5 | 59,55 | 7,312 | 0 |
| 6 | 55,23 | 23,44 | 0 |
| 7 | 47,92 | 36,11 | 0 |
| 8 | 36,11 | 47,92 | 0 |
| 9 | 23,44 | 55,23 | 0 |
| 10 | 7,312 | 59,55 | 0 |
| 11 | 0 | 60 | 0 |
| 12 | -7,312 | 59,55 | 0 |
| 13 | -23,44 | 55,23 | 0 |
| 14 | -36,11 | 47,92 | 0 |
| 15 | -47,92 | 36,11 | 0 |
| 16 | -55,23 | 23,44 | 0 |
| 17 | -59,55 | 7,312 | 0 |
| 18 | -60 | 0 | 0 |
| 19 | -59,55 | -7,312 | 0 |
| 20 | -55,23 | -23,44 | 0 |
| 21 | -47,92 | -36,11 | 0 |
| 22 | -36,11 | -47,92 | 0 |
| 23 | -23,44 | -55,23 | 0 |
| 24 | -7,312 | -59,55 | 0 |
| 25 | 0 | -60 | 0 |
| 26 | 7,312 | -59,55 | 0 |
| 27 | 23,44 | -55,23 | 0 |
| 28 | 36,11 | -47,92 | 0 |
| 29 | 47,92 | -36,11 | 0 |
| 30 | 55,23 | -23,44 | 0 |
| 31 | 59,55 | -7,312 | 0 |
| 32 | 100 | 0 | 0 |
| 33 | 99,25 | 12,19 | 0 |
| 34 | 92,05 | 39,07 | 0 |
| 35 | 79,86 | 60,18 | 0 |
| 36 | 60,18 | 79,86 | 0 |
| 37 | 39,07 | 92,05 | 0 |
| 38 | 12,19 | 99,25 | 0 |
| 39 | 0 | 100 | 0 |
| 40 | -12,19 | 99,25 | 0 |
| 41 | -39,07 | 92,05 | 0 |
| 42 | -60,18 | 79,86 | 0 |
| 43 | -79,86 | 60,18 | 0 |
| 44 | -92,05 | 39,07 | 0 |
| 45 | -99,25 | 12,19 | 0 |
| 46 | -100 | 0 | 0 |
| 47 | -99,25 | -12,19 | 0 |
| 48 | -92,05 | -39,07 | 0 |
| 49 | -79,86 | -60,18 | 0 |
| 50 | -60,18 | -79,86 | 0 |
| 51 | -39,07 | -92,05 | 0 |
| 52 | -12,19 | -99,25 | 0 |
| 53 | 0 | -100 | 0 |
| 54 | 12,19 | -99,25 | 0 |
| 55 | 39,07 | -92,05 | 0 |
| 56 | 60,18 | -79,86 | 0 |
| 57 | 79,86 | -60,18 | 0 |
| 58 | 92,05 | -39,07 | 0 |
| 59 | 99,25 | -12,19 | 0 |
| 60 | 84,37 | -10,36 | 0 |
| 61 | 85 | 0 | 0 |
| 62 | 84,37 | 10,36 | 0 |
| 63 | 78,24 | 33,21 | 0 |
| 64 | 67,88 | 51,15 | 0 |
| 65 | 51,15 | 67,88 | 0 |
| 66 | 33,21 | 78,24 | 0 |
| 67 | 10,36 | 84,37 | 0 |
| 68 | 0 | 85 | 0 |
| 69 | -10,36 | 84,37 | 0 |
| 70 | -33,21 | 78,24 | 0 |
| 71 | -51,15 | 67,88 | 0 |
| 72 | -67,88 | 51,15 | 0 |
| 73 | -78,24 | 33,21 | 0 |
| 74 | -84,37 | 10,36 | 0 |
| 75 | -85 | 0 | 0 |
| 76 | -84,37 | -10,36 | 0 |
| 77 | -78,24 | -33,21 | 0 |
| 78 | -67,88 | -51,15 | 0 |
| 79 | -51,15 | -67,88 | 0 |
| 80 | -33,21 | -78,24 | 0 |
| 81 | -10,36 | -84,37 | 0 |
| 82 | 0 | -85 | 0 |
| 83 | 10,36 | -84,37 | 0 |
| 84 | 33,21 | -78,24 | 0 |
| 85 | 51,15 | -67,88 | 0 |
| 86 | 67,88 | -51,15 | 0 |
| 87 | 78,24 | -33,21 | 0 |
| 88 | 18 | 0 | 2 |
| 89 | 17,87 | 2,194 | 2 |
| 90 | 16,57 | 7,033 | 2 |
| 91 | 14,38 | 10,83 | 2 |
| 92 | 10,83 | 14,38 | 2 |
| 93 | 7,033 | 16,57 | 2 |
| 94 | 2,194 | 17,87 | 2 |
| 95 | 0 | 18 | 2 |
| 96 | -2,194 | 17,87 | 2 |
| 97 | -7,033 | 16,57 | 2 |
| 98 | -10,83 | 14,38 | 2 |
| 99 | -14,38 | 10,83 | 2 |
| 100 | -16,57 | 7,033 | 2 |
| 101 | -17,87 | 2,194 | 2 |
| 102 | -18 | 0 | 2 |
| 103 | -17,87 | -2,194 | 2 |
| 104 | -16,57 | -7,033 | 2 |
| 105 | -14,38 | -10,83 | 2 |
| 106 | -10,83 | -14,38 | 2 |
| 107 | -7,033 | -16,57 | 2 |
| 108 | -2,194 | -17,87 | 2 |
| 109 | 0 | -18 | 2 |
| 110 | 2,194 | -17,87 | 2 |
| 111 | 7,033 | -16,57 | 2 |
| 112 | 10,83 | -14,38 | 2 |
| 113 | 14,38 | -10,83 | 2 |
| 114 | 16,57 | -7,033 | 2 |
| 115 | 17,87 | -2,194 | 2 |
| 116 | 58 | 0 | 2 |
| 117 | 57,57 | 7,068 | 2 |
| 118 | 53,39 | 22,66 | 2 |
| 119 | 46,32 | 34,91 | 2 |
| 120 | 34,91 | 46,32 | 2 |
| 121 | 22,66 | 53,39 | 2 |
| 122 | 7,068 | 57,57 | 2 |
| 123 | 0 | 58 | 2 |
| 124 | -7,068 | 57,57 | 2 |
| 125 | -22,66 | 53,39 | 2 |
| 126 | -34,91 | 46,32 | 2 |
| 127 | -46,32 | 34,91 | 2 |
| 128 | -53,39 | 22,66 | 2 |
| 129 | -57,57 | 7,068 | 2 |
| 130 | -58 | 0 | 2 |
| 131 | -57,57 | -7,068 | 2 |
| 132 | -53,39 | -22,66 | 2 |
| 133 | -46,32 | -34,91 | 2 |
| 134 | -34,91 | -46,32 | 2 |
| 135 | -22,66 | -53,39 | 2 |
| 136 | -7,068 | -57,57 | 2 |
| 137 | 0 | -58 | 2 |
| 138 | 7,068 | -57,57 | 2 |
| 139 | 22,66 | -53,39 | 2 |
| 140 | 34,91 | -46,32 | 2 |
| 141 | 46,32 | -34,91 | 2 |
| 142 | 53,39 | -22,66 | 2 |
| 143 | 57,57 | -7,068 | 2 |
| 144 | 43 | -11 | 2 |
| 145 | 47 | -11 | 2 |
| 146 | 47 | 11 | 2 |
| 147 | 43 | 11 | 2 |
| 148 | 11 | 43 | 2 |
| 149 | 11 | 47 | 2 |
| 150 | -11 | 47 | 2 |
| 151 | -11 | 43 | 2 |
| 152 | -43 | 11 | 2 |
| 153 | -47 | 11 | 2 |
| 154 | -47 | -11 | 2 |
| 155 | -43 | -11 | 2 |
| 156 | -11 | -43 | 2 |
| 157 | -11 | -47 | 2 |
| 158 | 11 | -47 | 2 |
| 159 | 11 | -43 | 2 |
Сохранённое состояние этапа
Модель после шага 5Встроенный Python: шаг 5
Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 5: Узлы и размеры геометрии
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
(-170, -170, 0),
(170, -170, 0),
(170, 170, 0),
(-170, 170, 0),
(60, 0, 0),
(59.552769098479317, 7.3121606043088487, 0),
(55.230291207146422, 23.443867709356425, 0),
(47.918130602837572, 36.108901389122899, 0),
(36.108901389122906, 47.918130602837572, 0),
(23.443867709356422, 55.230291207146422, 0),
(7.3121606043088496, 59.552769098479317, 0),
(3.6738190614671318e-15, 60, 0),
(-7.3121606043088416, 59.552769098479324, 0),
(-23.443867709356425, 55.230291207146415, 0),
(-36.108901389122906, 47.918130602837564, 0),
(-47.918130602837579, 36.108901389122892, 0),
(-55.230291207146422, 23.443867709356425, 0),
(-59.552769098479317, 7.3121606043088523, 0),
(-60, 7.3476381229342635e-15, 0),
(-59.552769098479324, -7.312160604308839, 0),
(-55.230291207146422, -23.443867709356415, 0),
(-47.918130602837572, -36.108901389122906, 0),
(-36.108901389122899, -47.918130602837572, 0),
(-23.443867709356429, -55.230291207146415, 0),
(-7.3121606043088301, -59.552769098479324, 0),
(-1.1021457184401395e-14, -60, 0),
(7.3121606043088612, -59.552769098479317, 0),
(23.443867709356411, -55.230291207146429, 0),
(36.108901389122877, -47.918130602837586, 0),
(47.918130602837572, -36.108901389122899, 0),
(55.230291207146415, -23.443867709356432, 0),
(59.552769098479324, -7.3121606043088336, 0),
(100, 0, 0),
(99.254615164132204, 12.186934340514748, 0),
(92.050485345244041, 39.07311284892738, 0),
(79.863551004729288, 60.181502315204824, 0),
(60.181502315204838, 79.863551004729288, 0),
(39.073112848927373, 92.050485345244041, 0),
(12.18693434051475, 99.254615164132204, 0),
(6.1230317691118863e-15, 100, 0),
(-12.186934340514737, 99.254615164132204, 0),
(-39.07311284892738, 92.050485345244027, 0),
(-60.181502315204838, 79.863551004729274, 0),
(-79.863551004729288, 60.181502315204817, 0),
(-92.050485345244041, 39.07311284892738, 0),
(-99.254615164132204, 12.186934340514755, 0),
(-100, 1.2246063538223773e-14, 0),
(-99.254615164132204, -12.18693434051473, 0),
(-92.050485345244041, -39.073112848927352, 0),
(-79.863551004729288, -60.181502315204838, 0),
(-60.181502315204824, -79.863551004729288, 0),
(-39.07311284892738, -92.050485345244027, 0),
(-12.186934340514718, -99.254615164132204, 0),
(-1.8369095307335659e-14, -100, 0),
(12.186934340514769, -99.254615164132204, 0),
(39.073112848927352, -92.050485345244056, 0),
(60.181502315204796, -79.863551004729302, 0),
(79.863551004729288, -60.181502315204824, 0),
(92.050485345244027, -39.073112848927387, 0),
(99.254615164132204, -12.186934340514723, 0),
(84.366422889512378, -10.358894189437514, 0),
(85, -2.0818308014980413e-14, 0),
(84.366422889512364, 10.358894189437548, 0),
(78.242912543457436, 33.212145921588274, 0),
(67.884018354019886, 51.154276967924105, 0),
(51.154276967924112, 67.884018354019886, 0),
(33.212145921588267, 78.242912543457436, 0),
(10.358894189437537, 84.366422889512364, 0),
(5.2045770037451033e-15, 85, 0),
(-10.358894189437526, 84.366422889512378, 0),
(-33.212145921588274, 78.242912543457422, 0),
(-51.154276967924112, 67.884018354019886, 0),
(-67.884018354019901, 51.154276967924091, 0),
(-78.242912543457436, 33.212145921588274, 0),
(-84.366422889512364, 10.358894189437541, 0),
(-85, 1.0409154007490207e-14, 0),
(-84.366422889512378, -10.358894189437521, 0),
(-78.242912543457436, -33.212145921588252, 0),
(-67.884018354019886, -51.154276967924112, 0),
(-51.154276967924105, -67.884018354019886, 0),
(-33.212145921588274, -78.242912543457422, 0),
(-10.35889418943751, -84.366422889512378, 0),
(-1.561373101123531e-14, -85, 0),
(10.358894189437553, -84.366422889512364, 0),
(33.212145921588245, -78.242912543457436, 0),
(51.154276967924076, -67.884018354019915, 0),
(67.884018354019886, -51.154276967924105, 0),
(78.242912543457422, -33.212145921588281, 0),
(18, 0, 2),
(17.865830729543795, 2.1936481812926547, 2),
(16.569087362143925, 7.0331603128069275, 2),
(14.37543918085127, 10.832670416736869, 2),
(10.832670416736871, 14.37543918085127, 2),
(7.0331603128069267, 16.569087362143925, 2),
(2.1936481812926547, 17.865830729543795, 2),
(1.1021457184401395e-15, 18, 2),
(-2.1936481812926525, 17.865830729543799, 2),
(-7.0331603128069275, 16.569087362143925, 2),
(-10.832670416736871, 14.375439180851268, 2),
(-14.375439180851274, 10.832670416736867, 2),
(-16.569087362143925, 7.0331603128069275, 2),
(-17.865830729543795, 2.193648181292656, 2),
(-18, 2.2042914368802791e-15, 2),
(-17.865830729543799, -2.1936481812926516, 2),
(-16.569087362143925, -7.033160312806924, 2),
(-14.37543918085127, -10.832670416736871, 2),
(-10.832670416736869, -14.37543918085127, 2),
(-7.0331603128069293, -16.569087362143925, 2),
(-2.1936481812926489, -17.865830729543799, 2),
(-3.3064371553204186e-15, -18, 2),
(2.1936481812926583, -17.865830729543795, 2),
(7.0331603128069231, -16.569087362143929, 2),
(10.832670416736862, -14.375439180851275, 2),
(14.37543918085127, -10.832670416736869, 2),
(16.569087362143925, -7.0331603128069302, 2),
(17.865830729543799, -2.1936481812926503, 2),
(58, 0, 2),
(57.567676795196675, 7.0684219174985534, 2),
(53.389281500241545, 22.662405452377879, 2),
(46.320859582742983, 34.9052713428188, 2),
(34.905271342818807, 46.320859582742983, 2),
(22.662405452377875, 53.389281500241545, 2),
(7.0684219174985543, 57.567676795196675, 2),
(3.551358426084894e-15, 58, 2),
(-7.0684219174985472, 57.567676795196682, 2),
(-22.662405452377879, 53.389281500241538, 2),
(-34.905271342818807, 46.320859582742976, 2),
(-46.32085958274299, 34.905271342818793, 2),
(-53.389281500241545, 22.662405452377879, 2),
(-57.567676795196675, 7.0684219174985579, 2),
(-58, 7.1027168521697881e-15, 2),
(-57.567676795196682, -7.0684219174985436, 2),
(-53.389281500241545, -22.662405452377865, 2),
(-46.320859582742983, -34.905271342818807, 2),
(-34.9052713428188, -46.320859582742983, 2),
(-22.662405452377882, -53.389281500241538, 2),
(-7.0684219174985357, -57.567676795196682, 2),
(-1.0654075278254682e-14, -58, 2),
(7.0684219174985659, -57.567676795196675, 2),
(22.662405452377861, -53.389281500241552, 2),
(34.905271342818779, -46.320859582742997, 2),
(46.320859582742983, -34.9052713428188, 2),
(53.389281500241538, -22.662405452377886, 2),
(57.567676795196682, -7.0684219174985392, 2),
(43, -11, 2),
(47, -11, 2),
(47, 11, 2),
(43, 11, 2),
(11.000000000000002, 43, 2),
(11.000000000000004, 47, 2),
(-10.999999999999996, 47, 2),
(-10.999999999999998, 43, 2),
(-43, 11.000000000000005, 2),
(-47, 11.000000000000005, 2),
(-47, -10.999999999999995, 2),
(-43, -10.999999999999995, 2),
(-11.000000000000007, -43, 2),
(-11.000000000000009, -47, 2),
(10.999999999999991, -47, 2),
(10.999999999999993, -43, 2),
]
for x, y, group in _nodes:
mi_addnode(x, y)
if group:
mi_selectnode(x, y)
mi_setnodeprop('', group)
mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 5. Модель неполная: переходите к следующему этапу, не запускайте решение.")

Этап 6 из 11
Отрезки и дуги
- Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
- В режиме отрезков соедините пары узлов из первой таблицы. Координаты каждого конца найдите по номеру узла в таблице предыдущего этапа; каждая строка задаёт отдельный отрезок.
- В режиме дуг соедините пары узлов из второй таблицы. Угол отсчитывается от начального узла к конечному против часовой стрелки. Создавайте именно дуги, сохраняя заданный угол.
- Выделите каждый граничный отрезок или дугу и назначьте указанное условие через свойства объекта. Сохраните номера групп.
- Геометрия включает внешнюю воздушную область. На данном этапе ограничения сетки предварительные; точные ограничения будут восстановлены на шаге 9.
Широкую таблицу можно прокрутить по горизонтали.
| № | Начальный узел | Конечный узел | Граница | Группа |
|---|---|---|---|---|
| 0 | 0 | 1 | Нулевой потенциал | 0 |
| 1 | 1 | 2 | Нулевой потенциал | 0 |
| 2 | 2 | 3 | Нулевой потенциал | 0 |
| 3 | 3 | 0 | Нулевой потенциал | 0 |
| 4 | 31 | 60 | Нет | 0 |
| 5 | 5 | 62 | Нет | 0 |
| 6 | 6 | 63 | Нет | 0 |
| 7 | 7 | 64 | Нет | 0 |
| 8 | 8 | 65 | Нет | 0 |
| 9 | 9 | 66 | Нет | 0 |
| 10 | 10 | 67 | Нет | 0 |
| 11 | 12 | 69 | Нет | 0 |
| 12 | 13 | 70 | Нет | 0 |
| 13 | 14 | 71 | Нет | 0 |
| 14 | 15 | 72 | Нет | 0 |
| 15 | 16 | 73 | Нет | 0 |
| 16 | 17 | 74 | Нет | 0 |
| 17 | 19 | 76 | Нет | 0 |
| 18 | 20 | 77 | Нет | 0 |
| 19 | 21 | 78 | Нет | 0 |
| 20 | 22 | 79 | Нет | 0 |
| 21 | 23 | 80 | Нет | 0 |
| 22 | 24 | 81 | Нет | 0 |
| 23 | 26 | 83 | Нет | 0 |
| 24 | 27 | 84 | Нет | 0 |
| 25 | 28 | 85 | Нет | 0 |
| 26 | 29 | 86 | Нет | 0 |
| 27 | 30 | 87 | Нет | 0 |
| 28 | 144 | 145 | Нет | 2 |
| 29 | 145 | 146 | Нет | 2 |
| 30 | 146 | 147 | Нет | 2 |
| 31 | 147 | 144 | Нет | 2 |
| 32 | 148 | 149 | Нет | 2 |
| 33 | 149 | 150 | Нет | 2 |
| 34 | 150 | 151 | Нет | 2 |
| 35 | 151 | 148 | Нет | 2 |
| 36 | 152 | 153 | Нет | 2 |
| 37 | 153 | 154 | Нет | 2 |
| 38 | 154 | 155 | Нет | 2 |
| 39 | 155 | 152 | Нет | 2 |
| 40 | 156 | 157 | Нет | 2 |
| 41 | 157 | 158 | Нет | 2 |
| 42 | 158 | 159 | Нет | 2 |
| 43 | 159 | 156 | Нет | 2 |
Широкую таблицу можно прокрутить по горизонтали.
| № | Начальный узел | Конечный узел | Угол дуги, {}^\circ | Граница | Группа |
|---|---|---|---|---|---|
| 0 | 4 | 5 | 7 | Нет | 0 |
| 1 | 5 | 6 | 16 | Нет | 0 |
| 2 | 6 | 7 | 14 | Нет | 0 |
| 3 | 7 | 8 | 16 | Нет | 0 |
| 4 | 8 | 9 | 14 | Нет | 0 |
| 5 | 9 | 10 | 16 | Нет | 0 |
| 6 | 10 | 11 | 7 | Нет | 0 |
| 7 | 11 | 12 | 7 | Нет | 0 |
| 8 | 12 | 13 | 16 | Нет | 0 |
| 9 | 13 | 14 | 14 | Нет | 0 |
| 10 | 14 | 15 | 16 | Нет | 0 |
| 11 | 15 | 16 | 14 | Нет | 0 |
| 12 | 16 | 17 | 16 | Нет | 0 |
| 13 | 17 | 18 | 7 | Нет | 0 |
| 14 | 18 | 19 | 7 | Нет | 0 |
| 15 | 19 | 20 | 16 | Нет | 0 |
| 16 | 20 | 21 | 14 | Нет | 0 |
| 17 | 21 | 22 | 16 | Нет | 0 |
| 18 | 22 | 23 | 14 | Нет | 0 |
| 19 | 23 | 24 | 16 | Нет | 0 |
| 20 | 24 | 25 | 7 | Нет | 0 |
| 21 | 25 | 26 | 7 | Нет | 0 |
| 22 | 26 | 27 | 16 | Нет | 0 |
| 23 | 27 | 28 | 14 | Нет | 0 |
| 24 | 28 | 29 | 16 | Нет | 0 |
| 25 | 29 | 30 | 14 | Нет | 0 |
| 26 | 30 | 31 | 16 | Нет | 0 |
| 27 | 31 | 4 | 7 | Нет | 0 |
| 28 | 32 | 33 | 7 | Нет | 0 |
| 29 | 33 | 34 | 16 | Нет | 0 |
| 30 | 34 | 35 | 14 | Нет | 0 |
| 31 | 35 | 36 | 16 | Нет | 0 |
| 32 | 36 | 37 | 14 | Нет | 0 |
| 33 | 37 | 38 | 16 | Нет | 0 |
| 34 | 38 | 39 | 7 | Нет | 0 |
| 35 | 39 | 40 | 7 | Нет | 0 |
| 36 | 40 | 41 | 16 | Нет | 0 |
| 37 | 41 | 42 | 14 | Нет | 0 |
| 38 | 42 | 43 | 16 | Нет | 0 |
| 39 | 43 | 44 | 14 | Нет | 0 |
| 40 | 44 | 45 | 16 | Нет | 0 |
| 41 | 45 | 46 | 7 | Нет | 0 |
| 42 | 46 | 47 | 7 | Нет | 0 |
| 43 | 47 | 48 | 16 | Нет | 0 |
| 44 | 48 | 49 | 14 | Нет | 0 |
| 45 | 49 | 50 | 16 | Нет | 0 |
| 46 | 50 | 51 | 14 | Нет | 0 |
| 47 | 51 | 52 | 16 | Нет | 0 |
| 48 | 52 | 53 | 7 | Нет | 0 |
| 49 | 53 | 54 | 7 | Нет | 0 |
| 50 | 54 | 55 | 16 | Нет | 0 |
| 51 | 55 | 56 | 14 | Нет | 0 |
| 52 | 56 | 57 | 16 | Нет | 0 |
| 53 | 57 | 58 | 14 | Нет | 0 |
| 54 | 58 | 59 | 16 | Нет | 0 |
| 55 | 59 | 32 | 7 | Нет | 0 |
| 56 | 60 | 61 | 7 | Нет | 0 |
| 57 | 61 | 62 | 7 | Нет | 0 |
| 58 | 63 | 64 | 14 | Нет | 0 |
| 59 | 65 | 66 | 14 | Нет | 0 |
| 60 | 67 | 68 | 7 | Нет | 0 |
| 61 | 68 | 69 | 7 | Нет | 0 |
| 62 | 70 | 71 | 14 | Нет | 0 |
| 63 | 72 | 73 | 14 | Нет | 0 |
| 64 | 74 | 75 | 7 | Нет | 0 |
| 65 | 75 | 76 | 7 | Нет | 0 |
| 66 | 77 | 78 | 14 | Нет | 0 |
| 67 | 79 | 80 | 14 | Нет | 0 |
| 68 | 81 | 82 | 7 | Нет | 0 |
| 69 | 82 | 83 | 7 | Нет | 0 |
| 70 | 84 | 85 | 14 | Нет | 0 |
| 71 | 86 | 87 | 14 | Нет | 0 |
| 72 | 88 | 89 | 7 | Нет | 2 |
| 73 | 89 | 90 | 16 | Нет | 2 |
| 74 | 90 | 91 | 14 | Нет | 2 |
| 75 | 91 | 92 | 16 | Нет | 2 |
| 76 | 92 | 93 | 14 | Нет | 2 |
| 77 | 93 | 94 | 16 | Нет | 2 |
| 78 | 94 | 95 | 7 | Нет | 2 |
| 79 | 95 | 96 | 7 | Нет | 2 |
| 80 | 96 | 97 | 16 | Нет | 2 |
| 81 | 97 | 98 | 14 | Нет | 2 |
| 82 | 98 | 99 | 16 | Нет | 2 |
| 83 | 99 | 100 | 14 | Нет | 2 |
| 84 | 100 | 101 | 16 | Нет | 2 |
| 85 | 101 | 102 | 7 | Нет | 2 |
| 86 | 102 | 103 | 7 | Нет | 2 |
| 87 | 103 | 104 | 16 | Нет | 2 |
| 88 | 104 | 105 | 14 | Нет | 2 |
| 89 | 105 | 106 | 16 | Нет | 2 |
| 90 | 106 | 107 | 14 | Нет | 2 |
| 91 | 107 | 108 | 16 | Нет | 2 |
| 92 | 108 | 109 | 7 | Нет | 2 |
| 93 | 109 | 110 | 7 | Нет | 2 |
| 94 | 110 | 111 | 16 | Нет | 2 |
| 95 | 111 | 112 | 14 | Нет | 2 |
| 96 | 112 | 113 | 16 | Нет | 2 |
| 97 | 113 | 114 | 14 | Нет | 2 |
| 98 | 114 | 115 | 16 | Нет | 2 |
| 99 | 115 | 88 | 7 | Нет | 2 |
| 100 | 116 | 117 | 7 | Нет | 2 |
| 101 | 117 | 118 | 16 | Нет | 2 |
| 102 | 118 | 119 | 14 | Нет | 2 |
| 103 | 119 | 120 | 16 | Нет | 2 |
| 104 | 120 | 121 | 14 | Нет | 2 |
| 105 | 121 | 122 | 16 | Нет | 2 |
| 106 | 122 | 123 | 7 | Нет | 2 |
| 107 | 123 | 124 | 7 | Нет | 2 |
| 108 | 124 | 125 | 16 | Нет | 2 |
| 109 | 125 | 126 | 14 | Нет | 2 |
| 110 | 126 | 127 | 16 | Нет | 2 |
| 111 | 127 | 128 | 14 | Нет | 2 |
| 112 | 128 | 129 | 16 | Нет | 2 |
| 113 | 129 | 130 | 7 | Нет | 2 |
| 114 | 130 | 131 | 7 | Нет | 2 |
| 115 | 131 | 132 | 16 | Нет | 2 |
| 116 | 132 | 133 | 14 | Нет | 2 |
| 117 | 133 | 134 | 16 | Нет | 2 |
| 118 | 134 | 135 | 14 | Нет | 2 |
| 119 | 135 | 136 | 16 | Нет | 2 |
| 120 | 136 | 137 | 7 | Нет | 2 |
| 121 | 137 | 138 | 7 | Нет | 2 |
| 122 | 138 | 139 | 16 | Нет | 2 |
| 123 | 139 | 140 | 14 | Нет | 2 |
| 124 | 140 | 141 | 16 | Нет | 2 |
| 125 | 141 | 142 | 14 | Нет | 2 |
| 126 | 142 | 143 | 16 | Нет | 2 |
| 127 | 143 | 116 | 7 | Нет | 2 |
Сохранённое состояние этапа
Модель после шага 6Встроенный Python: шаг 6
Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 6: Отрезки и дуги
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
(-170, -170, 0),
(170, -170, 0),
(170, 170, 0),
(-170, 170, 0),
(60, 0, 0),
(59.552769098479317, 7.3121606043088487, 0),
(55.230291207146422, 23.443867709356425, 0),
(47.918130602837572, 36.108901389122899, 0),
(36.108901389122906, 47.918130602837572, 0),
(23.443867709356422, 55.230291207146422, 0),
(7.3121606043088496, 59.552769098479317, 0),
(3.6738190614671318e-15, 60, 0),
(-7.3121606043088416, 59.552769098479324, 0),
(-23.443867709356425, 55.230291207146415, 0),
(-36.108901389122906, 47.918130602837564, 0),
(-47.918130602837579, 36.108901389122892, 0),
(-55.230291207146422, 23.443867709356425, 0),
(-59.552769098479317, 7.3121606043088523, 0),
(-60, 7.3476381229342635e-15, 0),
(-59.552769098479324, -7.312160604308839, 0),
(-55.230291207146422, -23.443867709356415, 0),
(-47.918130602837572, -36.108901389122906, 0),
(-36.108901389122899, -47.918130602837572, 0),
(-23.443867709356429, -55.230291207146415, 0),
(-7.3121606043088301, -59.552769098479324, 0),
(-1.1021457184401395e-14, -60, 0),
(7.3121606043088612, -59.552769098479317, 0),
(23.443867709356411, -55.230291207146429, 0),
(36.108901389122877, -47.918130602837586, 0),
(47.918130602837572, -36.108901389122899, 0),
(55.230291207146415, -23.443867709356432, 0),
(59.552769098479324, -7.3121606043088336, 0),
(100, 0, 0),
(99.254615164132204, 12.186934340514748, 0),
(92.050485345244041, 39.07311284892738, 0),
(79.863551004729288, 60.181502315204824, 0),
(60.181502315204838, 79.863551004729288, 0),
(39.073112848927373, 92.050485345244041, 0),
(12.18693434051475, 99.254615164132204, 0),
(6.1230317691118863e-15, 100, 0),
(-12.186934340514737, 99.254615164132204, 0),
(-39.07311284892738, 92.050485345244027, 0),
(-60.181502315204838, 79.863551004729274, 0),
(-79.863551004729288, 60.181502315204817, 0),
(-92.050485345244041, 39.07311284892738, 0),
(-99.254615164132204, 12.186934340514755, 0),
(-100, 1.2246063538223773e-14, 0),
(-99.254615164132204, -12.18693434051473, 0),
(-92.050485345244041, -39.073112848927352, 0),
(-79.863551004729288, -60.181502315204838, 0),
(-60.181502315204824, -79.863551004729288, 0),
(-39.07311284892738, -92.050485345244027, 0),
(-12.186934340514718, -99.254615164132204, 0),
(-1.8369095307335659e-14, -100, 0),
(12.186934340514769, -99.254615164132204, 0),
(39.073112848927352, -92.050485345244056, 0),
(60.181502315204796, -79.863551004729302, 0),
(79.863551004729288, -60.181502315204824, 0),
(92.050485345244027, -39.073112848927387, 0),
(99.254615164132204, -12.186934340514723, 0),
(84.366422889512378, -10.358894189437514, 0),
(85, -2.0818308014980413e-14, 0),
(84.366422889512364, 10.358894189437548, 0),
(78.242912543457436, 33.212145921588274, 0),
(67.884018354019886, 51.154276967924105, 0),
(51.154276967924112, 67.884018354019886, 0),
(33.212145921588267, 78.242912543457436, 0),
(10.358894189437537, 84.366422889512364, 0),
(5.2045770037451033e-15, 85, 0),
(-10.358894189437526, 84.366422889512378, 0),
(-33.212145921588274, 78.242912543457422, 0),
(-51.154276967924112, 67.884018354019886, 0),
(-67.884018354019901, 51.154276967924091, 0),
(-78.242912543457436, 33.212145921588274, 0),
(-84.366422889512364, 10.358894189437541, 0),
(-85, 1.0409154007490207e-14, 0),
(-84.366422889512378, -10.358894189437521, 0),
(-78.242912543457436, -33.212145921588252, 0),
(-67.884018354019886, -51.154276967924112, 0),
(-51.154276967924105, -67.884018354019886, 0),
(-33.212145921588274, -78.242912543457422, 0),
(-10.35889418943751, -84.366422889512378, 0),
(-1.561373101123531e-14, -85, 0),
(10.358894189437553, -84.366422889512364, 0),
(33.212145921588245, -78.242912543457436, 0),
(51.154276967924076, -67.884018354019915, 0),
(67.884018354019886, -51.154276967924105, 0),
(78.242912543457422, -33.212145921588281, 0),
(18, 0, 2),
(17.865830729543795, 2.1936481812926547, 2),
(16.569087362143925, 7.0331603128069275, 2),
(14.37543918085127, 10.832670416736869, 2),
(10.832670416736871, 14.37543918085127, 2),
(7.0331603128069267, 16.569087362143925, 2),
(2.1936481812926547, 17.865830729543795, 2),
(1.1021457184401395e-15, 18, 2),
(-2.1936481812926525, 17.865830729543799, 2),
(-7.0331603128069275, 16.569087362143925, 2),
(-10.832670416736871, 14.375439180851268, 2),
(-14.375439180851274, 10.832670416736867, 2),
(-16.569087362143925, 7.0331603128069275, 2),
(-17.865830729543795, 2.193648181292656, 2),
(-18, 2.2042914368802791e-15, 2),
(-17.865830729543799, -2.1936481812926516, 2),
(-16.569087362143925, -7.033160312806924, 2),
(-14.37543918085127, -10.832670416736871, 2),
(-10.832670416736869, -14.37543918085127, 2),
(-7.0331603128069293, -16.569087362143925, 2),
(-2.1936481812926489, -17.865830729543799, 2),
(-3.3064371553204186e-15, -18, 2),
(2.1936481812926583, -17.865830729543795, 2),
(7.0331603128069231, -16.569087362143929, 2),
(10.832670416736862, -14.375439180851275, 2),
(14.37543918085127, -10.832670416736869, 2),
(16.569087362143925, -7.0331603128069302, 2),
(17.865830729543799, -2.1936481812926503, 2),
(58, 0, 2),
(57.567676795196675, 7.0684219174985534, 2),
(53.389281500241545, 22.662405452377879, 2),
(46.320859582742983, 34.9052713428188, 2),
(34.905271342818807, 46.320859582742983, 2),
(22.662405452377875, 53.389281500241545, 2),
(7.0684219174985543, 57.567676795196675, 2),
(3.551358426084894e-15, 58, 2),
(-7.0684219174985472, 57.567676795196682, 2),
(-22.662405452377879, 53.389281500241538, 2),
(-34.905271342818807, 46.320859582742976, 2),
(-46.32085958274299, 34.905271342818793, 2),
(-53.389281500241545, 22.662405452377879, 2),
(-57.567676795196675, 7.0684219174985579, 2),
(-58, 7.1027168521697881e-15, 2),
(-57.567676795196682, -7.0684219174985436, 2),
(-53.389281500241545, -22.662405452377865, 2),
(-46.320859582742983, -34.905271342818807, 2),
(-34.9052713428188, -46.320859582742983, 2),
(-22.662405452377882, -53.389281500241538, 2),
(-7.0684219174985357, -57.567676795196682, 2),
(-1.0654075278254682e-14, -58, 2),
(7.0684219174985659, -57.567676795196675, 2),
(22.662405452377861, -53.389281500241552, 2),
(34.905271342818779, -46.320859582742997, 2),
(46.320859582742983, -34.9052713428188, 2),
(53.389281500241538, -22.662405452377886, 2),
(57.567676795196682, -7.0684219174985392, 2),
(43, -11, 2),
(47, -11, 2),
(47, 11, 2),
(43, 11, 2),
(11.000000000000002, 43, 2),
(11.000000000000004, 47, 2),
(-10.999999999999996, 47, 2),
(-10.999999999999998, 43, 2),
(-43, 11.000000000000005, 2),
(-47, 11.000000000000005, 2),
(-47, -10.999999999999995, 2),
(-43, -10.999999999999995, 2),
(-11.000000000000007, -43, 2),
(-11.000000000000009, -47, 2),
(10.999999999999991, -47, 2),
(10.999999999999993, -43, 2),
]
for x, y, group in _nodes:
mi_addnode(x, y)
if group:
mi_selectnode(x, y)
mi_setnodeprop('', group)
mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
(0, 1, -1, "Нулевой потенциал", 0, 0),
(1, 2, -1, "Нулевой потенциал", 0, 0),
(2, 3, -1, "Нулевой потенциал", 0, 0),
(3, 0, -1, "Нулевой потенциал", 0, 0),
(31, 60, -1, "", 0, 0),
(5, 62, -1, "", 0, 0),
(6, 63, -1, "", 0, 0),
(7, 64, -1, "", 0, 0),
(8, 65, -1, "", 0, 0),
(9, 66, -1, "", 0, 0),
(10, 67, -1, "", 0, 0),
(12, 69, -1, "", 0, 0),
(13, 70, -1, "", 0, 0),
(14, 71, -1, "", 0, 0),
(15, 72, -1, "", 0, 0),
(16, 73, -1, "", 0, 0),
(17, 74, -1, "", 0, 0),
(19, 76, -1, "", 0, 0),
(20, 77, -1, "", 0, 0),
(21, 78, -1, "", 0, 0),
(22, 79, -1, "", 0, 0),
(23, 80, -1, "", 0, 0),
(24, 81, -1, "", 0, 0),
(26, 83, -1, "", 0, 0),
(27, 84, -1, "", 0, 0),
(28, 85, -1, "", 0, 0),
(29, 86, -1, "", 0, 0),
(30, 87, -1, "", 0, 0),
(144, 145, -1, "", 0, 2),
(145, 146, -1, "", 0, 2),
(146, 147, -1, "", 0, 2),
(147, 144, -1, "", 0, 2),
(148, 149, -1, "", 0, 2),
(149, 150, -1, "", 0, 2),
(150, 151, -1, "", 0, 2),
(151, 148, -1, "", 0, 2),
(152, 153, -1, "", 0, 2),
(153, 154, -1, "", 0, 2),
(154, 155, -1, "", 0, 2),
(155, 152, -1, "", 0, 2),
(156, 157, -1, "", 0, 2),
(157, 158, -1, "", 0, 2),
(158, 159, -1, "", 0, 2),
(159, 156, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
x0, y0 = _nodes[a][:2]
x1, y1 = _nodes[b][:2]
mi_addsegment(x0, y0, x1, y1)
mi_selectsegment((x0+x1)/2, (y0+y1)/2)
mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
(4, 5, 7, 10, "", 0, 0),
(5, 6, 16, 10, "", 0, 0),
(6, 7, 14, 10, "", 0, 0),
(7, 8, 16, 10, "", 0, 0),
(8, 9, 14, 10, "", 0, 0),
(9, 10, 16, 10, "", 0, 0),
(10, 11, 7, 10, "", 0, 0),
(11, 12, 7, 10, "", 0, 0),
(12, 13, 16, 10, "", 0, 0),
(13, 14, 14, 10, "", 0, 0),
(14, 15, 16, 10, "", 0, 0),
(15, 16, 14, 10, "", 0, 0),
(16, 17, 16, 10, "", 0, 0),
(17, 18, 7, 10, "", 0, 0),
(18, 19, 7, 10, "", 0, 0),
(19, 20, 16, 10, "", 0, 0),
(20, 21, 14, 10, "", 0, 0),
(21, 22, 16, 10, "", 0, 0),
(22, 23, 14, 10, "", 0, 0),
(23, 24, 16, 10, "", 0, 0),
(24, 25, 7, 10, "", 0, 0),
(25, 26, 7, 10, "", 0, 0),
(26, 27, 16, 10, "", 0, 0),
(27, 28, 14, 10, "", 0, 0),
(28, 29, 16, 10, "", 0, 0),
(29, 30, 14, 10, "", 0, 0),
(30, 31, 16, 10, "", 0, 0),
(31, 4, 7, 10, "", 0, 0),
(32, 33, 7, 10, "", 0, 0),
(33, 34, 16, 10, "", 0, 0),
(34, 35, 14, 10, "", 0, 0),
(35, 36, 16, 10, "", 0, 0),
(36, 37, 14, 10, "", 0, 0),
(37, 38, 16, 10, "", 0, 0),
(38, 39, 7, 10, "", 0, 0),
(39, 40, 7, 10, "", 0, 0),
(40, 41, 16, 10, "", 0, 0),
(41, 42, 14, 10, "", 0, 0),
(42, 43, 16, 10, "", 0, 0),
(43, 44, 14, 10, "", 0, 0),
(44, 45, 16, 10, "", 0, 0),
(45, 46, 7, 10, "", 0, 0),
(46, 47, 7, 10, "", 0, 0),
(47, 48, 16, 10, "", 0, 0),
(48, 49, 14, 10, "", 0, 0),
(49, 50, 16, 10, "", 0, 0),
(50, 51, 14, 10, "", 0, 0),
(51, 52, 16, 10, "", 0, 0),
(52, 53, 7, 10, "", 0, 0),
(53, 54, 7, 10, "", 0, 0),
(54, 55, 16, 10, "", 0, 0),
(55, 56, 14, 10, "", 0, 0),
(56, 57, 16, 10, "", 0, 0),
(57, 58, 14, 10, "", 0, 0),
(58, 59, 16, 10, "", 0, 0),
(59, 32, 7, 10, "", 0, 0),
(60, 61, 7, 10, "", 0, 0),
(61, 62, 7, 10, "", 0, 0),
(63, 64, 14, 10, "", 0, 0),
(65, 66, 14, 10, "", 0, 0),
(67, 68, 7, 10, "", 0, 0),
(68, 69, 7, 10, "", 0, 0),
(70, 71, 14, 10, "", 0, 0),
(72, 73, 14, 10, "", 0, 0),
(74, 75, 7, 10, "", 0, 0),
(75, 76, 7, 10, "", 0, 0),
(77, 78, 14, 10, "", 0, 0),
(79, 80, 14, 10, "", 0, 0),
(81, 82, 7, 10, "", 0, 0),
(82, 83, 7, 10, "", 0, 0),
(84, 85, 14, 10, "", 0, 0),
(86, 87, 14, 10, "", 0, 0),
(88, 89, 7, 10, "", 0, 2),
(89, 90, 16, 10, "", 0, 2),
(90, 91, 14, 10, "", 0, 2),
(91, 92, 16, 10, "", 0, 2),
(92, 93, 14, 10, "", 0, 2),
(93, 94, 16, 10, "", 0, 2),
(94, 95, 7, 10, "", 0, 2),
(95, 96, 7, 10, "", 0, 2),
(96, 97, 16, 10, "", 0, 2),
(97, 98, 14, 10, "", 0, 2),
(98, 99, 16, 10, "", 0, 2),
(99, 100, 14, 10, "", 0, 2),
(100, 101, 16, 10, "", 0, 2),
(101, 102, 7, 10, "", 0, 2),
(102, 103, 7, 10, "", 0, 2),
(103, 104, 16, 10, "", 0, 2),
(104, 105, 14, 10, "", 0, 2),
(105, 106, 16, 10, "", 0, 2),
(106, 107, 14, 10, "", 0, 2),
(107, 108, 16, 10, "", 0, 2),
(108, 109, 7, 10, "", 0, 2),
(109, 110, 7, 10, "", 0, 2),
(110, 111, 16, 10, "", 0, 2),
(111, 112, 14, 10, "", 0, 2),
(112, 113, 16, 10, "", 0, 2),
(113, 114, 14, 10, "", 0, 2),
(114, 115, 16, 10, "", 0, 2),
(115, 88, 7, 10, "", 0, 2),
(116, 117, 7, 10, "", 0, 2),
(117, 118, 16, 10, "", 0, 2),
(118, 119, 14, 10, "", 0, 2),
(119, 120, 16, 10, "", 0, 2),
(120, 121, 14, 10, "", 0, 2),
(121, 122, 16, 10, "", 0, 2),
(122, 123, 7, 10, "", 0, 2),
(123, 124, 7, 10, "", 0, 2),
(124, 125, 16, 10, "", 0, 2),
(125, 126, 14, 10, "", 0, 2),
(126, 127, 16, 10, "", 0, 2),
(127, 128, 14, 10, "", 0, 2),
(128, 129, 16, 10, "", 0, 2),
(129, 130, 7, 10, "", 0, 2),
(130, 131, 7, 10, "", 0, 2),
(131, 132, 16, 10, "", 0, 2),
(132, 133, 14, 10, "", 0, 2),
(133, 134, 16, 10, "", 0, 2),
(134, 135, 14, 10, "", 0, 2),
(135, 136, 16, 10, "", 0, 2),
(136, 137, 7, 10, "", 0, 2),
(137, 138, 7, 10, "", 0, 2),
(138, 139, 16, 10, "", 0, 2),
(139, 140, 14, 10, "", 0, 2),
(140, 141, 16, 10, "", 0, 2),
(141, 142, 14, 10, "", 0, 2),
(142, 143, 16, 10, "", 0, 2),
(143, 116, 7, 10, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
x0, y0 = _nodes[a][:2]
x1, y1 = _nodes[b][:2]
mi_addarc(x0, y0, x1, y1, angle, max_angle)
half = math.radians(angle)/2
cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
mi_selectarcsegment(xm, ym)
mi_setarcsegmentprop(max_angle, boundary, hidden, group)
mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 6. Модель неполная: переходите к следующему этапу, не запускайте решение.")

Этап 7 из 11
Метки замкнутых областей
- Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
- В режиме меток добавьте по одной метке в каждую область в координатах таблицы.
- На этом этапе метки намеренно оставлены без материала и цепи. Каждая метка должна лежать строго внутри своего замкнутого контура. Обязательно добавьте метку внешней воздушной области.
- Не запускайте расчёт: присутствие точки метки ещё не назначает физические свойства.
Широкую таблицу можно прокрутить по горизонтали.
| № | x или r, мм | y или z, мм | Будущий материал |
|---|---|---|---|
| 0 | 144,5 | 144,5 | Воздух |
| 1 | 0 | 94 | Линейная сталь |
| 2 | 73 | 0 | Обмоточная область |
| 3 | 63,22 | 36,5 | Обмоточная область |
| 4 | 36,5 | 63,22 | Обмоточная область |
| 5 | 0 | 73 | Обмоточная область |
| 6 | -36,5 | 63,22 | Обмоточная область |
| 7 | -63,22 | 36,5 | Обмоточная область |
| 8 | -73 | 0 | Обмоточная область |
| 9 | -63,22 | -36,5 | Обмоточная область |
| 10 | -36,5 | -63,22 | Обмоточная область |
| 11 | 0 | -73 | Обмоточная область |
| 12 | 36,5 | -63,22 | Обмоточная область |
| 13 | 63,22 | -36,5 | Обмоточная область |
| 14 | 19,8 | 19,8 | Линейная сталь |
| 15 | 45 | 0 | Постоянный магнит |
| 16 | 0 | 45 | Постоянный магнит |
| 17 | -45 | 0 | Постоянный магнит |
| 18 | 0 | -45 | Постоянный магнит |
| 19 | 0 | 0 | Воздух |
| 20 | 56,42 | 17,25 | Воздух |
Сохранённое состояние этапа
Модель после шага 7Встроенный Python: шаг 7
Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 7: Метки замкнутых областей
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
(-170, -170, 0),
(170, -170, 0),
(170, 170, 0),
(-170, 170, 0),
(60, 0, 0),
(59.552769098479317, 7.3121606043088487, 0),
(55.230291207146422, 23.443867709356425, 0),
(47.918130602837572, 36.108901389122899, 0),
(36.108901389122906, 47.918130602837572, 0),
(23.443867709356422, 55.230291207146422, 0),
(7.3121606043088496, 59.552769098479317, 0),
(3.6738190614671318e-15, 60, 0),
(-7.3121606043088416, 59.552769098479324, 0),
(-23.443867709356425, 55.230291207146415, 0),
(-36.108901389122906, 47.918130602837564, 0),
(-47.918130602837579, 36.108901389122892, 0),
(-55.230291207146422, 23.443867709356425, 0),
(-59.552769098479317, 7.3121606043088523, 0),
(-60, 7.3476381229342635e-15, 0),
(-59.552769098479324, -7.312160604308839, 0),
(-55.230291207146422, -23.443867709356415, 0),
(-47.918130602837572, -36.108901389122906, 0),
(-36.108901389122899, -47.918130602837572, 0),
(-23.443867709356429, -55.230291207146415, 0),
(-7.3121606043088301, -59.552769098479324, 0),
(-1.1021457184401395e-14, -60, 0),
(7.3121606043088612, -59.552769098479317, 0),
(23.443867709356411, -55.230291207146429, 0),
(36.108901389122877, -47.918130602837586, 0),
(47.918130602837572, -36.108901389122899, 0),
(55.230291207146415, -23.443867709356432, 0),
(59.552769098479324, -7.3121606043088336, 0),
(100, 0, 0),
(99.254615164132204, 12.186934340514748, 0),
(92.050485345244041, 39.07311284892738, 0),
(79.863551004729288, 60.181502315204824, 0),
(60.181502315204838, 79.863551004729288, 0),
(39.073112848927373, 92.050485345244041, 0),
(12.18693434051475, 99.254615164132204, 0),
(6.1230317691118863e-15, 100, 0),
(-12.186934340514737, 99.254615164132204, 0),
(-39.07311284892738, 92.050485345244027, 0),
(-60.181502315204838, 79.863551004729274, 0),
(-79.863551004729288, 60.181502315204817, 0),
(-92.050485345244041, 39.07311284892738, 0),
(-99.254615164132204, 12.186934340514755, 0),
(-100, 1.2246063538223773e-14, 0),
(-99.254615164132204, -12.18693434051473, 0),
(-92.050485345244041, -39.073112848927352, 0),
(-79.863551004729288, -60.181502315204838, 0),
(-60.181502315204824, -79.863551004729288, 0),
(-39.07311284892738, -92.050485345244027, 0),
(-12.186934340514718, -99.254615164132204, 0),
(-1.8369095307335659e-14, -100, 0),
(12.186934340514769, -99.254615164132204, 0),
(39.073112848927352, -92.050485345244056, 0),
(60.181502315204796, -79.863551004729302, 0),
(79.863551004729288, -60.181502315204824, 0),
(92.050485345244027, -39.073112848927387, 0),
(99.254615164132204, -12.186934340514723, 0),
(84.366422889512378, -10.358894189437514, 0),
(85, -2.0818308014980413e-14, 0),
(84.366422889512364, 10.358894189437548, 0),
(78.242912543457436, 33.212145921588274, 0),
(67.884018354019886, 51.154276967924105, 0),
(51.154276967924112, 67.884018354019886, 0),
(33.212145921588267, 78.242912543457436, 0),
(10.358894189437537, 84.366422889512364, 0),
(5.2045770037451033e-15, 85, 0),
(-10.358894189437526, 84.366422889512378, 0),
(-33.212145921588274, 78.242912543457422, 0),
(-51.154276967924112, 67.884018354019886, 0),
(-67.884018354019901, 51.154276967924091, 0),
(-78.242912543457436, 33.212145921588274, 0),
(-84.366422889512364, 10.358894189437541, 0),
(-85, 1.0409154007490207e-14, 0),
(-84.366422889512378, -10.358894189437521, 0),
(-78.242912543457436, -33.212145921588252, 0),
(-67.884018354019886, -51.154276967924112, 0),
(-51.154276967924105, -67.884018354019886, 0),
(-33.212145921588274, -78.242912543457422, 0),
(-10.35889418943751, -84.366422889512378, 0),
(-1.561373101123531e-14, -85, 0),
(10.358894189437553, -84.366422889512364, 0),
(33.212145921588245, -78.242912543457436, 0),
(51.154276967924076, -67.884018354019915, 0),
(67.884018354019886, -51.154276967924105, 0),
(78.242912543457422, -33.212145921588281, 0),
(18, 0, 2),
(17.865830729543795, 2.1936481812926547, 2),
(16.569087362143925, 7.0331603128069275, 2),
(14.37543918085127, 10.832670416736869, 2),
(10.832670416736871, 14.37543918085127, 2),
(7.0331603128069267, 16.569087362143925, 2),
(2.1936481812926547, 17.865830729543795, 2),
(1.1021457184401395e-15, 18, 2),
(-2.1936481812926525, 17.865830729543799, 2),
(-7.0331603128069275, 16.569087362143925, 2),
(-10.832670416736871, 14.375439180851268, 2),
(-14.375439180851274, 10.832670416736867, 2),
(-16.569087362143925, 7.0331603128069275, 2),
(-17.865830729543795, 2.193648181292656, 2),
(-18, 2.2042914368802791e-15, 2),
(-17.865830729543799, -2.1936481812926516, 2),
(-16.569087362143925, -7.033160312806924, 2),
(-14.37543918085127, -10.832670416736871, 2),
(-10.832670416736869, -14.37543918085127, 2),
(-7.0331603128069293, -16.569087362143925, 2),
(-2.1936481812926489, -17.865830729543799, 2),
(-3.3064371553204186e-15, -18, 2),
(2.1936481812926583, -17.865830729543795, 2),
(7.0331603128069231, -16.569087362143929, 2),
(10.832670416736862, -14.375439180851275, 2),
(14.37543918085127, -10.832670416736869, 2),
(16.569087362143925, -7.0331603128069302, 2),
(17.865830729543799, -2.1936481812926503, 2),
(58, 0, 2),
(57.567676795196675, 7.0684219174985534, 2),
(53.389281500241545, 22.662405452377879, 2),
(46.320859582742983, 34.9052713428188, 2),
(34.905271342818807, 46.320859582742983, 2),
(22.662405452377875, 53.389281500241545, 2),
(7.0684219174985543, 57.567676795196675, 2),
(3.551358426084894e-15, 58, 2),
(-7.0684219174985472, 57.567676795196682, 2),
(-22.662405452377879, 53.389281500241538, 2),
(-34.905271342818807, 46.320859582742976, 2),
(-46.32085958274299, 34.905271342818793, 2),
(-53.389281500241545, 22.662405452377879, 2),
(-57.567676795196675, 7.0684219174985579, 2),
(-58, 7.1027168521697881e-15, 2),
(-57.567676795196682, -7.0684219174985436, 2),
(-53.389281500241545, -22.662405452377865, 2),
(-46.320859582742983, -34.905271342818807, 2),
(-34.9052713428188, -46.320859582742983, 2),
(-22.662405452377882, -53.389281500241538, 2),
(-7.0684219174985357, -57.567676795196682, 2),
(-1.0654075278254682e-14, -58, 2),
(7.0684219174985659, -57.567676795196675, 2),
(22.662405452377861, -53.389281500241552, 2),
(34.905271342818779, -46.320859582742997, 2),
(46.320859582742983, -34.9052713428188, 2),
(53.389281500241538, -22.662405452377886, 2),
(57.567676795196682, -7.0684219174985392, 2),
(43, -11, 2),
(47, -11, 2),
(47, 11, 2),
(43, 11, 2),
(11.000000000000002, 43, 2),
(11.000000000000004, 47, 2),
(-10.999999999999996, 47, 2),
(-10.999999999999998, 43, 2),
(-43, 11.000000000000005, 2),
(-47, 11.000000000000005, 2),
(-47, -10.999999999999995, 2),
(-43, -10.999999999999995, 2),
(-11.000000000000007, -43, 2),
(-11.000000000000009, -47, 2),
(10.999999999999991, -47, 2),
(10.999999999999993, -43, 2),
]
for x, y, group in _nodes:
mi_addnode(x, y)
if group:
mi_selectnode(x, y)
mi_setnodeprop('', group)
mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
(0, 1, -1, "Нулевой потенциал", 0, 0),
(1, 2, -1, "Нулевой потенциал", 0, 0),
(2, 3, -1, "Нулевой потенциал", 0, 0),
(3, 0, -1, "Нулевой потенциал", 0, 0),
(31, 60, -1, "", 0, 0),
(5, 62, -1, "", 0, 0),
(6, 63, -1, "", 0, 0),
(7, 64, -1, "", 0, 0),
(8, 65, -1, "", 0, 0),
(9, 66, -1, "", 0, 0),
(10, 67, -1, "", 0, 0),
(12, 69, -1, "", 0, 0),
(13, 70, -1, "", 0, 0),
(14, 71, -1, "", 0, 0),
(15, 72, -1, "", 0, 0),
(16, 73, -1, "", 0, 0),
(17, 74, -1, "", 0, 0),
(19, 76, -1, "", 0, 0),
(20, 77, -1, "", 0, 0),
(21, 78, -1, "", 0, 0),
(22, 79, -1, "", 0, 0),
(23, 80, -1, "", 0, 0),
(24, 81, -1, "", 0, 0),
(26, 83, -1, "", 0, 0),
(27, 84, -1, "", 0, 0),
(28, 85, -1, "", 0, 0),
(29, 86, -1, "", 0, 0),
(30, 87, -1, "", 0, 0),
(144, 145, -1, "", 0, 2),
(145, 146, -1, "", 0, 2),
(146, 147, -1, "", 0, 2),
(147, 144, -1, "", 0, 2),
(148, 149, -1, "", 0, 2),
(149, 150, -1, "", 0, 2),
(150, 151, -1, "", 0, 2),
(151, 148, -1, "", 0, 2),
(152, 153, -1, "", 0, 2),
(153, 154, -1, "", 0, 2),
(154, 155, -1, "", 0, 2),
(155, 152, -1, "", 0, 2),
(156, 157, -1, "", 0, 2),
(157, 158, -1, "", 0, 2),
(158, 159, -1, "", 0, 2),
(159, 156, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
x0, y0 = _nodes[a][:2]
x1, y1 = _nodes[b][:2]
mi_addsegment(x0, y0, x1, y1)
mi_selectsegment((x0+x1)/2, (y0+y1)/2)
mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
(4, 5, 7, 10, "", 0, 0),
(5, 6, 16, 10, "", 0, 0),
(6, 7, 14, 10, "", 0, 0),
(7, 8, 16, 10, "", 0, 0),
(8, 9, 14, 10, "", 0, 0),
(9, 10, 16, 10, "", 0, 0),
(10, 11, 7, 10, "", 0, 0),
(11, 12, 7, 10, "", 0, 0),
(12, 13, 16, 10, "", 0, 0),
(13, 14, 14, 10, "", 0, 0),
(14, 15, 16, 10, "", 0, 0),
(15, 16, 14, 10, "", 0, 0),
(16, 17, 16, 10, "", 0, 0),
(17, 18, 7, 10, "", 0, 0),
(18, 19, 7, 10, "", 0, 0),
(19, 20, 16, 10, "", 0, 0),
(20, 21, 14, 10, "", 0, 0),
(21, 22, 16, 10, "", 0, 0),
(22, 23, 14, 10, "", 0, 0),
(23, 24, 16, 10, "", 0, 0),
(24, 25, 7, 10, "", 0, 0),
(25, 26, 7, 10, "", 0, 0),
(26, 27, 16, 10, "", 0, 0),
(27, 28, 14, 10, "", 0, 0),
(28, 29, 16, 10, "", 0, 0),
(29, 30, 14, 10, "", 0, 0),
(30, 31, 16, 10, "", 0, 0),
(31, 4, 7, 10, "", 0, 0),
(32, 33, 7, 10, "", 0, 0),
(33, 34, 16, 10, "", 0, 0),
(34, 35, 14, 10, "", 0, 0),
(35, 36, 16, 10, "", 0, 0),
(36, 37, 14, 10, "", 0, 0),
(37, 38, 16, 10, "", 0, 0),
(38, 39, 7, 10, "", 0, 0),
(39, 40, 7, 10, "", 0, 0),
(40, 41, 16, 10, "", 0, 0),
(41, 42, 14, 10, "", 0, 0),
(42, 43, 16, 10, "", 0, 0),
(43, 44, 14, 10, "", 0, 0),
(44, 45, 16, 10, "", 0, 0),
(45, 46, 7, 10, "", 0, 0),
(46, 47, 7, 10, "", 0, 0),
(47, 48, 16, 10, "", 0, 0),
(48, 49, 14, 10, "", 0, 0),
(49, 50, 16, 10, "", 0, 0),
(50, 51, 14, 10, "", 0, 0),
(51, 52, 16, 10, "", 0, 0),
(52, 53, 7, 10, "", 0, 0),
(53, 54, 7, 10, "", 0, 0),
(54, 55, 16, 10, "", 0, 0),
(55, 56, 14, 10, "", 0, 0),
(56, 57, 16, 10, "", 0, 0),
(57, 58, 14, 10, "", 0, 0),
(58, 59, 16, 10, "", 0, 0),
(59, 32, 7, 10, "", 0, 0),
(60, 61, 7, 10, "", 0, 0),
(61, 62, 7, 10, "", 0, 0),
(63, 64, 14, 10, "", 0, 0),
(65, 66, 14, 10, "", 0, 0),
(67, 68, 7, 10, "", 0, 0),
(68, 69, 7, 10, "", 0, 0),
(70, 71, 14, 10, "", 0, 0),
(72, 73, 14, 10, "", 0, 0),
(74, 75, 7, 10, "", 0, 0),
(75, 76, 7, 10, "", 0, 0),
(77, 78, 14, 10, "", 0, 0),
(79, 80, 14, 10, "", 0, 0),
(81, 82, 7, 10, "", 0, 0),
(82, 83, 7, 10, "", 0, 0),
(84, 85, 14, 10, "", 0, 0),
(86, 87, 14, 10, "", 0, 0),
(88, 89, 7, 10, "", 0, 2),
(89, 90, 16, 10, "", 0, 2),
(90, 91, 14, 10, "", 0, 2),
(91, 92, 16, 10, "", 0, 2),
(92, 93, 14, 10, "", 0, 2),
(93, 94, 16, 10, "", 0, 2),
(94, 95, 7, 10, "", 0, 2),
(95, 96, 7, 10, "", 0, 2),
(96, 97, 16, 10, "", 0, 2),
(97, 98, 14, 10, "", 0, 2),
(98, 99, 16, 10, "", 0, 2),
(99, 100, 14, 10, "", 0, 2),
(100, 101, 16, 10, "", 0, 2),
(101, 102, 7, 10, "", 0, 2),
(102, 103, 7, 10, "", 0, 2),
(103, 104, 16, 10, "", 0, 2),
(104, 105, 14, 10, "", 0, 2),
(105, 106, 16, 10, "", 0, 2),
(106, 107, 14, 10, "", 0, 2),
(107, 108, 16, 10, "", 0, 2),
(108, 109, 7, 10, "", 0, 2),
(109, 110, 7, 10, "", 0, 2),
(110, 111, 16, 10, "", 0, 2),
(111, 112, 14, 10, "", 0, 2),
(112, 113, 16, 10, "", 0, 2),
(113, 114, 14, 10, "", 0, 2),
(114, 115, 16, 10, "", 0, 2),
(115, 88, 7, 10, "", 0, 2),
(116, 117, 7, 10, "", 0, 2),
(117, 118, 16, 10, "", 0, 2),
(118, 119, 14, 10, "", 0, 2),
(119, 120, 16, 10, "", 0, 2),
(120, 121, 14, 10, "", 0, 2),
(121, 122, 16, 10, "", 0, 2),
(122, 123, 7, 10, "", 0, 2),
(123, 124, 7, 10, "", 0, 2),
(124, 125, 16, 10, "", 0, 2),
(125, 126, 14, 10, "", 0, 2),
(126, 127, 16, 10, "", 0, 2),
(127, 128, 14, 10, "", 0, 2),
(128, 129, 16, 10, "", 0, 2),
(129, 130, 7, 10, "", 0, 2),
(130, 131, 7, 10, "", 0, 2),
(131, 132, 16, 10, "", 0, 2),
(132, 133, 14, 10, "", 0, 2),
(133, 134, 16, 10, "", 0, 2),
(134, 135, 14, 10, "", 0, 2),
(135, 136, 16, 10, "", 0, 2),
(136, 137, 7, 10, "", 0, 2),
(137, 138, 7, 10, "", 0, 2),
(138, 139, 16, 10, "", 0, 2),
(139, 140, 14, 10, "", 0, 2),
(140, 141, 16, 10, "", 0, 2),
(141, 142, 14, 10, "", 0, 2),
(142, 143, 16, 10, "", 0, 2),
(143, 116, 7, 10, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
x0, y0 = _nodes[a][:2]
x1, y1 = _nodes[b][:2]
mi_addarc(x0, y0, x1, y1, angle, max_angle)
half = math.radians(angle)/2
cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
mi_selectarcsegment(xm, ym)
mi_setarcsegmentprop(max_angle, boundary, hidden, group)
mi_clearselected()
# Метки: положение, материал, размер элемента, цепь, намагничивание, группа, витки.
_labels = [
(144.5, 144.5, "", 0, "", 0, 0, 1),
(0, 94, "", 0, "", 0, 0, 1),
(73, 0, "", 0, "", 0, 0, 1),
(63.219854476264025, 36.499999999999993, "", 0, "", 0, 0, 1),
(36.500000000000007, 63.219854476264018, "", 0, "", 0, 0, 1),
(4.469813191451677e-15, 73, "", 0, "", 0, 0, 1),
(-36.499999999999986, 63.219854476264025, "", 0, "", 0, 0, 1),
(-63.219854476264025, 36.499999999999993, "", 0, "", 0, 0, 1),
(-73, 8.939626382903354e-15, "", 0, "", 0, 0, 1),
(-63.219854476264018, -36.500000000000007, "", 0, "", 0, 0, 1),
(-36.500000000000036, -63.219854476264004, "", 0, "", 0, 0, 1),
(-1.3409439574355031e-14, -73, "", 0, "", 0, 0, 1),
(36.500000000000007, -63.219854476264018, "", 0, "", 0, 0, 1),
(63.219854476264004, -36.500000000000036, "", 0, "", 0, 0, 1),
(19.798989873223331, 19.798989873223327, "", 0, "", 0, 0, 1),
(45, 0, "", 0, "", 0, 0, 1),
(2.7553642961003488e-15, 45, "", 0, "", 0, 0, 1),
(-45, 5.5107285922006977e-15, "", 0, "", 0, 0, 1),
(-8.2660928883010465e-15, -45, "", 0, "", 0, 0, 1),
(0, 0, "", 0, "", 0, 0, 1),
(56.421980601819094, 17.249930578641468, "", 0, "", 0, 0, 1),
]
for x, y, material, size, circuit, direction, group, turns in _labels:
mi_addblocklabel(x, y)
if material:
mi_selectlabel(x, y)
mi_setblockprop(material, 1 if size <= 0 else 0, size, circuit, direction, group, turns)
mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 7. Модель неполная: переходите к следующему этапу, не запускайте решение.")

Этап 8 из 11
Назначения материалов и обмоток
- Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
- Выделяйте метки по координатам и открывайте их свойства (Block Label Properties). Назначьте материал, цепь и число витков со знаком из полной таблицы.
- Для магнитов задайте направление намагничивания: число означает угол в градусах; theta и theta+180 — функции координат, поэтому их английские технические идентификаторы сохраняются.
- Восстановите группы: группа 2 используется для выделения ротора или отдельного якоря при вычислении силы/момента, если это предусмотрено вариантом.
- Материалы и обмотки уже назначены, но локальные размеры сетки этого промежуточного файла ещё автоматические. Не запускайте расчёт: сначала перейдите к следующему этапу и восстановите указанные там ограничения сетки.
Широкую таблицу можно прокрутить по горизонтали.
| № | x или r, мм | y или z, мм | Материал | Цепь | Витки со знаком | Намагничивание | Группа |
|---|---|---|---|---|---|---|---|
| 0 | 144,5 | 144,5 | Воздух | Нет | 1 | 0^\circ | 0 |
| 1 | 0 | 94 | Линейная сталь | Нет | 1 | 0^\circ | 1 |
| 2 | 73 | 0 | Обмоточная область | Фаза А | 40 | 0^\circ | 1 |
| 3 | 63,22 | 36,5 | Обмоточная область | Фаза С | -40 | 0^\circ | 1 |
| 4 | 36,5 | 63,22 | Обмоточная область | Фаза В | 40 | 0^\circ | 1 |
| 5 | 0 | 73 | Обмоточная область | Фаза А | -40 | 0^\circ | 1 |
| 6 | -36,5 | 63,22 | Обмоточная область | Фаза С | 40 | 0^\circ | 1 |
| 7 | -63,22 | 36,5 | Обмоточная область | Фаза В | -40 | 0^\circ | 1 |
| 8 | -73 | 0 | Обмоточная область | Фаза А | 40 | 0^\circ | 1 |
| 9 | -63,22 | -36,5 | Обмоточная область | Фаза С | -40 | 0^\circ | 1 |
| 10 | -36,5 | -63,22 | Обмоточная область | Фаза В | 40 | 0^\circ | 1 |
| 11 | 0 | -73 | Обмоточная область | Фаза А | -40 | 0^\circ | 1 |
| 12 | 36,5 | -63,22 | Обмоточная область | Фаза С | 40 | 0^\circ | 1 |
| 13 | 63,22 | -36,5 | Обмоточная область | Фаза В | -40 | 0^\circ | 1 |
| 14 | 19,8 | 19,8 | Линейная сталь | Нет | 1 | 0^\circ | 2 |
| 15 | 45 | 0 | Постоянный магнит | Нет | 1 | 0^\circ | 2 |
| 16 | 0 | 45 | Постоянный магнит | Нет | 1 | 270^\circ | 2 |
| 17 | -45 | 0 | Постоянный магнит | Нет | 1 | 180^\circ | 2 |
| 18 | 0 | -45 | Постоянный магнит | Нет | 1 | 450^\circ | 2 |
| 19 | 0 | 0 | Воздух | Нет | 1 | 0^\circ | 2 |
| 20 | 56,42 | 17,25 | Воздух | Нет | 1 | 0^\circ | 0 |
Сохранённое состояние этапа
Модель после шага 8Встроенный Python: шаг 8
Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 8: Назначения материалов и обмоток
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
(-170, -170, 0),
(170, -170, 0),
(170, 170, 0),
(-170, 170, 0),
(60, 0, 0),
(59.552769098479317, 7.3121606043088487, 0),
(55.230291207146422, 23.443867709356425, 0),
(47.918130602837572, 36.108901389122899, 0),
(36.108901389122906, 47.918130602837572, 0),
(23.443867709356422, 55.230291207146422, 0),
(7.3121606043088496, 59.552769098479317, 0),
(3.6738190614671318e-15, 60, 0),
(-7.3121606043088416, 59.552769098479324, 0),
(-23.443867709356425, 55.230291207146415, 0),
(-36.108901389122906, 47.918130602837564, 0),
(-47.918130602837579, 36.108901389122892, 0),
(-55.230291207146422, 23.443867709356425, 0),
(-59.552769098479317, 7.3121606043088523, 0),
(-60, 7.3476381229342635e-15, 0),
(-59.552769098479324, -7.312160604308839, 0),
(-55.230291207146422, -23.443867709356415, 0),
(-47.918130602837572, -36.108901389122906, 0),
(-36.108901389122899, -47.918130602837572, 0),
(-23.443867709356429, -55.230291207146415, 0),
(-7.3121606043088301, -59.552769098479324, 0),
(-1.1021457184401395e-14, -60, 0),
(7.3121606043088612, -59.552769098479317, 0),
(23.443867709356411, -55.230291207146429, 0),
(36.108901389122877, -47.918130602837586, 0),
(47.918130602837572, -36.108901389122899, 0),
(55.230291207146415, -23.443867709356432, 0),
(59.552769098479324, -7.3121606043088336, 0),
(100, 0, 0),
(99.254615164132204, 12.186934340514748, 0),
(92.050485345244041, 39.07311284892738, 0),
(79.863551004729288, 60.181502315204824, 0),
(60.181502315204838, 79.863551004729288, 0),
(39.073112848927373, 92.050485345244041, 0),
(12.18693434051475, 99.254615164132204, 0),
(6.1230317691118863e-15, 100, 0),
(-12.186934340514737, 99.254615164132204, 0),
(-39.07311284892738, 92.050485345244027, 0),
(-60.181502315204838, 79.863551004729274, 0),
(-79.863551004729288, 60.181502315204817, 0),
(-92.050485345244041, 39.07311284892738, 0),
(-99.254615164132204, 12.186934340514755, 0),
(-100, 1.2246063538223773e-14, 0),
(-99.254615164132204, -12.18693434051473, 0),
(-92.050485345244041, -39.073112848927352, 0),
(-79.863551004729288, -60.181502315204838, 0),
(-60.181502315204824, -79.863551004729288, 0),
(-39.07311284892738, -92.050485345244027, 0),
(-12.186934340514718, -99.254615164132204, 0),
(-1.8369095307335659e-14, -100, 0),
(12.186934340514769, -99.254615164132204, 0),
(39.073112848927352, -92.050485345244056, 0),
(60.181502315204796, -79.863551004729302, 0),
(79.863551004729288, -60.181502315204824, 0),
(92.050485345244027, -39.073112848927387, 0),
(99.254615164132204, -12.186934340514723, 0),
(84.366422889512378, -10.358894189437514, 0),
(85, -2.0818308014980413e-14, 0),
(84.366422889512364, 10.358894189437548, 0),
(78.242912543457436, 33.212145921588274, 0),
(67.884018354019886, 51.154276967924105, 0),
(51.154276967924112, 67.884018354019886, 0),
(33.212145921588267, 78.242912543457436, 0),
(10.358894189437537, 84.366422889512364, 0),
(5.2045770037451033e-15, 85, 0),
(-10.358894189437526, 84.366422889512378, 0),
(-33.212145921588274, 78.242912543457422, 0),
(-51.154276967924112, 67.884018354019886, 0),
(-67.884018354019901, 51.154276967924091, 0),
(-78.242912543457436, 33.212145921588274, 0),
(-84.366422889512364, 10.358894189437541, 0),
(-85, 1.0409154007490207e-14, 0),
(-84.366422889512378, -10.358894189437521, 0),
(-78.242912543457436, -33.212145921588252, 0),
(-67.884018354019886, -51.154276967924112, 0),
(-51.154276967924105, -67.884018354019886, 0),
(-33.212145921588274, -78.242912543457422, 0),
(-10.35889418943751, -84.366422889512378, 0),
(-1.561373101123531e-14, -85, 0),
(10.358894189437553, -84.366422889512364, 0),
(33.212145921588245, -78.242912543457436, 0),
(51.154276967924076, -67.884018354019915, 0),
(67.884018354019886, -51.154276967924105, 0),
(78.242912543457422, -33.212145921588281, 0),
(18, 0, 2),
(17.865830729543795, 2.1936481812926547, 2),
(16.569087362143925, 7.0331603128069275, 2),
(14.37543918085127, 10.832670416736869, 2),
(10.832670416736871, 14.37543918085127, 2),
(7.0331603128069267, 16.569087362143925, 2),
(2.1936481812926547, 17.865830729543795, 2),
(1.1021457184401395e-15, 18, 2),
(-2.1936481812926525, 17.865830729543799, 2),
(-7.0331603128069275, 16.569087362143925, 2),
(-10.832670416736871, 14.375439180851268, 2),
(-14.375439180851274, 10.832670416736867, 2),
(-16.569087362143925, 7.0331603128069275, 2),
(-17.865830729543795, 2.193648181292656, 2),
(-18, 2.2042914368802791e-15, 2),
(-17.865830729543799, -2.1936481812926516, 2),
(-16.569087362143925, -7.033160312806924, 2),
(-14.37543918085127, -10.832670416736871, 2),
(-10.832670416736869, -14.37543918085127, 2),
(-7.0331603128069293, -16.569087362143925, 2),
(-2.1936481812926489, -17.865830729543799, 2),
(-3.3064371553204186e-15, -18, 2),
(2.1936481812926583, -17.865830729543795, 2),
(7.0331603128069231, -16.569087362143929, 2),
(10.832670416736862, -14.375439180851275, 2),
(14.37543918085127, -10.832670416736869, 2),
(16.569087362143925, -7.0331603128069302, 2),
(17.865830729543799, -2.1936481812926503, 2),
(58, 0, 2),
(57.567676795196675, 7.0684219174985534, 2),
(53.389281500241545, 22.662405452377879, 2),
(46.320859582742983, 34.9052713428188, 2),
(34.905271342818807, 46.320859582742983, 2),
(22.662405452377875, 53.389281500241545, 2),
(7.0684219174985543, 57.567676795196675, 2),
(3.551358426084894e-15, 58, 2),
(-7.0684219174985472, 57.567676795196682, 2),
(-22.662405452377879, 53.389281500241538, 2),
(-34.905271342818807, 46.320859582742976, 2),
(-46.32085958274299, 34.905271342818793, 2),
(-53.389281500241545, 22.662405452377879, 2),
(-57.567676795196675, 7.0684219174985579, 2),
(-58, 7.1027168521697881e-15, 2),
(-57.567676795196682, -7.0684219174985436, 2),
(-53.389281500241545, -22.662405452377865, 2),
(-46.320859582742983, -34.905271342818807, 2),
(-34.9052713428188, -46.320859582742983, 2),
(-22.662405452377882, -53.389281500241538, 2),
(-7.0684219174985357, -57.567676795196682, 2),
(-1.0654075278254682e-14, -58, 2),
(7.0684219174985659, -57.567676795196675, 2),
(22.662405452377861, -53.389281500241552, 2),
(34.905271342818779, -46.320859582742997, 2),
(46.320859582742983, -34.9052713428188, 2),
(53.389281500241538, -22.662405452377886, 2),
(57.567676795196682, -7.0684219174985392, 2),
(43, -11, 2),
(47, -11, 2),
(47, 11, 2),
(43, 11, 2),
(11.000000000000002, 43, 2),
(11.000000000000004, 47, 2),
(-10.999999999999996, 47, 2),
(-10.999999999999998, 43, 2),
(-43, 11.000000000000005, 2),
(-47, 11.000000000000005, 2),
(-47, -10.999999999999995, 2),
(-43, -10.999999999999995, 2),
(-11.000000000000007, -43, 2),
(-11.000000000000009, -47, 2),
(10.999999999999991, -47, 2),
(10.999999999999993, -43, 2),
]
for x, y, group in _nodes:
mi_addnode(x, y)
if group:
mi_selectnode(x, y)
mi_setnodeprop('', group)
mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
(0, 1, -1, "Нулевой потенциал", 0, 0),
(1, 2, -1, "Нулевой потенциал", 0, 0),
(2, 3, -1, "Нулевой потенциал", 0, 0),
(3, 0, -1, "Нулевой потенциал", 0, 0),
(31, 60, -1, "", 0, 0),
(5, 62, -1, "", 0, 0),
(6, 63, -1, "", 0, 0),
(7, 64, -1, "", 0, 0),
(8, 65, -1, "", 0, 0),
(9, 66, -1, "", 0, 0),
(10, 67, -1, "", 0, 0),
(12, 69, -1, "", 0, 0),
(13, 70, -1, "", 0, 0),
(14, 71, -1, "", 0, 0),
(15, 72, -1, "", 0, 0),
(16, 73, -1, "", 0, 0),
(17, 74, -1, "", 0, 0),
(19, 76, -1, "", 0, 0),
(20, 77, -1, "", 0, 0),
(21, 78, -1, "", 0, 0),
(22, 79, -1, "", 0, 0),
(23, 80, -1, "", 0, 0),
(24, 81, -1, "", 0, 0),
(26, 83, -1, "", 0, 0),
(27, 84, -1, "", 0, 0),
(28, 85, -1, "", 0, 0),
(29, 86, -1, "", 0, 0),
(30, 87, -1, "", 0, 0),
(144, 145, -1, "", 0, 2),
(145, 146, -1, "", 0, 2),
(146, 147, -1, "", 0, 2),
(147, 144, -1, "", 0, 2),
(148, 149, -1, "", 0, 2),
(149, 150, -1, "", 0, 2),
(150, 151, -1, "", 0, 2),
(151, 148, -1, "", 0, 2),
(152, 153, -1, "", 0, 2),
(153, 154, -1, "", 0, 2),
(154, 155, -1, "", 0, 2),
(155, 152, -1, "", 0, 2),
(156, 157, -1, "", 0, 2),
(157, 158, -1, "", 0, 2),
(158, 159, -1, "", 0, 2),
(159, 156, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
x0, y0 = _nodes[a][:2]
x1, y1 = _nodes[b][:2]
mi_addsegment(x0, y0, x1, y1)
mi_selectsegment((x0+x1)/2, (y0+y1)/2)
mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
(4, 5, 7, 10, "", 0, 0),
(5, 6, 16, 10, "", 0, 0),
(6, 7, 14, 10, "", 0, 0),
(7, 8, 16, 10, "", 0, 0),
(8, 9, 14, 10, "", 0, 0),
(9, 10, 16, 10, "", 0, 0),
(10, 11, 7, 10, "", 0, 0),
(11, 12, 7, 10, "", 0, 0),
(12, 13, 16, 10, "", 0, 0),
(13, 14, 14, 10, "", 0, 0),
(14, 15, 16, 10, "", 0, 0),
(15, 16, 14, 10, "", 0, 0),
(16, 17, 16, 10, "", 0, 0),
(17, 18, 7, 10, "", 0, 0),
(18, 19, 7, 10, "", 0, 0),
(19, 20, 16, 10, "", 0, 0),
(20, 21, 14, 10, "", 0, 0),
(21, 22, 16, 10, "", 0, 0),
(22, 23, 14, 10, "", 0, 0),
(23, 24, 16, 10, "", 0, 0),
(24, 25, 7, 10, "", 0, 0),
(25, 26, 7, 10, "", 0, 0),
(26, 27, 16, 10, "", 0, 0),
(27, 28, 14, 10, "", 0, 0),
(28, 29, 16, 10, "", 0, 0),
(29, 30, 14, 10, "", 0, 0),
(30, 31, 16, 10, "", 0, 0),
(31, 4, 7, 10, "", 0, 0),
(32, 33, 7, 10, "", 0, 0),
(33, 34, 16, 10, "", 0, 0),
(34, 35, 14, 10, "", 0, 0),
(35, 36, 16, 10, "", 0, 0),
(36, 37, 14, 10, "", 0, 0),
(37, 38, 16, 10, "", 0, 0),
(38, 39, 7, 10, "", 0, 0),
(39, 40, 7, 10, "", 0, 0),
(40, 41, 16, 10, "", 0, 0),
(41, 42, 14, 10, "", 0, 0),
(42, 43, 16, 10, "", 0, 0),
(43, 44, 14, 10, "", 0, 0),
(44, 45, 16, 10, "", 0, 0),
(45, 46, 7, 10, "", 0, 0),
(46, 47, 7, 10, "", 0, 0),
(47, 48, 16, 10, "", 0, 0),
(48, 49, 14, 10, "", 0, 0),
(49, 50, 16, 10, "", 0, 0),
(50, 51, 14, 10, "", 0, 0),
(51, 52, 16, 10, "", 0, 0),
(52, 53, 7, 10, "", 0, 0),
(53, 54, 7, 10, "", 0, 0),
(54, 55, 16, 10, "", 0, 0),
(55, 56, 14, 10, "", 0, 0),
(56, 57, 16, 10, "", 0, 0),
(57, 58, 14, 10, "", 0, 0),
(58, 59, 16, 10, "", 0, 0),
(59, 32, 7, 10, "", 0, 0),
(60, 61, 7, 10, "", 0, 0),
(61, 62, 7, 10, "", 0, 0),
(63, 64, 14, 10, "", 0, 0),
(65, 66, 14, 10, "", 0, 0),
(67, 68, 7, 10, "", 0, 0),
(68, 69, 7, 10, "", 0, 0),
(70, 71, 14, 10, "", 0, 0),
(72, 73, 14, 10, "", 0, 0),
(74, 75, 7, 10, "", 0, 0),
(75, 76, 7, 10, "", 0, 0),
(77, 78, 14, 10, "", 0, 0),
(79, 80, 14, 10, "", 0, 0),
(81, 82, 7, 10, "", 0, 0),
(82, 83, 7, 10, "", 0, 0),
(84, 85, 14, 10, "", 0, 0),
(86, 87, 14, 10, "", 0, 0),
(88, 89, 7, 10, "", 0, 2),
(89, 90, 16, 10, "", 0, 2),
(90, 91, 14, 10, "", 0, 2),
(91, 92, 16, 10, "", 0, 2),
(92, 93, 14, 10, "", 0, 2),
(93, 94, 16, 10, "", 0, 2),
(94, 95, 7, 10, "", 0, 2),
(95, 96, 7, 10, "", 0, 2),
(96, 97, 16, 10, "", 0, 2),
(97, 98, 14, 10, "", 0, 2),
(98, 99, 16, 10, "", 0, 2),
(99, 100, 14, 10, "", 0, 2),
(100, 101, 16, 10, "", 0, 2),
(101, 102, 7, 10, "", 0, 2),
(102, 103, 7, 10, "", 0, 2),
(103, 104, 16, 10, "", 0, 2),
(104, 105, 14, 10, "", 0, 2),
(105, 106, 16, 10, "", 0, 2),
(106, 107, 14, 10, "", 0, 2),
(107, 108, 16, 10, "", 0, 2),
(108, 109, 7, 10, "", 0, 2),
(109, 110, 7, 10, "", 0, 2),
(110, 111, 16, 10, "", 0, 2),
(111, 112, 14, 10, "", 0, 2),
(112, 113, 16, 10, "", 0, 2),
(113, 114, 14, 10, "", 0, 2),
(114, 115, 16, 10, "", 0, 2),
(115, 88, 7, 10, "", 0, 2),
(116, 117, 7, 10, "", 0, 2),
(117, 118, 16, 10, "", 0, 2),
(118, 119, 14, 10, "", 0, 2),
(119, 120, 16, 10, "", 0, 2),
(120, 121, 14, 10, "", 0, 2),
(121, 122, 16, 10, "", 0, 2),
(122, 123, 7, 10, "", 0, 2),
(123, 124, 7, 10, "", 0, 2),
(124, 125, 16, 10, "", 0, 2),
(125, 126, 14, 10, "", 0, 2),
(126, 127, 16, 10, "", 0, 2),
(127, 128, 14, 10, "", 0, 2),
(128, 129, 16, 10, "", 0, 2),
(129, 130, 7, 10, "", 0, 2),
(130, 131, 7, 10, "", 0, 2),
(131, 132, 16, 10, "", 0, 2),
(132, 133, 14, 10, "", 0, 2),
(133, 134, 16, 10, "", 0, 2),
(134, 135, 14, 10, "", 0, 2),
(135, 136, 16, 10, "", 0, 2),
(136, 137, 7, 10, "", 0, 2),
(137, 138, 7, 10, "", 0, 2),
(138, 139, 16, 10, "", 0, 2),
(139, 140, 14, 10, "", 0, 2),
(140, 141, 16, 10, "", 0, 2),
(141, 142, 14, 10, "", 0, 2),
(142, 143, 16, 10, "", 0, 2),
(143, 116, 7, 10, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
x0, y0 = _nodes[a][:2]
x1, y1 = _nodes[b][:2]
mi_addarc(x0, y0, x1, y1, angle, max_angle)
half = math.radians(angle)/2
cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
mi_selectarcsegment(xm, ym)
mi_setarcsegmentprop(max_angle, boundary, hidden, group)
mi_clearselected()
# Метки: положение, материал, размер элемента, цепь, намагничивание, группа, витки.
_labels = [
(144.5, 144.5, "Воздух", 0, "", 0, 0, 1),
(0, 94, "Линейная сталь", 0, "", 0, 1, 1),
(73, 0, "Обмоточная область", 0, "Фаза А", 0, 1, 40),
(63.219854476264025, 36.499999999999993, "Обмоточная область", 0, "Фаза С", 0, 1, -40),
(36.500000000000007, 63.219854476264018, "Обмоточная область", 0, "Фаза В", 0, 1, 40),
(4.469813191451677e-15, 73, "Обмоточная область", 0, "Фаза А", 0, 1, -40),
(-36.499999999999986, 63.219854476264025, "Обмоточная область", 0, "Фаза С", 0, 1, 40),
(-63.219854476264025, 36.499999999999993, "Обмоточная область", 0, "Фаза В", 0, 1, -40),
(-73, 8.939626382903354e-15, "Обмоточная область", 0, "Фаза А", 0, 1, 40),
(-63.219854476264018, -36.500000000000007, "Обмоточная область", 0, "Фаза С", 0, 1, -40),
(-36.500000000000036, -63.219854476264004, "Обмоточная область", 0, "Фаза В", 0, 1, 40),
(-1.3409439574355031e-14, -73, "Обмоточная область", 0, "Фаза А", 0, 1, -40),
(36.500000000000007, -63.219854476264018, "Обмоточная область", 0, "Фаза С", 0, 1, 40),
(63.219854476264004, -36.500000000000036, "Обмоточная область", 0, "Фаза В", 0, 1, -40),
(19.798989873223331, 19.798989873223327, "Линейная сталь", 0, "", 0, 2, 1),
(45, 0, "Постоянный магнит", 0, "", 0, 2, 1),
(2.7553642961003488e-15, 45, "Постоянный магнит", 0, "", 270, 2, 1),
(-45, 5.5107285922006977e-15, "Постоянный магнит", 0, "", 180, 2, 1),
(-8.2660928883010465e-15, -45, "Постоянный магнит", 0, "", 450, 2, 1),
(0, 0, "Воздух", 0, "", 0, 2, 1),
(56.421980601819094, 17.249930578641468, "Воздух", 0, "", 0, 0, 1),
]
for x, y, material, size, circuit, direction, group, turns in _labels:
mi_addblocklabel(x, y)
if material:
mi_selectlabel(x, y)
mi_setblockprop(material, 1 if size <= 0 else 0, size, circuit, direction, group, turns)
mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 8. Модель неполная: переходите к следующему этапу, не запускайте решение.")

Этап 9 из 11
Локальные размеры сетки и готовая модель
- Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
- Откройте свойства каждой метки; снимите Auto mesh для положительного размера и укажите значение в миллиметрах. Нулевой либо отрицательный размер означает автоматический выбор.
- Проверьте ограничения длины на отрезках и угла на дугах по отдельным таблицам. Для дуги ограничение задаётся в градусах, а не в миллиметрах.
- Сверьте глобальный минимальный угол, умную сетку, материалы, токи, границы и все назначения. Теперь файл содержит полное состояние проверенного исходного варианта.
- Сохраните собственную рабочую копию через «Файл → Сохранить как». Изменённая пользователем копия должна рассчитываться заново; унаследованное решение ниже относится к неизменённому эталону.
Широкую таблицу можно прокрутить по горизонтали.
| № метки | Материал | Размер элемента, мм | Режим |
|---|---|---|---|
| 0 | Воздух | 8,5 | заданный |
| 1 | Линейная сталь | 3 | заданный |
| 2 | Обмоточная область | 2 | заданный |
| 3 | Обмоточная область | 2 | заданный |
| 4 | Обмоточная область | 2 | заданный |
| 5 | Обмоточная область | 2 | заданный |
| 6 | Обмоточная область | 2 | заданный |
| 7 | Обмоточная область | 2 | заданный |
| 8 | Обмоточная область | 2 | заданный |
| 9 | Обмоточная область | 2 | заданный |
| 10 | Обмоточная область | 2 | заданный |
| 11 | Обмоточная область | 2 | заданный |
| 12 | Обмоточная область | 2 | заданный |
| 13 | Обмоточная область | 2 | заданный |
| 14 | Линейная сталь | 2 | заданный |
| 15 | Постоянный магнит | 1 | заданный |
| 16 | Постоянный магнит | 1 | заданный |
| 17 | Постоянный магнит | 1 | заданный |
| 18 | Постоянный магнит | 1 | заданный |
| 19 | Воздух | 2 | заданный |
| 20 | Воздух | 0,35 | заданный |
Широкую таблицу можно прокрутить по горизонтали.
| № отрезка | Максимальная длина, мм | Режим |
|---|---|---|
| 0 | -1 | автоматический |
| 1 | -1 | автоматический |
| 2 | -1 | автоматический |
| 3 | -1 | автоматический |
| 4 | -1 | автоматический |
| 5 | -1 | автоматический |
| 6 | -1 | автоматический |
| 7 | -1 | автоматический |
| 8 | -1 | автоматический |
| 9 | -1 | автоматический |
| 10 | -1 | автоматический |
| 11 | -1 | автоматический |
| 12 | -1 | автоматический |
| 13 | -1 | автоматический |
| 14 | -1 | автоматический |
| 15 | -1 | автоматический |
| 16 | -1 | автоматический |
| 17 | -1 | автоматический |
| 18 | -1 | автоматический |
| 19 | -1 | автоматический |
| 20 | -1 | автоматический |
| 21 | -1 | автоматический |
| 22 | -1 | автоматический |
| 23 | -1 | автоматический |
| 24 | -1 | автоматический |
| 25 | -1 | автоматический |
| 26 | -1 | автоматический |
| 27 | -1 | автоматический |
| 28 | -1 | автоматический |
| 29 | -1 | автоматический |
| 30 | -1 | автоматический |
| 31 | -1 | автоматический |
| 32 | -1 | автоматический |
| 33 | -1 | автоматический |
| 34 | -1 | автоматический |
| 35 | -1 | автоматический |
| 36 | -1 | автоматический |
| 37 | -1 | автоматический |
| 38 | -1 | автоматический |
| 39 | -1 | автоматический |
| 40 | -1 | автоматический |
| 41 | -1 | автоматический |
| 42 | -1 | автоматический |
| 43 | -1 | автоматический |
| № дуги | Максимальный угол элемента, {}^\circ |
|---|---|
| 0 | 4 |
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 4 | 4 |
| 5 | 4 |
| 6 | 4 |
| 7 | 4 |
| 8 | 4 |
| 9 | 4 |
| 10 | 4 |
| 11 | 4 |
| 12 | 4 |
| 13 | 4 |
| 14 | 4 |
| 15 | 4 |
| 16 | 4 |
| 17 | 4 |
| 18 | 4 |
| 19 | 4 |
| 20 | 4 |
| 21 | 4 |
| 22 | 4 |
| 23 | 4 |
| 24 | 4 |
| 25 | 4 |
| 26 | 4 |
| 27 | 4 |
| 28 | 4 |
| 29 | 4 |
| 30 | 4 |
| 31 | 4 |
| 32 | 4 |
| 33 | 4 |
| 34 | 4 |
| 35 | 4 |
| 36 | 4 |
| 37 | 4 |
| 38 | 4 |
| 39 | 4 |
| 40 | 4 |
| 41 | 4 |
| 42 | 4 |
| 43 | 4 |
| 44 | 4 |
| 45 | 4 |
| 46 | 4 |
| 47 | 4 |
| 48 | 4 |
| 49 | 4 |
| 50 | 4 |
| 51 | 4 |
| 52 | 4 |
| 53 | 4 |
| 54 | 4 |
| 55 | 4 |
| 56 | 4 |
| 57 | 4 |
| 58 | 4 |
| 59 | 4 |
| 60 | 4 |
| 61 | 4 |
| 62 | 4 |
| 63 | 4 |
| 64 | 4 |
| 65 | 4 |
| 66 | 4 |
| 67 | 4 |
| 68 | 4 |
| 69 | 4 |
| 70 | 4 |
| 71 | 4 |
| 72 | 4 |
| 73 | 4 |
| 74 | 4 |
| 75 | 4 |
| 76 | 4 |
| 77 | 4 |
| 78 | 4 |
| 79 | 4 |
| 80 | 4 |
| 81 | 4 |
| 82 | 4 |
| 83 | 4 |
| 84 | 4 |
| 85 | 4 |
| 86 | 4 |
| 87 | 4 |
| 88 | 4 |
| 89 | 4 |
| 90 | 4 |
| 91 | 4 |
| 92 | 4 |
| 93 | 4 |
| 94 | 4 |
| 95 | 4 |
| 96 | 4 |
| 97 | 4 |
| 98 | 4 |
| 99 | 4 |
| 100 | 4 |
| 101 | 4 |
| 102 | 4 |
| 103 | 4 |
| 104 | 4 |
| 105 | 4 |
| 106 | 4 |
| 107 | 4 |
| 108 | 4 |
| 109 | 4 |
| 110 | 4 |
| 111 | 4 |
| 112 | 4 |
| 113 | 4 |
| 114 | 4 |
| 115 | 4 |
| 116 | 4 |
| 117 | 4 |
| 118 | 4 |
| 119 | 4 |
| 120 | 4 |
| 121 | 4 |
| 122 | 4 |
| 123 | 4 |
| 124 | 4 |
| 125 | 4 |
| 126 | 4 |
| 127 | 4 |
Сохранённое состояние этапа
Модель после шага 9Встроенный Python: шаг 9
Параметры этого файла подготовлены для расчёта.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 9: Локальные размеры сетки и готовая модель
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
(-170, -170, 0),
(170, -170, 0),
(170, 170, 0),
(-170, 170, 0),
(60, 0, 0),
(59.552769098479317, 7.3121606043088487, 0),
(55.230291207146422, 23.443867709356425, 0),
(47.918130602837572, 36.108901389122899, 0),
(36.108901389122906, 47.918130602837572, 0),
(23.443867709356422, 55.230291207146422, 0),
(7.3121606043088496, 59.552769098479317, 0),
(3.6738190614671318e-15, 60, 0),
(-7.3121606043088416, 59.552769098479324, 0),
(-23.443867709356425, 55.230291207146415, 0),
(-36.108901389122906, 47.918130602837564, 0),
(-47.918130602837579, 36.108901389122892, 0),
(-55.230291207146422, 23.443867709356425, 0),
(-59.552769098479317, 7.3121606043088523, 0),
(-60, 7.3476381229342635e-15, 0),
(-59.552769098479324, -7.312160604308839, 0),
(-55.230291207146422, -23.443867709356415, 0),
(-47.918130602837572, -36.108901389122906, 0),
(-36.108901389122899, -47.918130602837572, 0),
(-23.443867709356429, -55.230291207146415, 0),
(-7.3121606043088301, -59.552769098479324, 0),
(-1.1021457184401395e-14, -60, 0),
(7.3121606043088612, -59.552769098479317, 0),
(23.443867709356411, -55.230291207146429, 0),
(36.108901389122877, -47.918130602837586, 0),
(47.918130602837572, -36.108901389122899, 0),
(55.230291207146415, -23.443867709356432, 0),
(59.552769098479324, -7.3121606043088336, 0),
(100, 0, 0),
(99.254615164132204, 12.186934340514748, 0),
(92.050485345244041, 39.07311284892738, 0),
(79.863551004729288, 60.181502315204824, 0),
(60.181502315204838, 79.863551004729288, 0),
(39.073112848927373, 92.050485345244041, 0),
(12.18693434051475, 99.254615164132204, 0),
(6.1230317691118863e-15, 100, 0),
(-12.186934340514737, 99.254615164132204, 0),
(-39.07311284892738, 92.050485345244027, 0),
(-60.181502315204838, 79.863551004729274, 0),
(-79.863551004729288, 60.181502315204817, 0),
(-92.050485345244041, 39.07311284892738, 0),
(-99.254615164132204, 12.186934340514755, 0),
(-100, 1.2246063538223773e-14, 0),
(-99.254615164132204, -12.18693434051473, 0),
(-92.050485345244041, -39.073112848927352, 0),
(-79.863551004729288, -60.181502315204838, 0),
(-60.181502315204824, -79.863551004729288, 0),
(-39.07311284892738, -92.050485345244027, 0),
(-12.186934340514718, -99.254615164132204, 0),
(-1.8369095307335659e-14, -100, 0),
(12.186934340514769, -99.254615164132204, 0),
(39.073112848927352, -92.050485345244056, 0),
(60.181502315204796, -79.863551004729302, 0),
(79.863551004729288, -60.181502315204824, 0),
(92.050485345244027, -39.073112848927387, 0),
(99.254615164132204, -12.186934340514723, 0),
(84.366422889512378, -10.358894189437514, 0),
(85, -2.0818308014980413e-14, 0),
(84.366422889512364, 10.358894189437548, 0),
(78.242912543457436, 33.212145921588274, 0),
(67.884018354019886, 51.154276967924105, 0),
(51.154276967924112, 67.884018354019886, 0),
(33.212145921588267, 78.242912543457436, 0),
(10.358894189437537, 84.366422889512364, 0),
(5.2045770037451033e-15, 85, 0),
(-10.358894189437526, 84.366422889512378, 0),
(-33.212145921588274, 78.242912543457422, 0),
(-51.154276967924112, 67.884018354019886, 0),
(-67.884018354019901, 51.154276967924091, 0),
(-78.242912543457436, 33.212145921588274, 0),
(-84.366422889512364, 10.358894189437541, 0),
(-85, 1.0409154007490207e-14, 0),
(-84.366422889512378, -10.358894189437521, 0),
(-78.242912543457436, -33.212145921588252, 0),
(-67.884018354019886, -51.154276967924112, 0),
(-51.154276967924105, -67.884018354019886, 0),
(-33.212145921588274, -78.242912543457422, 0),
(-10.35889418943751, -84.366422889512378, 0),
(-1.561373101123531e-14, -85, 0),
(10.358894189437553, -84.366422889512364, 0),
(33.212145921588245, -78.242912543457436, 0),
(51.154276967924076, -67.884018354019915, 0),
(67.884018354019886, -51.154276967924105, 0),
(78.242912543457422, -33.212145921588281, 0),
(18, 0, 2),
(17.865830729543795, 2.1936481812926547, 2),
(16.569087362143925, 7.0331603128069275, 2),
(14.37543918085127, 10.832670416736869, 2),
(10.832670416736871, 14.37543918085127, 2),
(7.0331603128069267, 16.569087362143925, 2),
(2.1936481812926547, 17.865830729543795, 2),
(1.1021457184401395e-15, 18, 2),
(-2.1936481812926525, 17.865830729543799, 2),
(-7.0331603128069275, 16.569087362143925, 2),
(-10.832670416736871, 14.375439180851268, 2),
(-14.375439180851274, 10.832670416736867, 2),
(-16.569087362143925, 7.0331603128069275, 2),
(-17.865830729543795, 2.193648181292656, 2),
(-18, 2.2042914368802791e-15, 2),
(-17.865830729543799, -2.1936481812926516, 2),
(-16.569087362143925, -7.033160312806924, 2),
(-14.37543918085127, -10.832670416736871, 2),
(-10.832670416736869, -14.37543918085127, 2),
(-7.0331603128069293, -16.569087362143925, 2),
(-2.1936481812926489, -17.865830729543799, 2),
(-3.3064371553204186e-15, -18, 2),
(2.1936481812926583, -17.865830729543795, 2),
(7.0331603128069231, -16.569087362143929, 2),
(10.832670416736862, -14.375439180851275, 2),
(14.37543918085127, -10.832670416736869, 2),
(16.569087362143925, -7.0331603128069302, 2),
(17.865830729543799, -2.1936481812926503, 2),
(58, 0, 2),
(57.567676795196675, 7.0684219174985534, 2),
(53.389281500241545, 22.662405452377879, 2),
(46.320859582742983, 34.9052713428188, 2),
(34.905271342818807, 46.320859582742983, 2),
(22.662405452377875, 53.389281500241545, 2),
(7.0684219174985543, 57.567676795196675, 2),
(3.551358426084894e-15, 58, 2),
(-7.0684219174985472, 57.567676795196682, 2),
(-22.662405452377879, 53.389281500241538, 2),
(-34.905271342818807, 46.320859582742976, 2),
(-46.32085958274299, 34.905271342818793, 2),
(-53.389281500241545, 22.662405452377879, 2),
(-57.567676795196675, 7.0684219174985579, 2),
(-58, 7.1027168521697881e-15, 2),
(-57.567676795196682, -7.0684219174985436, 2),
(-53.389281500241545, -22.662405452377865, 2),
(-46.320859582742983, -34.905271342818807, 2),
(-34.9052713428188, -46.320859582742983, 2),
(-22.662405452377882, -53.389281500241538, 2),
(-7.0684219174985357, -57.567676795196682, 2),
(-1.0654075278254682e-14, -58, 2),
(7.0684219174985659, -57.567676795196675, 2),
(22.662405452377861, -53.389281500241552, 2),
(34.905271342818779, -46.320859582742997, 2),
(46.320859582742983, -34.9052713428188, 2),
(53.389281500241538, -22.662405452377886, 2),
(57.567676795196682, -7.0684219174985392, 2),
(43, -11, 2),
(47, -11, 2),
(47, 11, 2),
(43, 11, 2),
(11.000000000000002, 43, 2),
(11.000000000000004, 47, 2),
(-10.999999999999996, 47, 2),
(-10.999999999999998, 43, 2),
(-43, 11.000000000000005, 2),
(-47, 11.000000000000005, 2),
(-47, -10.999999999999995, 2),
(-43, -10.999999999999995, 2),
(-11.000000000000007, -43, 2),
(-11.000000000000009, -47, 2),
(10.999999999999991, -47, 2),
(10.999999999999993, -43, 2),
]
for x, y, group in _nodes:
mi_addnode(x, y)
if group:
mi_selectnode(x, y)
mi_setnodeprop('', group)
mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
(0, 1, -1, "Нулевой потенциал", 0, 0),
(1, 2, -1, "Нулевой потенциал", 0, 0),
(2, 3, -1, "Нулевой потенциал", 0, 0),
(3, 0, -1, "Нулевой потенциал", 0, 0),
(31, 60, -1, "", 0, 0),
(5, 62, -1, "", 0, 0),
(6, 63, -1, "", 0, 0),
(7, 64, -1, "", 0, 0),
(8, 65, -1, "", 0, 0),
(9, 66, -1, "", 0, 0),
(10, 67, -1, "", 0, 0),
(12, 69, -1, "", 0, 0),
(13, 70, -1, "", 0, 0),
(14, 71, -1, "", 0, 0),
(15, 72, -1, "", 0, 0),
(16, 73, -1, "", 0, 0),
(17, 74, -1, "", 0, 0),
(19, 76, -1, "", 0, 0),
(20, 77, -1, "", 0, 0),
(21, 78, -1, "", 0, 0),
(22, 79, -1, "", 0, 0),
(23, 80, -1, "", 0, 0),
(24, 81, -1, "", 0, 0),
(26, 83, -1, "", 0, 0),
(27, 84, -1, "", 0, 0),
(28, 85, -1, "", 0, 0),
(29, 86, -1, "", 0, 0),
(30, 87, -1, "", 0, 0),
(144, 145, -1, "", 0, 2),
(145, 146, -1, "", 0, 2),
(146, 147, -1, "", 0, 2),
(147, 144, -1, "", 0, 2),
(148, 149, -1, "", 0, 2),
(149, 150, -1, "", 0, 2),
(150, 151, -1, "", 0, 2),
(151, 148, -1, "", 0, 2),
(152, 153, -1, "", 0, 2),
(153, 154, -1, "", 0, 2),
(154, 155, -1, "", 0, 2),
(155, 152, -1, "", 0, 2),
(156, 157, -1, "", 0, 2),
(157, 158, -1, "", 0, 2),
(158, 159, -1, "", 0, 2),
(159, 156, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
x0, y0 = _nodes[a][:2]
x1, y1 = _nodes[b][:2]
mi_addsegment(x0, y0, x1, y1)
mi_selectsegment((x0+x1)/2, (y0+y1)/2)
mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
(4, 5, 7, 4, "", 0, 0),
(5, 6, 16, 4, "", 0, 0),
(6, 7, 14, 4, "", 0, 0),
(7, 8, 16, 4, "", 0, 0),
(8, 9, 14, 4, "", 0, 0),
(9, 10, 16, 4, "", 0, 0),
(10, 11, 7, 4, "", 0, 0),
(11, 12, 7, 4, "", 0, 0),
(12, 13, 16, 4, "", 0, 0),
(13, 14, 14, 4, "", 0, 0),
(14, 15, 16, 4, "", 0, 0),
(15, 16, 14, 4, "", 0, 0),
(16, 17, 16, 4, "", 0, 0),
(17, 18, 7, 4, "", 0, 0),
(18, 19, 7, 4, "", 0, 0),
(19, 20, 16, 4, "", 0, 0),
(20, 21, 14, 4, "", 0, 0),
(21, 22, 16, 4, "", 0, 0),
(22, 23, 14, 4, "", 0, 0),
(23, 24, 16, 4, "", 0, 0),
(24, 25, 7, 4, "", 0, 0),
(25, 26, 7, 4, "", 0, 0),
(26, 27, 16, 4, "", 0, 0),
(27, 28, 14, 4, "", 0, 0),
(28, 29, 16, 4, "", 0, 0),
(29, 30, 14, 4, "", 0, 0),
(30, 31, 16, 4, "", 0, 0),
(31, 4, 7, 4, "", 0, 0),
(32, 33, 7, 4, "", 0, 0),
(33, 34, 16, 4, "", 0, 0),
(34, 35, 14, 4, "", 0, 0),
(35, 36, 16, 4, "", 0, 0),
(36, 37, 14, 4, "", 0, 0),
(37, 38, 16, 4, "", 0, 0),
(38, 39, 7, 4, "", 0, 0),
(39, 40, 7, 4, "", 0, 0),
(40, 41, 16, 4, "", 0, 0),
(41, 42, 14, 4, "", 0, 0),
(42, 43, 16, 4, "", 0, 0),
(43, 44, 14, 4, "", 0, 0),
(44, 45, 16, 4, "", 0, 0),
(45, 46, 7, 4, "", 0, 0),
(46, 47, 7, 4, "", 0, 0),
(47, 48, 16, 4, "", 0, 0),
(48, 49, 14, 4, "", 0, 0),
(49, 50, 16, 4, "", 0, 0),
(50, 51, 14, 4, "", 0, 0),
(51, 52, 16, 4, "", 0, 0),
(52, 53, 7, 4, "", 0, 0),
(53, 54, 7, 4, "", 0, 0),
(54, 55, 16, 4, "", 0, 0),
(55, 56, 14, 4, "", 0, 0),
(56, 57, 16, 4, "", 0, 0),
(57, 58, 14, 4, "", 0, 0),
(58, 59, 16, 4, "", 0, 0),
(59, 32, 7, 4, "", 0, 0),
(60, 61, 7, 4, "", 0, 0),
(61, 62, 7, 4, "", 0, 0),
(63, 64, 14, 4, "", 0, 0),
(65, 66, 14, 4, "", 0, 0),
(67, 68, 7, 4, "", 0, 0),
(68, 69, 7, 4, "", 0, 0),
(70, 71, 14, 4, "", 0, 0),
(72, 73, 14, 4, "", 0, 0),
(74, 75, 7, 4, "", 0, 0),
(75, 76, 7, 4, "", 0, 0),
(77, 78, 14, 4, "", 0, 0),
(79, 80, 14, 4, "", 0, 0),
(81, 82, 7, 4, "", 0, 0),
(82, 83, 7, 4, "", 0, 0),
(84, 85, 14, 4, "", 0, 0),
(86, 87, 14, 4, "", 0, 0),
(88, 89, 7, 4, "", 0, 2),
(89, 90, 16, 4, "", 0, 2),
(90, 91, 14, 4, "", 0, 2),
(91, 92, 16, 4, "", 0, 2),
(92, 93, 14, 4, "", 0, 2),
(93, 94, 16, 4, "", 0, 2),
(94, 95, 7, 4, "", 0, 2),
(95, 96, 7, 4, "", 0, 2),
(96, 97, 16, 4, "", 0, 2),
(97, 98, 14, 4, "", 0, 2),
(98, 99, 16, 4, "", 0, 2),
(99, 100, 14, 4, "", 0, 2),
(100, 101, 16, 4, "", 0, 2),
(101, 102, 7, 4, "", 0, 2),
(102, 103, 7, 4, "", 0, 2),
(103, 104, 16, 4, "", 0, 2),
(104, 105, 14, 4, "", 0, 2),
(105, 106, 16, 4, "", 0, 2),
(106, 107, 14, 4, "", 0, 2),
(107, 108, 16, 4, "", 0, 2),
(108, 109, 7, 4, "", 0, 2),
(109, 110, 7, 4, "", 0, 2),
(110, 111, 16, 4, "", 0, 2),
(111, 112, 14, 4, "", 0, 2),
(112, 113, 16, 4, "", 0, 2),
(113, 114, 14, 4, "", 0, 2),
(114, 115, 16, 4, "", 0, 2),
(115, 88, 7, 4, "", 0, 2),
(116, 117, 7, 4, "", 0, 2),
(117, 118, 16, 4, "", 0, 2),
(118, 119, 14, 4, "", 0, 2),
(119, 120, 16, 4, "", 0, 2),
(120, 121, 14, 4, "", 0, 2),
(121, 122, 16, 4, "", 0, 2),
(122, 123, 7, 4, "", 0, 2),
(123, 124, 7, 4, "", 0, 2),
(124, 125, 16, 4, "", 0, 2),
(125, 126, 14, 4, "", 0, 2),
(126, 127, 16, 4, "", 0, 2),
(127, 128, 14, 4, "", 0, 2),
(128, 129, 16, 4, "", 0, 2),
(129, 130, 7, 4, "", 0, 2),
(130, 131, 7, 4, "", 0, 2),
(131, 132, 16, 4, "", 0, 2),
(132, 133, 14, 4, "", 0, 2),
(133, 134, 16, 4, "", 0, 2),
(134, 135, 14, 4, "", 0, 2),
(135, 136, 16, 4, "", 0, 2),
(136, 137, 7, 4, "", 0, 2),
(137, 138, 7, 4, "", 0, 2),
(138, 139, 16, 4, "", 0, 2),
(139, 140, 14, 4, "", 0, 2),
(140, 141, 16, 4, "", 0, 2),
(141, 142, 14, 4, "", 0, 2),
(142, 143, 16, 4, "", 0, 2),
(143, 116, 7, 4, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
x0, y0 = _nodes[a][:2]
x1, y1 = _nodes[b][:2]
mi_addarc(x0, y0, x1, y1, angle, max_angle)
half = math.radians(angle)/2
cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
mi_selectarcsegment(xm, ym)
mi_setarcsegmentprop(max_angle, boundary, hidden, group)
mi_clearselected()
# Метки: положение, материал, размер элемента, цепь, намагничивание, группа, витки.
_labels = [
(144.5, 144.5, "Воздух", 8.5, "", 0, 0, 1),
(0, 94, "Линейная сталь", 3, "", 0, 1, 1),
(73, 0, "Обмоточная область", 2, "Фаза А", 0, 1, 40),
(63.219854476264025, 36.499999999999993, "Обмоточная область", 2, "Фаза С", 0, 1, -40),
(36.500000000000007, 63.219854476264018, "Обмоточная область", 2, "Фаза В", 0, 1, 40),
(4.469813191451677e-15, 73, "Обмоточная область", 2, "Фаза А", 0, 1, -40),
(-36.499999999999986, 63.219854476264025, "Обмоточная область", 2, "Фаза С", 0, 1, 40),
(-63.219854476264025, 36.499999999999993, "Обмоточная область", 2, "Фаза В", 0, 1, -40),
(-73, 8.939626382903354e-15, "Обмоточная область", 2, "Фаза А", 0, 1, 40),
(-63.219854476264018, -36.500000000000007, "Обмоточная область", 2, "Фаза С", 0, 1, -40),
(-36.500000000000036, -63.219854476264004, "Обмоточная область", 2, "Фаза В", 0, 1, 40),
(-1.3409439574355031e-14, -73, "Обмоточная область", 2, "Фаза А", 0, 1, -40),
(36.500000000000007, -63.219854476264018, "Обмоточная область", 2, "Фаза С", 0, 1, 40),
(63.219854476264004, -36.500000000000036, "Обмоточная область", 2, "Фаза В", 0, 1, -40),
(19.798989873223331, 19.798989873223327, "Линейная сталь", 2, "", 0, 2, 1),
(45, 0, "Постоянный магнит", 1, "", 0, 2, 1),
(2.7553642961003488e-15, 45, "Постоянный магнит", 1, "", 270, 2, 1),
(-45, 5.5107285922006977e-15, "Постоянный магнит", 1, "", 180, 2, 1),
(-8.2660928883010465e-15, -45, "Постоянный магнит", 1, "", 450, 2, 1),
(0, 0, "Воздух", 2, "", 0, 2, 1),
(56.421980601819094, 17.249930578641468, "Воздух", 0.34999999999999998, "", 0, 0, 1),
]
for x, y, material, size, circuit, direction, group, turns in _labels:
mi_addblocklabel(x, y)
if material:
mi_selectlabel(x, y)
mi_setblockprop(material, 1 if size <= 0 else 0, size, circuit, direction, group, turns)
mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 9. Модель полная; автоматический расчёт не запускался.")

Этап 10 из 11
Просмотр сохранённой сетки
- Скачайте файлы «Встроенные-магниты-09-Готовая-модель.fem» и «Встроенные-магниты-09-Готовая-модель.ans» в одну папку. Их имена до расширения должны совпадать; сохраняйте исходные имена, чтобы FEMM нашёл готовое решение.
- Откройте именно файл «Полная модель шага 9 для просмотра решения», затем выполните mi_loadsolution() во встроенной консоли Python. Отдельный файл «Модель после шага 10» содержит то же состояние геометрии, но к его имени не приложено отдельное решение.
- В постпроцессоре выполните mo_showmesh(): команда показывает сетку готового решения и не создаёт новую сетку. Программу этого этапа также сохраните рядом с парой файлов модели и решения; запускайте её во встроенном Python FEMM.
- Рассмотрите сгущение сетки в узких зазорах и у границ материалов, если они присутствуют в модели. Оценка точности требует отдельной проверки сходимости; один снимок сетки её не заменяет.
- Для изменённой рабочей копии сетку и решение нужно построить заново. Приложенное решение относится только к неизменённому примеру.
Широкую таблицу можно прокрутить по горизонтали.
| № метки | Материал | Размер элемента, мм | Режим |
|---|---|---|---|
| 0 | Воздух | 8,5 | заданный |
| 1 | Линейная сталь | 3 | заданный |
| 2 | Обмоточная область | 2 | заданный |
| 3 | Обмоточная область | 2 | заданный |
| 4 | Обмоточная область | 2 | заданный |
| 5 | Обмоточная область | 2 | заданный |
| 6 | Обмоточная область | 2 | заданный |
| 7 | Обмоточная область | 2 | заданный |
| 8 | Обмоточная область | 2 | заданный |
| 9 | Обмоточная область | 2 | заданный |
| 10 | Обмоточная область | 2 | заданный |
| 11 | Обмоточная область | 2 | заданный |
| 12 | Обмоточная область | 2 | заданный |
| 13 | Обмоточная область | 2 | заданный |
| 14 | Линейная сталь | 2 | заданный |
| 15 | Постоянный магнит | 1 | заданный |
| 16 | Постоянный магнит | 1 | заданный |
| 17 | Постоянный магнит | 1 | заданный |
| 18 | Постоянный магнит | 1 | заданный |
| 19 | Воздух | 2 | заданный |
| 20 | Воздух | 0,35 | заданный |
Сохранённое состояние этапа
Полная модель шага 9 для просмотра решенияМодель после шага 10Сохранённое решение эталонаВстроенный Python: шаг 10
Параметры этого файла подготовлены для расчёта.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 10: Просмотр сохранённой сетки
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import os
try:
_script = __file__.replace(chr(92), '/')
_folder = _script.rsplit('/', 1)[0] if '/' in _script else os.getcwd()
except NameError:
_folder = os.getcwd()
# Открываем готовый эталон и его унаследованное решение из одной папки.
opendocument(_folder + '/' + "Встроенные-магниты-09-Готовая-модель.fem")
mi_loadsolution()
mo_clearblock()
mo_clearcontour()
mo_zoomnatural()
mo_showdensityplot(1, 0, 1.8, 0, 'bmag')
# Показать существующие элементы из .ans; сетка не строится заново.
mo_showmesh()

Этап 11 из 11
Поле и численные результаты
- Для просмотра приложенного результата используйте ту же пару итоговых файлов модели и решения из предыдущего этапа. Программу этого этапа сохраните в той же папке: она открывает готовое решение, не запуская новый расчёт. Файл «Модель после шага 11» сохраняет итоговую геометрию; отдельного одноимённого решения к нему нет.
- Включите карту модуля магнитной индукции и прочитайте шкалу в теслах. Последовательно откройте результаты каждой цепи и сравните ток, полевое напряжение и потокосцепление с таблицей.
- Чтобы проверить энергию всей модели во встроенной консоли Python, выполните последовательно
mo_clearblock(),mo_groupselectblock(), затемprint(mo_blockintegral(2)). Для коэнергии при том же выделении выполнитеprint(mo_blockintegral(17)). После проверки снимите выделение командойmo_clearblock(). - Для момента ротора относительно начала координат выделите только группу 2:
mo_clearblock(), затемmo_groupselectblock(2). Выполнитеprint(mo_blockintegral(22))и сравните результат в Н·м вместе со знаком. После проверки выполнитеmo_clearblock(). - Это неподвижное токовое состояние. Скоростная ЭДС, коммутация и полный привод не возникают от одной карты поля; для них требуются описанные в курсе серии положений и внешние соотношения.
- Таблица содержит результаты этой модели. После изменения параметров выполните новый расчёт через Analysis → Analyze, откройте результат через Analysis → View Results и сравните значения.
- Момент в таблице этого этапа относится к исходной учебной сетке. Уточнённые значения, сравнение методов и файлы рекомендуемой сетки приведены в разделе «Сходимость момента» выше. По исходному количеству выведенных знаков точность не оценивают.
Широкую таблицу можно прокрутить по горизонтали.
| Цепь | Ток, А | Полевое напряжение, В | Потокосцепление, Вб |
|---|---|---|---|
| Фаза А | 1 | 0 | 0,006896 |
| Фаза С | -2 | 0 | -0,01518 |
| Фаза В | 1 | 0 | 0,008287 |
| Величина | Значение |
|---|---|
| Энергия, Дж | 0,1218 |
| Коэнергия, Дж | 15,29 |
| Момент, Н·м | -0,005706 |
Сохранённое состояние этапа
Полная модель шага 9 для просмотра решенияМодель после шага 11Сохранённое решение эталонаВстроенный Python: шаг 11
Параметры этого файла подготовлены для расчёта.
Посмотреть программу этапа с русскими комментариями
# Машина со встроенными постоянными магнитами
# Шаг 11: Поле и численные результаты
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import os
try:
_script = __file__.replace(chr(92), '/')
_folder = _script.rsplit('/', 1)[0] if '/' in _script else os.getcwd()
except NameError:
_folder = os.getcwd()
# Открываем готовый эталон и его унаследованное решение из одной папки.
opendocument(_folder + '/' + "Встроенные-магниты-09-Готовая-модель.fem")
mi_loadsolution()
mo_clearblock()
mo_clearcontour()
mo_zoomnatural()
mo_showdensityplot(1, 0, 1.8, 0, 'bmag')
mo_hidemesh()
# Запрашиваем реальные результаты всех сохранённых цепей.
print("Фаза А: I, U поля, потокосцепление", mo_getcircuitproperties("Фаза А"))
print("Фаза В: I, U поля, потокосцепление", mo_getcircuitproperties("Фаза В"))
print("Фаза С: I, U поля, потокосцепление", mo_getcircuitproperties("Фаза С"))
# Энергия вычисляется по всем областям эталона.
mo_groupselectblock()
print('Энергия, Дж:', mo_blockintegral(2))
mo_clearblock()
