Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тест производительность микроконтроллера ARM 
V
    Опции темы
RomanNew
Дата 10.1.2014, 22:31 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.1.2014

Репутация: нет
Всего: нет



Добрый день/ночь!

Прошу помощи форумчан. Хочу использовать микроконтроллер для произведения большого объема вычислений, но не уверен в том, достаточна ли его мощность. Марка микроконтроллера еще не выбрана, скорее всего, на ядре ARM или Cortex.

Прошу счастливых владельцев микроконтроллеров на ядре ARM и/или AVR произвести замер времени выполнения простейшего вычисления с вещественными числами.
Покупать отладочную плату и программатор для этого слишком накладно.

Если производительности не хватит, буду вынужден использовать мощный РС под управлением ОС реального времени. Либо можно запараллелить несколько микроконтроллеров.

Детали кода значения не имеют, нужно просто ПРИМЕРНО оценить длительность вычислений с применением умножения и деления вещественных чисел. Желательно использовать real двойной точности (64 бит), но это не принципиально.

Заранее благодарен всем откликнувшимся!


Пример кода на псевдоязыке

//желательно использовать real двойной точности (64 бит), но это не принципиально
real a = 1;
real b = 1234.567;

//получить текущее значение системного время в мсек или мксек
int StartTime = getCurrentTime();

//рабочий цикл
for (int i=0; i<1000000; i++)
{ a = a + (real(i)  /  b );
b = b + 0.000001;

//на всякий пожарный
  If (a>100000000) {a=1};
}

//итоговая длительность вычислений
int Dur = getCurrentTime() - StartTime;

//используем полученное значение, чтобы слишком умный компилятор не удалил неиспользуемые вычисления
//вместо Print можно сделать что угодно, лишь бы использовать значение!
//например, сохранить в EEPROM
Print(a); 

PM MAIL   Вверх
Romikgy
Дата 11.1.2014, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
RomanNew
Дата 11.1.2014, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.1.2014

Репутация: нет
Всего: нет



Реальная задача такова:

Создать имитационный стенд, который имитирует в реальном времени поведение технологического агрегата (упаковочная машина и т.д.). Назначение стенда - тестирование программ управления этим агрегатом. Программа находится в ПЛК.
Стенд делается для домашнего использования.
Агрегат имеет в своем составе: 10-20 моторов, 10-20 пневмоцилиндров, 30-50 дискретных датчиков и 30-50 перемещающихся в пространстве деталей, плюс органы управления и индикации для оператора (кнопки и лампы).

Рабочий цикл программы стенда должен быть такой:
1 .Стенд получает данные с входов (100 дискретных входов + несколько аналоговых)
2. Затем по математической модели обсчитывается поведение агрегата (перемещение объектов в пространстве, срабатывание датчиков,  работа моторов и пневматики)
3. После чего полученные данные выдаются на выходы - примерно 100 дискретных, несколько аналоговых, и несколько (~10) слов данных по CAN или RS485.

Длительность рабочего цикла хочется получить не более 2-3 мсек, а в идеале 1 мсек.

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

В данный момент задача частично решена при помощи подручных средств (процессорный модуль фирмы Control Techniques), но имитирует только 5-10% от всех узлов агрегата, причем рабочий цикл составляет 15-20 мсек.
Это явно плохо! Нужно увеличение производительности примерно в 100 раз!
Оптимизация кода уже достала до смерти, хочется простое производительное решение, чтобы быстро решать задачу "в лоб", имея запас по производительности.

рассматриваю варианты:
1. РС с ОС реального времени. Уже установил QNX, но пугает необходимость разбираться с QNX, которая 100% потом никогда в жизни не пригодится. Кроме того, платы ввода-вывода Advantech (и другие) идут без драйверов. Драйвера нужно писать самостоятельно, чего не хотелось бы (хочется быстрый старт!).
2. РС c DOS. Проблема - организовать параллельное выполнение потока обсчета и потока визуализации. Смотрю в сторону расширений реального времени типа RTKernel. Либо, как бы это не было смешно, но использовать выделенный комп с обсчетом, а визуализацию смотреть на инструментальном ноутбуке.
3. Микроконтроллер (ARM? Cortex? DSP? или что еще) для обсчета мат модели, а визуализация на отдельном компе. Этот вариант был бы оптимальным, т.к. нет новой ОС, в которую нужно вникать, визуализацию я бы сделал на дельфи, а микроконтроллер, не тратящий ресурсы на ОС, видеоадаптер и т.д., показал бы все, на что он способен.

Отсюда вопрос - насколько быстро производятся вычисления с плавающей точкой?

PM MAIL   Вверх
tzirechnoy
Дата 13.1.2014, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



Вычисления с плавающей точкой производятся медленно. Всегда.

У меня есть поблизости один арм и один мипс -- но ни у одного из них нет сопроцэссора для работы с плавающей точкой, потому испытывать Ваш код я, извините, не буду.

И вообще, такие вещи (скорость приведения int -> float, и скорость деления) описаны в даташыте Вашэго процэссора.

Это всё, впрочем, не отменяет того факта, что вычисления сплавающей точкой производятся медленней, чем с фиксированной. Обычно -- дажэ при наличии сопроцэссора, фиксированная точка на сопроцэссоре быстрее плавающей. Да ещё и с точностью проблем большэ. Зачем Вам плавающая?
PM MAIL   Вверх
xvr
Дата 13.1.2014, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(RomanNew @  11.1.2014,  17:48 Найти цитируемый пост)
Рабочий цикл программы стенда должен быть такой:
1 .Стенд получает данные с входов (100 дискретных входов + несколько аналоговых)
2. Затем по математической модели обсчитывается поведение агрегата (перемещение объектов в пространстве, срабатывание датчиков,  работа моторов и пневматики)
Длительность рабочего цикла хочется получить не более 2-3 мсек, а в идеале 1 мсек.
Похоже вам тут светит GPU как минимум (и OpenCL)

Цитата(RomanNew @  11.1.2014,  17:48 Найти цитируемый пост)
. Микроконтроллер (ARM? Cortex? DSP? или что еще) для обсчета мат модели,

Забудьте. Если только у вас не какой нибудь 100 коровый МК  smile 

PM MAIL   Вверх
ФедосеевПавел
Дата 13.1.2014, 22:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: 1
Всего: 10



Цитата(RomanNew @  11.1.2014,  17:48 Найти цитируемый пост)
Стенд делается для домашнего использования.

Цитата(RomanNew @  11.1.2014,  17:48 Найти цитируемый пост)
1. РС с ОС реального времени. Уже установил QNX, но пугает необходимость разбираться с QNX, которая 100% потом никогда в жизни не пригодится. Кроме того, платы ввода-вывода Advantech (и другие)

Я вижу, что материалы - не проблема...
100 дискретных входов + 10 аналоговых входов + 100 дискретных выходов + 10 аналоговых выходов + CAN + RS485.8
Модель объекта управления с твоими характеристиками сопоставима с программой для управления самим объектом.

Может быть сделать декомпозицию обекта моделирования - реализовать на одном мк не весь моделируемый обект, а только некоторые его узлы. Вся модель будет состоять из нескольких мк.

Для справки: для управления газовым котлом паропроизводительностью 4-25 т/ч достаточно ПЛК с 25 д. вх+5 ан. вх + 25 д. вых + 2 ан. вых.

Тебя скорее всего впечатляет количество исполнительных механизмов и источников данных. Посоветуйся с технологом или опытным киповцем - он поможет отделить зёрна от плевел. Значительная часть сигналов - просто информационные или для сигнализации. Некоторые - для защитных блокировок. И всего несколько - для регулирования. Должны существовать циклограммы включения, работы и выключения механизмов.
Кроме того, я когда-то был подсобным рабочим на упаковочной машине (сигареты в пачки, пачки в целлофан, потом в блоки). Сама машина хоть и была "монолитной", но состояла из трёх независимых участков, каждый из которых мог работать самостоятельно. Например, при кратковременной (3-5 минут) остановке узла упаковки сигарет в пачки, оператор брал со специального столика уже готовые пачки и ставил их на транспортёр - два последующих узла продолжали работать ничего не подозревая.
Это я к тому, что участок моделируется проще, чем вся машина.

Цитата(RomanNew @  11.1.2014,  17:48 Найти цитируемый пост)
Полученные от стенда данные визуализируются в виде простейшей 2-мерной картинки, где отображены все перемещающиеся объекты, датчики, клапана и моторы.

Если ты "прикручиваешь" к ПЛК СКАДу или операторскую панель или средства визуализации (как в CoDeSys), то тут совсем всё просто.
Если берёшь данные из имитационного стенда в самописную прогу - ну будешь брать из нескольких мк по разным каналам и адресам.
В любом случае тут скорость не критична.

Цитата(RomanNew @  11.1.2014,  17:48 Найти цитируемый пост)
Длительность рабочего цикла хочется получить не более 2-3 мсек, а в идеале 1 мсек.

Из реального проекта управления котлом - статистика, вычисляемая самим ПЛК:
Скан-контроль: текущее время сканирования [мсек]            30
Скан-контроль: минимальное время сканирования [мсек]        27
Конечно, есть и ПЛК пошустрее, но уточни характеристики своего.

------------------------------------------------
Итог: для саморазвития пробуй.
Я бы рекомендовал распараллеливание вычислений на нескольких устройствах.
PM   Вверх
RomanNew
Дата 14.1.2014, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.1.2014

Репутация: нет
Всего: нет



Всем спасибо
тема закрыта
Вижу, что микроконтроллер такие задачи не тянет
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.