реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Моделирование/макетирование RealTime, интересно узнать
TigerSHARC
сообщение Dec 17 2010, 07:02
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



На досуге появилась идея.
Можно ли реализовать следующую систему:

по COM-порту (для примера) в некий хост передаётся сигнал, далее происходит обработка сигнала по алгоритму ЦОС. И хост выдаёт в другой COM-порт уже обработанные данные.
При этом обработка должна идти в жёстком RealTime.

Как я это вижу: существует некая плата (скажем на ARM-контроллере), которая посылает в компьютер числа непрерывно(сигнал). Теперь самое интересное: компьютер под управлением QNX (альтернативы?) обрабатывает данные в соответствии с программой (MATLAB Simulink + C) и посылает данные в порт (или на коакую либо плату вывода).


Есть ли какие-нибудь источники по сабжу?
Ваши мнения, господа?
Go to the top of the page
 
+Quote Post
epselon
сообщение Dec 17 2010, 09:21
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 19-10-10
Пользователь №: 60 276



это что-то вроде автоматизированной системы технического контроля?
то есть примерно так:
с параллельного порта выдаю байт - далeе на плис - далее на устройство тестирования.
с устройства - на плис - и в параллельный порт (а тут уже анализируем что пришло и что должно было придти.)
итд.
собственно этим занимаюсь..
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Dec 17 2010, 10:30
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Незнаю... плис не хотел задействовать.

хочу посылать данные в ком-порт микроконтроллером (отсчёты сигнала лежат в ПЗУ). Далее принятые данные обрабатываются в компьютере и передаются по второму ком-порту уже обработанные данные. и всё это в реальном времени.

Хочу использовать QNX в компьютере и MATLAB Simulink для написания программы обработки данных.
(компьютер, обрабатывающий данные x86 совместимый)

Возможно ли такое в домашних условиях?
Go to the top of the page
 
+Quote Post
SFx
сообщение Dec 17 2010, 11:03
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688



MATLAB умеет работать с COM портом на прямую..
Go to the top of the page
 
+Quote Post
epselon
сообщение Dec 17 2010, 11:11
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 19-10-10
Пользователь №: 60 276



Я думаю реально но!
что значит реал. тайм.
на какой частоте это все будет работать?
на практике оказалось что на процессоре 500mhz - я достиг частоты (то есть между командами выдать, принять с одного порта) примерно задержка в 2миллис.
т.е. до мгц ещё далеко.
Go to the top of the page
 
+Quote Post
Tue
сообщение Dec 17 2010, 11:15
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



TigerSHARC, если на MATLAB/Simulink, то посмотрите в сторону xPC Target сюда или сюда
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Dec 17 2010, 12:26
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Обработка осуществляется на процессоре бытового компьютера E2140 1.6Гц

Если просто под виндой работать - то это никакой не реалтайм.

Я вот рассматриваю вариант с QNX. Программа оиентировочно будет написана на MATLAB Simulink, она будет работать с двумя ком-портами.

Теперь про частоты дискретизации.

Планируется принимать данные с внешнего источника на пределе возможностей ком-порта (128 kb/s - стало быть частота выборок (16 битные данные) 8000 в секунду т.е. 8 кГц) Дело в том что микроконтроллер будет посылатьв компьютер подобие выборок с АЦП (эмуляция АЦП).

Время отклика? хмм... верхняя граница по расчётам 0.2 с. - не медленнее.
(т.е. за это время компьютер под управлением QNX и программы должен обработать блок данных из 0,2*8000 = 1600 выборок и выдать результат, а затем приступить к обработке следующего блока)

Цитата(Tue @ Dec 17 2010, 17:15) *
TigerSHARC, если на MATLAB/Simulink, то посмотрите в сторону xPC Target сюда или сюда


из второй ссылки видно, что моделируется сигнал на компьютере, затем переносится в реалтайм систему
а она уже управляет объектом.

так вот в моём случае реалтайм система - это скажем обычный компьютер, но под управлением QNX, дабы обеспечить гарантированый отклик
Go to the top of the page
 
