![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| RomanNew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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); |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
эта просьба бессмыслена... ибо не от ядра завсит производительность , а всего комплекса в том числе и от частоты на которой работает ядро.... плюс самые быстрые вычисления делаются на плис .... но сильно зависит от реальной задачи... если использовать ПК то можно использовать видеокарту для глобальных расчетов.. есть такие проекты
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| RomanNew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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? или что еще) для обсчета мат модели, а визуализация на отдельном компе. Этот вариант был бы оптимальным, т.к. нет новой ОС, в которую нужно вникать, визуализацию я бы сделал на дельфи, а микроконтроллер, не тратящий ресурсы на ОС, видеоадаптер и т.д., показал бы все, на что он способен. Отсюда вопрос - насколько быстро производятся вычисления с плавающей точкой? |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Вычисления с плавающей точкой производятся медленно. Всегда.
У меня есть поблизости один арм и один мипс -- но ни у одного из них нет сопроцэссора для работы с плавающей точкой, потому испытывать Ваш код я, извините, не буду. И вообще, такие вещи (скорость приведения int -> float, и скорость деления) описаны в даташыте Вашэго процэссора. Это всё, впрочем, не отменяет того факта, что вычисления сплавающей точкой производятся медленней, чем с фиксированной. Обычно -- дажэ при наличии сопроцэссора, фиксированная точка на сопроцэссоре быстрее плавающей. Да ещё и с точностью проблем большэ. Зачем Вам плавающая? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Похоже вам тут светит GPU как минимум (и OpenCL)
Забудьте. Если только у вас не какой нибудь 100 коровый МК |
|||
|
||||
| ФедосеевПавел |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 1 Всего: 10 |
Я вижу, что материалы - не проблема... 100 дискретных входов + 10 аналоговых входов + 100 дискретных выходов + 10 аналоговых выходов + CAN + RS485.8 Модель объекта управления с твоими характеристиками сопоставима с программой для управления самим объектом. Может быть сделать декомпозицию обекта моделирования - реализовать на одном мк не весь моделируемый обект, а только некоторые его узлы. Вся модель будет состоять из нескольких мк. Для справки: для управления газовым котлом паропроизводительностью 4-25 т/ч достаточно ПЛК с 25 д. вх+5 ан. вх + 25 д. вых + 2 ан. вых. Тебя скорее всего впечатляет количество исполнительных механизмов и источников данных. Посоветуйся с технологом или опытным киповцем - он поможет отделить зёрна от плевел. Значительная часть сигналов - просто информационные или для сигнализации. Некоторые - для защитных блокировок. И всего несколько - для регулирования. Должны существовать циклограммы включения, работы и выключения механизмов. Кроме того, я когда-то был подсобным рабочим на упаковочной машине (сигареты в пачки, пачки в целлофан, потом в блоки). Сама машина хоть и была "монолитной", но состояла из трёх независимых участков, каждый из которых мог работать самостоятельно. Например, при кратковременной (3-5 минут) остановке узла упаковки сигарет в пачки, оператор брал со специального столика уже готовые пачки и ставил их на транспортёр - два последующих узла продолжали работать ничего не подозревая. Это я к тому, что участок моделируется проще, чем вся машина.
Если ты "прикручиваешь" к ПЛК СКАДу или операторскую панель или средства визуализации (как в CoDeSys), то тут совсем всё просто. Если берёшь данные из имитационного стенда в самописную прогу - ну будешь брать из нескольких мк по разным каналам и адресам. В любом случае тут скорость не критична.
Из реального проекта управления котлом - статистика, вычисляемая самим ПЛК: Скан-контроль: текущее время сканирования [мсек] 30 Скан-контроль: минимальное время сканирования [мсек] 27 Конечно, есть и ПЛК пошустрее, но уточни характеристики своего. ------------------------------------------------ Итог: для саморазвития пробуй. Я бы рекомендовал распараллеливание вычислений на нескольких устройствах. |
||||
|
|||||
| RomanNew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.1.2014 Репутация: нет Всего: нет |
Всем спасибо
тема закрыта Вижу, что микроконтроллер такие задачи не тянет |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |