Технологии в электронной промышленности №3'2007

Пакет CADSTAR. Урок 12. Редактор печатных плат системы CADSTAR: генерация отчетов

Юрий Потапов
Сергей Прокопенко


Данное занятие посвящено автоматической генерации отчетов о проекте. Отчетами называются тестовые файлы, которые содержат упорядоченную информацию о различных частях проекта, например списки компонентов или цепей, перечни используемых материалов, координатные файлы для аппаратуры автоматического монтажа. Отчеты формируются с помощью специального модуля, вызываемого командой Report Generator Manage Reports по алгоритму, описанному специальным набором команд и сохраненному в файле управления генераторомотчетов с расширением .rgf (шаблоне отчета).


Использование готовых файлов управления генератором отчетов

Для начала рассмотрим самую простую операцию — формирование отчета с использованием готового управляющего файла Несколько примеров таких файлов имеются в стандартной поставке пакета CADSTAR.

Для работы нам потребуется специальный пример Chapter9.pcb, который также входит в комплект стандартной поставки программы CADSTAR.

1. Выполним команду меню File | Open и в появившемся окне выберем файл Chapter9.pcb.

2. Выполним команду меню View | View All или нажмем кнопку Я на панели инструментов. Откроется окно редактора печатных плат с выбранным проектом.

3. Выполним команду меню Tools | Report Generator | Manage Reports.

На экране появится диалоговое окно управления генератором отчетов Manage Reports, показанное на рис. 1.

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

Справа появятся два поля Report Elements (элементы отчета) и Report Contents (управляющий код).

5. В поле Report Target включим опцию View Report, что даст возможность просмотреть полученный отчет на экране.

6. Нажмем кнопку Open.

7. В появившемся стандартном окне выбора файла перейдем в папку Reports, в ней найдем файл Netnode.rgf и нажмем кнопку Открыть.

В поле Report Contents появится управляющий код (рис. 2), который имеет два цикла For Each — один для каждой цепи и один для каждого узла этой цепи (вложенный), заканчивающихся командой Next. В результате в текстовом файле отчета будет получена следующая информация: номер строки (Variable (Line Number)), имя цепи (Net.Net Name), пробел (" "), имя компонента (Net Node.Comp Name) и номер вывода (Net Node.Pin Name).

Рис. 1. Окно управления генератором отчетов
Рис. 2. Управляющий код генератора отчетов

8. Нажмем кнопку Run и запустим формирование отчета.

На экране появится окно с отчетом, показанное на рис. 3. Сравним текст отчета с управляющим кодом в окне Manage Reports и попытаемся понять взаимосвязь. Внешний цикл по цепям формирует строку с номером 1 с именем цепи $5. Далее начинает работать вложенный цикл по узлам этой цепи: строки 2 и 3 содержат номера строк, табулирующие пробелы, имена компонентов и номера выводов этих компонентов, подключенных к данной цепи. Затем идет строка с именем второй цепи, строки с описанием подключений к ней и т. д.

9. Нажмем кнопку Close и закроем окно просмотра отчета.

10. В окне Manage Reports нажмем кнопку Close и закроем окно генератора отчета.

Быстрый метод генерации отчета

Если в процессе работы тот или иной отчет будет формироваться достаточно часто, то имеет смысл использовать быстрый метод вызова генератора отчета без использования диалогового окна Manage Reports. Система CADSTAR позволяет настраивать генератор отчета таким образом, чтобы он запускался специальной командой меню.

1. Выполним команду меню Tools I Options и в появившемся диалоговом окне Options перейдем на вкладку Reports (рис. 4). Здесь в поле Reports on Menu приведен список отчетов, генерация которых доступна через меню команд. Вполне возможно, что данное поле окажется пустым, что означает, что ни один отчет ранее настроен не был. Исправим положение.

2. Нажмем кнопку Add.

3. В открывшемся окне Add Report (рис. 5) нажмем кнопку Browse.