+Quote Post
PhX
сообщение Dec 18 2010, 08:20
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(TigerSHARC @ Dec 17 2010, 20:26) *
так вот в моём случае реалтайм система - это скажем обычный компьютер, но под управлением QNX, дабы обеспечить гарантированый отклик

Если использование нелицензионного софта не мучает вас ночами, то xPC это самое оно. На машине устанавливается ОС работающая в режиме жесткого реального времени, затем с другой машины на нее заливается программа получаемая нажатием кнопок Ctrl+B из симулинковой диаграммы. Минимальный квант времени в районе 1*10^-4 сек.


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
Tue
сообщение Dec 18 2010, 08:28
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Цитата(TigerSHARC @ Dec 17 2010, 18:26) *
из второй ссылки видно, что моделируется сигнал на компьютере, затем переносится в реалтайм систему
а она уже управляет объектом.

Нет. Вы создаете модель в Симулинке, затем "легким движением руки" переносите ее на PC-компьютер с ОС реального времени (которая поставляется вместе с xPC Target) и эта ваша модель на нем выполняется. "реальность" зависит от многих факторов, в числе которых: скорость PC, сложность модели. Также Вы можете заводить в эту модель сигналы с плат ввода/вывода (если такие есть) или по последовательным интерфейсам типа RS232 и модель будет их в реальном времени обрабатывать.
Из Ваших слов я не понял, что означает "моделируется сигнал на компьютере, затем переносится в реалтайм систему" ? В данном случае Вы можете заводить данные с "живого" железа, главное чтобы были соответствующие платы ввода/вывода.

Тем более, если Вы говорите:
Цитата
Программа оиентировочно будет написана на MATLAB Simulink, она будет работать с двумя ком-портами.
то Вам тем более стоит посмотреть в сторону xPC Target. Не думаю, что разобраться с xPC Target займет больше времени, чем освоение и прикручивание QNX к Вашей задаче. И 8кГц получить думаю вполне сможете (зависит от сложности Вашей обработки этого сигнала)
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Dec 18 2010, 13:43
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(Tue @ Dec 18 2010, 14:28) *
Нет. Вы создаете модель в Симулинке, затем "легким движением руки" переносите ее на PC-компьютер с ОС реального времени (которая поставляется вместе с xPC Target) и эта ваша модель на нем выполняется. "реальность" зависит от многих факторов, в числе которых: скорость PC, сложность модели. Также Вы можете заводить в эту модель сигналы с плат ввода/вывода (если такие есть) или по последовательным интерфейсам типа RS232 и модель будет их в реальном времени обрабатывать.
Из Ваших слов я не понял, что означает "моделируется сигнал на компьютере, затем переносится в реалтайм систему" ? В данном случае Вы можете заводить данные с "живого" железа, главное чтобы были соответствующие платы ввода/вывода.

Тем более, если Вы говорите: то Вам тем более стоит посмотреть в сторону xPC Target. Не думаю, что разобраться с xPC Target займет больше времени, чем освоение и прикручивание QNX к Вашей задаче. И 8кГц получить думаю вполне сможете (зависит от сложности Вашей обработки этого сигнала)


Это что-то новенькое! Интересно. Вместо QNX поставить xPCTarget это как?
Если знаете расскажите подробнее.
Вас послушать, так xPC это самое то! Буду читать Help матлаба... думаю там всё что надо есть.
Только по таким вещам как RealTime Workshop и С Compiler хелп какой-то "мутный" в матлабе...

Если вместе с xPCtarget поставляется ОС, то её тоже нужно освоить... интересно...
Go to the top of the page
 
+Quote Post
Tue
сообщение Dec 18 2010, 14:45
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Цитата(Zelepuk @ Dec 18 2010, 19:43) *
Это что-то новенькое! Интересно. Вместо QNX поставить xPCTarget это как?
Если знаете расскажите подробнее.

Ну уже не новенькое, этот продукт давно у них существует. Кроме того, что уже рассказал, более рассказывать особо нечего. Если владеете аглицким, советую посмотреть соответствующие вебинары. Например этот, этот или этот
Цитата(Zelepuk @ Dec 18 2010, 19:43) *
Если вместе с xPCtarget поставляется ОС, то её тоже нужно освоить... интересно...

Там осваивать ничего не надо, все за Вас сделает Simulink с RealTime Workshop
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Dec 18 2010, 16:02
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Можно потом для этого всего год сгенерить сишный для DSP-процессора?

Сообщение отредактировал Zelepuk - Dec 18 2010, 17:25
Go to the top of the page
 
+Quote Post
Tue
сообщение Dec 19 2010, 06:47
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Для чего "всего этого" ? Вообще код сишный генерить для DSP-процессора Simulink давно уже умеет. И вот уже года 3 HDL для ПЛИС.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 19 2010, 09:17
Сообщение #14


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Неадекватное восприятие однако реальности.
Как вы себе представляете перенос проекта из MATLAB-а в QNX?
dll-ку или exe-шник думаете скопировать? biggrin.gif
Вариант у вас только один только - получить из matlab-а полные исходники вашего проекта с заглушками для уровня абстракции от хардваре.
Тут проблемы во всем.
Во первых исходники всего в матлабе получить невозможно есть только подмножество примитивных алгоритмов для которых можно получить исходники.
Во вторых уровень абстракции хардваре в QNX кардинально отличается от уровня абстракции под Windows.
Значит кардинально придется перепахивать те немногие добытые тексты.
Далее придется их запускать заново откомпилированные на QNX и заново делать профайлинг. При этом не забыть что работаете совершенно на другом уровне хардваре с неизвестным быстродействием.
Никакие фичи риалтайма QNX здесь не помогут поскольку в модели MATLAB их использование не предусмотрено.
Т.е. QNX будет работать по отношению к модели точно так же как Windows XP если не хуже поскольку драйвера MATLAB-а под Win XP все таки оптимизируют, а такой операционки как QNX MATLAB не знает.

Я бы помотрел на LabView с пакетом для embedded. Там среда сразу компилит под ARM и может делать профайлинг на целевой платформе.
Поскольку весь софт для вас черный ящик то единственным гарантом риалтайма является не чудесная операционка, а результаты профайлинга и ничего больше.

Go to the top of the page
 
+Quote Post
SeriouSerg
сообщение Dec 19 2010, 15:06
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 6-06-05
Из: г. Таганрог
Пользователь №: 5 759



Автор, если вопрос еще актуален:

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

Обработку данных в реальном времени можно производить и в совсем классическом Linux и даже в Windows, главное, чтобы скорость выполнения одной итерации была намного больше скорости обновления данных (или получения новых данных в вашем случае). Если это условие не выполняется то никакая ОСРВ не поможет получить гарантированный отклик.

Чтобы заставить модель, разработанную в симулинке в работать в реальном времени нужно обеспечить заданную частоту итерации.
То есть если у вас в модели задан timestep=125e-6 (8000 Гц) то в приложении функция blabla_x86_step(0) и должна вызываться 8000 раз в секунду. Делается это достаточно просто с использованием высокоточного таймера (QueryPerformanceCounter - win, gettimeofday - linux). 8кГц слишком небольшая частота чтобы привлекать QNX.

Попробуйте в приложении измерить время одной итерации, оно должно быть меньше 125 мкс. Не забудьте учесть погрешность его определения (для Linux ~5%) а также относительное отклонение, так как это не ОСРВ (5-15%). Если рабочий цикл (функция step и обмен данными) уложится в 80-90 мкс система будет работать.
Перед началом обработки не забудьте накопить некоторый объем исходных данных в несколько отсчетов, т.к. чтение из ком-порта при пустом буфере займет время, а чтение при наличии данных составляет несколько мкс (копирование производится уже из памяти входящего FIFO).

Все остальное зависит от вас.

Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 17:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016