Форум программистов, компьютерный форум, киберфорум
АСУ ТП, промэлектроника
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
5 / 5 / 0
Регистрация: 25.06.2017
Сообщений: 586

Приложение VBA Excel: обращение к Slave-устройству по протоколу Modbus RTU через порт RS485

07.06.2024, 14:07. Показов 13198. Ответов 79
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня Уважаемые.
Прошу оказать консультативную помощь в создании приложения Master-устройства для общения со Slave-устройством по протоколу Madbus RTU, через порт RS485, с помощью Vba Excel.
Спасибо _________ Юрий.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.06.2024, 14:07
Ответы с готовыми решениями:

Приложение для управления девайсом по протоколу Modbus RTU
Здравствуйте! Необходимо написать приложение для управления источником постоянного тока по протоколу Modbus RTU. Канал обмена RS-485. ...

STM32F103 подключение через UART-RS485 счетчик Modbus RTU не отзывается
Электрически все подключается через UART2->конвертер-RS485->счетчик 1. Проверка счетчика через ПК->USB-конвертер-RS485->счетчик,...

Нет связи между модулем ввода (modbus rtu slave) и программой modbus poll на ноутбуке
Добрый день форумчанам. Сконфигурирован модуль modbus rtu slave в Ovation system. Опыт работы с modbus rtu master в овации есть, со slave...

79
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
20.06.2024, 17:55
Студворк — интернет-сервис помощи студентам
Юрий_Нд, С какой периодичностью вам желательно посылать запросы через порт?
0
5 / 5 / 0
Регистрация: 25.06.2017
Сообщений: 586
20.06.2024, 23:50  [ТС]
Как говорится, спасибо за вопрос.
Желательно запросы отправлять с периодичностью, примерно одну минуту. Тут точность большого значения не имеет, даже если это будет плюс-минус 30 секунд или больше.
Но мне хотелось бы, чтобы после получения ответа, приходило сообщение от системного таймера, с сообщением времени, чтобы можно было определить время, когда был направлен ответ. Именно здесь время имеет более важное значение. Желательно, плюс-минус пару секунд.
--------------------
п.с. Да, не знаю насколько это важно, но в одном пакете запросов будет порядка тридцати штук регистров, которые нужно будет отпросить.
0
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
21.06.2024, 08:32
Чтобы не подключать осциллограф, можно использовать программы-снифферы, например:
https://freesoft.ru/windows/fr... f8db840200
При работе вы увидите такую картинку:
Рабочий файл во вложении. Нажимаете на кнопку "Открыть порт", затем "Отправить массив". Массив будет отправлен через порт "СОМ1", после чего порт будет закрыт.
Миниатюры
Приложение VBA Excel: обращение к Slave-устройству по протоколу Modbus RTU через порт RS485  
Вложения
Тип файла: rar Книга2.rar (25.3 Кб, 21 просмотров)
1
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
21.06.2024, 21:29
Только что заказал себе адаптер USB - Rs485:
https://aliexpress.ru/item/100... 3192423023
Предположительно, чип FTDI.
1
5 / 5 / 0
Регистрация: 25.06.2017
Сообщений: 586
21.06.2024, 21:32  [ТС]
С гальванической развязкой?
0
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
21.06.2024, 21:39
Описание чипа:
https://ftdichip.com/wp-conten... ish-R2.pdf
На Алиэкспрессе навалом. С разными чипами.
1
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
03.07.2024, 19:19
Получил конвертер. Win 7 чип не определила. Скачал драйвер отсюда:
https://voltiq.ru/ftdi-driver-windows-7-10/
Установил. Всё работает.
1
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
08.07.2024, 17:04
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Т.е. считал 2 регистра (4 байта) в переменную.
У меня будет приёмный буфер. Надо не только переставить байты местами, но и как-то занести их в переменную типа Double.
И вот схема подключения датчика к контроллеру:
Миниатюры
Приложение VBA Excel: обращение к Slave-устройству по протоколу Modbus RTU через порт RS485  
0
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
13.08.2024, 19:16
Долго искал реализацию. Примеры в интернете так себе. Что-то похожее на нужное, нашёл тут:
https://www.dmcinfo.com/latest... bus-device
Получилось, но не без странностей. При открытии файла Excel и запуска скрипта, первое считывание возвращает "0". Потом всё работает. И первое получение даты, возвращает ерунду.
Надо подумать.
В архиве схема соединения Arduino, файл Excel, библиотека для Arduino, скриншоты.
Миниатюры
Приложение VBA Excel: обращение к Slave-устройству по протоколу Modbus RTU через порт RS485  
Вложения
Тип файла: zip Modbus.zip (372.8 Кб, 33 просмотров)
2
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
15.08.2024, 16:13
Доработал программу. Теперь работа в цикле с проверкой и индикацией принятого и вычисленного CRC16.
Вложения
Тип файла: zip Книга4.zip (30.2 Кб, 29 просмотров)
2
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
18.08.2024, 08:49
Устранил ошибки в обоих файлах. "Книга3.xlsm" запрашивает Slave по нажатию кнопки, "Книга4.xlsm" опрашивает в цикле через каждую минуту. Параметры настроек порта и времени опроса можно менять в скрипте VBA.
Осталось, либо найти реальный прибор, либо доработать Arduino.
Миниатюры
Приложение VBA Excel: обращение к Slave-устройству по протоколу Modbus RTU через порт RS485  
Вложения
Тип файла: zip 2 книги Excel.zip (58.4 Кб, 54 просмотров)
1
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
18.02.2025, 14:19
Юрий_Нд, появился прибор ТРМ138 "ОВЕН". Подключен через АС4 того же производителя.
Сделал для вас файл в Excel 2016 64-бит. Опрашиваю с периодичностью 10 мин. три канала из восьми. Команда и адреса регистров взяты из ИЭ. Всё можно изменить под вашу задачу. Делал быстро. Нет проверки контрольной суммы ответа прибора. Из кода легко понять, как это сделать. Проверяю только второй байт ответа. Если прибор не может выполнить команду, то в ответе, взводится старший бит.
На 32-битном Excel это работать не будет, надо менять декларации.
Вложения
Тип файла: zip ТРМ138.zip (40.7 Кб, 26 просмотров)
2
0 / 0 / 0
Регистрация: 23.09.2025
Сообщений: 14
07.10.2025, 11:28
Спасибо за файлик для ТРМ-138, очень пригодился.
Добавил недостающие 5 каналов и изменил периодичность опроса до 1 раза в 20 минут.
Остальные настройки не менял.
Периодически выскакивают "глюки" в виде копирования значения температуры предыдущего канала на одном из 8. Например значение температуры на 2 канале показывает такое же как и на первом, а остальные норм, или 8-й "задвоен" с 7-мым. При этом на самом приборе все ОК. Частота появления "глюков" увеличивается с течением времени. Если в течении 8 часов - 2-3 раза, то далее к 16-18 часам - чуть ли не раз в час.
В чем может быть дело?
Excel 2019, конвертер ICPCON i-7561.
Еще вопрос - почему Вы берете значение вычислителя, а не измерителя?
Возможно ли "прикрутить" к данному файлику МКОН WiFi от того же самого "ОВЕН"?
0
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
07.10.2025, 12:01
Цитата Сообщение от demin_vm Посмотреть сообщение
Периодически выскакивают "глюки" в виде копирования значения температуры предыдущего канала на одном из 8. Например значение температуры на 2 канале показывает такое же как и на первом, а остальные норм, или 8-й "задвоен" с 7-мым. При этом на самом приборе все ОК. Частота появления "глюков" увеличивается с течением времени. Если в течении 8 часов - 2-3 раза, то далее к 16-18 часам - чуть ли не раз в час.
В чем может быть дело?
Странно. У меня программа на VB 6.0. Работает нормально. На VBA Excel написал по просьбе топикстартера. Может проблема в том, что офис 64-х разрядный.
Цитата Сообщение от demin_vm Посмотреть сообщение
Еще вопрос - почему Вы берете значение вычислителя, а не измерителя?
Честно говоря, просто так захотелось. Я не определил, как влияет корректировка измерительных каналов на измеритель, и на вычислитель. Можете считывать с измерителя.
Цитата Сообщение от demin_vm Посмотреть сообщение
Возможно ли "прикрутить" к данному файлику МКОН WiFi от того же самого "ОВЕН"?
Судя по описанию на сайте, должно получиться. Но лучше спросить у производителя. На сайте "ОВЕН" есть форма для вопросов. Отвечают нормально.

