Заголовок сообщения: Re: Вопросы использования шины IEEE-488 (GPIB)
Добавлено: Ср янв 08, 2020 21:54:48
Поставщик валерьянки для Кота
Карма: 68
Рейтинг сообщений: 3375
Зарегистрирован: Чт сен 09, 2010 07:32:24 Сообщений: 2267 Откуда: г. Рыбинск
Рейтинг сообщения:0
Весь интернет просто завален этими китайскими клонами/имитациями/фейками 82357B адаптеров. По внешнему виду коробки и всего одному отзыву невозможно сделать вывод, что там у ней внутре и будет ли с ней работать софт. На eevblog есть специальная ветка по этим адаптерам.
Под ARDUINO UNO с установленной ATmega328. Есть платы с уже разведенными пинами А6, А7, а есть где надо подпаиваться к ногам микросхемы.
Использовал последнюю на данный момент версию ver. 0.48.08, 27/01/2020.
Добавил два температурных датчика LM35. Есть как аппаратная фильтрация, так и программная.
++temp --> температура 1 ++temp2 --> температура 2
Для снижения помех, подключение LM35 выполняется через RC цепочку 10 кОм, 0,1 мкФ. Программно скорректировано значение. Измерялось ниже на 0,5 °С по сравнению с Pt1000.
Для определения и работы AR488 в Prologix GPIB Configurator. Установить в AR488 ++setvstr GPIB-USB version 5.0 Потом ++savecfg «Обратите внимание, что для KE5FX GPIB Configurator требуется несколько более длинная строка версии, а именно «GPIB-USB version M.NN», где M - основной, а NN - младший номер версии, который составляет не менее 2.xx и не более 4.26. Настройки активируются в соответствии с функциями оборудования в различных версиях. Все, что равно или выше 4.26, рассматривается как последняя версия, и все функции включены. Эмануэле упоминает, что ему «пришлось форсировать« версию 6 »», но все, что выше 4.26, похоже, работает нормально. Я успешно использовал строку «GPIB-USB версия 4.99».» https://www.eevblog.com/forum/testgear/ ... ezgpib/20/ Далее: Для захвата экрана с TDS754C в HP7470A Plotter Emulator — Version 2.02 Подать команды ++mode 0 ++lon 1 В самой программе режим GPIB установить на No assigned Plotter address (listen only) Потом нажать w Для выхода из режима ожидания нажать любую клавишу. Для сохранения захваченного экрана нажать s В осциллографе настроить сохранение на HPGL и порт GPIB.
Привет усатые-полосатые Запилил скрипт для EZGPIB под Advantest R6871E для максимально быстрого сбора. На 5PLC (7 1/2) достигнута скорость 254 s/min (Azero on). А максимальная 2375 s/min (100 uS).
Формат выходных данных сразу готов к импорту в Excel.
Код:
Program R6871Logger; // ѕрограмма дл¤ сбора данных с мультиметра Advantest
var Filename : String; var t_start_datetime: TDateTime; var t_acq_datetime: TDateTime; var tmp_str:String; var elapsed_time:longint; var Answer:String; var i:longint;
procedure Init_File; begin; EZGPIB_FileClearBuffer; tmp_str:='date'; // First column EZGPIB_ConvertAddToString(tmp_str,';'); EZGPIB_ConvertAddToString(tmp_str,MakeModel); // Second column EZGPIB_FileAddToBuffer(tmp_str); Filename := Directory+'\'; EZGPIB_ConvertAddToString(Filename,DateOf(EZGPIB_TimeNow)); EZGPIB_ConvertAddToString(Filename,' '+MakeModel); EZGPIB_ConvertAddToString(Filename,'.csv'); ifEZGPIB_FileExists(Filename)then EZGPIB_FileDelete(Filename); // Erase old file EZGPIB_FileWrite(Filename); // Save File end;
procedure Save_File; begin; EZGPIB_FileClearBuffer; tmp_str :=''; EZGPIB_ConvertAddToString(tmp_str,t_acq_datetime); // First column EZGPIB_ConvertAddToString(tmp_str,';'); EZGPIB_ConvertAddToString(tmp_str,Answer); // Second column EZGPIB_FileAddToBuffer(tmp_str); // Add to file buffer EZGPIB_FileWrite(Filename); // Save File end;
procedure Init_Device; begin; EZGPIB_BusAutoOff; // Ёквивалент команды ++auto 0 EZGPIB_BusWriteData(gpib_address,'Z');// Reset to defaults EZGPIB_TimeSleep(5); EZGPIB_BusWriteData(gpib_address,'ac');// Acal execute EZGPIB_TimeSleep(3); EZGPIB_BusWriteData(gpib_address,'++read_tmo_ms 10000'); // установка таймаута 10 сек EZGPIB_BusIFC; // Perform an Interface Clear EZGPIB_BusEnableEoi; EZGPIB_BusSetEos(0); EZGPIB_TimeSleep(1);
// Main procedure begin; EZGPIB_screenclear; // Clear the Output Console Init_Device; // Send command strings to meter Init_File; // Look for file, delete it if it exists. Create new file with headers t_start_datetime :=EZGPIB_TimeNow; // Get time at beginning of each cycle elapsed_time:=0; while (elapsed_time < duration) and (not ezgpib_kbdKeyPressed) do begin; repeat Answer:=''; // Clear previous reading EZGPIB_BusWriteData(gpib_address,'E'); i:=0; repeat EZGPIB_TimeSleep(0.0001); i:=i+1; until (EZGPIB_BusDataAvailable or (i>200000)); Answer:=EZGPIB_BusGetData; until Length(Answer)>1;
Answer := AnsiReplaceText ( Answer, '.', ','); // переделка ответа под стандарт с цифровым разделителем зап¤той t_acq_datetime := EZGPIB_TimeNow; elapsed_time:=MinutesBetween(t_start_datetime,t_acq_datetime);// Calculate elapsed time since start of acquisition EZGPIB_ScreenWriteLn(Answer); Save_File; // If result contains data, write data to the file
Доработал немного скрипт. Теперь при создании в имени файла указывается дата и время. Стало возможно, без переименования файлов, запускать несколько измерений в один день. Ранее, при создании файлов, ранее созданный в этот день файл стирался Также интервал измерения можно задавать (в секундах). И переделал вывод в файл. Для более простой постобработки в Excel.
В EZGPIB заметил такой баг - при редактировании скрипта и компиляции, после запуска может неправильно отрабатывать задержки. После закрытия\открытия программы всё работает.
Код:
Program R6871Logger; // Программа для сбора данных с мультиметра Advantest
const MakeModel='R6871'; // Указать модель прибора const GPIB_address = 1; // Указать адрес прибора на шине GPIB const Duration = 2880; // Длительность измерения, мин. (+выход по нажатию клавиши) const Directory = 'C:\Incoming'; // Путь для сохранения файла CSV const Temperature = 'Temp1'; // Температура const Sampling = 10; // Интервал измерения, сек
var Maker : TDateTime; // Дата/время создания файла var Filename : String; var t_start_datetime: TDateTime; var t_acq_datetime: TDateTime; var tmp_str:String; var elapsed_time:longint; var Answer:String; var i:longint; var Temp1:String; var Make : String;
procedure Init_File; begin; Maker := EZGPIB_TimeNow; // Дата/время создания файла EZGPIB_FileClearBuffer; tmp_str:='date'; // First column EZGPIB_ConvertAddToString(tmp_str,';'); EZGPIB_ConvertAddToString(tmp_str,'DCV'); // Second column EZGPIB_ConvertAddToString(tmp_str,';'); EZGPIB_ConvertAddToString(tmp_str,'Temp °C'+#13+#10); // Third column + пустую строку для более простого выделения столбца в Excel EZGPIB_FileAddToBuffer(tmp_str); Filename := Directory+'\'; EZGPIB_ConvertAddToString(Make,Maker); Make := AnsiReplaceText ( Make, ':', '_'); //Замена недопустимых символов в имени файла EZGPIB_ConvertAddToString(Filename,Make); EZGPIB_ConvertAddToString(Filename,' '+MakeModel); EZGPIB_ConvertAddToString(Filename,'.csv'); EZGPIB_FileWrite(Filename); // Save File end;
procedure Save_File; begin; EZGPIB_FileClearBuffer; tmp_str :=''; EZGPIB_ConvertAddToString(tmp_str,t_acq_datetime);// First column EZGPIB_ConvertAddToString(tmp_str,';'); EZGPIB_ConvertAddToString(tmp_str,Answer); // Second column EZGPIB_ConvertAddToString(tmp_str,';'); EZGPIB_ConvertAddToString(tmp_str,Temp1); // Third column EZGPIB_FileAddToBuffer(tmp_str); // Add to file buffer EZGPIB_FileWrite(Filename); // Save File end;
procedure Init_Device; begin; EZGPIB_BusAutoOff; // Эквивалент команды ++auto 0 EZGPIB_BusWriteData(gpib_address,'Z'); // Reset to defaults EZGPIB_TimeSleep(5); EZGPIB_BusWriteData(gpib_address,'ac'); // Acal execute EZGPIB_TimeSleep(3); EZGPIB_BusWriteData(gpib_address,'++read_tmo_ms 10000'); // установка таймаута 10 сек EZGPIB_BusIFC; // Perform an Interface Clear EZGPIB_BusEnableEoi; EZGPIB_BusSetEos(0); EZGPIB_TimeSleep(1);
// Main procedure begin; EZGPIB_screenclear; // Clear the Output Console Init_Device; // Send command strings to meter Init_File; // Look for file, delete it if it exists. Create new file with headers t_start_datetime :=EZGPIB_TimeNow; // Get time at beginning of each cycle elapsed_time:=0;
while (elapsed_time < duration) and (not ezgpib_kbdKeyPressed) do begin; EZGPIB_TimeWaitForMultipleOf (Sampling); // Интервал измерения repeat Answer:=''; // Clear previous reading EZGPIB_BusWriteData(gpib_address,'E'); i:=0; repeat EZGPIB_TimeSleep(0.0001); i:=i+1; until (EZGPIB_BusDataAvailable or (i>200000)); //ответ от R6871E 20PLC AZon составляет 0,406 сек Answer:=EZGPIB_BusGetData; until Length(Answer)>1;
Answer := AnsiReplaceText ( Answer, '.', ','); // переделка ответа под стандарт с цифровым разделителем запятой t_acq_datetime := EZGPIB_TimeNow; elapsed_time:=MinutesBetween(t_start_datetime,t_acq_datetime);// Calculate elapsed time since start of acquisition
repeat Temp1:=''; // Clear previous reading EZGPIB_BusWriteData(gpib_address,'++temp'); // ответ от Arduino Uno R488 составляет 58 мсек i:=0; repeat EZGPIB_TimeSleep(0.001); i:=i+1; until (EZGPIB_BusDataAvailable or (i>200)); Temp1:=EZGPIB_BusGetData; until Length(Temp1)>1;
Temp1 := AnsiReplaceText ( Temp1, '.', ','); // переделка ответа под стандарт с цифровым разделителем запятой
EZGPIB_ScreenWrite(t_acq_datetime); EZGPIB_ScreenWrite(' '); EZGPIB_ScreenWrite(Answer); EZGPIB_ScreenWrite(' '); EZGPIB_ScreenWriteLn(Temp1); Save_File; // If result contains data, write data to the file
Прикрутил таки модуль с BME280. Теперича можно и температуру, и влажность, да и даже давление атмосферное мерить
Установить библиотеку Adafruit_BME280.
После подключения модуля с BME280 залить в плату скетч сканера адресов I2C. В Adafruit_BME280.h в #define BME280_ADDRESS (0x77) подставить правильный адрес BME280. У меня был 76.
Теперь можно и другие устройства с I2C подключать, при желании
После заливки прошивки не забыть перепаять провода которые шли к А4 и А5 на 13 и 6 пин. Раскладку проводов смотреть в AR488_Layouts.h в разделе #if defined(AR488_UNO) || defined(AR488_NANO). В случае применения другой платы, распиновку подгонять под неё. И надо будет править AR488_Layouts.cpp. У меня AR488_UNO R3.
Прошивка на основе AR488, ver. 0.48.22, 08/04/2020
TAKASAGO TC-911B GPIB RS323 PROGRAMMER Был приобретен для TAKASAGO FK-600L ELECTRONIC DC LOAD. Ну как всегда при общении с японскими приборами НИ КАКОЙ документации...... С большим трудом с помощью гугл перевода, отправил запрос(через сайт с иероглифами), и о чудо ПОЛУЧИЛ сканы мануалов! За что спасибо Akiyama Masayoshi из takasago-ltd.com. Терерь можно рулить с компа и ELECTRONIC LOAD, и кое какими блоками питания(у меня впрочем их нет). Но главной фишкой TAKASAGO TC-911B оказался Peripheral I O, да еще с оптронной развякой! Теперь кроме TAKASAGO, модно рулить еще чем либо, через GPIB.
До сего момента у меня была задача выяснить емкости аккумуляторов 12 вольт, 7-42 А. Но так как не было мануала на TAKASAGO FK-600L, методом научного тыка был найден контакт на разьеме на задней панели, который выключал вход нагрузки. Включать надо было врукопашную. Но так как надо было мерять напряжение разряда аккумулятора, был задействован ADVANTEST R6871. В некоторых ревизиях цифровых плат, ADVANTEST R6871 оказалось есть сигналы компаратора,которые не выведены на периферию. Но они есть у ADVANTEST R6871E-OHM, а цифровые платы (почти)одинаковы у всей этой серии. Осцилл в помощь, нужные контакты на разьеме цифровой платы найдены! Дальше проще, не заморачиваясь с опторазвязкой, 5 вольт реле, и ОК! Сейчас когда есть мануалы на TC-911B и FK-600L стало гораздо проще.
У меня вопрос. Как сделать самодельный кабель male-to-male. "...Сигнальные провода, имеющие обратный провод должны быть витыми парами, ...второй провод витой пары должен быть заземлен вблизи терминатора"
Как это вблизи терминатора? И с обоих или с одного конца
У меня вопрос. Как сделать самодельный кабель male-to-male. "...Сигнальные провода, имеющие обратный провод должны быть витыми парами, ...второй провод витой пары должен быть заземлен вблизи терминатора"
Как это вблизи терминатора? И с обоих или с одного конца
И есть ли готовые кабели длиной 0,5-1 м?
Когда делал RS-232-GPIB, из журнала Радио взял, CENC-24M, кабель от принтера. На вилке распаял по схеме, на плате земляные в кучу, работало. Правда теперь пользуюсь фабричными
И есть ли готовые кабели длиной 0,5-1 м? У меня от ~0.5 метра до 2 Удобно приборы между собой 0.5м, на комп 2м. И на али есть, взял на пробу один, по мне хуже внешне оригинальных, впрочем работает.
Вопрос к счастливым обладателям НЕ фейка. Смогу ли я обращаться к Keysight Agilent 82357B USB-GPIB Interface High-Speed USB 2.0 из простой терминальной программы типа "TERMINAL by Br@y" под Win7 или XP?
Для клона Agilent-овского GPIB все равно надо Agilent VISA ставить чтобы полноценно работать можно было. А там есть тулза ( закладка) Interactive IO - терминал для GPIB. Хотя как по мне чтобы с этими монстрами нет связываться есть достаточно много терминалов VISA на Python. К сожалению с VISA прийдется смириться т.к это единственная стандартная точка доступа к GPIB от разных производителей. Цепляться к более низкоуровневой gpib-32.dll на 64 битных операционках лучше не надо -слишком много граблей.
Пощупал я этого софтового монстра от агилента. Сам переходник - клон. В общем на этот софт плюнул, и использую linux-gpib под Linux соответственно. Никаких проблем. Терминал к слову входит в состав библиотеки.
Пощупал я этого софтового монстра от агилента. Сам переходник - клон. В общем на этот софт плюнул, и использую linux-gpib под Linux соответственно. Никаких проблем. Терминал к слову входит в состав библиотеки.
Мне тоже прежде всего такая мысль пришла. Давно работаю на Линукс, Ubuntu и производных. Только с версии 18.04 в Ubuntu стал медленно работать переключатель клавиатуры, если не по предлагаемому по-умолчанию Super+Space. Придется искать другую разновидность Линукс. А вы как выходите из ситуации?
Мне тоже прежде всего такая мысль пришла. Давно работаю на Линукс, Ubuntu и производных. Только с версии 18.04 в Ubuntu стал медленно работать переключатель клавиатуры, если не по предлагаемому по-умолчанию Super+Space. Придется искать другую разновидность Линукс. А вы как выходите из ситуации?
Никогда не использовал Ubuntu. Поэтому не подскажу, что они там накрутили.
Посмотрите пожалуста на своих клона 82357B какая микросхема I2C стоит около Cypress FX2. Вроде была инфа что если поставить большую 24LC128 или 24LC256 то можно в нее фирмварь записать полную и тогда нет надобности грузить ее со стороны драйвера при каждом старте. Вроде такое решение значительно повышает надежность интрефейса особенно при длинных сессиях.
U10 стоит 24С08. Но схема не совпадает: помимо PGA Agilent 1822-0639 U6 есть еще xilinx xc9536xl U5 и место U12 вероятно под флешку. Не говоря уж о двух DC-DC и генератора на 5МГц. В общем китайцы в своем репертуаре.
U10 стоит 24С08. Но схема не совпадает: помимо PGA Agilent 1822-0639 U6 есть еще xilinx xc9536xl U5 и место U12 вероятно под флешку. Не говоря уж о двух DC-DC и генератора на 5МГц. В общем китайцы в своем репертуаре.
А причем тут китайцы? Если на плате есть Agilent 1822-0639 то это оригинал.
Сейчас этот форум просматривают: sas2k и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения