Корзина пуста

В7-78/1, медленный обмен

Страницы: 1
RSS
В7-78/1, медленный обмен
 
Здравствуйте.

Пытаюсь произвести автоматизированные измерения с использованием В7-78/1. Вольтметр подключён через USB. Наше программное обеспечение использует драйвера VISA и язык команд SCPI.

Вот пример обмена командами. Галочка вправо - это команда вольтметру, галочка влево - ответ вольтметра:

[2020-03-03T15:49:54] > *RST;*CLS
[2020-03-03T15:49:54] > SYSTEM:VERSION?
[2020-03-03T15:49:56] < 1991.0
[2020-03-03T15:49:56] > CONFIGURE:VOLTAGE:DC AUTO
[2020-03-03T15:49:56] > SENSE:VOLTAGE:DC:RANGE:AUTO ON
[2020-03-03T15:49:56] > SENSE:ZERO:AUTO ON
[2020-03-03T15:49:56] > SENSE:VOLTAGE:DC:NPLC 10
[2020-03-03T15:49:56] > :SAMPLE:COUNT 1
[2020-03-03T15:49:56] > SYSTEM:ERROR?
[2020-03-03T15:49:58] < +0,"No error"
[2020-03-03T15:50:06] > :INIT
[2020-03-03T15:50:06] > *OPC?
[2020-03-03T15:50:16] < 1
[2020-03-03T15:50:26] > FETCH?
[2020-03-03T15:50:28] < -1.07519040E-05

Обратите внимание на 2 момента:
1) Любой запрос, например, SYSTEM:VERSION?, занимает примерно 2 секунды.
2) Ожидание окончания измерения - запрос *OPC? - требует целых 10 секунд.

Вопросы:
а) Чем может быть вызвано долгое время ожидания при любом запросе?
б) Как работает запрос *OPC? и почему он занимает такое продолжительное время?

Заранее благодарен.
 
Здравствуйте.

Какой знак окончания строки Вы используете?
 
При отправке команды в качестве конца строки используется одиночный символ 0x0Ah.
 
Попробуйте отправить команды на прибор не через свою программу а через
Механизм отправки команд VISA.
Будет ли наблюдаться такая же задержка с ответами?

Пришлите пожалуйста ответ прибора на команду *IDN?
 
С вашим ПО обмен быстрый. Не подскажете, в чём может быть проблема? Связь с VISA через C API.

*IDN?
Prist,V7-78/1,TW00036614,03.36-01-04
 
Вопрос: а какую последовательность использует сам вольтметр для обозначения конца строки: LF или CRLF?
 
К сожалению я не могу подсказать, что происходит в Вашем ПО.
Вольтметр использует LF.

Попробуйте начать с простого - после включения вольтметра отправить (и считать) команду "READ?"
Только одну эту команду.
 
Почему-то функция viRead из VISA API возвращает ошибку VI_ERROR_TMO "The read/write operation was aborted because timeout expired while operation was in progress."

Похоже она не реагирует на символ LF в конце. Требуется ли какая-либо настройка устройства в VISA API?

Если ли примеры работы с вольтметром на C/C++?
 
Напишите на soft@prist.ru
 
Разобрался с проблемой, тему можно удалить. Ниже приведу решение, вдруг кому-то будет полезным.

Проблема была в том, что функция viRead, входящая в состав VISA API, возвращает ответ мультиметра БЕЗ завершающего символа конца строки. Может быть сам мультиметр его не передаёт, но скорее всего так работает реализация VISA API от компании National Instruments. Возможно это поведение может быть скорректировано настройкой инструмента, но по умолчанию оно таково.

Для сравнения, в реализации VISA API от компании Agilent ответ устройства возвращается вместе с символом конца строки.

Спасибо службе поддержки за оперативную реакцию.
 
Хорошо, что заработало.
Правда не совсем понятно как невозвращение прибором или API знака окончания строки (что подтверждается проверкой), замедляло ответ прибора на любую команду содержащую запрос.
К тому же у Вас еще и ошибка была "The read/write operation was aborted because timeout expired while operation was in progress." характерная для отсутствия знака окончания строки в запросе а не в ответе.
 
Это неправильно отрабатывал следующий слой ПО: не получив ожидаемого символа конца строки он снова вызывал команду viRead, которой уже нечего было считывать.
 
Да, действительно В7-78/1 больше не возвращает \n
Младшие В7-78/2 и /3 возвращают.
Страницы: 1
Читают тему (гостей: 1)

Внимание! Отсутствие ошибок и опечаток не гарантируется. В технические характеристики средств измерений неутвержденного типа производителем могут быть внесены изменения без предварительного уведомления. Соответствие важных параметров требует уточнения. Полные технические характеристики предоставляются по отдельному запросу. Нашли ошибку? Выделите мышкой и нажмите Ctrl+Enter.

Войти в личный кабинет

Заказать обратный звонок

Обратите внимание, все поля - обязательны для заполнения.
Обновить

Обратная связь

Обратите внимание, все поля - обязательны для заполнения.
Обновить