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

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


Ответить

Вопросы использования шины IEEE-488 (GPIB)

Пт июл 14, 2017 05:33:55

IEEE-488 — спецификация международного стандарта, описывающая интерфейс подключения к шине цифровых измерительных приборов. Разработана Hewlett-Packard в конце 1960-х годов для использования в автоматизированном измерительном оборудовании (англ. automated test equipment, ATE) под названием интерфейсная шина Hewlett-Packard (англ. Hewlett-Packard Interface Bus, HP-IB).[1] В 1975 году стандартизирована американским Институтом инженеров электротехнической и электронной промышленности как IEEE-488, и до сих пор применяется в данном качестве. IEEE-488 также известна под названием «Интерфейсная шина общего назначения» (англ. General Purpose Interface Bus, GPIB), стандарт IEC-625 (МЭК 625.1), а также под другими названиями. В аналогичном советском стандарте ГОСТ 26.003-80 «Система интерфейса для измерительных устройств с байт-последовательным, бит-параллельным обменом информацией», называется «многопроводным магистральным каналом общего пользования».

В теме обсуждаются вопросы использования (ПО и т.п.) и DIY-реализации (самоделки) данного интерфейса, а также сопутствующие вопросы.

Re: Вопросы использования шины IEEE-488 (GPIB)

Пт июл 14, 2017 09:17:05

На основе http://egirland.blogspot.dk/2014/03/ard ... oller.html
В Ардуино не только баги перечисленные на тамошнем форуме.
Там ещё неправильная отработка ответа.
Сейчас навскидку всё не вспомню, но пришлось играться с маской, сдвигом бит и обнулением старшего бита.
Может в чём-то сейчас не прав, сравните мою прошивку, и исходник.

В любом случае - моя работает :))
Самое весёлое - это Exel.
С учётом того, что с каждой новой версией Microsoft всё больше обрезает функционал, то для сопряжения с последовательным портом пришлось помучиться.
Но результат получен.
Правда для этого надо инсталлировать в систему mscomm32.ocx.
В архиве по вышеприведённой ссылке лежит выжимка :)
В Exel-евском файлике (сыроват, но для образца пойдёт) сделаны кнопки включения и выключения дисплея мультиметра, отправка команд и чтение ответов, задание номера последовательного порта.
А также чтение значений в цикле (выставляется период опроса в сек и задержка между запросом, и выводом в мсек, чтобы мультиметр успел ответить).
Количество запросов (тактов) соответственно можно менять.
В окошке (количество тактов) - то количество тактов, которое прошло.
Задержку выставлять так (по минимуму), чтобы количество тактов заданных, и тех что прошло - совпадало (это если надо опрашивать часто).
Если опрос редкий - то задержку можно поставить побольше.

Моя система:
Имя ОС Microsoft Windows 7 Профессиональная
Версия 6.1.7601 Service Pack 1 Сборка 7601
Microsoft Office Exel 2007 (12.0.4518.1014) MSO (12.0.4518.1014)

Ну и заодно, там же настройки serial monitor и putty для Advantest R6551 с Arduino Uno (ARDUINO GPIB firmware by E. Girlando Version 6.1 & serg-el ver. 6.3).
download/file.php?id=288885

Ввиду безбожной стоимости соединительных кабелей - соответственно искал альтернативу.
Итого: из импорта это centronics 24 pin male,
а из наших РПМ7-24Ш-КП-В
Изображение

Добавлено after 29 minutes:
Если взять Arduino nano, и упрятать внутрь приборов, то можно вывести usb на заднюю стенку.
https://ru.aliexpress.com/item/Mini-USB ... .21.06JBIJ

Изображение

Re: Вопросы использования шины IEEE-488 (GPIB)

Пт июл 14, 2017 10:05:37

Ввиду безбожной стоимости соединительных кабелей - соответственно искал альтернативу.
Итого: из импорта это centronics 24 pin male,
а из наших РПМ7-24Ш-КП-В

Сейчас купил по наводке 0xFF на Али метровый кабель :)) Прийдет отпишусь

Re: Вопросы использования шины IEEE-488 (GPIB)

Вс июл 16, 2017 06:46:17

Если кто серьезно, в ПМ пжалста:
http://www.ebay.com/itm/NATIONAL-INSTRU ... 2281875498

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 11:29:46

Завершил изготовление и тестирование USB-GPIB адаптера E. Girlando на базе Arduino Nano R3. Результат превзошёл мои ожидания. Даже с капризным мультиметром Advantest, который с адаптером Михаила Терентьева наотрез отказывался выдавать свои калибровочные коэффициенты в полном объёме, заработало всё и сразу.

Изображение Изображение

Исходники оригинальной прошивки и документация на GitHub'е: https://github.com/larsks/arduino-gpib
То же самое в блоге автора: http://egirland.blogspot.ru/2014/03/ard ... oller.html
Обсуждение доработок на форуме eevblog: https://www.eevblog.com/forum/testgear/ ... e-(ieee488)/
STL модель корпуса для 3D печати: https://www.thingiverse.com/thing:993349/#files

Для удобства при распайке разъёма составил таблицу соединений:

Изображение Изображение

Я протестировал адаптер с мультиметрами HP, Datron и Advantest, загрузив в Arduino авторский скетч. Он хотя и компилировался с множеством warning'ов из-за вольного обращения автора с NULL указателем, оказался полностью работоспособен. Проблему с неправильной отработкой ответа, о которой писал выше Сергей, я пока не обнаружил. Но стоит заметить, что разводка сигналов в его варианте отличается от авторской.
В обсуждении адаптера по ссылкам выше имеется описание нескольких полезных доработок, которыми я не преминул воспользоваться: обработка сигнала SRQ и поддержка внешнего датчика температуры LM35 (автор jxl ), предварительная установка сигнала NRFD в процедуре read_h для устранения потери символов при чтении с быстрых приборов (автор Florian). Кроме того, для совместимости с контроллерами PROLOGIX и тем софтом, который их поддерживает, крайне необходимо сделать следующее:
1) в строке, которую возвращает процедура print_ver в ответ на команду ++ver, обязательно должны быть ключевые слова "GPIB-USB", "version" и номер версии в формате с точкой, например 6.1.
2) сигналы CTS и DSR в USB-RS232 конвертере на борту Arduino нужно притянуть к земле. В Nano R3 это выводы 9 и 10 чипа CH340G.
3) на плате Arduino необходимо отключить Auto Reset On Serial Connection. В Сети приводят много вариантов как это сделать, в том числе с помощью отключаемого перемычкой резистора на 100 Ом с reset на +5 В. У меня этот фокус не заработал, а подбирать номинал мне не захотелось. Поэтому я поступил кардинально: выпаял конденсатор 100 нФ, который соединяет reset и DTR. Делать это лучше всего после прошивки, чтобы не прибегать потом к ручному сбросу атмеги кнопкой.

Изображение Изображение

Достоинства:
+ отсутствуют дорогие/долго доставаемые комплектующие (например, драйверы), не нужно заказывать печатную плату.
+ весь адаптер умещается в корпусе разъёма, можно отказаться от толстых шлангов GPIB кабелей и удлинителей.
+ совместимость с широко распространённым PROLOGIX.
Недостатки:
- не полная электрическая совместимость со спецификацией GPIB.
- поддерживаются только базовые функции и режимы интерфейса.
- малая пропускная способность. Теоретический потолок не более 10 кб/с.
- несовместимость с продуктами от NI.

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 14:10:45

Михаил тестировали пока только как терминал ?
Как воспринимает утилиты из простого :

http://www.ke5fx.com/gpib/readme.htm

С польским даталоггером работает ? :

http://rfscientific.eu/rf-scientific-gpib-logger-v10

С Keysight программами не пробовали ещё ?

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 15:00:25

Тестировал через терминал.
KE5FX prologix.exe конфигуратор коробочку находит автоматом. Но что там ещё можно запустить, к примеру с HP 34401A, я не знаю. Скорее всего ничего.
С польским даталоггером не работает (пока): не находит Prologix. По каким критериям он его ищет - неизвестно, проект не open source. К сожалению проект RFScientific Data Logger скомпилирован только под FTDI, а в Arduino Nano - CH340G :cry:
С Keysight программами не проверял, работать не должен.

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 16:36:56

У KE5FX есть емулятор плоттера.
Надо наверно писать поляку (он на eevblog тоже присутствует),мой
адаптер на Silabs C8051F387, USB у него на борту (если выкинуть
драйвера,то получается ещё меньше и ... :) ) , тоже не находит его :cry:
Понимаю,что у Keysight громозкие программы,но там есть Connection Expert,
может что-то можно "поковырять" :)) ?

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 17:43:17

Михаил, я не знаю как у Вас заработала родная прошивка.
Мою пришлось допиливать (отчасти по причине того что поменял разводку, отчасти из-за того что в программе ошибки).
Смотрим:
авторская, чтение
DDRD = DDRD & 0b11001111 ; \задаём 4 и 5 биты порта D как входа
PORTD = PORTD | 0b00110000; // PORTD bits 5,4 input_pullup \ выставляем HIGH на 4 и 5 бите порта D
DDRC = DDRC & 0b11000000 ; \задаём 5,4,3,2,1,0 биты порта C как входа
PORTC = PORTC | 0b00111111; // PORTC bits 5,4,3,2,1,0 input_pullup \ выставляем HIGH на 5,4,3,2,1,0 бите порта C
return ~((PIND<<2 & 0b11000000)+(PINC & 0b00111111)); \а теперь внимание! читаем 6 и 7 биты порта D, сдвигаем влево на 2, читаем 5,4,3,2,1,0 биты порта C.
\и складываем биты в один байт, затем весь байт инвертируем