Опрос прибора можно сделать на любом ЯП. Ничего сложного нет.
1
0 / 0 / 0
Регистрация: 23.09.2025
Сообщений: 14
07.10.2025, 12:21
Сейчас вылез еще один "глюк". Не зафиксировал значения по прошедствии 20 мин...
0
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
07.10.2025, 12:24
У вас установлена IDE VB 6.0?
Если да, то в моём блоге сможете скачать исходник программы:
https://www.cyberforum.ru/blogs/1083385/10591.html
1
0 / 0 / 0
Регистрация: 23.09.2025
Сообщений: 14
07.10.2025, 12:35
Нет. Только то, что работодатель закупил. Больше ничего. Из соображений безопасности больше ничего не поставить без админов.
Так что мучаем Excel.

Добавлено через 5 минут
Цитата Сообщение от Argus19 Посмотреть сообщение
Честно говоря, просто так захотелось. Я не определил, как влияет корректировка измерительных каналов на измеритель, и на вычислитель. Можете считывать с измерителя.
Если к входам ничего не подключено, то там рандомные значения выскакивают. С подключенным датчиком - все ОК. На измерителе всегда все ОК, там где нет датчика - значение "0".
0
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
07.10.2025, 12:39
Цитата Сообщение от demin_vm Посмотреть сообщение
Так что мучаем Excel.
Можно скачать ученическую версию Visual Studio. Она бесплатна. Комиссии нервничать не будут.
В Excel замените строки в функции RxTx:
Visual Basic
1
2
3
4
5
'Проверка CRC16 принятого фрейма
If rd = 0 Then Exit Function
CRC16p = CRC_16(bRead, rd - 2)
 
If bRead(2) > 4 Then errs = True
на
Visual Basic
1
2
3
4
5
6
7
'Проверка CRC16 принятого фрейма
If rd = 0 Then Exit Function
CRC16p = ModRTU_CRC(bRead(1), rd - 2)
If Hex(CRC16p Mod 256) <> Hex(bRead(rd - 1)) Or Hex(CRC16p \ 256) <> Hex(bRead(rd)) Then
 errs = errs + 1
 Form1.Label5.Caption = errs
End If
И в строке:
Visual Basic
1
If rd = 0 Then Exit Function
допишите реакцию. Типа, вывода информации куда-либо. Например, в следующую ячейку. Суть строки: если от устройства не принято ни одного байта, то выход из функции.
Во втором коде вычисляется CRC16, которая должны быть и сравнивается с реально переданным.

Если сбои из-за того, что массив байт от прибора не принимается, проверить линию связи: длина, заземление экрана в одной точке, наличие терминального резистора.
1
0 / 0 / 0
Регистрация: 23.09.2025
Сообщений: 14
07.10.2025, 12:44
Спасибо. Сейчас попробуем.
0
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,570
Записей в блоге: 26
07.10.2025, 12:51
Я работаю в условиях сильных промышленных помех, поэтому, ставлю скорость обмена не более 9600 б\с.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2025, 12:51

Обращение к modbus устройству через TCP протокол
Добрый день, написал TCP клиент, все работает. Подскажите пожалуйста как обратиться к устройству с командой &quot;01 03 00 2e 00 01 e4...

Modbus RTU - разобрать сформированный запрос к Slave
Добрый день Не могу разобраться с работой modbus rtu что значит запрос 024600e260? 02 - номер модуля 46 - функция и нет нигде...

Как правильно реализовать протокол Modbus slave RTU?
Появилась задача: работать с реальным прибором по протоколу Modbus RTU с помощью файла Excel. Реального прибора нет, а покупать его за...

Протокол Modbus RTU/ASCII для режима Slave
Здравствуйте! Стоит задача реализовать протокол Modbus ASCII/RTU для режима Slave на Си. Программа modbus_tester будет опрашивать...

Мой вариант реализации Modbus Slave RTU/ASCII на Arduino
Простая библиотека Modbas Slave для микроконтроллеров Arduino Здесь есть описание и видео обзор ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru