Перейти к содержанию
    

Странный глюк xDM Library Client

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

 

1. Если пытаться выполнять поиск по значению индуктивности, проблемные компоненты не выдаются, хотя другие с таким же номиналом (например, 3.3uH) присутствуют.

 

2. Если пытаться добавить такой компонент на схему, найдя его по имени или просто выбрав из общего списка того каталога объектов, которому он принадлежит (где он отображается без проблем), xDM Library Client выдаёт такое ругательство:

 

com.mentor.datafusion.SocketIPC.toolbox.WrongClassException: com.mentor.datafusion.dfo.DFOException: No items for instatiation found!

 

Однако, если пытаться добавить его на схему из общего списка компонентов (в котором уже нет специфических для индуктивностей столбцов вроде значения индуктивности), всё нормально срабатывает, причём на схему добавляется не только символ и другая общая информация, но и правильное значение индуктивности.

 

Если в xDM Library Client поменять для такой катушки значение индуктивности (например, вместо 3.3uH поставить 2.2uH), ничего другого не меняя, всё будет работать нормально. Т.е. эта ошибка каким-то совершенно непонятным образом связана со значением индуктивности -- но при этом такое же значение в других катушках, давно существующих в библиотеке, проблем не вызывает.

 

Когда именно появилась эта ошибка, я затрудняюсь сказать, поскольку, когда возникает потребность в компоненте, принадлежащем некоему семейству, я ввожу в базу всё семейство сразу, но использую на практике, понятно, лишь тот компонент, который мне реально понадобился. Но это произошло уже в VX2 или 2.1, в более ранних на такое не натыкался.

 

Ни у кого нет идей, в чём может быть причина? Мне пока в голову приходит лишь полезть напрямик в базу через консоль PostgreSQL и попробовать посмотреть реальное содержимое таблиц, отвечающих за компоненты и их свойства...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Покопался в базе и вот что выяснил.

 

Как известно (тому, кто читал документацию и что-то настраивал), всякие характеристики типа индуктивности, ёмкости и т.п. не имеют в стандартной базе штатных полей. Вместо этого нужно в xDM Library Client создать требуемые характеристики, а потом прописать их нужным подкаталогам компонентов, что и было мной в своё время сделано. Естественно, для числовых по сути номиналов используется тип "вещественное число двойной точности" (ибо целые не годятся, а строки не будут нормально обрабатываться как числа). Все пользовательские характеристики для компонентов хранятся в таблице te_dyn.

 

Так вот, для тех катушек номиналом 3,3 мкГн, которые работают нормально (их у меня три штуки и все созданы достаточно давно -- ещё когда Экспедишн не потерял первую букву в названии), в базе для индуктивности прописано значение 3.3000000000000002e-006 (поскольку машина работает в двоичной системе, десятичные числа далеко не всегда могут быть представлены точно в двоичной -- отсюда и 2 в последнем разряде мантиссы). А вот три новые катушки (введены уже в эпоху VX) с тем же номиналом имеют значение 3.2999999999999997e-006.

 

Таким образом, во-первых, почему-то разные версии Library Client'а сохраняли вводимое мной значение (3.3uH) как разные двоичные числа, а во-вторых, почему-то поиск со сравнением вещественного значения работает по принципу 100% совпадения, что для вещественных чисел некорректно (это любой хороший программист знает): необходимо искать всегда в диапазоне с заданной точностью.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...