Знакомство с антенным моделировщиком cocoaNEC

22 июля 2019

Антенный моделировщик представляет собой программу, в которую вы вводите модель антенны, а программа показывает свойства этой антенны — распределение тока, входное сопротивление, диаграмму направленности, график КСВ, и так далее. Звучит как что-то полезное. Так давайте же попробуем смоделировать нашу первую антенну, и воспользуемся для этого моделировщиком cocoaNEC.

К сожалению, не существует одного бесплатного (и желательно открытого) моделировщика под все платформы. Среди пользователей Windows популярны моделировщики GAL-ANA, MMANA-GAL, 4NEC2 и EZNEC. Для Linux существует xnec2c. Под MacOS есть приложение cocoaNEC. Я сделал выбор в пользу последнего, поскольку на данный момент использую в качестве основной системы MacOS.

CocoaNEC является разработкой американского радиолюбителя Kok Chen, W7AY. Как можно догадаться по названию, графический интерфейс cocoaNEC построен на фреймворке Cocoa. Непосредственно для моделирования антенн используется открытый движок NEC-2. Интересное отличие cocoaNEC от других моделировщиков заключается в поддержке C-подобного языка для описания антенн. Язык называется NC. Лично я нахожу такой способ ввода модели намного удобнее, чам накликивание в GUI. Накликивание cocoaNEC тоже поддерживает, но здесь мы его рассматривать не будем.

На языке NC антенна inverted-V описывается следующим образом:

model ("inverted-v") {

real height, length, angle, eps, gauge, segments, a, b;
element center, left, right ;

height = 10;
length = 5.22;
angle = 120;
eps = 0.01;
gauge = #18;
segments = 21;

b = length*sin(pi*angle/2/180);
a = length*sin(pi*(90 - angle/2)/180);

center = wire(0,-eps, height,
              0, eps, height,
              gauge, segments);
left = wire(0, -b, height - a,
            0,-eps, height,
            gauge, segments);
right = wire(0, b, height - a,
             0,eps,height,
             gauge, segments);

voltageFeed(center, 1.0, 0.0);

azimuthPlotForElevationAngle(0);
elevationPlotForAzimuthAngle(32);

// frequencySweep(13.9, 14.4, 20);
setFrequency(14.150);

// poorGround();
averageGround();
// goodGround();
}

Как видите, модель антенны представляет собой множество соединенных проводов (функция wire). Для каждого провода указывается координаты его начала и конца, толщина провода, а также на сколько сегментов его нужно разбить при моделировании. Также мы указываем, в центр какого провода осуществляется питание антенны (функция voltageFeed). Вот и вся антенна, проще некуда! Назначение прочих функций, думаю, понятно из их названия и контекста.

Вводим приведенный выше текст в File → New NC Model → NC Source и нажимаем Run. Открывается новое окно, на вкладке Summary которого мы видим диаграмму направленности антенны:

Диаграмма направленности антенны в моделировщике cocoaNEC

Под диаграммой направленности находится следующий вывод:

Frequency 14.150 MHz
Feedpoint(1) - Z: (47.989 - i 0.951)    I: (0.0208 + i 0.0004) ⏎
   VSWR(Zo=50 Ω): 1.0:1
Ground - Rel. dielectric constant 13.000, conductivity: 0.00500⏎
   mhos/meter. (NEC-2 ground)
Directivity:  7.74 dB
Max gain: 7.57 dBi (azimuth 0 deg., elevation 32 deg.)
Front-to-back ratio: 0.00 dB (elevation 32 deg)
Front-to-back ratio: 0.00 dB (elevation of front lobe)
Front-to-rear ratio: 0.00 dB
Average Gain: 0.9563 (0.194 dB)
Compute time: 0.06 sec

Видим, что антенна имеет входное сопротивление, близкое к 50 Ом почти без реактивной составляющей, КСВ 1:1 и максимальное усиление 7.57 dBi под углом возвышения 32 градуса. Очень даже приличная антенна для дальних связей, при условии, что вы сможете поднять ее центр на высоту λ/2. В качестве домашнего задания предлагаю вам выяснить, как изменяются свойства inverted-V с уменьшением и увеличением высоты мачты.

Fun fact! Как вам может быть известно, 0 dBd = 2.15 dBi, то есть коэффициент усиления диполя составляет 2.15 дэцибел по сравнению с коэффициентом усиления изотропного излучателя. Но как тогда вышло, что мы только что получили целых 7.57 dBi? Дело в том, что 2.15 dBi — это усиление диполя в свободном пространстве. На высоте λ/2 от земли усиление диполя составляет от 5.9 dBi (плохая земля) до 7.6 dBi (хорошая земля), поэтому никакого противоречия нет. Кстати, если вы промоделируете в cocoaNEC вертикал 0.25λ с N радиалами, то узнаете, что его максимальный коэффициент усиления составляет всего лишь 0 dBi, независимо от величины N.

На вкладке Geometry можно посмотреть на саму антенну, а также распределение тока в ней:

Распределение тока антенны в cocoaNEC

Вкладки Azimuth и Elevation показывают то же самое, что и Summary, только крупнее. Поэтому здесь мы их пропустим. Во вкладке 3D можно полюбоваться диаграммой направленности антенны в трех измерениях:

Трехмерная диаграмма направленности в cocoaNEC

Важно! Как известно, Inverted-V имеет максимальное усиление перпендикулярно плоскости, в которой расположены плечи антенны. То есть, на последнем изображении мы смотрим на плоскость антенны, как мы смотрели и на вкладке Geometry. Однако можно заметить, что значения в полях Azimuth на последних двух скриншотах отличаются на 90 градусов. Как говорится, понять это невозможно, нужно просто запомнить.

Давайте теперь изменим код следующим образом:

frequencySweep(13.9, 14.4, 20);
//setFrequency(14.150);

… снова нажмем Run, и откроем вкладку Scalar. Помимо прочего, на ней можно посмотреть график КСВ антенны:

График КСВ антенны в cocoaNEC

КСВ в диапазоне 20 метров не превышает 1.3. Наконец, во вкладке Smith Chart доступна диаграмма Смита, отображающая изменение входного сопротивления антенны в зависимости от частоты:

Диаграмма Смита в cocoaNEC

Итак, что же выходит? Теперь можно просто вбивать антенны в моделировщик, и в реальности они будут работать точь-в-точь как модель? Увы, это не так:

  • Моделировщик не учитывает ландшафт местности. С его точки зрения земли либо вовсе нет (свободное пространство), либо земля идеально гладкая;
  • Вы точно не знаете, какого качества у вас земля. Кроме того, реальная земля редко бывает однородной, какой ее считает моделировщик, а влияние на антенну она оказывает в радиусе нескольких λ. То есть, какое-нибудь озеро, находящееся в 100 метрах от вашей КВ-антенны, может существенно влиять на ее работу;
  • Не учитывается влияние на антенну окружающих объектов — припаркованного недалеко автомобиля, соседских домов, идущего к антенне коаксиального кабеля, мачты, других ваших антенн, и так далее;
  • При определенный условиях моделировщик просто врет. В частности, движок NEC-2 не любит стыки проводов разного диаметра, стыки множества коротких проводов (как следствие, он неправильно моделирует шунтовые схемы согласования, например, гамма-согласование), и некоторые другие вещи;
  • Моделировщик не скажет вам, какой уровень шума будет иметь антенна. Источники шума просто не входят в модель;

Можно с хорошей степенью уверенности утверждать, что реальная антенна будет заметно отличаться от модели. Тогда в чем же польза от моделировщика? Во-первых, моделировщик полезен, когда хочется оценить какие-то общие свойства антенны. Вертикал 0.25λ мало излучает в зенит, и это свойство не поменяется от качества земли (но поменяется, если рядом стоит рефлектор в виде крыши соседского дома). Во-вторых, в моделировщике можно сравнить две антенны при прочих равных условиях, что редко возможно в физическом мире. В-третьих, моделировщик позволяет сэкономить много времени и сил, когда требуется спроектировать новую никем не описанную антенну под конкретные условия (например, дельту определенной формы). В общем, как и любой инструмент, моделировщик следует использовать с умом.

Больше примеров антенн вы найдете на сайте cocoaNEC. Там же вы найдете исчерпывающую справку по функциям языка NC, туториал по оптимизации заданных параметров антенны и другую полезную информацию.

Дополнение: Позже я выяснил, что при моделировании антенн нужно обязательно проверять, не столкнулись ли мы с ограничениями движка NEC-2. Сделать это можно двумя способами. Во-первых, с увеличением числа сегментов свойства антенны не должны сильно меняться. Во-вторых, если мы уберем любые источники потерь, то Average Gain должен быть в пределах 0.95-1.0 (общее усиление около 0 dB). В частности, во время этой проверки антенна должна моделироваться над идеальной землей или в свободном пространстве. Если Average Gain выходит за заданные пределы, то антенна работает, как усилитель или аттенюатор. Поскольку она не является ни первым, ни вторым, это говорит об ошибке моделирования.

Дополнение: Вас также могут заинтересовать статьи Собираем индикатор напряженности поля, Как измерить диаграмму направленности антенны и Моделирование антенн на Python при помощи PyNEC.

Метки: , , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.