| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Тест производительность микроконтроллера ARM |
| Автор: RomanNew 10.1.2014, 22:31 |
| Добрый день/ночь! Прошу помощи форумчан. Хочу использовать микроконтроллер для произведения большого объема вычислений, но не уверен в том, достаточна ли его мощность. Марка микроконтроллера еще не выбрана, скорее всего, на ядре 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); |
| Автор: Romikgy 11.1.2014, 13:01 |
| эта просьба бессмыслена... ибо не от ядра завсит производительность , а всего комплекса в том числе и от частоты на которой работает ядро.... плюс самые быстрые вычисления делаются на плис .... но сильно зависит от реальной задачи... если использовать ПК то можно использовать видеокарту для глобальных расчетов.. есть такие проекты |
| Автор: RomanNew 11.1.2014, 17:48 |
| Реальная задача такова: Создать имитационный стенд, который имитирует в реальном времени поведение технологического агрегата (упаковочная машина и т.д.). Назначение стенда - тестирование программ управления этим агрегатом. Программа находится в ПЛК. Стенд делается для домашнего использования. Агрегат имеет в своем составе: 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? или что еще) для обсчета мат модели, а визуализация на отдельном компе. Этот вариант был бы оптимальным, т.к. нет новой ОС, в которую нужно вникать, визуализацию я бы сделал на дельфи, а микроконтроллер, не тратящий ресурсы на ОС, видеоадаптер и т.д., показал бы все, на что он способен. Отсюда вопрос - насколько быстро производятся вычисления с плавающей точкой? |
| Автор: tzirechnoy 13.1.2014, 02:22 |
| Вычисления с плавающей точкой производятся медленно. Всегда. У меня есть поблизости один арм и один мипс -- но ни у одного из них нет сопроцэссора для работы с плавающей точкой, потому испытывать Ваш код я, извините, не буду. И вообще, такие вещи (скорость приведения int -> float, и скорость деления) описаны в даташыте Вашэго процэссора. Это всё, впрочем, не отменяет того факта, что вычисления сплавающей точкой производятся медленней, чем с фиксированной. Обычно -- дажэ при наличии сопроцэссора, фиксированная точка на сопроцэссоре быстрее плавающей. Да ещё и с точностью проблем большэ. Зачем Вам плавающая? |
| Автор: ФедосеевПавел 13.1.2014, 22:00 | ||||||
Я вижу, что материалы - не проблема... 100 дискретных входов + 10 аналоговых входов + 100 дискретных выходов + 10 аналоговых выходов + CAN + RS485.8 Модель объекта управления с твоими характеристиками сопоставима с программой для управления самим объектом. Может быть сделать декомпозицию обекта моделирования - реализовать на одном мк не весь моделируемый обект, а только некоторые его узлы. Вся модель будет состоять из нескольких мк. Для справки: для управления газовым котлом паропроизводительностью 4-25 т/ч достаточно ПЛК с 25 д. вх+5 ан. вх + 25 д. вых + 2 ан. вых. Тебя скорее всего впечатляет количество исполнительных механизмов и источников данных. Посоветуйся с технологом или опытным киповцем - он поможет отделить зёрна от плевел. Значительная часть сигналов - просто информационные или для сигнализации. Некоторые - для защитных блокировок. И всего несколько - для регулирования. Должны существовать циклограммы включения, работы и выключения механизмов. Кроме того, я когда-то был подсобным рабочим на упаковочной машине (сигареты в пачки, пачки в целлофан, потом в блоки). Сама машина хоть и была "монолитной", но состояла из трёх независимых участков, каждый из которых мог работать самостоятельно. Например, при кратковременной (3-5 минут) остановке узла упаковки сигарет в пачки, оператор брал со специального столика уже готовые пачки и ставил их на транспортёр - два последующих узла продолжали работать ничего не подозревая. Это я к тому, что участок моделируется проще, чем вся машина.
Если ты "прикручиваешь" к ПЛК СКАДу или операторскую панель или средства визуализации (как в CoDeSys), то тут совсем всё просто. Если берёшь данные из имитационного стенда в самописную прогу - ну будешь брать из нескольких мк по разным каналам и адресам. В любом случае тут скорость не критична.
Из реального проекта управления котлом - статистика, вычисляемая самим ПЛК: Скан-контроль: текущее время сканирования [мсек] 30 Скан-контроль: минимальное время сканирования [мсек] 27 Конечно, есть и ПЛК пошустрее, но уточни характеристики своего. ------------------------------------------------ Итог: для саморазвития пробуй. Я бы рекомендовал распараллеливание вычислений на нескольких устройствах. |
| Автор: RomanNew 14.1.2014, 11:07 |
| Всем спасибо тема закрыта Вижу, что микроконтроллер такие задачи не тянет |