Страница 1 из 1

Попытка сравнения эффективности кода FLProg и IAR

Добавлено: 30.05.2016{, 12:24}
Simple_user
Уважаемые форумчане!
Больше полугода назад я познакомился с замечательной программой FLProg.
Сама идеология мне крайне приглянулась- но ввиду полного отсутствия опыта
работы с данной программой мне не удалось использовать её полноценно.
И я решил использовать стандартный С и старый добрый IAR.Так как модулей
arduino под рукой не оказалось и покупать их было лень, то пришлось использовать STM32 c 64кбайт флеш и 20кбайт оперативной памяти.
Теперь хочу поделиться с Вами итоговыми результатами:
Время опроса всех потоков  составило 19 мсек.Это время затрачено на следующие задачи:
1.Драйвер мастера шины 1-wire опрашивает реальные 127 устройств ds18B20.Период обновления -примерно 670 мсек.
Из FLProg мне очень понравилась идея автопоиска слейвов на шине- и я её реализовал тоже.Поиск всех участников шины(127) кстати занимает чуть более 2 секунд.По количеству слейвов можно и больше- но у меня больше их просто нет.
2.драйвер мастера modbus RTU читает/пишет 124 регистра хранения с 27 слейвов и одного частотника.В качестве слейвов- те же самые STM32, но только в режиме слейвов модбус.Шина RS-485.
3.Интерпретатор LAD для 4000 шагов с поддержкой онлайн-отладки и просмотра/редактирования переменных,загрузки-выгрузки проекта.Для теста была загружена программа из 3988 шагов сугубо из операций с плавающей запятой как самая "тяжелая" для вычисления- у моего МК нет модуля FPU.
4.Плюс ко всему этому конфигуратор с поддержкой загрузки-выгрузки проекта из памяти МК.

У меня просто вопрос к знатокам проекта FLProg - насколько проблематично реализовать пункты 1,2,3,4 с использованием FLProg для получения похожих результатов ? Я конечно понимаю, что STM32 и AVR 8 bit сравнивать как бы некорректно, но другой аппаратной платформы у меня нет. Вы не подумайте, это не реклама и не хвастовство -мне интересны реальные возможности FLProg как системы программирования.
С уважением,Михаил

Попытка сравнения эффективности кода FLProg и IAR

Добавлено: 30.05.2016{, 19:33}
support
Simple_user писал(а):1.Драйвер мастера шины 1-wire опрашивает реальные 127 устройств ds18B20.Период обновления -примерно 670 мсек.
На Ардуино опрос одного датчика занимает 400 мс. Такая реализация библиотеки. Что внутри - не смотрел. Для ускорения работы, при наличии нескольких датчиков опрос разнесен по циклам, кроме того добавлена возможность задания времени опроса датчиков. Поскольку температура - штука достаточно инерционная - да и на прогрев самого датчика требуется время, чаще одного раза в две секунды опрашивать не имеет смысла. Благодаря этому даже при наличии большого числа датчиков, их опрос размазывается по циклам и это не сильно сказывается на работе программы.
Simple_user писал(а):.драйвер мастера modbus RTU читает/пишет 124 регистра хранения с 27 слейвов и одного частотника.В качестве слейвов- те же самые STM32, но только в режиме слейвов модбус.Шина RS-485.
Тестировал максимум пару слейвов. Но тут от контроллера не очень зависит. Скорость обмена в любом случае зависит от скорости порта и количестве регистров для чтения. Код в контроллере выполняется небольшой (сравнительно), а скорость передачи и приёма - штука фиксированная для конкретной скорости вне зависимости от применяемого контроллера
Simple_user писал(а):3.Интерпретатор LAD для 4000 шагов с поддержкой онлайн-отладки и просмотра/редактирования переменных,загрузки-выгрузки проекта.Для теста была загружена программа из 3988 шагов сугубо из операций с плавающей запятой как самая "тяжелая" для вычисления- у моего МК нет модуля FPU.4.Плюс ко всему этому конфигуратор с поддержкой загрузки-выгрузки проекта из памяти МК.
Это специфика STM. Если режим монитора для AVR как то можно придумать (программная эмуляция с выводом в UART). То с выгрузкой программы из контроллера и отладка - не судьба. Ну с другой стороны если есть исходники - это особенно и не нужно.

Попытка сравнения эффективности кода FLProg и IAR

Добавлено: 31.05.2016{, 08:30}
Simple_user
День добрый!
Спасибо за ответ. Единственно, хотелось бы внести корректировку в сам вопрос. Что касается датчиков DS18B20 - тут я просто не указал, что имеется в виду 12-битное преобразование.Для выполнения этой операции сенсору необходимо в среднем 750 мс, но время может варьироваться.В моём случае это время оказалось 670-680 мс.При 12- битном преобразовании быстрее просто не получается.
support писал(а):На Ардуино опрос одного датчика занимает 400 мс.
То есть в данном случае скорее всего речь идёт об 11-битной работе сенсора, в противном случае методика расчёта времени получения нового значения температуры датчика ошибочна.
support писал(а):Это специфика STM.
Собственно, линейка STM32 обширна.Для камня ценой выше 450 рублей -FPU  в наличии.Всё так сказать зависит от аппетитов и необходимости.

Позволю процитировать свой пост-
Simple_user писал(а):Время опроса всех потоков составило 19 мсек.
В моём случае это время для самого тяжёлого варианта работы- постоянный,то есть в каждом цикле, опрос 127 датчиков, постоянная работы шины модбус с большой нагрузкой(кстати, "отвал" одного из слейвов не влияет на время опроса/выполнения потоков), выполнение достаточно тяжёлой программы, загрузка/выгрузка большой программы без прерывания выполнения оной...
Именно это меня интересовало- детерминированность поведения системы.

Ваших ответов мне достаточно.
Вопрос снимается-сравнивать детерминированную и недетерминированные системы управления некорректно.
Спасибо за сотрудничество.