|
1 / 1 / 0
Регистрация: 07.01.2013
Сообщений: 27
|
|
Приложение для управления устройством по modbus RTU21.01.2016, 06:57. Показов 29774. Ответов 24
Необходимо написать приложение для управления девайсом по modbus RTU. функция чтения 0х03, записи - 0х06 и 0х10. Не могу найти примеры как работать с modbus и в частности работы с этими функциями. Если есть у кого исходники или готовые проекты, ссылки где что почитать - поделитесь пожалуйста...
0
|
|
| 21.01.2016, 06:57 | |
|
Ответы с готовыми решениями:
24
Приложение для управления девайсом по протоколу Modbus RTU
Конфигурация modbus rtu для s1200 (TIA14) |
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 21.01.2016, 08:56 | |
|
Есть общая спецификация Modbus RTU, где оговорены, например, те команды, что ты привёл.
Есть спецификация Modbus для конкретного устройства - в каких регистрах что хранится. Дальше вопрос - какой канал обмена? Скорее всего у тебя RS-232 или RS-485, что для тебя почти одно и тоже. В обоих случаях надо использовать объект SerialPort. В итоге всё просто. Открываешь канал связи с нужными настройками. Формируешь массив байт, соответствующий нужной команде, передаёшь устройству и получаешь ответ.
0
|
|
|
1 / 1 / 0
Регистрация: 07.01.2013
Сообщений: 27
|
|
| 21.01.2016, 09:22 [ТС] | |
|
На компе стоит девайс RS-232 -> RS-485. Терминальной программой читаю с нужных регистров данные. Хотелось бы увидеть пример кода записи в нужный регистр_№ с помощью той же функции 0х10 числа signed int16
Опыт работы с SerialPort уже имеется.
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 21.01.2016, 09:35 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 07.01.2013
Сообщений: 27
|
|
| 21.01.2016, 14:02 [ТС] | |
|
Как вызвать функцию записи 0х10, С помощью терминальной проги я пробовал залить значения - ругается, так как записывать нужно именно этой функцией. Или вы предлагаете мне ее вручную , ручками писать ??
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 21.01.2016, 14:34 | |
|
Общее описание Modbus
Причём здесь терминальная программа? Передача осуществляется в байтах. Как правило пакет Модбас состоит из следующих частей: адрес устройства - 1 байт; код функции - 1 байт, в твоём случае 0х10, данные - много байт, контрольная сумма - как правило, 1 байт. Кажется стоит сказать, что вводя в терминальную программу запись "0х10" - по факту ты получаешь не 1, а, как минимум 4 байта - по байту на символ. Добавлено через 2 минуты И ещё, из своего опыта могу сказать, что спецификация Modbus не обязательный документ, более-менее стандартным будет только перечень команд и максимальная длинна одного пакета.
0
|
|
|
1 / 1 / 0
Регистрация: 07.01.2013
Сообщений: 27
|
|
| 28.01.2016, 07:56 [ТС] | |
|
Погуглил, посмотрел и почитал. Нашел видеоурок создания проекта в Visual Studio С# ModBus TCP.
Теперь что имеем: Скачал библиотеку, подключил ее через менеджер проекта (вот только не знаю , универсальная ли она, будет поддерживать ModBus RTU). Включаем в проект Serial Port, Указываем его рабочие параметры. На форму кидаем кн. захвата S.Port. если все ОК - едем дальше. А дальше - для меня темный лес до тех пор пока не найду примеры: - как работать с библиотекой Modbus, передать ей параметры Serial Port, читать и писать в нужные регистры (т.е. оправить и принять байты...
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||
| 28.01.2016, 08:57 | ||
|
EgorDS, не ты ли писал:
0
|
||
|
1 / 1 / 0
Регистрация: 07.01.2013
Сообщений: 27
|
|
| 28.01.2016, 09:29 [ТС] | |
|
1. Правильно ли я понял ? Если используешь библиотеку Modbus, то и порт RS настраиваешь и подключаешь через эту библиотеку ?
2. Если работать только через Serial Port, так же придется CRC вычислять отдельно ?
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||||||||
| 28.01.2016, 09:57 | ||||||||
|
Добавлено через 14 минут Вот мой класс формирования пакета Modbus.
getFirmCommand получает на вход адрес устройства, подкоманду (да, вот такой у нас протокол модбас) и нужные данные команды 0x42. Формируется массив байт, рассчитывается контрольная сумма. Полученный массив возвращается в вызывающий класс, который в последствии передаёт пакет данных в заранее настроенный и открытый порт.Добавлено через 2 минуты метод уже старенький, при желании его можно оптимизировать, но это значит выпускать новую версию программы, записывать в систему контроля версий, сдавать в архив. Оно того не стоит.
0
|
||||||||
|
1 / 1 / 0
Регистрация: 07.01.2013
Сообщений: 27
|
|
| 28.01.2016, 10:10 [ТС] | |
|
Вот тогда не понял такой момент: Передача данных Modbus начинается синхронизацией четырьмя стартовыми импульсами. Где эти импульсы формируются ? (программно в RS 232, или RS заливает байты в преобразователь 232-485, а тот формирует строб импульсы и потом шлет наши байты.. )
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 28.01.2016, 10:12 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 07.01.2013
Сообщений: 27
|
|
| 28.01.2016, 11:18 [ТС] | |
|
Уже не могу найти. Видимо вычитал когда искал инфу реализации masrer modbus для мк atmel. В перспективе хотел уйти от программы на PC и собрать свой контроллер который и будет управлять устройствами по RS-485. Хотел еще тогда узнать отслеживается ли "тишина" на линии перед передаче данных мастером ?
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 28.01.2016, 11:52 | |
|
EgorDS, Сначала реализуй что-то одно, потом приступай к другому, иначе будет каша в голове (как сейчас, например) и не получится вообще ничего.
"Передача данных Modbus начинается синхронизацией четырьмя стартовыми импульсами" - видимо подразумевалась установка высокого (или низкого) уровня на ноге микросхемы, через которую реализуется последовательный интерфейс. Догадки, конечно, но эта фраза чётко относится к аппаратной части и к софту (особенно на C#) никакого отношения не имеет.
0
|
|
|
1 / 1 / 0
Регистрация: 07.01.2013
Сообщений: 27
|
|
| 01.02.2016, 09:35 [ТС] | |
|
В общем почти во всем разобрался. Наперед такой вопрос. После запроса от мастера как правило выдерживается временная пауза (ожидание на ответ). Да и перед запросом наверное тоже надо отбить 3,5 фрейма (на тишину) и проверить что бы линия свободна была. первое что приходит в голову использовать Класс Timer (баловался уже с ним). Но быть может есть другие более эффективные методы, или я слишком усложняю ?
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
| 27.02.2018, 16:52 | |
|
Всем привет! Ребята, поделитесь пожалуйста примером функции 04, для чтения input registers и для записи функцией 06. Или может линк у кого есть интересный.
0
|
|
|
|
|
| 27.02.2018, 17:09 | |
|
Мог бы показать код, но он - верхушка айсберга, и вам нисколько не поможет.
Читайте описание протокола. https://ipc2u.ru/articles/pros... _analog_in
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||||||||||||||||||
| 28.02.2018, 13:17 | ||||||||||||||||||||||
0
|
||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 2
|
|
| 12.11.2018, 16:52 | |
|
Для адекватных людей, реализующих реальные задачи, а не абстрактные, и осиливших этот тред унылых зануд дарю ссылку:
https://sourceforge.net/projects/easymodbustcp/ Не мучайте себе всякой фигней предложенной вверху.
0
|
|
| 12.11.2018, 16:52 | |
|
Помогаю со студенческими работами здесь
20
Протокол Modbus RTU/ASCII для режима Slave Java библиотеки для Serial Master Modbus rtu
Modbus RTU - разобрать сформированный запрос к Slave Работа с Modbus RTU Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|