Т.к. вычитываем все 8 бит, то 7-ой бит получается всё время в 1.
Т.е. все символы ASCI получаются из верхней адресной половины таблицы.
Для того чтобы увидеть вменяемый ответ, надо обнулить 7-ой бит.
Вложения
отличия прошивок.jpg
(167.34 KiB) Скачиваний: 875

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 18:04:38

Попробуем разобраться.
Код:
return ~((PIND<<2 & 0b11000000)+(PINC & 0b00111111))

Читаем PORTD, сдвигаем влево на 2, маскируем всё, кроме 6 и 7 битов (которые только что были соответственно 4 и 5-м), логически складываем с битами 0-5 прочитанного PORTC. Инвертируем. К примеру, если все биты прочитаны как 1, то после инверсии получим 00000000, и наоборот, если читаем все 0, то в результате 11111111. Ведь так?

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 18:34:08

:( Эээ. Да.
Пошел учить языки....

А что у вас с 7 битом?

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 18:42:28

Проверил 7-й бит в текстовых строках (*IDN?) - нулевой. Наверное в порядке.

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 19:00:59

Хм.
В Advantest R6551 прилетала 1.
Поэтому сбрасывал в 0 принудительно.

Михаил, выложите пожалуйста свой скетч.

Re: Вопросы использования шины IEEE-488 (GPIB)

Вт июл 18, 2017 21:27:15

Скетч отправил в л/с. К сожалению, NoDerivatives лицензия не позволяет мне его распространять.

Re: Вопросы использования шины IEEE-488 (GPIB)

Ср июл 19, 2017 05:17:59

Завершил изготовление и тестирование USB-GPIB адаптера E. Girlando на базе Arduino Nano R3. Результат превзошёл мои ожидания. Даже с капризным мультиметром Advantest, который с адаптером Михаила Терентьева наотрез отказывался выдавать свои калибровочные коэффициенты в полном объёме, заработало всё и сразу.

Недостатки:
- не полная электрическая совместимость со спецификацией GPIB.
- поддерживаются только базовые функции и режимы интерфейса.
- малая пропускная способность. Теоретический потолок не более 10 кб/с.
- несовместимость с продуктами от NI.


Поздравляю! Как всегда СУПЕР!!!
Михаил, что за Advantest?
Я таки доделал USB-GPIB Михаила Терентьева(НЕ RS232-GPIB!)
Для моих задач не заметил разницы, но там надо под себя софт писать :o
несовместимость с продуктами от NI
Вот и пришлось купить NI PCI и PCMCIA :))
А вот для NI есть NIVISA под питон,и из этого кроссплатформенность! :))

Re: Вопросы использования шины IEEE-488 (GPIB)

Чт июл 20, 2017 11:41:56

У KE5FX есть емулятор плоттера.
Надо наверно писать поляку (он на eevblog тоже присутствует),...

Эмулятор плоттера KE5FX работает с довольно узким перечнем приборов, поддерживающих HP-GL/2, в основном анализаторами спектра. У меня таких нет и вряд ли будут когда-либо. Поэтому проверить не могу :(
Автору RF Scientific Data Logger я написал. Как оказалось, мы с ним уже пересекались в прошлом году по вопросам нановольтметров. Из ответного письма следует, что проблема поддержки других USB-GPIB адаптеров актуальна и будет обсуждаться совместно с инженером-программистом перед выходом следующей версии программы. Однако основная сложность здесь - получить сами адаптеры для тестирования и отладки. Так что ИМХО это дело далёкого будущего.

В общем, если заказывать модуль Arduino для "USB-GPIB-за-час", то только с чипом FTDI, а не CH340 или каким-то другим. Не все программы общаются с адаптером, как с VCM. Есть и такие, которые используют прямой доступ через библиотеку ftd2xx.dll.

Re: Вопросы использования шины IEEE-488 (GPIB)

Чт июл 20, 2017 12:29:39

Китайский FTDI имел какие-то проблемы....
Может уже тогда собирать с нуля на Меге и нормальной FTDI.
Михаил,к своему подцепить FTDI в обход CH340 не пробовали ?

Re: Вопросы использования шины IEEE-488 (GPIB)

Чт июл 20, 2017 12:46:10

Я сделал несколько иначе. Подключил к компу свой самодельный калибратор с FTDI чипом. И, о чудо, RF Scientific его увидел и согласился работать даже не проверяя PROLOGIX ли это или просто USB шнурок :)

Re: Вопросы использования шины IEEE-488 (GPIB)

Чт июл 20, 2017 13:02:24

Мой на C8051F387 - USB\VID_10C4&PID_8A5F (СОМ4) не видит 8)
Освободится адаптер на СР2102 (тоже Silabs :)) ) попробую,
терминал PuTTy на нём сейчас работает.

Re: Вопросы использования шины IEEE-488 (GPIB)

Чт июл 20, 2017 13:17:52

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

Изображение Изображение
Ответить