KiCad - MySQL Database Library

KiCad - MySQL Database Library

alex83 » 07 июл 2025, 02:12

Ниже будет описана процедура установки и настройки локального сервера MySQL под Windows и организации на нем собственного источника данных для KiCAD 9.0.2 Database Library.

Подготовка тестовой среды и конфигурация

  1. Устанавливаем пакет MySQL:
    viewtopic.php?f=78&t=837

  2. Создаем БД и тестовую таблицу:
    viewtopic.php?p=8402#p8402
    Из обязательных полей в данном случае только part_number, schematic_part и pcb_footprint.

  3. Создаем источник данных ODBC:
    viewtopic.php?p=8403#p8403

  4. Создаем файл конфигурации [имя источника данных].kicad_dbl (например, CIS.kicad_dbl)
    CIS.zip
    (616 байт) Скачиваний: 9

    с содержимым в формате JSON, где:

    • name - желаемое отображаемое имя источника данных
    • description - подробное описание
    • source - описание подключения. В данном случае достаточно указать тип odbc и dsn - имя ODBC-источника данных, который был создан выше:
      Код: Выделить всё
      "source": {
              "type": "odbc",
              "dsn": "CIS",
              "username": "",
              "password": "",
              "timeout_seconds": 2,
              "connection_string": ""
          },
    • libraries - массив(список) объектов, каждый из которых описывает таблицу базы данных (resistors, capacitors и т.д.):
      • name - отображаемое имя категории компонентов, которые содержит таблица, например Resistors.
      • table - соответствующее имя таблицы в БД
      • key - ключевое поле (первичный ключ). В данном случае part_number.
      • symbols - поле со ссылкой на УГО компонента вида Имя_библиотеки:имя_символьного_обозначения, например Device:R. Не смотря на множественное число в имени этого параметра в данный момент (версия KiCAD 9.0.2) указать можно только одну ссылку. Возможно будет реализовано в будущем.
      • footprints - поле со ссылкой на посадочное место вида Имя_библиотеки:имя_посадочного_места, например, Resistor_SMD:R_0201_0603Metric. Можно указать список из нескольких посадочных мест через точку с запятой, чтобы в последствии их можно было выбирать из списка при размещении компонента на схеме.
      • fields - массив(список) полей таблицы, которые хотите использовать в KiCAD, каждый элемент которого имеет следующие свойства:
        • column - имя поля в таблице, например, part_number
        • name - отображаемое имя, например, Part Number
        • visible_on_add - если true, поле будет видно в схеме при добавлении символа. По умолчанию false.
        • visible_in_chooser - если true, поле будет показано в Symbol Chooser как столбец. По умолчанию false.
        • show_name - если true, имя поля будет показано в дополнение к его значению в схеме, например, Manufacturer Part Number: ON Semiconductor. По умолчанию false.
        • inherit_properties - если true и поле с заданным name уже существует в исходном символе, только содержимое поля будет обновлено из базы данных, а другие свойства ( visible_on_add, show_name, и т. д.) будут сохранены такими, какими они были установлены в исходном символе. Если заданное имя поля не существует в исходном символе, эта настройка игнорируется. Если заданное имя поля не существует в исходном символе, эта настройка игнорируется. По умолчанию false.

        Для нормальной работы необходимо сконфигурировать минимум два поля: указанное выше уникальное ключевое поле part_number, в котором прописан уникальный идентификатор (Part Number(PN) компонента, либо номер производителя (Manufacturer Part Number(MPN), если осуществляется привязка компонента к конкретному продукту;
        а также поле value (Value), в котором прописываются значения пассивных компонентов, либо партномера активных компонентов в упрощенном, сокращенном и удобочитаемом виде.
        Для поля value значение параметра visible_on_add должно быть true, а для поля part_number - по желанию.

        Если привязка в базе данных идет не к абстрактным компонентам, а к конкретным продуктам, то дополнительно можно сконфигурировать поле Manufacturer Part Number(MPN), в которое прописываются партномер производителя компонента. Обычно он отличается от просто партномера тем, что привязан к конкретному товару или продукту. Один PN может иметь несколько MPN. В MPN может быть дополнительно закодирован, например, такой параметр, как тип упаковки(коробка, лента и т.д.), кол-во единиц в упаковке и прочее в таком духе. Вместе с этим полем могут быть также добавлены поля Distributor (поставщик), Distributor Part Number (код, номер, артикул) поставщика, а также поле Price (цена) и прочие поля для формирования соответствующих расширенных отчетов BOM для закупки комплектации.

        При использовании поля MPN нужно учитывать проблемы уникальности:
        1. База привязана к PN. MPN в данном случае не представляет отдельную сущность и имеет справочный характер в рамках конкретного PN, а его значение изменяемо и задается для каждого PN по необходимости.
        2. База целиком привязана к MPN. В отдельном поле MPN нет необходимости, т.к. номер производителя в этом случае станет уникальным и будет прописываться в ключевое поле PN.
        3. База смешанная. Для позиций с привязкой к продуктам значение поля MPN должно дублироваться в поле PN, т.к. отдельно взятому PN могут соответствовать несколько MPN.

        Код: Выделить всё
        "libraries": [
                {
                    "name": "Resistors",
                    "table": "resistor",
                    "key": "part_number",
                    "symbols": "schematic_part",
                    "footprints": "pcb_footprint",
                    "fields": [
                        {
                            "column": "part_number",
                            "name": "Part Number",
                            "visible_on_add": false,
                            "visible_in_chooser": true,
                            "show_name": true,
                            "inherit_properties": true
                        },
                        {
                            "column": "value",
                            "name": "Value",
                            "visible_on_add": true,
                            "visible_in_chooser": true,
                            "show_name": false
                        }
                        {
                            "column": "part_type",
                            "name": "Part Type",
                            "visible_on_add": false,
                            "visible_in_chooser": true,
                            "show_name": false
                        },
      • properties - карта свойств символа для столбцов базы данных. Все необязательны. Те, что не указаны в конфигурации библиотеки базы данных, будут унаследованы из значений, установленных для исходного символа. Поддерживаются следующие свойства:
        • description - описание символа.
        • footprint_filters - не используется (пока)
        • keywords - ключевые слова
        • exclude_from_bom - исключить из спецификации материалов. Указанный здесь столбец должен быть числового типа и будет восприниматься как логическое значение (0 для false, 1 для true).
        • exclude_from_board - исключить из печатной платы. Указанный здесь столбец должен быть числового типа и будет восприниматься как логическое значение (0 для false, 1 для true).
        • exclude_from_sim - исключить из симуляции». Указанный здесь столбец должен быть числового типа и будет восприниматься как логическое значение (0 для false, 1 для true).

          Столбцы базы данных могут быть сопоставлены с настраиваемыми (определяемыми пользователем) полями или с некоторыми встроенными полями KiCad, включая Value и Datasheet.

При редактировании файла JSON нужно строго соблюдать синтаксис. Квадратные скобки списков, фигурные для объектов, кавычки строковых значений, запятые - всё это важно, ничего нельзя упускать. KiCad на данный момент не умеет определять ошибки синтаксиса и в лучшем случае просто упадет, поэтому для редактирования файла конфигурации рекомендую использовать подходящий тестовый редактор, например, этот, а для валидации синтаксиса можно воспользоваться одним из онлайн-сервисов, например, этим.

Полезные ссылки:
Аватара пользователя
alex83
Имя: Александр

KiCad - MySQL Database - Подключение и использование

alex83 » 08 июл 2025, 00:33

  1. Открываем менеджер библиотек.


  2. Выбираем и загружаем наш файл конфигурации. В случае успешной загрузки в конце списка библиотек появится новая запись.


  3. Кликаем на сроке ПКМ и выбираем Настройки для библиотеки.
    Если при этом KiCad упал, то значит синтаксис файла конфигурации содержит ошибки.


    В открывшемся окне на всякий случай проверяем подключение нажатием кнопки TEST.


    Если при добавлении файла конфигурации появилось сообщение, что добавляемая библиотека уже существует, несмотря на то, что в конфигурации явно указано новое уникальное имя, то нужно убедится, что и в имени файла используется тоже самое имя. При добавлении БД-библиотеки KiCad по аналогии с обычными библиотеками смотрит на имя файла, а не на параметр конфигурации name.

  4. На всякий случай перезапускаем KiCad, открываем редактор схем, выбираем "Разместить символы" и в поле поиска пытаемся найти что-нибудь из тестовой БД. Если всё сделано правильно, то запись будет найдена в новой библиотеке:


Миграция на удаленный сервер
Миграция на удаленный сервер может быть осуществлена аналогичным образом:
viewtopic.php?p=8414#p8414

Пути библиотек прописываются через главное меню Настройки -> Настроить пути:
Аватара пользователя
alex83
Имя: Александр

KiCad Database Library - Сравнение с OrCAD Capture CIS

alex83 » 09 июл 2025, 15:35

Ниже будет приведено сравнение функционалов работы с базами данных KiCad и OrCAD Capture CIS.
Сравнивать эти два продукта не совсем корректно, потому что KiCad - бесплатная программа и по части функционала работы с БД находится где-то в самом начале пути, но, тем не менее, такое сравнение может оказаться полезным тем, кто ищет простую и дешевую альтернативу монструозным коммерческим САПР.
Также нужно отметить, что KiCad в настоящее время - это довольно мощная система с большим комьюнити, которая хоть и не быстро, но постоянно развивается, обрастает новыми возможностями и обладает хорошим потенциалом, а многие проблемы ранних версий, упоминания о которых встречаются в интернете, давно решены.

Чего сейчас нет в KiCad 9.0.2 Database Library:
  • Нет простого конфигуратора базы данных. С одной стороны я не могу назвать конфигурацию посредством json-файла чем-то сложным. Скорее наоборот, мне она кажется простой и лаконичной. Однако, тем, кто не знаком с этим форматом, это может показаться непростым делом.
  • Отсутствует категоризация и дерево компонентов. OrCAD Capture CIS позволяет категоризировать компоненты в древовидную структуру и осуществлять навигацию и поиск по ней. У KiCad это просто список с полнотекстовым поиском по аналогии с обычными библиотеками. В качестве альтернативы можно добавить дополнительное поле Part Type, по которому осуществлять поиск, что конечно не так удобно и наглядно как дерево.
  • Нет возможности задать множественные варианты УГО для компонента и выбирать при размещении более подходящее.
  • Отсутствует обратный поиск отдельного выделенного компонента. Нельзя выделить компонент и найти его в базе данных для наглядного сравнения свойств.
  • Нет возможности связывать таблицы. Данная возможность может быть реализована только на уровне базы данных через представление (VIEW) при условии, что БД это поддерживает.
  • Нет возможности делать параметрические запросы к БД и сохранять их для быстрого доступа к группам компонентов. В нашем распоряжении только полнотекстовый поиск по тем полям, что были сконфигурированы.
  • Нет удобного табличного вывода данных компонентов. Только небольшое окно выбора компонента, в котором можно видеть только один компонент, поля которого представлены в виде колонки с вертикальной прокруткой.
  • Нет возможности создания временных компонентов в БД. KiCad работает с БД исключительно в режиме чтения. Функция эта конечно сильно специфическая, но тем не менее.

Что есть в KiCad и нет в OrCad Capture CIS:
  • Неплохая русификация и интуитивно-понятный интерфейс.
  • Быстрый полнотекстовый поиск по всем библиотекам и полям компонентов с хорошим юзабилити, которым довольно удобно пользоваться. Я не уверен, что данный подход подойдет профессионалам, но для большинства обычных юзеров такого ПО - это прям топчик.
  • Поддержка REST API и возможность работы с HTTP-сервисами. Это значит, что вы можете использовать готовый или создать свой собственный многопользовательский web-сервис библиотеки, контроля и управления запасами компонентов с аутентификацией, с которым KiCad будет работать, как с обычной библиотекой.
    Имеется плагин для работы с InvenTree. Это бесплатная система с открытым исходным кодом, которая обеспечивает интуитивно понятное управление компонентами и контроль их запасов.
  • Хорошая поддержка Мак и Линукс.
Аватара пользователя
alex83
Имя: Александр

Отслеживание версий и расшаривание файлов

alex83 » 14 июл 2025, 01:31

Альтернативным вариантом миграции файлов библиотек на удаленный сервер является использование Git.
Файлы библиотек и проектов KiCAD представляют собой простые текстовые файлы, что позволяет отслеживать и осмысленно оценивать изменения в них с помощью Git. Таким образом можно осуществлять контроль версий как библиотек, так и проектов KiCad. Это можно делать, как локально на рабочей машине, так и на удаленном сервере с авторизацией и многопользовательским режимом. Можно поднять как свой сервер Git в локальной сети, так и использовать GitHub для этой цели.

Подробнее об использовании Git можно узнать из этого плейлиста (включить русские субтитры и скорость 0.75):
https://www.youtube.com/watch?v=YCKeqBl ... l=PcbCupid

Полезные ссылки:
Аватара пользователя
alex83
Имя: Александр

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1