Программирование ЛИР-917

Модератор: Денис Кашин

Stas_SPb
Сообщения: 46
Зарегистрирован: 04 апр 2008, 13:35

Сообщение Stas_SPb »

С какой частотой можно опрашитвать ЛИР-917? В примере (библиотеке) у вас использован таймер для опроса, при этом получается 65 раз в секунду. в СКИФе, похоже, тот же подход.
Михаил Поляков
СКБИС
СКБИС
Сообщения: 79
Зарегистрирован: 06 фев 2008, 16:10

Сообщение Михаил Поляков »

Stas_SPb писал(а):С какой частотой можно опрашитвать ЛИР-917? В примере (библиотеке) у вас использован таймер для опроса, при этом получается 65 раз в секунду. в СКИФе, похоже, тот же подход.
Период опроса ЛИР 917 равен 4 мс.
В реальности частота опроса зависит от ОС.
Stas_SPb
Сообщения: 46
Зарегистрирован: 04 апр 2008, 13:35

Сообщение Stas_SPb »

Спасибо!
Stas_SPb
Сообщения: 46
Зарегистрирован: 04 апр 2008, 13:35

Сообщение Stas_SPb »

Очень хотелось бы вернуться к вопросу скорости опроса. Возможно, вы знаете решение.
ОС WinXP, delphi
Как проконтролировать время прихода данных или интервал между данными с точностью хотя бы 1 мс?
Или как задать определенную частоту опроса?

Используя стандартный таймер можно получть минимальный промежуток времени лишь 15 мс, что весьма грубо.
Можно, конечно, организовать "пустой" цикл на n повторений между измерениями, предварительно "откалиборовав" n под нужное значение паузы, но это не очень красивое решение.

Заранее спасибо!
Михаил Поляков
СКБИС
СКБИС
Сообщения: 79
Зарегистрирован: 06 фев 2008, 16:10

Сообщение Михаил Поляков »

К сожалению Windows XP не относится к операционным системам реального времени. Получить реальное время с точностью 1 мс невозможно.
Откалибровать тоже не получится, так как в любой момент времени windows может выделить квант времени (как раз те самые 15 мс) другому процессу (например системному).
Дмитрий Ряполов
СКБИС
СКБИС
Сообщения: 272
Зарегистрирован: 07 фев 2008, 09:52

Сообщение Дмитрий Ряполов »

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

Под этого можем разработать специальную версию компьютерной платы на шину PCI. Для этого изменять саму плату не потребуется, только написать и отладить прошивку.
С интерфейсами для USB тоже возможно, просто понадобится новая разработка. Этот вариант будет дольше и дороже, чем первый.
Гость

Сообщение Гость »

Интересует вариант USB.
Какой при этом можно достигнуть скорости съема? И какое количество точек реально хранить в буфере?
Дмитрий Ряполов
СКБИС
СКБИС
Сообщения: 272
Зарегистрирован: 07 фев 2008, 09:52

Сообщение Дмитрий Ряполов »

Вариант с USB возможен только как новая разработка специально под Ваши требования. Поэтому сколько значений надо хранить в буфере, столько и будет. Хочу обратить еще раз Ваше внимание, что это будет новое устройство разработанное СКБ ИС по Вашему Техническому Заданию. Поэтому этот вариант будет стоить прилично.
zerkmax
Сообщения: 2
Зарегистрирован: 02 июл 2010, 07:28

проблема с ЛИР-917

Сообщение zerkmax »

в системе подключено 2 ЛИР-917 (планируется 3).
При включении компьютера моя программа находит только одно устройство. СКИФ видит сразу оба. После запуска СИФа, моя программа тоже находит второе устройство. Как их инициализировать сразу?
среда программирования Delphi 6.
Михаил Поляков
СКБИС
СКБИС
Сообщения: 79
Зарегистрирован: 06 фев 2008, 16:10

Re: проблема с ЛИР-917

Сообщение Михаил Поляков »

zerkmax писал(а):в системе подключено 2 ЛИР-917 (планируется 3).
При включении компьютера моя программа находит только одно устройство. СКИФ видит сразу оба. После запуска СИФа, моя программа тоже находит второе устройство. Как их инициализировать сразу?
среда программирования Delphi 6.
Здравствуйте !
SI_GetNumDevices при запуске вашей программы выдает 1 ?
В Диспетчере устройств сколько интерфейсов отображается ?
zerkmax
Сообщения: 2
Зарегистрирован: 02 июл 2010, 07:28

Re: проблема с ЛИР-917

Сообщение zerkmax »

Михаил Поляков писал(а):
zerkmax писал(а):в системе подключено 2 ЛИР-917 (планируется 3).
При включении компьютера моя программа находит только одно устройство. СКИФ видит сразу оба. После запуска СИФа, моя программа тоже находит второе устройство. Как их инициализировать сразу?
среда программирования Delphi 6.
Здравствуйте !
SI_GetNumDevices при запуске вашей программы выдает 1 ?

да
Михаил Поляков писал(а):В Диспетчере устройств сколько интерфейсов отображается ?
в диспетчере отображаются оба устройства.

нормальная работа начинается только после запуска СКИФа
Михаил Поляков
СКБИС
СКБИС
Сообщения: 79
Зарегистрирован: 06 фев 2008, 16:10

Сообщение Михаил Поляков »

Я проверил - показывает 2 устройства.
СКИФ не запускал.
Перезагрузился, проверил еще раз. Все равно возвращает 2.
ОС: WinXP SP3


Код: Выделить всё


function SI_GetNumDevices(var Cardinal):DWord;stdcall;
 external 'SIUSBXP.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 n:Cardinal;
begin
 SI_GetNumDevices( n);
 ShowMessage(IntToStr(n));
end;
Павел1
Сообщения: 3
Зарегистрирован: 18 авг 2010, 20:04

Сообщение Павел1 »

как мне преобразовать тип LPDWORD в string что бы я мог вывести на экран значение подключенных девайсов:

Код: Выделить всё

 
 LPDWORD numDevices;
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
			   
				 SI_GetNumDevices(numDevices);
				 MessageBox::Show(System::Convert::ToString(numDevices));
				 
				
			 }
Михаил Поляков
СКБИС
СКБИС
Сообщения: 79
Зарегистрирован: 06 фев 2008, 16:10

Сообщение Михаил Поляков »

DWORD numDevices;
SI_GetNumDevices(&numDevices);
Бочкарев Юрий2

Re: Программирование ЛИР-917

Сообщение Бочкарев Юрий2 »

Добрый День!
Столкнулся с проблемой следующего характера:

При запуске съема данных с ЛИР917 + LM10 из самописной программы через какое-то время слетает референтная метка (или что-то вроде этого).
Если после этого запускаю скиф - точка даже близко не располагается от референтной метки.
Помогает только сброс питания и поиск реф.метки через скиф.

При опросе через скиф - все нормально во всем диапазоне перемещения головы датчика.

Заранее Спасибо!
Ответить