[Промышленное программирование, Программирование микроконтроллеров, Разработка под Arduino, Производство и разработка электроники] Кому в микроконтроллере жить хорошо?
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В каком году — рассчитывай, в какой земле — угадывай, задачился вопросами. Насколько ARM быстрее AVR? Какая разновидность протокола Modbus более «быстрая»? ASCII или RTU?
Под «быстротой», в данном случае, будем понимать количество машинных циклов процессора необходимых для исполнения всех действий протокола.
Исследование быстродействия будем проводить на, широко известной в узких кругах, библиотеке ModBus Slave RTU/ASCII, портированной на микроконтроллеры ATMega48 и STM32L052. Вывод информации будем осуществлять по протоколу Modbus в эмулятор панели Weintek. Тестирование будем производить на демонстрационном примере. Помимо результатов теста на панель выводятся состояния регистров Modbus: дискретных входов, дискретных выходов, регистров для чтения и регистров для чтения/записи. Также средствами панели производится подсчет количества ошибок обмена данными с микроконтроллером. Внешний вид тестового окна приведен на рисунке.
Оценку быстродействия будем проводить измеряя время выполнения функции обработки сообщений протокола. Измерение времени выполнения будем проводить рабоче-крестьянским способом. Перед запуском функции обнуляем аппаратный таймер, частота счета которого равна тактовой частоте микроконтроллера, после выполнения функции считываем значения таймера и проводим обработку результатов измерений. Вычисляем минимальное, максимальное и среднее значение времени выполнения функции обработки сообщений протокола Modbus.
while(1)
{
TIM6->CNT=0;
ModBusRTU();
//ModBusASCII();
tcurent=TIM6->CNT;
if(tcurent<tmin)tmin=tcurent;
if(tcurent>tmax)tmax=tcurent;
avg32=avg32-(avg32>>16)+tcurent;
tavg=avg32>>alfa;
...
Результаты исследований, сведены в таблицу. Исследование проводились при различных опциях библиотеки:
- ModBusUseTableCRC — Использовать расчет CRC по таблице;
- ModBusUseErrMes — Использовать сообщения о логических ошибках протокола;
А также при различных стратегиях оптимизации компилятора.
Библиотека ModBus Slave RTU/ASCII поддерживает, в некоторых случаях, важную функцию — пауза между получением запроса от Modbus Master и ответом Modbus Slave. Исследование проводились при значениях паузы 2 милисекунды и 0 (то есть без паузы), эти значения указаны в графе таблицы «Пауза П/П». В графе «Размер» указан размер модуля, который включает в себя обе функции обработки сообщений Modbus (ModBusRTU(), ModBusASCII()).
На взгляд автора наиболее целесообразно оценивать быстродействие по наихудшему случаю, то есть, по максимальному времени выполнения функции.
Глубоко задумавшись над результатами исследований, можно сделать следующие выводы:
- AVR не такой уж медленный!!! В среднем он в полтора раза медленнее ARM при той же тактовой частоте. А в случае оптимизации по размеру (например варианты 13 и 15) практически приближается к ARM.
- Протокол ASCII, по сравнению c RTU, не только более медленный по скорости передачи, но и занимает гораздо больше ресурсов микроконтроллера.
- Использование сообщений о логических ошибках протокола, никак не влияет на быстродействие.
- Табличный метод вычисления CRC позволяет более чем в полтора раза снизить использование вычислительных ресурсов микроконтроллера.
- Использование паузы между приемом запроса и передачей ответа, позволяет не только избежать конфликтов на шине RS-485, но и уменьшить блокирующие действие функции обработки сообщений протокола Modbus.
Какие выводы еще можно сделать?
Проект на GitHub
Скачать одним файлом
===========
Источник:
habr.com
===========
Похожие новости:
- [Схемотехника, Производство и разработка электроники, Звук, Электроника для начинающих] Разработка своего устройства от А до Я. Часть 2: Создание устройства
- [Производство и разработка электроники, Периферия, Физика, Звук] Аудиофилькина грамота: ликбез об акустическом оформлении
- [Анализ и проектирование систем, CAD/CAM, Производство и разработка электроники, Электроника для начинающих] Анализ целостности сигналов в PADS Professional (2/6)
- [Промышленное программирование, SCADA] Самоучитель по WinCC OA. Часть 4. Повторное использование объектов. $-параметры
- [Производство и разработка электроники, Гаджеты, DIY или Сделай сам] Бизиборд? Power bank? Супернажималка
- [Настройка Linux, Сетевые технологии, Программирование микроконтроллеров] Делаем из ENC28J60 внешнюю USB сетевую карту
- [Производство и разработка электроники, Процессоры, IT-компании] «Байкал электроникс» представила три новых процессора — «Байкал-М/2», «Байкал-М/2+» и «Байкал-S», они выйдут в 2021 году
- [C++, Разработка робототехники, Программирование микроконтроллеров, DIY или Сделай сам] ESP32 в окружении VSCode
- [Разработка под Arduino, AR и VR, 3D-принтеры] Игровой контроллер для одной руки, что так, а что не так
- [Развитие стартапа, Брендинг, Бизнес-модели, Производство и разработка электроники, Лайфхаки для гиков] Как выйти на Европейский Рынок эффективно и с минимальными затратами?
Теги для поиска: #_promyshlennoe_programmirovanie (Промышленное программирование), #_programmirovanie_mikrokontrollerov (Программирование микроконтроллеров), #_razrabotka_pod_arduino (Разработка под Arduino), #_proizvodstvo_i_razrabotka_elektroniki (Производство и разработка электроники), #_modbus, #_avr, #_stm32, #_iar, #_weintek, #_promyshlennoe_programmirovanie (
Промышленное программирование
), #_programmirovanie_mikrokontrollerov (
Программирование микроконтроллеров
), #_razrabotka_pod_arduino (
Разработка под Arduino
), #_proizvodstvo_i_razrabotka_elektroniki (
Производство и разработка электроники
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:58
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В каком году — рассчитывай, в какой земле — угадывай, задачился вопросами. Насколько ARM быстрее AVR? Какая разновидность протокола Modbus более «быстрая»? ASCII или RTU? Под «быстротой», в данном случае, будем понимать количество машинных циклов процессора необходимых для исполнения всех действий протокола. Исследование быстродействия будем проводить на, широко известной в узких кругах, библиотеке ModBus Slave RTU/ASCII, портированной на микроконтроллеры ATMega48 и STM32L052. Вывод информации будем осуществлять по протоколу Modbus в эмулятор панели Weintek. Тестирование будем производить на демонстрационном примере. Помимо результатов теста на панель выводятся состояния регистров Modbus: дискретных входов, дискретных выходов, регистров для чтения и регистров для чтения/записи. Также средствами панели производится подсчет количества ошибок обмена данными с микроконтроллером. Внешний вид тестового окна приведен на рисунке. Оценку быстродействия будем проводить измеряя время выполнения функции обработки сообщений протокола. Измерение времени выполнения будем проводить рабоче-крестьянским способом. Перед запуском функции обнуляем аппаратный таймер, частота счета которого равна тактовой частоте микроконтроллера, после выполнения функции считываем значения таймера и проводим обработку результатов измерений. Вычисляем минимальное, максимальное и среднее значение времени выполнения функции обработки сообщений протокола Modbus. while(1)
{ TIM6->CNT=0; ModBusRTU(); //ModBusASCII(); tcurent=TIM6->CNT; if(tcurent<tmin)tmin=tcurent; if(tcurent>tmax)tmax=tcurent; avg32=avg32-(avg32>>16)+tcurent; tavg=avg32>>alfa; ... Результаты исследований, сведены в таблицу. Исследование проводились при различных опциях библиотеки:
А также при различных стратегиях оптимизации компилятора. Библиотека ModBus Slave RTU/ASCII поддерживает, в некоторых случаях, важную функцию — пауза между получением запроса от Modbus Master и ответом Modbus Slave. Исследование проводились при значениях паузы 2 милисекунды и 0 (то есть без паузы), эти значения указаны в графе таблицы «Пауза П/П». В графе «Размер» указан размер модуля, который включает в себя обе функции обработки сообщений Modbus (ModBusRTU(), ModBusASCII()). На взгляд автора наиболее целесообразно оценивать быстродействие по наихудшему случаю, то есть, по максимальному времени выполнения функции. Глубоко задумавшись над результатами исследований, можно сделать следующие выводы:
Какие выводы еще можно сделать? Проект на GitHub Скачать одним файлом =========== Источник: habr.com =========== Похожие новости:
Промышленное программирование ), #_programmirovanie_mikrokontrollerov ( Программирование микроконтроллеров ), #_razrabotka_pod_arduino ( Разработка под Arduino ), #_proizvodstvo_i_razrabotka_elektroniki ( Производство и разработка электроники ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:58
Часовой пояс: UTC + 5