Получить команды GPIB для спектрографа

Что мерить, чем мерить, как мерить. И, естественно - зачем мерить...

При поддержке компании ПРИСТ


dimitriev
Родился
Сообщения: 18
Зарегистрирован: Ср дек 14, 2016 14:51:56

Получить команды GPIB для спектрографа

Сообщение dimitriev »

Здравствуйте!
Есть спектрометр года ~1991-1992го. Есть компьютер ~Pentium с установленной Windows 98, на нём установлена программа для управления тройным спектрографом Dilor и CCD к нему.

Для вращения (в т.ч.) трёх дифракционных решеток подаются команды с компьютера на блок управления спектрографом посредством GPIB.
Для управления по GPIB в компьютер установлена ISA-карта Iotech GP488B (1990, FCC ID: J3VGP488B). Насколько она удовлетворяет IEEE 488.2, не понятно.

Есть программа с закрытым исходным кодом Speclab 2.0.

Как можно узнать, какие команды подаются через GPIB? Мануал с ними утерян, если и был.
Спасибо!

В приложении фото карты, правда, в профиль, если надо, вытащу и сделаю нормальное.
Изображение
Реклама
Аватара пользователя
TrexREXX
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вт дек 27, 2011 05:26:56

Re: Получить команды GPIB для спектрографа

Сообщение TrexREXX »

dimitriev писал(а):Здравствуйте!
Есть спектрометр года ~1991-1992го. Есть компьютер ~Pentium с установленной Windows 98, на нём установлена программа для управления тройным спектрографом Dilor и CCD к нему.

Для вращения (в т.ч.) трёх дифракционных решеток подаются команды с компьютера на блок управления спектрографом посредством GPIB.
Для управления по GPIB в компьютер установлена ISA-карта Iotech GP488B (1990, FCC ID: J3VGP488B). Насколько она удовлетворяет IEEE 488.2, не понятно.

Есть программа с закрытым исходным кодом Speclab 2.0.

Как можно узнать, какие команды подаются через GPIB? Мануал с ними утерян, если и был.
Спасибо!

В приложении фото карты, правда, в профиль, если надо, вытащу и сделаю нормальное.
Изображение
А точнее, марку Dilor :))
Спектрометр хоть что то отвечает, например *IDN?

Нарушение правил форума. п 2-7. Предупреждение. FAKIR.
Реклама
khach
Электрический кот
Сообщения: 1038
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Получить команды GPIB для спектрографа

Сообщение khach »

Найти контроллер GPIB NI с опцией плюс типа NI PCIe-GPIB+ PCI Express GPIB Interface and Analyzer или NI GPIB-USB-HS+ там где опция Analyzer есть. И тогда компьютер с таким контроллером подключенный к физической шине может наблюдать и протоколировать всю активность на шине ( в этом случае он не становится контроллером шины и не занимает нулевой адрес, только наблюдателем). К сожалению к контрорллерам IOTECH небыло утититы типа NI IOTrace которая полностью показывает протокол интерфейса.
dimitriev
Родился
Сообщения: 18
Зарегистрирован: Ср дек 14, 2016 14:51:56

Re: Получить команды GPIB для спектрографа

Сообщение dimitriev »

TrexREXX писал(а): А точнее, марку Dilor :))
Спектрометр хоть что то отвечает, например *IDN?
Dilor XY800 (серийный номер 207), к нему подключена CCD от Wright Instruments (сообщается по коаксиальному кабелю, BNC).

К сожалению, другой карточки GPIB под рукой нет. Потому пока подать ничего не могу.
Т.е., я заранее узнаю, что мне нужно купить для этого, я с GPIB не имел дела.

1) Получается, если я просто подключу к этой карте параллельно другую GPIB карту с другого компа (я ведь могу так сделать?), этого не достаточно, чтобы видеть траффик, нужно обязательно иметь функцию Analyzer?

2) Там не будет проблем с совместимостью? Скажем, NI GPIB-USB-HS+ при подключении без проблем подхватит творчество Iotech GP488B на (насколько я понимаю) 300 Кб/с?
В данном случае, я без проблем смогу подключить к Iotech GP488B карту NI GPIB-USB-HS+, подключенную через USB к другому компьютеру?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
TrexREXX
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вт дек 27, 2011 05:26:56

Re: Получить команды GPIB для спектрографа

Сообщение TrexREXX »

Посмотрите здесь по карточке
http://www.mccdaq.com/downloads/iotech_ ... 488Boards/

Ну и длинный путь, логический анализатор на шину данных карточки :))
Недавно был вынужден заниматься подобным :cry:
Реклама
dimitriev
Родился
Сообщения: 18
Зарегистрирован: Ср дек 14, 2016 14:51:56

Re: Получить команды GPIB для спектрографа

Сообщение dimitriev »

1) Можно ли соединить 2 компьютера по GPIB обычным кабелем?

в одном компе ISA-карта Iotech GP488B (1990, FCC ID: J3VGP488B)
в другом компе карта PCI-gpib 183617K-01 от National Instruments (фото в приложении).

не сгорят ли компьютеры после такой манипуляции?
Насколько я знаю, в случае USB, напрямую подключать 2 компа можно только через специальный кабель с оптронной развязкой, а как тут?

2) а теперь пусть обе платы на одном компе (для данного случая я драйверов для платы National Instruments пока не нашел).
Не повредит ли это компьютер?

3) Пусть теперь это всё подключено параллельно к блоку управления через 2ой GPIB-кабель. Всё будет ОК после этого?
Я хочу 2ую плату в режиме Listen запустить, я же могу так сделать и послушать команды?
Изображение
Реклама
khach
Электрический кот
Сообщения: 1038
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Получить команды GPIB для спектрографа

Сообщение khach »

Соединить можно, т.к GPIB шина с ОК (открытым коллектором) но работать конечно не будет. На шине будут два контроллера с адресом 0 (ноль). Талкер и листнер- это состояния устройств на шине, кто "говорит" и кто "слушает". А нужен "BUS ANALYZER" - полный захват протокола с софтом для визуализации. Такое умели только оригинальные карты NI с опцией плюс. Ни карты Iotech, ни MCC, ни HP/Agilent такого режима не имеют. На карте NatInst должен быть плюс в обозначании, визуально я определить не берусь, там кажется должны были быть запаяны доп микросхемы памяти для буфера захвата протокола шины.
Можно еще поискать примеры программирования спектрометра на лабвью и отреверсить протокол. С картой NI по крайне мере будет работать захват лога команд самой катры через IOtrace.
http://sine.ni.com/nips/cds/view/p/lang/pl/nid/1875 -вот именно та карта что надо искать.
Можно конечно сесть на шину обычным logic analyzer, но дешифровку протокола прийдется писать самому.
Опишите полностью свою систему, какой контроллер стоит на Dilor ( они разные были). Поспрашиваю знакомых от рамановкого рассеяния, может у кого система команд завалялась.
dimitriev
Родился
Сообщения: 18
Зарегистрирован: Ср дек 14, 2016 14:51:56

Re: Получить команды GPIB для спектрографа

Сообщение dimitriev »

[uquote="khach",url="/forum/viewtopic.php?p=2957727#p2957727"]Соединить можно, т.к GPIB шина с ОК (открытым коллектором) но работать конечно не будет. На шине будут два контроллера с адресом 0 (ноль). Талкер и листнер- это состояния устройств на шине, кто "говорит" и кто "слушает". А нужен "BUS ANALYZER" - полный захват протокола с софтом для визуализации. Такое умели только оригинальные карты NI с опцией плюс.[/uquote]
Подошло оборудование, обновляю тему.

Прослушал анализатором, что идет по GPIB при работе "родной" системы с Labspec, постарался всё максимально точно воспроизвести средствами C# + USB-GPIB-HS+.
Удалось заставить двигаться только один двигатель из двух, позицию "Спектрографа" выставляет корректно.
При этом позиция "Монохроматора" считывается также корректно, но изменить её не получается.
По командам системы симметрично устроены, не понятно, почему с одним получается, а с другим нет.

Как ни бьюсь, ничего не получается, помогите пожалуйста.

*****************************

Ниже в приложении архив с результатами прослушивания, моей программой и фрагментом исходного кода на С++ библиотеки, в которой описано управление этими двигателями (прислана наследником Dilor'а Хорибой; библиотека для Labspec 4, судя по анализу разных версий Labspec, тогда как мы используем Labspec 2). Констант в коде не было, взяты из дезассемблирования ближайшей dll, проверены по логу общения Labspec 2.

Заставить работать другие версии Labspec не получилось.

Структура команд:

1) Движение 1 оси (foremonochromator): команды "?_+", затем "@" (либо вместе всё слать, без разницы) + данные { 97, <скорость>, 131, <направление> }
<Скорость>: байт от 0x0C до 0x3E (соответствует от 1 до 4000 см-1/мин, как я понимаю).
<Направление>: 0x88 (назад), 0x98 (вперед), 0x88 + 0x28 (стоп при движении назад), 0x98 + 0x28 (стоп при движении вперед).
После этого отсылается команда "?_", значения её не знаю.

Позиция для движения, как и позиция, которая считывается - величина относительных обратных см (relative cm^-1) относительно некой точки, которую определяем как "0". Это значение хранится в файлах Labspec, также оно хранится и выводится на дисплей консоли электроники Dilor. Его нужно вручную "синхронизировать", т.е. вбить в Labspec значение с дисплея Dilor. В общении по шине GPIB участвуют только относительные обратные см. Референсный "0" для оси 1 и 2 в общем случае разный.

2) Движение 2 оси (spectrograph): команды "?_,@" / "?_," + "@". Далее 4 байта данных о параметрах движения (те же).

3) Считывание позиции: для "монохроматора" "_?K ", будут непрерывно отсылаться данные о положении, пока не будет отправлена команда "_?".
Для "спектрографа": "_?L " + "_?".

*****************************

Ссылка на архив: https://cloud.mail.ru/public/29KP/jbkHyk1d6

Структура:
В папке "caps" лежат результаты прослушивания анализатором, old - от родного Labspec, new - результат работы моей программы. base - краткий лог (Data Transfers, Command Transfers), ext - развернутый (+ Control Line Transitions, Handshake Line Transitions, Parallel Poll Responses).
*cap - файлы логов Анализатора из пакета NI-488.2 18.5.
*txt - результат экспорта логов в текстовый формат.

Папка "С++" - фрагмент исходного кода библиотеки, в которой находится управление движками дифракционных решеток.
Папка "qbasic_code" - основной исходный код версии программы на quick basic'е (скорее всего на нём) для дос, там есть минимум одно несоответствие работе актуальной системы - пересчет байтов в текущие величины относительных обратных сантиметров не корректен, корректен тот, что в файле в папке "С++". На досовской программе мы не работали.
Папка "Dilor Control" - моя программа на C#.

*****************************

Помогите, пожалуйста.



Добавлено after 37 minutes 18 seconds:
Использование метода Board.ClearRemoteEnableLine() приводит к выводу следующей информации на шину:
?_(0x20) ?_(0x21) <...> ?_(0x3e)
? _?(0x21) ? _?(0x22) <...> _?(0x3e) ?
Это при включенном анализаторе, когда на шине много слушателей, иначе их штук 6-~10, я не понял логики, когда сколько.
Группирование байт: ?_X + ? + ?_X ...

Использование метода Board.ConfigureWrite(listener) выводит:
(0x14) (0x14) (0x40) (0x3f) (0x21) (0x22) <...> (0x3e)
байты идут с минимальной задержкой (единым пакетам или как это корректно назвать).

0x20 ÷ 0x3e соответствует количеству слушателей на шине, их такое количество, только если включен анализатор, иначе 6-~10.

Но этого "мусора" нет при работе исходной программы. При старте она считывает положение активной оси (если последний раз было выбрано движение одной оси) или обеих (если последний раз одновременно двигались обе оси).
В методе Init(byte BoardID, byte PrimaryAddress) для конструктора я попробовал ограничиться вызовом только этих функций (теперь этот "мусор" вообще не поступает на шину):
int GPIB_board_index = BoardID; //GPIB0
GPIB0_Board = new NationalInstruments.NI4882.Board(GPIB_board_index);
GPIB0_Board.SendInterfaceClear(); //без него у меня не входит в CIC
GPIB0_Board.BusTiming = BusTimingType.Normal;
При этом я включаю электронику Dilor после вызова Board.SendInterfaceClear() - останавливаю программу на строчке Board.BusTiming = <...>, перезапускаю Dilor. При этом анализатор не выводит весь этот "мусор" ? _?X и прочий.
Но результат тот же, могу только считать позицию оси 1, двигаю и считываю позицию оси 2 без проблем.

Также я пытался использовать Board.ConfigureWrite(listener) и то, что "+" = 0x2b, "," = 0x2c, "K" = 0x4b, "L" = 0x4c, но это пока ни к чему не привело, либо я делал это неправильно.
dimitriev
Родился
Сообщения: 18
Зарегистрирован: Ср дек 14, 2016 14:51:56

Re: Получить команды GPIB для спектрографа

Сообщение dimitriev »

В итоге всё заработало (год назад запустил, когда удалось купить новую CCD-камеру), только для управления одной из косекансных решёток байты пришлось троить (каждый байт слать по 3 раза на максимальной выставленной задержке на устройстве, управлявшем GPIB, этот спектрограф был выпущен до проведения стандартизации шины GPIB). Итог: https://radiokot.ru/forum/viewtopic.php ... 8#p3909648
khach
Электрический кот
Сообщения: 1038
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Получить команды GPIB для спектрографа

Сообщение khach »

[uquote="dimitriev",url="/forum/viewtopic.php?p=3909650#p3909650"]В итоге всё заработало[/uquote]
Поздарвляю! А нет ли желания проект управления спектрометром в виде открытого кода выложить? Понятно, что аппаратура уж очень специфическая, но может кому интересно будет или в будущем пригодиться. А то тут очередной прибор подохнуть собирается в связи с кончиной WinXP, а управляется по SCSI для которого поддержки в новой винде нет.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Получить команды GPIB для спектрографа

Сообщение Eddy_Em »

[uquote="khach",url="/forum/viewtopic.php?p=3909894#p3909894"]А то тут очередной прибор подохнуть собирается в связи с кончиной WinXP, а управляется по SCSI для которого поддержки в новой винде нет.[/uquote]
Если перевести управление на линукс, никаких проблем быть не должно.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
dimitriev
Родился
Сообщения: 18
Зарегистрирован: Ср дек 14, 2016 14:51:56

Re: Получить команды GPIB для спектрографа

Сообщение dimitriev »

khach писал(а):[uquote="dimitriev",url="/forum/viewtopic.php?p=3909650#p3909650"]В итоге всё заработало[/uquote]
Поздарвляю! А нет ли желания проект управления спектрометром в виде открытого кода выложить? Понятно, что аппаратура уж очень специфическая, но может кому интересно будет или в будущем пригодиться. А то тут очередной прибор подохнуть собирается в связи с кончиной WinXP, а управляется по SCSI для которого поддержки в новой винде нет.
Спасибо за помощь! Да надо бы, но надо отделить тогда то, что связано с работой конкретно со спектрометром и CCD. Я сделаю, но пока не могу сказать, когда (если не горит, конечно). Просто там много наработок по логике и интерфейсу, которые я пока не готов светить (пускай даже учитывая то, что на C#), в частности из-за их кривонаписанности:), в упрощённом виде вывешу.

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3909907#p3909907"][uquote="khach",url="/forum/viewtopic.php?p=3909894#p3909894"]А то тут очередной прибор подохнуть собирается в связи с кончиной WinXP, а управляется по SCSI для которого поддержки в новой винде нет.[/uquote]
Если перевести управление на линукс, никаких проблем быть не должно.[/uquote]
Может, я что-то не понимаю, но определённые проблемы возникнут сразу с поддержкой всех остальных приборов (обвеса), для которых производители не потрудились сделать драйверы под линукс.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Получить команды GPIB для спектрографа

Сообщение Eddy_Em »

[uquote="dimitriev",url="/forum/viewtopic.php?p=3910131#p3910131"]Может, я что-то не понимаю, но определённые проблемы возникнут сразу с поддержкой всех остальных приборов (обвеса), для которых производители не потрудились сделать драйверы под линукс.[/uquote]
К сожалению, такое бывает. Поэтому мы просто не покупаем железа, если оно в линуксе не работает. Ведь только совсем умалишенный будет управлять железками, способными нанести нехилый материальный урон (а то и человека убить) из-под мастдайки!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
khach
Электрический кот
Сообщения: 1038
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Получить команды GPIB для спектрографа

Сообщение khach »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3909907#p3909907"]Если перевести управление на линукс, никаких проблем быть не должно.[/uquote]
Скорее не под линукс, а писать приложение и драйвера на Python. Получается кроссплатформенность и переносимость. Т.е код, отлаженный под Виндой для фирменного NI-GPIB легко переносится на Rapsberry c самодельным GPIB интерфейсом. А копеечная ( по сравнению с industrial PC) Rapsberry работает хардверным враппером, позволяя управлять древним научным прибором, который в силу тормознутости давил всю шину GPIB по скорости, через LXI сетевой интерфейс. Т.е система управления научной аппаратурой становится многопроцессорной, многоузельной, возможно управление приборами с разных хост-компьютеров.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Получить команды GPIB для спектрографа

Сообщение Eddy_Em »

Вот только низкоуровневщину придется на С писать, тут пытхон не спасет!
Ну и зачем тогда вообще с пытхоном связываться?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
dimitriev
Родился
Сообщения: 18
Зарегистрирован: Ср дек 14, 2016 14:51:56

Re: Получить команды GPIB для спектрографа

Сообщение dimitriev »

Драйвер всё равно придётся писать на C/C++. То, что поверх, уже частности.
khach
Электрический кот
Сообщения: 1038
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Получить команды GPIB для спектрографа

Сообщение khach »

GPIB все в PyVISA прячется, при этом врапперы самодельных адаптеров GPIB тоже на Python написаны ( тех, которые через виртуальный COM порт общаются). САN-BUS тоже на Python реализован. Как не странно CAN активано влез в измериловку в качестве контроллеров mass flow, переключателей измерительной цепи, контроллеров температуры итд.
Так что на нижнем уровне мало что писать приходится. Или например древнюю ISA карту оказывается проще посадить на FSMC шину STM32 nucleo 144 c эзернетом ( через конвертор уровенй), написать к ней мелкий драйвер под STM32 ( благо исходники ДОС овских драйверов на С были) и общаться с ней по эзернету на высшем уровне команд, оставив управляющеи последовательности низкоуровневые в драйвере. враппера.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Получить команды GPIB для спектрографа

Сообщение Eddy_Em »

khach, ну пытхон же — для школьников! Это ведь вообще несерьезно.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
khach
Электрический кот
Сообщения: 1038
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Получить команды GPIB для спектрографа

Сообщение khach »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3910291#p3910291"]khach, ну пытхон же — для школьников! Это ведь вообще несерьезно.[/uquote]
Студенты и докторанты-физики в компетенции программирования- те же школьники. Ну могут что то наваять на лабвью, но в процессе отладки в состоянии заклинить синиусный механизм монохроматора ценой в пару сотен тысяч. Так что уж лучше питон, т.к лабвью отладку особых ситуаций с аппаратурой не обеспечивает практически от слова совсем. Ну и питон лет 10-20 проживет надеюсь, а не прийдется переписывать софт на каждое поколение ДОС-виндовс итд. А то уж этих исходников о которых никто не помнит что к чему накопилось, начиная от ассемблера I8080, Турбо-С, паскаль, дельфи 16 разрядный, С++ под кучу платформ, джава, будь она неладна, куча новомодных языков. Приходят студенты, ваяют модуль, уходят, потом он перестает компилиться или работать на новой версии виндов, а ты поддерживай лабу в рабочем состоянии....
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Получить команды GPIB для спектрографа

Сообщение Eddy_Em »

Если что, на современных системах код, написанный под пытхон2 не заработает! Потому что второй - deprecated и слит!
Да даже внутри подверсий возможны проблемы. Хуже пытхона я не встречал ничего!!! Я молчу про дебильный синтаксис, который никакой логике не подчиняется. Да и его ООП - бред сивой кобылы!
Нет, если нужна надежность и гарантия, что через 50 лет код можно будет запустить, писать надо на С. Тем более, что проще С может быть только язык ассемблера!
Я вот беру код 25-летней давности, и он у меня спокойно собирается. Вот с низкоуровневщиной - да, если это сделано для модулей ядра или рассчитано на какую-то хитрую библиотеку, могут возникнуть косяки (но пытхон в этом случае вообще отсасывает причмокивая!).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Ответить

Вернуться в «Измерения»