Тёмный

STM32 MODBUS RTU SLAVE 

DIY PLC
Подписаться 811
Просмотров 4,3 тыс.
50% 1

Опубликовано:

 

28 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 40   
@Zurenio
@Zurenio 3 дня назад
This is the best video about Mobus that i have ever seen.... great...!!!
@antonGoldinov
@antonGoldinov Год назад
Автору огромное спасибо ❤ Больше единомышленников, это хорошо 😊
@trialon1786
@trialon1786 9 месяцев назад
Спасибо огромное за пример, дествительно не хватает таких подробных описаний. Прикрутил к STM32 F401 uart1 и TD321D485H-A вроде работает. Теперь адаптирую к своему применению.
@DIY_PLC
@DIY_PLC 9 месяцев назад
Когда доделаете свое устройство можете прислать проект и схемы мне для обмена опытом?
@trialon1786
@trialon1786 9 месяцев назад
@@DIY_PLC могу поделиться. В планах прикрутить и modbus tcp и ethernet и ethercat. Буду разбираться с этим. Если интересно, можем обмениваться наработками. А почему здесь использовали adm2486, а не adm2483? Для модбаса её должно быть достаточно.
@DIY_PLC
@DIY_PLC 9 месяцев назад
@@trialon1786 Вот ради таких дельных замечаний я и затеял ютуб, хотя изначально очень не хотелось лезть в блогеры. Так как больше 115200 пока ехать не собираюсь и абонентов в ADM2483 больше и она дешевле действительно есть смысл на нее переехать. ADM2486 у кого то подсмотрел не помню уже даже где либо у Мединцева либо с какой то готовой платы срисовал. Спасибо за комментарий. Если что пишите на почту.
@DIY_PLC
@DIY_PLC 9 месяцев назад
@@trialon1786 MODBUS TCP пока временно прикрутил через шлюз ZLAN5143D обзор есть на канале. Разбираться с lwip + rtos долго временно решил вопрос так. Потом конечно надо переделать без костылей. Я делаю самодельный ПЛК, а вы что инжинирите?)
@ЯРусский-в9с
@ЯРусский-в9с Год назад
Всегда жду Ваши видео. Огромное спасибо!
@DIY_PLC
@DIY_PLC Год назад
Добрый день. Что именно Вам интересно?
@ЯРусский-в9с
@ЯРусский-в9с Год назад
​Интересна собственная разработка модулей ввода-вывода, дискретных и аналоговых унифицированных сигналов. Реализация modbus и can протоколов обмена. На stm или risc-v контроллерах. В общем все такое, что мало кому интересно (зачем тебе это, купи готовое). 😊
@DIY_PLC
@DIY_PLC Год назад
Я работаю над этим же, надо подумать есть ли возможность сотрудничества.@@ЯРусский-в9с
@сувениры-ж3л
@сувениры-ж3л 2 месяца назад
АЛИЛУЯ!!!! Если всё заработает, я буду счастлив! Спасибо тебе огромное, мил человек!
@DIY_PLC
@DIY_PLC 2 месяца назад
На здоровье.) На подходе еще версия, для AVR.
@Zurenio
@Zurenio 3 дня назад
👍👍🥰😍
@Nico-y2b6n
@Nico-y2b6n Месяц назад
Скажи, пожалуйста, есть ли у тебя проверка времени между байтами? Цитата из документации. "The entire message frame must be transmitted as a continuous stream. If a silent interval of more than 1.5 character times occurs before completion of the frame, the receiving device flushes the incomplete message and assumes that the next byte will be the address field of a new message." И ещё по документации формат данных должнен иметь не 10 а именно 11 битов. "Bits per Byte: 1 start bit 8 data bits, least significant bit sent first 1 bit for even/odd parity; no bit for no parity 1 stop bit if parity is used; 2 bits if no parity"
@StuG_HD
@StuG_HD 11 месяцев назад
Ждем версию MODBUS, прикрученную к FreeRTOS.
@DIY_PLC
@DIY_PLC 11 месяцев назад
Это для меня имеет смысл только с MODBUS TCP
@forcingautomotiveelectroni7644
@forcingautomotiveelectroni7644 3 месяца назад
@StuG_HD Изначально нужно прикручивать FreeRTOS. На гитхабе есть библиотека с разными примерами. Правда не легка в понимании. Modbus-STM32-HAL-FreeRTOS.
@valerybaranov
@valerybaranov 7 месяцев назад
Спасибо огромное за титаническую работу! Давно искал работающую библиотеку Modbus RTU для STM32, несмотря на то, что в сети много обсуждений на эту тему в виде кусков кода, но варианта - "залил и все работает" не попадалось! на скорости 256кбит/с через RS485 (ADM485 и изолированный вариант на ADUM1301) на столе все работает без ошибок В моем случае, как раз, потребовалась работа через USART1, которая, судя по описанию. в help, не удалась. Понятно, что нужно было сделать переназначение во всех местах где идет настройка USARTN, но проблема, скорее всего, была в том , что в папке FreeModbus в файле portserial.c явным образом указан номер USART2. Может кому пригодиться- шпаргалка где и что нужно поправить: Для перехода на USART1 необходимо внести следующие изменения: 1.Папка SRC: 1)main.c: -UART_HandleTypeDef huart1; -static void MX_USART1_UART_Init(void); -MX_USART1_UART_Init(); -static void MX_USART1_UART_Init(void) { huart1.Instance = USART1; huart1.Init.BaudRate = 9600; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } void setup(void) { eMBInit(MB_RTU, MODBUS_RTU_SLAVE_ADDRESS, &huart1, (ULONG) huart1.Init.BaudRate, &htim3); //MODBUS RTU SLAVE eMBEnable(); //MODBUS RTU SLAVE .. .. } 2)В stm32f1xx_hal_msp.c void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(huart->Instance==USART1) { __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**USART2 GPIO Configuration PA2 ------> USART2_TX PA3 ------> USART2_RX PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USART1_IRQn); } void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) { if(huart->Instance==USART1) { __HAL_RCC_USART1_CLK_DISABLE(); /**USART2 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX PA2 ------> USART2_TX PA3 ------> USART2_RX */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); /* USART1 interrupt DeInit */ HAL_NVIC_DisableIRQ(USART1_IRQn); } } 3)в stm32f1xx_it.c extern TIM_HandleTypeDef htim3; extern UART_HandleTypeDef huart1; void USART1_IRQHandler(void) { HAL_UART_IRQHandler(&huart1); } 2.Папка Drivers/FreeModbus/port 1)в portserial.c void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart->Instance == USART1) { pxMBFrameCBByteReceived(); HAL_UART_Receive_IT(uart, &singlechar, 1); } } void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { if (huart->Instance == USART1) { pxMBFrameCBTransmitterEmpty(); } }
@DIY_PLC
@DIY_PLC 7 месяцев назад
Вам спасибо. Если не секрет что за устройство делаете?
@valerybaranov
@valerybaranov 7 месяцев назад
@@DIY_PLC Никаких секретов, в работе несколько устройств, но наиболее интересные это контроллер управления освещением в помещении на F103RBT6 и периферийные модули ввода-вывода для систем мониторинга и диспетчеризации животноводческих комплексов. 1)Контроллер освещенности был сделан в 2014г., что-то вроде автономного "умного дома" для отдельного помещения, т.к. не являюсь большим поклонником современной концепции этой технологии с выделенным контроллером, а тем более "облаком", и периферийными модулями. В данный момент модуль "заточен" на задачи управления освещением (поддержание заданной освещенности (ШИМ, 0-10В) по цифровым датчикам освещенности, режим заданной яркости,, ограничение времени работы, включение/выключение по расписанию, датчикам присутствия и т.п.), 2 независимых канала, корпус 3DIN. Когда проектировал схемотехнику на вырост предусмотрел на борту RS485 интерфейс, I2C (датчики освещенности, LCD), управление ИК головкой (для управления кондиционером), SPI flash для логирования данных. ПО опыту эксплуатации на реальных объектах в помещениях с окнами сокращение потребления энергии в зимний период 4 раза, в летний 3, увеличение ресурса LED светильников 3 раза. Есть несколько модификаций- 2реле+1 ШИМ/0-10, Lite- без RTC, RS485, Flash, дополнительный силовой модуль для управления лампами накаливания и диммируемыми LED лампами с цоколями E14, E27. 2)Периферийные модули ввода/вывода (дискретные входы AD, DC, DRY, реле, АЦП, 1-wire) кастомизируются под объект, т.к., например, на свиноводческих или птицеводческих комплексах очень высокая плотность размещения оборудования и агрессивная атмосфера, как следствие, оборудование должно быть минимального размера, иметь минимальную избыточность по вводам/выводам и иметь герметичный конструктив. Реализовать это, например, на оборудовании Овен не получится. Пока эти модули делаем на ATMEGA и давно было желание переехать на STM32, но тормозило отсутствие работающего варианта ModBus RTU slave- теперь дорога свободна))
@DIY_PLC
@DIY_PLC 7 месяцев назад
@@valerybaranov Желаю удачи в ваших начинаниях. Мне очень любопытно наблюдать как люди помогают друг другу в интернете это вдохновляет на труд. Может ли навредить вашему бизнесу публикация схем и исходных кодов ваших устройств?
@valerybaranov
@valerybaranov 7 месяцев назад
@@DIY_PLC Спасибо за пожелания, взаимно! "Контроллер освещения" является коммерческим продуктом, поэтому, с публикацией прошивки проблема, т.к. вся фишка в алгоритмах управления, а схему и компоновку платы можно опубликовать, т.к. там все типовое только собрано в одном флаконе под свои идеи, но получилось достаточно универсальное железо, на котором можно реализовать много задач, в том числе и учебных, т.к. модули типа NUCLEO хороши для чистого программирования, но переход в физический мир с результатами программирования требует подключения других устройств (датчиков, реле, светодиодов и т.п.) причем, это требует коммутации проводами, что приводит к ошибкам, а главное к потере дорогого времени, которое могло быть потрачено более рационально. На данном модуле много чего есть и много что можно подключить к внешним разъемам)) По модулю ввода/вывода проблем не вижу, т.к. это достаточно узкая ниша и функционал там стандартный для такого оборудования, но сначала надо переехать с ATMEGA на STM. Когда переезд состоится можем вернуться к этому вопросу. Есть еще один момент- как программист я "ламер", т.к. по специальности я инженер радиотехник и заканчивал ВУЗ в середине 80х, когда с МК все только начиналось, но т.к. я увлекался схемотехникой и на нашей специальности программирование было не основным, то познания были не ах, а программирование закончилось на FORTRAN и машинах EC-1020 c перфокартами)) Тем не менее, я уcпел спаять свои "Радио-86РК" и "Spectrum", но как можно догадаться, это было не для программирования)) Короче говоря, заняться самому освоением STM пришлось не от хорошей жизни, т.к. 10 лет назад, когда мы сделали модуль на STM, людей которые что-то могли с ним работать были единицы, т.к. не было никаких HAL-ов и Кубов, поэтому пришлось обращаться к "гуру", которые в большинстве своем разбираясь в программировании на Cи либо не понимали, либо не интересовались периферией с которой работает МК, а тестировать свою прошивку на имеющемся у них "железе" это ниже их достоинства. Процесс "оживления" выглядел так- присылают прошивку, при ее тестировании выясняется, что предыдущие ошибки или неточности исправлены, но появилось 2-3 новых. Причем, функционал, который в предыдущей версии работал, в "исправленной" отвалился и так до бесконечности. Возможно мне не повезло найти нужных людей, но это и к лучшему. В конечном итоге, это надоело и прошлось заняться самому, благо к этому времени появились HAL, CubeMX, CubeIDE вместо Keil c ограничением 32кБ, CubeMonitor, много информации, примеров, т.е. при наличии желания, времени и оборудования все можно сделать самому.. Конечно у меня есть 2-х канальный осциллограф, функциональный генератор, логический анализатор, микроскоп и т.д. и т.п.)), но программированием мои "опусы" назвать нельзя, т.к. они абсолютно не оптимальны с точки зрения кода, алгоритмов и канонов, это скорее лоскутное одеяло из различных кусков кода, поэтому показывать "это" другим неудобно. Но, тем не менее, "это" работает, а я пытаюсь "это" улучшить по мере приобретения опыта. И пожелание от меня- господа программисты, осваивайте схемотехнику "обвязки" микроконтроллеров, т.к. они всегда работают в физических устройствах, тогда вам совсем цены не будет)) Еще раз спасибо всем кто делится своими знаниями и опытом и рассказывает "как это устроено"!
@DIY_PLC
@DIY_PLC 7 месяцев назад
@@valerybaranov Даже не знал что в комментарии помещается так много текста.) Я тоже недавно перешел с AVR на STM32 в основном из за CubeMonitor и еще немного из за связки rtos+lwip так как тут можно поднять с временем modbus tcp. Любой работающий код, а тем более приносящий кому то пользу достоин уважения. У меня на ютубе есть описание моей си библиотеки она больше заточена под применение на заводе, может кое что и вам сгодится. Я тут готовлю видео по дискретным входам для контроллерам какие бывают варианты реверс инжинирю немного. Если есть возможность пришлите пожалуйста на электронную почту полностью схему или участки схем касаемо ввода вывода и связи если всю схему присылать нельзя. Мне разные люди уже присылали несколько своих вариантов решений очень полезно видеть разные точки зрения на схемотехнику. Может быть так с миру по нитке и доделаю свой открытый самодельный контроллер быстрее чем до пенсии.)
@mask-u5v
@mask-u5v 9 месяцев назад
А почему на стм, у нас вроде уже наши мк на арм ядре выпускаются, может если отходить от ардуино то переходить на что то отечественное, так глядишь и отрасль начнет работать для нас?
@DIY_PLC
@DIY_PLC 9 месяцев назад
STM32 выбрал исключительно за возможность отладки на лету программой STM32CubeMonitor. Ну еще плюс наличие сообщества.
@mask-u5v
@mask-u5v 9 месяцев назад
@@DIY_PLC ты только ссвными тапками не кидайся я пожалуй добавлю. Понимаешь тут дело собственно вот в чем, уже сейчас если не рассматривать чистокровный китай, родные мк и платы стоят невменяемых денег,а дальше вся эта ситуёвина будет только ухудшаться. Все равно придется пересаживаться на наши мк. Я не думаю что с отладкой на них хуже чем на том что ты выбрал, интерфейсы и ядро все равно буржуйские. Просто посмотри в ту сторону (в сторону нашего производителя), может немного раньше других😉
@DIY_PLC
@DIY_PLC 9 месяцев назад
@@mask-u5v Прошу показать личным примером как надо. Пока мало информации. Подписался на Ваш канал жду видео.
@ebjikkolu4757
@ebjikkolu4757 11 месяцев назад
Почему же заблокировали аккаунт,даже интересно ...))
@ciklomat
@ciklomat Год назад
У меня есть фирмовый аккумулятор для велосипеда, он общается с приборной панелью через modbus . Подключил через уарт конвертор к компу и некоторые данные видны (заряд, и еще куча непонятной информации) . Подскажите как сделать эммулятор перехваченных данных?
@DIY_PLC
@DIY_PLC Год назад
Попробуйте использовать логический анализатор.
@Андрей-э1т7о
@Андрей-э1т7о 11 месяцев назад
Как насчёт реализации FBD редактора?
@DIY_PLC
@DIY_PLC 11 месяцев назад
FLprog есть для страждущих. Мне сисечка больше по душе.
@maksimlenin3159
@maksimlenin3159 9 месяцев назад
Раньше не находил? )) слепой?)))
@makhsumbairamov939
@makhsumbairamov939 11 месяцев назад
link of github ?
@DIY_PLC
@DIY_PLC 11 месяцев назад
look in the channel description or write by email.
@ЧакФедоров
@ЧакФедоров 2 месяца назад
Отлично! Спасибо
Далее
Как Linux рисует окна?
48:46
Просмотров 45 тыс.
Дискретный вход для ПЛК.
23:17
Просмотров 1,1 тыс.
Microsoft Makes Windows Worse With AI
9:34
Просмотров 175 тыс.
RS485 и микроконтроллер
10:30
Просмотров 118 тыс.
Визитка программиста
19:40
Просмотров 94 тыс.