Зарегистрирован: Пн мар 11, 2019 09:49:04 Сообщений: 10
Рейтинг сообщения:0
Dear uni
Please repost File IAR ARM 6.5 PLC_iararm65.7z [420.65 KiB] ; Link not working..
Posted after 9 minutes 27 seconds: Re: Open source plc STM32F103RBT6 source code Mitsubishi PLCFX1 Dear All
It will very helpful for educational purpose to all, if the project based on iar 6.3 or keil c and or Blue Pill stm32f103C8T6; as Blue Pill stm32f103C8T6 is commonly available.
Please post your project based on iar 6.3 or keil c and or Blue Pill stm32f103C8T6;
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Вот вариант проекта для IAR ARM 6.5. Для остальных версий IAR доработайте самостоятельно, это не сложно.
Проект собирается, но работоспособность ещё не проверял. В файле src\PLC_LAD.c пока остались китайские иероглифы.
Если подскажите схему подключения периферии, то я сделаю проект для Proteus и попробую его связать с GX Works 2 через программный нуль-модем. Пока из файлов проекта не совсем ясно что куда подключено.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Для начала соберите этот проект со строгой проверкой, а потом тестируйте. Не пытайтесь проверять на прочность, упадёт как карточный домик, ибо из проекта удалены или не сделаны очень многие необходимые проверки.
Под какой процессор? 8, 16, 32 разрядный? Какой архитектуры?
Цитата:
Таблицы для расчёта CRC16 у Modbus лишние
А мужики-то не знают! И зачем вдруг через них стали делать, а? Не задумывался?
Прежде чем делать такие заявления, нужно обмозговать задачау со всех сторон. А если код будет собираться не под СТМ32? Вот понадобится 3 интерфейса с Модбас и как быть? В какой-то умной книжке была фраза, что причина многих проблем в преждевременной оптимизации. Вы сначала соберите код со строгой проверкой, устраните ошибки, которые видят компилятор и статический анализатор, потом уже пытайтесь его тестировать. Вот когда хотя бы простые тестовые программы для ПЛК заработают, тогда уже постройте профиль программы, изучите узкие места и только тогда можете подумать об оптимизации.
К выложенному проекту следует относиться как- прости меня, imsushka, за аллегорию!- к большой куче навоза посреди огорода. Выглядит стрёмно, пахнет нифига не розами. Вот когда эту кучу разровняешь по всему огороду, перепашешь, глядишь, на следующий год и урожай хороший соберёшь, и розы будут большими и вкусно пахнуть. И пинать imsushka не следует, он и так собрал это всё и привёз к нам в огород, проделав огромную работу.
Что за поток глупости? Я ему примеры привёл, даже убогой avr8 архитектуры с измерениями вплоть до такта и микросекунды, а он мне тут как гуманитарий заливает. Я воспринимаю только такты и микросекунды как критику, так что потрудитесь обосновывать таким образом.
Да, понять другие алгоритмы трудно, но надо хотя бы попытаться. Я вот уже и код весь на c++ перевёл, т.к. современные IDE под них заточены. Сейчас пытаюсь связать код со средой разработчика. Приводить в порядок чужой код - это ещё желание надо иметь Пока приводил, познакомился вот. Не люблю, когда код выглядел как помойка, даже если он рабочий. Ладно бы для себя, но людям будет стыдно показывать.
Кому лень, то я поясняю по поводу crc16. Существует как минимум 4 разных алгоритма расчёта. В общем и целом, когда важны даже 512 байт памяти, то не сильно теряя в скорости можно использовать алгоритм на сдвигах или алгоритм, называемый у меня как simple. Для целевого мк STM32F103C8T6 они важны. Поэтому я уже выкинул эти таблицы из кода расчёта crc16, а modbus этот вообще нужно полностью переписать. Ну кто так пишет в век структур? Хотя из всего этого кода мне лично интересна только IL машина и больше ничего, т.е. сам протокол и пример реализации кода интерпретатора на его основе.
Какой ещё статический анализатор? Он у меня в голове. Я имел дело с куда более сложными интерпретаторами, даже написал свой дизассемблер для avr8 архитектуры.
Как вот окружение разработчика и тестировщика подготовлю, то отпишусь о результате первого тестирования кода. Надеюсь, что ST код удастся хотя бы частично залить, дальше я бы уж доработал. Мне, кстати, нужно как минимум 4 modbus rtu slave канала: HMI, Scada, графический анализатор и отладка. Я привык так работать. Анализатор - это iba PDA.
Я никого не пинаю, а немного критикую. Вот покритикую и выложу своё видение. Будете меня потом критиковать
Загрузил код в BluePill, в SWD отладчике зависаю при включении тактирования периферии на строке RCC_APB1PeriphClockCmd(...). Видимо быстро войти в тему не получится. Попробую инициализацию сформировать автоматически CubeMX'ом и посмотреть в чём разница. А с Proteus'ом вышел облом, модельки там на самом деле нет или я не нашёл. Есть УГО и посадочное место, а вот именно модели, куда прошивку вставляешь, нет.
[quote] К выложенному проекту следует относиться как- прости меня, imsushka, за аллегорию!- к большой куче навоза посреди огорода. Выглядит стрёмно, пахнет нифига не розами.
а я тут причем ? это не моя куча, это куча китайская. тысячи китайцев старались, накладывали, а вы ...
ой там можно на ноль поделить, ай там можно сделать чтоб црц считалась в 120 раз быстрее чем данные принимаюцца, а счас всего в 100 раз быстрее, ее и2с у стм глючная, давайте софотовую забабахаем....... и тд и тп
еще 250 раз повторяю - НАРОД, ПРОВЕРТЕ БАЗОВЫЙ ФУНКЦИОНАЛ (первые 30 команд по мануалу) это самое главное, все остальное прикладное
Виновен, прошивка "крутится". Проблема, видимо, была в конвертировании проекта на плюсы. Жаль, что сходу не получилось. Нужно аккуратнее сишный код "оборачивать". Буду тестить теперь.
Да, правильно написанный код везде будет работать. Просто c++ предоставляет дополнительные возможности по компактному оформлению кода. Больше возможностей, строже проверки типов. Мне не нравится стиль, когда в коде глобальные переменные гуляют по всем исходникам. Люди, которые пишут на си этим страдают. Либо часто видишь наименования функций типа lcd_init(), lcd_putchar(), lcd_println() и прочее, что лучше выглядит на с++. Код получается модульней. А вообще, современные среды разработки больше заточены под плюсы. Я ещё eclipse не подключил, т.к. структура проекта мне не нравится.
Подозреваю, что проблема может быть в коде инициализации и присутствующий ассемблерный код не совсем подходит для c++ проекта, но это чисто гипотеза. Потом разберусь.
Судя, кстати, по размеру кода, этот проект вроде можно даже на ATmega1284 запустить, там как раз 16К ОЗУ на борту. Может влезть.
Мне не нравится стиль, когда в коде глобальные переменные гуляют по всем исходникам.
В C++ нет extern? Те переменные что не должны "светится" во все исходники, объявляем со static. Тоже относится к функциям.
uni писал(а):
Судя, кстати, по размеру кода, этот проект вроде можно даже на ATmega1284 запустить, там как раз 16К ОЗУ на борту. Может влезть.
Имеет смыл когда имеется готовое устройство на котором нужно запустить код, иначе зачем переносить с более мощного МК на менее мощный?
Вообще, этот проект лучше запустить на каком-то F4. На Али и не только продают платы с STM32F401CCU6 (Cortex-M4, 80 МГц, 256 КБ flash, 64 КБ ОЗУ), стоимостью не на много выше чем у BluePill. Это хороший кандидат для этого проекта. А если понадобится больше выводов, есть платы с STM32F407VGT6 и STM32F407ZGT6.
У меня большой опыт встраивания и сопровождения очень разнообразного чужого Си кода. И я могу с уверенностью утверждать, что использование C++ приводит ум в порядок. В качестве хобби я подключаю свободные математические библиотеки к одной математической программе. Повидал всякого. Честно говоря, я даже не смогу привести примера, где бы Си-кодер вообще напрягался по поводу оформления кода или придерживался какого-то одного стиля кодирования. Обычно код выглядит как взрыв на макаронной фабрике. В связи с этим отдельные модули объединены неявными взаимными связями, о которых можно догадаться только на этапе связывания, когда тебе прилетает куча ошибок компоновки.
В качестве примера, в этих исходниках есть идентификатор HEX, который используется как прототип функции (ladder.c) и как массив (PLC_COM.c). Не все компиляторы такое проглатывают.
Цитата:
Имеет смыл когда имеется готовое устройство на котором нужно запустить код, иначе зачем переносить с более мощного МК на менее мощный?
BluePill мне пришлось заказывать по сети и ждать, а макетка на базе ATmega1284 есть в магазине chipdip в наличии сейчас. До нас технологии ещё идут. Если народу просто не нужен ARM, а хочется лампового AVR, то почему нет?
BluePill мне пришлось заказывать по сети и ждать, а макетка на базе ATmega1284 есть в магазине chipdip в наличии сейчас.
Перенос кода с STM на AVR требует времени. А потом еще этап отладки... Проще дождаться прихода STM. Странно что BluePill не оказалось в наличии. Это как ардуины - запас должен быть. Я давно перешел с AVR с STM32 и считаю что верно поступил.
uni писал(а):
Если народу просто не нужен ARM, а хочется лампового AVR, то почему нет?
Ну да, некоторые предпочитают ламповые телевизоры вместо современных, плазменных или ЖКИ...
Сейчас этот форум просматривают: Martian и гости: 64
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения