Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Форум

Вы не вошли.

 Поиск | Регистрация | Вход 

#1 Re: Техническая поддержка » L780 работа по прерыванию в Windows » 24.07.2014 09:05:05

Извините пожалуйста, что долго не отвечал. Разбирался, что к чему.
1.    На Windows и Labview хочу перейти потому как мне представлялось – без особых заморочек можно интерфейс программы сделать красивым (графики, картинки и т.п.)
2.    Опишу поподробнее, что мы делаем под DOS и borland C. Программа для управления двигателем.
а) С частотой 400кГц получаем данные с датчика положения ротора двигателя (sin-cos вращающийся трансформатор)
б) Вычисляем текущее положение
в) Сравниваем его с положением, которое было в предыдущем прерывании
г) Вычисляем реальную скорость.
д) Далее PID регулятор, сравнивающий заданную скорость и реальную.
е) На ЦАП выводим сигнал, выданный алгоритмом PID регулятора
Вроде все просто!
3.    По поводу реального времени. Как оказалось это не такая уж и проблема. Можно применить функцию QueryPerformanceCounter – считывать тики таймера Windows.
Конечно разумнее всего выносить задачу в процессор платы, но пока я в этом не силен. Более всего мне просто и понятно Labview. И на данный момент даже не пробовал осуществить обмен между портами процессора и Labview. Может у Вас есть примерчик?
4.    Остается получить значение положения ротора – получить оцифрованные данные с вращающегося трансформатора. Я беру Ваш пример – ПО для разработчика, L-780M, LabVIEW 8.0. Открываем файл EXAMPLE. Меняем bios на 780. Добавляем индикатор – счетчик итераций циклов. Получаем 15 циклов в секунду. Даже если по sync counter я считаю саамы свежие данные, то обработать я их смогу всего 15 раз за секунду. Я пытался уменьшить буферы, вынести за цикл все, что только можно, но так и не добился требуемой скорости. До 400 кГц ну очень далеко.
5.    Получается выход только один – учиться программировать сигнальный процессор и осуществлять обмен между ним и компьютером через порты.

#2 Техническая поддержка » L780 работа по прерыванию в Windows » 14.07.2014 14:53:33

ykor67
Ответов: 6

Здравствуйте LCARD. Помогите пожалуйста. Плата L-780M. Мне в наследство досталась программа для этой карты, написанная под DOS – управление двигателем. Работаем только по прерыванию с частотой 400кГц.
Логика программы:
1.    void interrupt IRQ_Handler(PARM) // Обработчик прерываний L-780
2.    if (bi[Choice].IsInterruptInProgress) // Если прерывание
3.     // Чтение pегистpа статуса пpеpываний от платы L7xx
                unsigned int IntRegData=0xFF & READ_CONFIG_REG_PLX(&bi[Choice], 0x4C);
4.   
// Обработка прерываний от платы L7xx
     if (IntRegData & 0x04) // Если пpеpывание от АЦП
5.   
// Получение данных из буфера АЦП
     Sync=(GET_DM_WORD_PLX(&bi[Choice],0x2d50) >> 4)<<4;
     GET_DM_ARRAY_PLX(&bi[Choice],Sync,16,&Buf[0]);
6.    И далее работаем с данными

Т.е. буфер АЦП мы читаем и далее работаем с данными с частотой 400 кГц.
Возможно ли то же самое сделать под Windows. Если можно-поподробнее, пожалуйста. Пытаюсь написать программу в Labview.
Я пробовал написать программу, взяв за основу, Ваш пример. Оставил в цикле только функцию GetParameter и считал итерации цикла – ну Очень медлеено!!! Надо работать по прерыванию.