Комментарии 17
было бы интересно посмотреть на результирующий Си код
Тут не так все просто, есть куча настроек, вариации которых могут могут выдать очень отличающийся код. Думаю написать для этого отдельную статью.
Но если в общем интересует как выглядит код, хотя бы приблизительно, то он есть весь в этой статье https://habr.com/ru/post/581468/
Поэтому к такой модификации следует прибегать когда действительно необходимо, например когда микроконтроллер не содержит сопроцессор операций с плавающей точкой, как ARM Cortex-M0 или ARM Cortex-M33 или когда подобных фильтров в модели очень много.
К примеру, если я хочу использовать в Simulink для CM0 библиотеку Qfplib (для CM0), чтобы работать с float'ами. Для обычной IDE я знаю как это делать:
float temp30_cal = qfp_uint2float( * ( uint16_t * ) TEMP30_CAL_ADDRESS );
float temp110_cal = qfp_uint2float( * ( uint16_t * ) TEMP110_CAL_ADDRESS );
float temperature = data;
temperature = qfp_fsub( qfp_fdiv( qfp_fmul( temperature, vdd ), 3.3f ), temp30_cal );
temperature = qfp_fmul( temperature, qfp_fsub( 110.0f, 30.0f ) );
temperature = qfp_fdiv( temperature, qfp_fsub( temp110_cal, temp30_cal ) );
value = qfp_fadd( temperature, 30.0f );
Как подключение и использование такой библиотеки будет выглядеть в Simulink? У меня фильтрация как раз сделана на основе этой библиотеки. Или вопросы компактности кода для бедных?
Один из каналов обслуживает протокол FreeMaster по TCP поверх USB.
RNDIS? Или какой-то проброс потока UART'а?
В MATLAB есть энтузиасты портирующие разные библиотеки. Например CMSIS там есть штатно в списке выбора библиотек.
Но я когда сталкиваюсь с младшими ARM-ами все же перехожу на целочисленную арифметику. В MATLAB есть тулсы для автоматизации и верификации этого процесса.
Для связи использую разные техники, можно прочитать тут: https://habr.com/ru/post/676120/ и тут https://habr.com/ru/post/582742/
Не получается с NXP подружиться (подтвердить e-mail) даже через свой VPN. Не могли бы вы приложить этот FreeMaster (дистриб и SDK), хотелось бы на него глянуть.
Да, Simulink и LabView по функциональности очень похожи в каких-то смыслах. Библиотеки DSP блоков почти идентичны. Но аналога Stateflow я в LabView не нашел.
Максимум что там увидел - это события. Но это какие-то графические монстры.
Вряд ли вы сможете один в один перенести модель из Simulink Stateflow в LabView. Чистые Simulink модели есть шансы перенести.
В LabView, на мой взгляд, не смогли найти гибридный подход. Тем же страдает и Node-RED сейчас. Либо они сознательно не затачиваются на такое, а ориентируются на пользователей попроще.
Я честно говоря сомневаюсь в некоей фантастической масштабируемости LabVIEW по сравнению с Simulink. Визуальные компоненты в окне LabVIEW перегружены графической атрибутикой, замыливают глаз, рассеивают внимание.
Это типичный подход детских конструкторов, где форма важнее содержания.
На таких кирпичиках таких крупных моделей как в Simulink Stateflow не думаю что можно построить. Но и Simulink не самый лучший подход для масштабирования до тысяч переменных. Не знаю. Думаю графические нотации тут еще хромает. Скажем я не нашел вариантов как быстро сгенерировать массив подсистем с динамически изменяемым размером массива. Но может это не в логике риалтайма, потому и нету.
То что у LabVIEW больше интерфейсов к различному оборудования не спорю. Но это как раз в моем случае менее всего интересно. Чем проще протокол, тем легче на нем сделать реальное время. У LabVIEW до последнего времени даже документации в открытый доступ не было выложено. А ведь они неплохо начинали лет 10 назад. Тогда я из под LabVIEW легко мог сгенерить софт для STM32 и он даже содержал RTOS RTX! А потом они это куда-то забросили.
Спасибо за наводку.
Нашел у них аналогичный тулс - https://www.ni.com/docs/en-US/bundle/labview-statechart-module/page/lvschowto/sc_h_label.html
Как я и подозревал, LabVIEW стремиться полностью копировать всю функциональность MATLAB, а MATLAB берет у LabVIEW
В индустрии обычная практика. Как все CAD-ы копируют функциональность друг у друга, все EDA и все IDE.
Но вообще говоря рисовать в таком стиле меня не привлекает
Алгоритм процесса зарядки я вам дать иначе чем в виде диаграмм Simulink не могу.
В даташитах на аккумуляторы тоже никто не пишет алгоритмы.
Там будет несколько неразборчивых графиков заряда-разряда для одной температуры и не более того.
Реальные характеристики аккумуляторов от тех графиков могут отличаться в разы. Еще хуже когда алгоритм надо научить работать без поправок с разными моделями аккумуляторов.
Поэтому я модели создаю сразу в симулинке, сразу их там запускаю и сразу рефакторю.
С тех пор как была опубликована эта статья, я уже несколько раз поменял модель. И она теперь выглядит по другому. Просто вскрылись новые нюансы поведения аккумулятора.
Рефакторинг у меня не прекращается ни на день. Даже если вы сделаете полный аналог опубликованной модели, у меня к тому времени уже будет другая, потому что модель еще очень далека от идеала. Потому собственно я и моделирую, а не пишу на C.
Simulink де-факто стандарт описания и документирования моделей. LabVIEW тут немного опоздал.
Далее анализ и моделирование всех контролируемых величин, режимы, параметры и т.д. и т.п., разработка дизайна и топологии Вашей системы с прототайпингом и верификацией по отношению к существующему опыту.
Отличные советы.
Этому посвящён целый цикл моих статей:
Разработка контроллера резервного питания. Схемотехника
Разработка контроллера резервного питания. Трассировка
Разработка контроллера резервного питания. Установка Azure RTOS
Разработка контроллера резервного питания. Технология отладки и тюнинг
Разработка контроллера резервного питания. Как кризис сделал его сильней
Делаем встраиваемый полифункциональный зарядник
Тестирование DC/DC преобразователя на чипе LTC3789
А эта статья уже почти в завершении идёт, как результат исследований и оптимизации архитектуры, как софтверной, так и аппаратной .
Этот проект позволяет собрать гигабайты записей всех параметров в течении зарядки и в течении разряда аккумуляторов. Такие данные не найти в интернете, просто потому что они очень объёмны и очень специфичны.
Речь ведь не столько о разработке зарядника VRLA AGM аккумуляторов, сколько о программно-аппаратном комплексе пригодном для любых типов аккумуляторов с оптимальным BOM-ом и открытым софтом.
Быстрая разработка для микроконтроллеров в Simulink на примере полифункционального зарядника