4. В появившемся стандартном окне выбора файла перейдем в папку Reports, в ней найдем файл Netnode.rgf и нажмем кнопку Открыть.

Рис. 3. Отчет о подключениях к цепям в проекте
Рис. 4. Настройка раздела отчетов в меню команд
Рис. 5. Добавление отчета в меню
Рис. 6. Новая команда вызова генератора отчетов
Рис. 7. Выбор типа нового отчета
Рис. 8. Выбор данных, включаемых в новый отчет

5. В поле Report Name введем текст Net Nodes Report и нажмем кнопку ОК.

Легко видеть, что отчет с именем Net Nodes Report добавлен в список в поле Reports on Menu в окне Options.

6. Нажмем кнопку ОК и закроем окно Options.

Теперь, если мы проверим содержимое раздела Tools I Report Generator в меню команд, то увидим, что сюда добавилась новая команда Net Nodes Report (рис. 6).

7. Выполним эту команду.

Отчет будет сформирован аналогично тому, как это было сделано в предыдущем упражнении.

8. Нажмем кнопку Close и закроем окно просмотра отчета.

Создание нового файла управления генератором отчетов

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

1. Выполним команду меню Tools I Report Generator I Manage Reports.

На экране появится знакомое нам диалоговое окно управления генератором отчетов Manage Reports.

2. Нажмем кнопку New.

В появившемся окне New Reports (рис. 7) предлагается выбрать тип нового отчета. Здесь имеются следующие опции:

  • Empty Report — пустой шаблон отчета в поле Report Contents;
  • Comma Separated Component List — разделенный запятыми список компонентов. В поле Report Contents будет добавлен циклический шаблон вывода имен и координат всех компонентов на плате через запятую;
  • Column Separated Component List — разделенный на колонки список компонентов. В поле Report Contents будет добавлен циклический шаблон вывода имен и координат всех компонентов на плате в виде колонок;
  • Connection Nodes By Net — список подключений к цепям проекта. Подобный отчет мы рассматривали ранее;
  • Нам больше всего подходит тип отчета Comma Separated Component List (позднее мы его модифицируем), поэтому выберем эту опцию и нажмем кнопку ОК.

На экране появится новое диалоговое окно New Report - Components (рис. 8), в котором необходимо указать, какая информация о компонентах будет включена в новый отчет.

4. Включим опции Name (позиционное обозначение), Part Name (имя компонента), Origin Position (координаты точки привязки) и Orientation (ориентация), после чего нажмем кнопку ОК.

В поле Report Contents окна New Reports появится шаблон, включающий цикл вывода в отчет следующей информации о компонентах: позиционное обозначение, имя компонента, координата по оси X, координата по оси Y, ориентация. Настроим заголовок отчета.

5. В поле Report Elements с помощью мыши выберем команду Text и нажмем кнопку Insert.

6. В появившемся диалоговом окне Report Generator - Text (рис. 9) в поле Text введем текст "NUAAAAAAAA".

7. Нажмем клавишу Enter и введем вторую строку текста "SIEMENS MS72 DRIVER FOR CADSTAR".

Рис. 9. Добавление текста в отчет

8. В поле Alignment включим опцию Left (выравнивание по левому краю). Поскольку в каждой строке содержится только один текстовый параметр, у нас нет необходимости принудительно ограничивать длину строк и можно позволить системе заполнять строку оптимальным для нее образом.

9. В поле Width введем значение 0, что будет соответствовать отображению строк наилучшим образом.

10. Чтобы следующая за текстом информация начиналась с новой строки, включим опцию New Follows Item.

11. Убедимся, что все настройки выполнены, как показано на рис. 9, и нажмем кнопку ОК.

В поле Report Contents добавится команда Text, за которой в кавычках будет показана первая строка введенного текста. Команда Text будет добавлена после последней выделенной строки в поле Report Contents, а должна стоять в самом начале отчета.

12. Выберем только что добавленную команду Text с помощью мыши и нажмем кнопку Up несколько раз, чтобы она переместилась в самое начало шаблона отчета.

Примечание: если вам необходимо изменить вводимый текст, выполните двойной щелчок левой кнопкой мыши на команде Text.

Сразу за текстовым заголовком должна следовать строка с указанием текущей даты, добавим в шаблон соответствующую команду.

13.  В поле Report Elements с помощью мыши выберем команду Date и нажмем кнопку Insert.

14. В появившемся диалоговом окне Report Generator - Text (рис. 10) в поле Alignment включим опцию Left, в поле Width введем значение 0 и включим опцию New Follows Item, после чего нажмем кнопку ОК.

Рис. 10. Добавление в новый отчет текущей даты

В поле Report Contents сразу за командой Text добавится команда Date. Теперь нам надо добавить еще один текстовый блок, который будет следовать за строкой с датой.

15.  В поле Report Elements с помощью мыши выберем команду Text и нажмем кнопку Insert.

16. В открывшемся диалоговом окне Report Generator - Text в поле Alignment включим опцию Left, в поле Width введем значение 0, включим опцию New Follows Item, а в поле Text введем следующий блок текста:

    +000.00, +000.00

    1,000.00

    1,000.00

    0.0

    0.0

    1.70,0

    ВРАААААААА

    BSAAAAAAAA

    17.  Нажмем кнопку ОК и закроем окно.

    18. Убедимся, что новый текстовый блок следует сразу за датой, в противном случае с помощью кнопок Up и Down переместим его в нужное место поля Report Contents.

    Добавим в отчет счетчик.

    19.  В поле Report Elements с помощью мыши выберем команду Count и нажмем кнопку Insert.

    20.  В появившемся диалоговом окне Report Generator - Counter (рис. 11) в верхнем выпадающем списке выберем строку Component, в этом случае будет посчитано количество компонентов.

    21.  В следующем выпадающем списке выберем строку Total Output, в этом случае будет посчитано количество лишь тех компонентов, которые выбраны для формирования отчета.

    Рис. 11. Добавление в отчет счетчика

    Примечание: строка Total Count предписывает считать абсолютно все компоненты проекта.

    22. В поле Associations выберем опцию Below, что позволит нам считать компоненты, обрабатываемые приведенным ниже кодом.

    23.  В поле Alignment включим опцию Left, в поле Width введем значение 0, включим опцию New Follows Item, после чего нажмем кнопку ОК.

    Нам остается лишь удалить из отчета параметр привязки компонентов.

    24. С помощью мыши в поле Report Contents выберем команду Using Defined Origin и нажмем кнопку Delete.

    Итак, наш шаблон отчета полностью сформирован, теперь необходимо сохранить его во внешнем файле с расширением .rgf.

    25.  Нажмем кнопку Save As.

    26.  В появившемся стандартном окне сохранения файла перейдем в папку Reports, зададим имя файла selftch.rgf и нажмем кнопку Сохранить.

    Теперь имя файла должно появиться в верхней части окна Manage Reports.

    Далее необходимо изменить параметры цикла For Each так, чтобы в отчет выводилась только необходимая информация. В частности, в отчете, который, по сути, будет управляющим файлом для оборудования сборки, нам необходима информация только об SMD-компонентах на верхней стороне платы. Кроме того, она должна быть отсортирована таким образом, чтобы сначала автомат выбирал все компоненты с одним именем (Part Number), которые в свою очередь должны быть отсортированы по возрастанию номера позиционного обозначения.

    Рис. 12. Изменение оператора цикла For Each

    27. С помощью мыши выберем оператор For Each в поле Report Contents и нажмем кнопку Modify.

    28. В появившемся диалоговом окне Report Generator - For (рис. 12) нажмем кнопку Sort Setup.

    На экране откроется окно Report Generator — Sort (рис. 13), в котором задаются до трех параметров сортировки, а также способы сортировки по каждому из параметров:

      Рис. 13. Настройки сортировки цикла For Each
    • Ascending — сортировать по возрастанию. В этом случае параметры будут отсортированы от наименьшего алфавитного или цифрового символа к наибольшему (от А κΖ и от 0 до 9);
    • Descending — сортировать по убыванию. Параметры будут отсортированы от наибольшего алфавитного или цифрового символа к наименьшему (от Z к А и от 9 ЦоО);
    • Alphabetic — сортировать по алфавиту. Параметры отсортируются по кодировке ASCII от первого к последнему символу;
    • Alphanumeric — сортировать по номерам. В этом случае сортировка будет выполняться по буквам в параметре, а затем по цифре за ними.

    Чтобы понять отличие в типах сортировки Alphabetic и Alphanumeric, полезно рассмотреть простой пример. Список из четырех микросхем в случае Alphabetic-сорти-ровки будет выглядеть так: IC1, IC10, IC11, IC2. В случае Alphanumeric-сортировки — IC1, IC2, IC10, IC11, и это наилучшим образом подходит для сортировки по позиционному обозначению.

    29. В верхнем поле Sort By зададим первый параметр сортировки Part Name и укажем для него способы Ascending и Alphabetic, то есть по возрастанию и в алфавитном порядке.

    30. В среднем поле Then By зададим второй параметр сортировки Name и укажем для него способы Ascending и Alphanumeric, то есть по возрастанию и по возрастанию номера.

    31. Третий параметр сортировки нам настраивать не нужно, поэтому просто проверим, что все настройки выполнены, как показано на рис. 13, и нажмем кнопку ОК.

    Следующим шагом будет настройка типов компонентов в отчете. Существует два типа: компоненты (Component) и контрольные точки (Testpoint). Напомним, что в системе CADSTAR контрольные точки представляют собой специальные компоненты с одним выводом. Таким образом, в отчете могут присутствовать три варианта данных: только о компонентах, только о контрольных точках, а также о компонентах и контрольных точках вместе.

      32.  Нажмем кнопку Component Types — Modify.

      33.  В появившемся диалоговом окне Component Types (рис. 14) с помощью мыши выберем тип компонентов Component и нажмем кнопку ОК.

      Рис. 14. Выбор типа компонента

      34. Убедимся, что все настройки в окне Report Generator - For выполнены, как показано на рис. 12, и нажмем кнопку ОК.

      Теперь оператор For Each в поле Report Contents изменит вид: если раньше он выглядел For Each Component (Component, Testpoint), то сейчас он примет вид For Each Component (Component) Sorted by Part Name then by Name.

      Введем в цикл логический оператор If, который позволит ограничить число обрабатываемых компонентов и выбрать из них SMD-компоненты.

      35. С помощью мыши выделим в поле Report Contents только что отредактированный оператор For Each.

      36.  В поле Report Elements с помощью мыши выберем команду If и нажмем кнопку Insert.

      На экране появится диалоговое окно Report Generator- If (рис. 15).

      Рис. 15. Настройки оператора К

      37.  Выполним все настройки в этом окне, как показано на рис. 15, а именно: в выпадающем списке If выберем параметр Сотр Side; в выпадающем списке Of выберем тип объектов Component, обладающих этим параметром; в выпадающем списке Is выберем условие сравнения Equal To и в самом нижнем списке — значение параметра для сравнения SMD on Top Side.

      38.  Нажмем кнопку ОК.

      В шаблоне управляющего файла сразу за оператором For Each появится строка If Component.Comp Side = SMD on Top Side, что будет означать проверку логического условия: если параметр компонента Сорт Side (сторона размещения) равен SMD on Top Side (SMD на верхней стороне), то должна быть выполнена некоторая последовательность операторов, ограниченная оператором End If. Любая конструкция с оператором If должна заканчиваться оператором End If, поэтому система автоматически добавит его строкой ниже. В нашем случае, чтобы вывод данных о компонентах выполнялся только при выполнении логического условия, необходимо переместить оператор End If в конец цикла.

      39. С помощью мыши выделим в поле Report Contents оператор End If и нажмем несколько раз кнопку Down, чтобы оператор End If оказался ниже строки Component. Orientation и выше оператора Next.

      Нам остается переместить строку Сотро-nent.Name так, чтобы позиционное обозначение отображалось в отчете не в первой, а в последней колонке, а также добавить текстовую строку 0, 0.00, 0.00.

      40. Используя мышь, выделим в поле Report Contents строку Component.Name и нажмем несколько раз кнопку Down, чтобы она переместилась и оказалась ниже строки Component.Orientation и выше оператора End If.

      41. С помощью мыши выделим в поле Report Contents оператор Next.

      42.  В поле Report Elements таким же образом выберем команду Text и нажмем кнопку Insert.

      43. В появившемся диалоговом окне Report Generator - Text в поле Alignment включим опцию Left, в поле Width введем значение 0, включим опцию New Follows Item, а в поле Text введем текст 0, 0.00, 0.00, после чего нажмем кнопку ОК и закроем окно.

      Теперь наш шаблон отчета принял окончательный вид (рис. 16), но нам необходимо настроить ширину колонок для выводимых данных о компонентах. Кроме того, все данные об одном компоненте (пять параметров) должны выводиться в одну строку с разделителем в виде запятой, а при смене типа компонента (в конце цикла) должен осуществляться переход на новую строку.

      44.  Выполним двойной щелчок левой кнопкой мыши на строке Component.Part Name в поле Report Contents.

      Рис. 16. Окончательный вид шаблона отчета

      45. В появившемся окне Report Generator -Member (рис. 17) в поле Width введем значение 13 и убедимся, что включена только опция Comma Follows Item, после чего нажмем кнопку ОК.

      Рис. 17. Настройки формата вывода имени компонента

      При таких настройках под колонку с именем компонента Part Name будет зарезервировано 13 символов, а следующее значение пойдет на той же строке после запятой. Под колонки с координатами компонентов необходимо выделить по 10 символов.

      46. Выполним двойной щелчок левой кнопкой мыши на строке Component.Position X в поле Report Contents.

      47. В появившемся окне Report Generator -Member в поле Width введем значение 10 и убедимся, что включена только опция Comma Follows Item, после чего нажмем кнопку ОК.

      48. Дважды щелкнем левой кнопкой мыши на строке Component.Position Y в поле Report Contents.

      49. В окне Report Generator - Member в поле Width введем значение 10 и убедимся, что включена только опция Comma Follows Item, после чего нажмем кнопку ОК.

      Под колонку со значением ориентации компонента зарезервируем 8 символов.

      50. Выполним двойной щелчок левой кнопкой мыши на строке Component.Orienta-tion в поле Report Contents.

      51. В появившемся окне Report Generator -Member в поле Width введем значение 8, выключим опцию Newline Follows Item и включим опцию Comma Follows Item, после чего нажмем кнопку ОК.

      Под последний элемент строки данных — позиционное обозначение — зарезервируем 12 символов и сделаем так, чтобы следующее значение данных начиналось с новой строки.

      52. Выполним двойной щелчок левой кнопкой мыши на строке Component.Name в поле Report Contents.

      53. В открывшемся окне Report Generator -Member в поле Width введем значение 12, выключим опцию Comma Follows Item и включим опцию Newline Follows Item (рис. 18), после чего нажмем кнопку ОК.

      Нам остается задать точность данных для значения ориентации компонента.

      Рис. 18. Настройки формата вывода позиционного обозначения

      54.  Нажмем кнопку Options в окне Manage Reports.

      55.  В появившемся на экране диалоговом окне Report Generator - Options (рис. 19) в поле Number of Decimal Places For Orientation введем значение 0, что будет соответствовать выводу целочисленных значений угла поворота в градусах.

      Рис. 19. Настройка точности данных для ориентации

      56.  Нажмем кнопку ОК и закроем окно.

      57.  Нажмем кнопку Save и сохраним разработанный нами шаблон во внешнем файле.

      Теперь мы полностью готовы к формированию отчета на основе разработанного нами управляющего файла.

      58.  Нажмем кнопку Run.

      Рис. 20. Отчет, сформированный по разработанному шаблону

      На экране появится окно View File с только что сформированным отчетом (рис. 20). Легко видеть, что вся информация в отчет выведена согласно сделанным нами настройкам.

      59.  Нажмем кнопку Close и закроем окно отчета.

      60.  Нажатием кнопки Close закроем окно Manage Reports.

      Параметрическое управление выводимыми в отчет данными

      Рассмотрим еще один простой пример, демонстрирующий гибкость генератора отчетов системы CADSTAR. Допустим, в наш отчет должна быть включена информация только о компонентах, мощность рассеивания которых меньше чем 0,0119 Вт. Все компоненты на плате имеют атрибут thm_power_diss с заранее заданным значением мощности рассеяния. В шаблоне отчета мы можем ввести оператор If, выполняющий проверку превышения значением этого атрибута некоторого определенного порогового уровня. 1. Выполним команду меню Tools I Report

      Generator I Manage Reports.

      На экране появится окно Manage Reports, в котором будет открыт последний использовавшийся шаблон отчета, а именно selftch.rgf.

      Рис. 21. Настройка проверки рассеиваемой мощности

      2. Выполним двойной щелчок левой кнопкой мыши на операторе If в поле Report Contents.

      На экране появится диалоговое окно Report Generator - If.

      3. Выполним все настройки в этом окне, как показано на рис. 21, а именно: в выпадающем списке If выберем параметр thm_power_diss (attribute) и под ним — значение Attribute Text; в выпадающем списке Of выберем тип объектов Component, обладающих этим параметром; в выпадающем списке Is выберем условие сравнения Less Than.

      Теперь нам необходимо задать пороговое значение для сравнения.

      4. Нажмем кнопку справа от самого нижнего списка, где приведено значение (Undefined).

      5. В появившемся на экране окне Report Generator - List Item (рис. 22) в поле Text введем значение 0.0119 и нажмем кнопку ОК. Введенное значение окажется заданным в качестве порога сравнения.

      6. Нажмем кнопку ОК и закроем окно Report Generator - If.

      Теперь строка оператора If в шаблоне будет выглядеть следующим образом: If Component.thm_power_diss.Text < 0.0119.

      7. Нажмем кнопку Run.

      На экране появится окно View File с только что сформированным отчетом (рис. 23). Легко видеть, что теперь в отчете содержится информация не о тринадцати, а всего о восьми компонентах, удовлетворяющих условию проверки мощности рассеяния.

      Рис. 22. Задание порогового значения рассеиваемой мощности
      Рис. 23. Отчет, сформированный по новому шаблону

      Заметим, что, изменив оператор If, мы исключили проверку типа SMD-компонентов и их расположение на верхнем слое, поэтому в общем случае в отчет должны были войти все компоненты с мощностью рассеяния менее 0,0119 Вт. Чтобы избежать подобных коллизий, необходимо в шаблоне организовать две вложенные конструкции из операторов If, одна из которых будет проверять тип SMD-компонентов, а другая — рассеиваемую мощность. Мы рекомендуем проделать это в качестве самостоятельного упражнения.

      8.  Нажмем кнопку Close и закроем окно отчета.

      9. Нажмем кнопку Close и закроем окно Manage Reports.

      Итак, на данном занятии мы научились формировать отчеты, включающие различную информацию из проекта. На следующем занятии мы научимся готовить данные для производства печатных плат.


       
      ПОДПИСКА НА НОВОСТИ

      Оцените, пожалуйста, удобство и практичность (usability) сайта:
      Хорошо
      Нормально
      Плохо