GERBER

D-коды, Апертуры и структура формата Gerber.
Введение

Вы можете использовать любое программное обеспечение при разработки печатных плат, но итогом вашей работы должен стать файл для фотоплоттера в формате Gerber. Непонимание между разработчиком PCB и оператором фотоплоттера часто приводит к получению негодных негативов, и целых партий бракованных плат. Зная структуру файла фотоплоттера, Вы сможете избежать многих ошибок.


Краткое описание Фотоплоттеров.

Для облегчения восприятия последующего материала, коротко рассмотрим устройство фотопостроителей.

  • Ранние фотопостроители состояли из координатного стола, управляемого прецизионными сервоприводами по X и Y, на который крепилась фотопленка. Свет от яркого источника, проходя через затвор, апертурное колесо (дафрагмы) и оптическую систему, фокусировался на пленку. Контроллер фотопостроителя преобразовывает команды Gerber в соответствующие перемещения стола, вращение колеса и открытие затвора. Типичный фотоплоттер который стоит у многих российских производителей печатных плат - фотоплоттер английской фирмы QUEST - EMMA80,85
Рисунок 1. Схема Фотоплоттера

Когда затвор открывается, свет проходя через апертуру, проецирует ее образ на фотопластину. Если при этом одновременно перемещается стол, то на фотопластинке “вычерчивается” полоса. Таким образом, подавая соответствующие команды для движения стола, выбора апертур и управления затвором, на фотопластинке можно построить любое изображение.

Рисунок 2. Операции графопостроителя


Простота: двоякое качество Gerber

Достоинство базы данных Gerber в ее простоте, есть только четыре основных команды, плюс данные координат. База данных должна быть простой и компактной, поскольку первые машины управлялись хрупкой перфорированной бумажной лентой. Необходимость сжимать как можно больше информации в небольшое количество байтов, объясняет многие "проблемы", которые мы встречаем сегодня, когда доступное пространство памяти измеряется сотнями мегабайт.

Но порой, эта простота дорого обходится. Файл Gerber может не иметь всех данных, необходимых для работы графопостроителя.  Эта дополнительная информация передается от разработчика оператору графопостроителя отдельно, в виде сопроводительной документации, и часто является источником ошибок.

В этих условиях трудно устоять перед искушением создать нестандартные расширения. Все изготовители фотоплоттеров поддерживает основные команды Gerber и, по их мнению, необходимые дополнительные, что отличает их машину от остальных. Результат – появление множества форматов, несовместимых друг с другом.

  • Сейчас используются два основных формата, RS-274D и RS-274X. Второй практически стал стандартом de facto стал, он поддерживается всеми производителями п/п.

Содержание файла Gerber 

Ниже приведен простой файл Gerber, иллюстрирующий структуру и содержание формата:

G90*                   1
G70*                   2
G54D10*                3
G01X0Y0D02*            4
X450Y330D01*           5
X455Y300D03*           6
G54D11*                7
Y250D03*               8
Y200D03*               9
Y150D03*               10
X0Y0D02*               11
M02*                   12
Номера строк справа не являются частью файла, они нужны нам для изучения Gerber. Каждая строка представляет собой конкретную машинную команду, звездочка (*) – символ конца команды. Существуют разные типы команд и инструкций, начинаемые с G, D, M и данные координат X, Y.

G-Коды: Установка начальных условий

В большинстве случаев эти коды используются, чтобы настроить параметры машины до вывода чертежа. Различные G коды - важные чтобы распознать:

G90/G91 Координаты абсолютные или относительные.

Команда G90 в строке 1 сообщает машине, что координаты данных абсолютные, т.е. отсчитываются от начала стола фотоплоттера (0,0).

Напротив, команда G91 указывает, что каждая координата измерена относительно предшествующей координаты.

Не в каждом файле Gerber Вы можете встретить команду G90, поскольку большинство фотоплоттеров по умолчанию используют абсолютные координаты.

Если на дисплее CAM станции Вы видите "взрыв на макаронной фабрике", подобный рисунку 3 справа, вероятно Вы пытаетесь прочитать файл, записанный с относительными координатами.


Рисунок 3

Слева: правильное отображенное.
Справа: Установлен относительный режим при абсолютных данных.

G70/G71 Измерения в дюймах или миллиметрах

G70* (Строка 2) указывает, что последующие данные указаны в дюймах. Это еще один редко встечающийся в Gerber файлах G-код. В США подразумевается, что все файлы Gerber в дюймовом измерении, но в остальной части мира могут использоваться как дюймы, так и миллиметры. G71 указывает на измерение в миллиметрах.

G54 Выбор инструмента (апертуры)

G54 (строка 3) выбор инструмента - наиболее часто встречающияся G код, это команда графопостроителю на установку апертурного колеса в позицию, описанную командой Dxx следующей сразу за G54. Если Вы не находите G54 в конкретном файле, не паникуйте. G54 - дополнительная команда, и некоторые программы не используют ее, тогда фотопостроитель распознает Dxx (где xx - не 01,02,03), и сам выбирает правильный инструмент.


Коды D01, D02, D03: Засветка или черчение

D-коды являются инструкциями для фотопостроителей.
Первые три D-кода управляют перемещением стола по X и Y координам .

D01 (D1): 	перейти в позицию x-y с открытым затвором (черчение).

D02 (D2): 	перейти в позицию x-y с зыкрытым затвором. 

D03 (D3): 	перейти в позицию x-y с зыкрытым затвором, 
		затем открыть и закрыть затвор (экпозиция засветкой).
D01 – команда для "черчения" линий. D02 – команда для перемещения стола без влияния на негатив. D01 и D02 соответствуют перемещению бумаги в графопостроителях с опущенным и поднятым пером.

D03 - команда "засветка". Стол перемещается с закрытым затвором. Когда желаемые координаты x-y выставлены, происходит экпозиция образа апертуры на негатив. Засветка эффективна для формирования многократно повторяющихся контактных площадок.

Команды D01, D02 и D03 следуют за координатным данным. Например, следующая последовательность команд:

X0Y0D02*
X450Y330D01*
X455Y300D03*

переместит стол в позицию 0,0 с закрытым затвором, затем нарисует линию от 0,0 до 450,330. Засветка апертурой произойдет по координатам 455,300.


Коды D10-D999: Позиционирование Колеса

В отличие от D01, D02 и D03, D-коды со значением 10-999 - не команды, а данные. Они обозначают апертуры или позиции на колесе фотопостроителя. Ранние фотопостроители использовали колесо с 24-я позициями. Каждый слот заполняется апертурами негатива. Колесо вращается, позиционируя желаемую апертуру в световом пучке. Таблица 1 показывает связь между D-кодом и позицией апертуры.

Таблица 1. D-коды и Апертуры
D-код Позиция D-код Позиция
      апертуры      апертуры
 10      1      20     13
 11      2      21     14
 12      3      22     15
 13      4      23     16
 14      5      24     17
 15      6      25     18
 16      7      26     19
 17      8      27     20
 18      9      28     21
 19     10      29     22
 70     11      72     23
 71     12      73     24
Видно, что последовательность логична от D10 до D19. Затем, вместо ожидаемого D20 в позиции 11, вторгаются D70 и D71. Далее последовательность продолжается, но вместо D30, опять прыжок к D72 и D73. Большинство фотопостроителей и программ CAM, просят Вас ввести описания апертур D-кодом, а не позицией апертур.

Есть D-коды между 3 и 10, но они описывают команды для редких или устаревших машин.


Коды M: Остановка

В конце файла мы видим команду M02*. Gerber определяет коды M как команды остановки. Используется только один M-код в конце файла, M00, M01 или M02, который указывает что текущая программа завершена. Иногда M02 можно увидеть в начале файла Gerber. Некоторые приложения устанавливают его, чтобы застраховаться на случай неполного завершения предыдущей программы, тем не менее, многие системы CAM, видя M02 в начале файла, игнорируют все следующее за ним.


X,Y: Данные координат Координатные данные занимают основной объем файла Gerber. Вручную трудно описать движение стола, поскольку в Gerber используются различныя технологии для сокращения размера файла. Среди них:
  • Подавление знака десятичной дроби в данных X,Y
  • Подавление ведущих или конечных нулей
  • Вывод только изменений в координатных данных

Подавление десятичного знака Знак десятичной дроби лишний, если Вы заранее знаете где он будет. Десятичный знак будет вставлен в нужной позиции программой управления фотоплоттером. Часто разработчики ошибаются, полагая, что оператор заранее знает их формат. Рассмотрим следующие команды Gerber:
X00560Y00320D02*
X00670Y00305D01*
X00700Y00305D01*

Стол перемещается вдоль X от 00560 до 00670 в течение первых двух команд. Но что такое 00560? Это может быть 5.6 дюймов, 0.56 дюймов, 0.056 дюймов или даже (но вряд ли) 0.0056 дюймов. Ни за что не догадаетесь, пока разработчик не сообщает Вам, что есть два знака перед точкой и 4 после. Теперь понятно, что 00560 представляет собой 0.56 дюйма.

Правило 1. Когда Вы посылаете файл Gerber, всегда сообщайте формат данных. Когда Вы получаете файл Gerber, всегда требуйте формат данных.

Подавление ведущих и конечных нулей Настоящий разработчик базы данных Gerber не останавливается после удаления знака десятичной дроби. Он должен взглянуть на распечатку и подумать:

"А зачем все эти нули в начале? Удалю-ка я их, а изготовитель пусть соображает."

Вы все еще можете вычислить величину координат, если будете считать десятичные точки с правой стороны числа.

Нули не             Ведущие нули
подавлены           подавлены

X00560Y00320D02*    X560Y230D2*
X00670Y00305D01*    X670Y305D1*
X00700Y00305D01*    X700Y305D1*

Чтобы представить одну и ту же информацию, без подавления нулей использовано 48 байт. с подавлением ведущих нулей требуется 33 байта. Во времена бумажных перфолент это было очень значимое уменьшение.

В зависимости от данных, бывает лучше оставить ведущие нули и подавить конечные.

Нули не             Конечные нули
подавлены           подавлены

X00560Y00320D02*    X0056Y0032D2*
X00670Y00305D01*    X0067Y00305D1*
X00700Y00305D01*    X007Y00305D1*

Чтобы правильно проинтерпретировать данные для установки десятичной точки, Вы должны считать с левой стороны числа. Запутались? Тогда - Правило 2:

Правило 2. Когда Вы посылаете файл Gerber, всегда указывайте, ведущие или конечные нули подавлены.

Учтите, что мы принимаем файлы с подавлением ведущих нулей.


Модальные данные координат

Вы думаете что после того, как разработчик устранил десятичные знаки и удалил лишние нули, он может отдыхать? Отнюдь. Он должен обратить внимание, как та же координата появляется много раз, в то время как стол перемещалась только вдоль X или Y.

"Почему не помнить последнюю величину X и Y, указывая координаты, только если они изменятся!"

Все координаты  Модальные координаты

  X560Y230D2*       X560Y230D2*
  X670Y305D1*       X670Y305D1*
  X700Y305D1*       X700D1*

Понятие, когда графопостроитель помнит последние величины координат, названо модальностью. Платы PC часто имеют сотни контактных площадок выстроенные в линию вдоль X или Y, и правильно отсортированный файл Gerber будет значительно меньше, если удалить лишние координаты. Это такое фундаментальное понятие, Вам не нужно сообщать производителю плат, что данные модальные или немодальные - все фотоплоттеры и программное обеспечение CAM поддерживают модальные данные. В этом примере, используя модальные координаты, мы дополнительно сэкономили 4 байта.


Модальные команды

Модальность является хорошим понятием не только для данных, она одинаково хорошо работает и для команд. Например, если у вас есть последовательность команд черчения, зачем повторять команду D01 снова и снова? Позвольте оставаться этому эффекту до другой команды (D02 или D03).

D1 не модальный  D1 модальный
X560Y230D2*      X560Y230D2*
X670Y305D1*      X670Y305D1*
X700D1*          X700D1*
X730D1*          X730D1*
X760D1*          X760D1*
Y335D1*          Y335D1*

Модальность работает со всеми командами в Gerber. Один раз выполненная команда остается в силе до другой команды или ее выключения. Тем не менее, есть пара неуправляемых исключений, которые могут стать причиной проблемы. Наиболее любопытно команда засветки D03.

Некоторые фотоплоттеры не рассматривают D03 как модальный. Они ожидают, что увидят D03 в конце каждой команды засветки. Примером может служить фотоплоттер FIRE 9000 семейства MDA.

Засветка апертурой отображалась в программе CAM, но не появлялась на негативе. Проблема легко решается повторным выводом данных Gerber с явными D03 через утилиту CAMtastic!, многие CAM программы также могут конфигурироваться, чтобы воспринимать D03 как модальный или немодальный.

Другое неуправляемое исключение в стандартном модальном поведении команд, это команды G02/G03, - радиальная интерполяция. Многие фотопостроители возвращаются на G01 (линейная) после G02/G03 (радиальная).


Радиальные команды: G02/G03 и G75 При необходимости, фотопостроители Gerber могут рисовать дуги. В прошлом, радиальные команды редко использовались для производства PCB. Изогнутые проводники на плате используют для уменьшения механических напряжений и задержек прохождения логических сигналов, для ослабления отражения высокочастотных сигналов. Сейчас возрастает интерес к чтению и записи данных Gerber с дугами, но здесь всплывают на поверхность несколько неприятных сюрпризов.

Основной формат радиальной интерполяции:

Gnn Xnn Ynn Innnn Jnnnn Dnn *

Пример: G02X40Y30150J0D01*

Где G02 указывает на вращение по часовой стрелке, G03 - против часовой стрелки и G75 на полной оборот в 360°. I и J - дополнительные координаты, указывают на центр дуги. Команды G02 и G03 редко воспринимаются как модальные.

Радиальные команды могут быть ограниченны точными данными квадранта в старых машинах, или могут описать дуги в полные 360° в более новых машинах. Координаты I и J выставляются независимо от системы координат - абсолютной или относительной.

Популярные программы CAM не всегда правильно отображают или редактируют циклические команды.


Списки апертур

Мы рассмотрели многие недостатки файлов Gerber, оценили критичность информации о формате данных и подавлении нулей. Теперь, оператор фотоплоттера, рассматривая данные на экране CAM, может отрегулировать параметры и добиться, чтобы ваша плата выглядела “прилично”. А все потому, что в файле Gerber нет данных, о которых не может догадаться даже самый опытный оператора.

Это описание того, что должно содержаться в каждой апертурной позиции. Фактический D-код в данных Gerber имеет отношение только к позиции на колесе, он ничего не сообщает о содержимом этого слота. Разработчик должен передать оператору фотоплоттера полное описание каждого D-кода и связанной с ним апертуры. Это описание называется “апертурный список”.

Правило 3. Файл Gerber не завершен без сопутствующего апертурного списка. Без апертурного списка, Вы не имеете ничего! Всегда прилагайте список ваших аппертур.

Как может выглядеть апертура?

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


Сложные апертуры

Сложные апертуры должны быть описаны подробно. Начертите апертуру со всеми соответствующими координатами. Неудачно описанная желаемая апертура приведет к получению плохого негатива. Часто бывает искалеченной общая апертура контактной площадки с термическими зазорами. Производители PCB скорее всего отвергнут ваш негатив, если контакты с термобарьером не соответствуют на 100% их спецификации.


Заголовки файлов фотоплоттера. Стандартизация

 Почему мы не можем добавить всю эту существенную информацию в файл Gerber сейчас, когда память и объем носителей практически не ограничены? Вы можете вложить в файл заголовок и почти каждый фотопостроитель сможет его прочитать. Проблема состоит в нехватке стандартизации. Gerber формат RS274X с вложенным заголовком до конца 90-х не был достаточно популярным, чтобы установить себя как стандарт defacto. Каждый изготовитель фотопостроители и каждый независимый разработчик CAM, для описания формата, устройства и апертурной информации, используют свою базу данных.

Если взять 10 плоттеров и 10 систем CAM, то шанс, что ваш заголовок будет одинаково хорошо прочитан и плоттером и САМ составит 1 из 100. Пока стандарт IPC-350 не стал широко использоваться, решить эту проблему заголовка весьма затруднительно. До сих пор, самый безопасный метод состоит в создании формы на бумаге и в машинном удобочитаемом формате, правильно описывающих ваши файлы.


Примеры заголовков файла

Ниже приведен файл заголовка формата gerber274x.

Заголовок для фотоплоттера RACORD

	%FSDAX54Y54*%
%MOMM*%
%SFA1.000B1.000*%

%MIA0B0*%
%IPPOS*%
%AMMTHOLE-D19*
1,1,6.35000,0.00000,0.00000*
1,0,5.84200,0.00000,0.00000*
20,1,0.12700,-3.04800,0.00000,3.04800,0.00000,0.00000*
20,1,6.09600,-0.06350,0.00000,0.06350,0.00000,0.00000*
%
%ADD12C,0.20000*%
%ADD17C,0.60000*%
%ADD37C,0.25400*%
%ADD40C,1.52400*%
%ADD41C,1.77800*%
%ADD44MTHOLE-D19*%
%ADD90R,1.52400X1.52400*%
%ADD91R,1.77800X1.77800*%
%ADD94R,1.50000X2.00000*%
%LNBoard*%
%LPD*%