112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
|
|
1 | |
Эмуляция Modbus18.09.2018, 14:16. Показов 5972. Ответов 11
Здравствуйте.
Есть необходимость создать эмуляцию устройства Modbus. Ну т.е. чтобы к нашему приложению можно было обратиться по этому протоколу и, на пример, запросить информацию по определённым регистрам, а мы могли это обработать и ответить. Внезапно у меня совсем не выходит нагуглить ничего подобного. Есть множество гайдов о том, как подключиться к устройству, но не как его сэмулировать. Рад буду всему, и ссылке на полезные статьи и конкретным примерам.
0
|
18.09.2018, 14:16 | |
Ответы с готовыми решениями:
11
Modbus CRC 16 Modbus Файл по Modbus Modbus через RS-485 |
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
|
|
18.09.2018, 14:44 | 2 |
Первым делом, наверное, надо определиться что за устройство будете эмулировать — Modbus ведь протокол общего назначения.
Если определились, то начинайте читать документацию: Спек протокола Реализация для последовательного порта Реализация для TCP/IP Реализация клиентской и серверной частей После чего составляете список функционала, который поддерживает эмулируемое вами устройство (или придумайте свое) и пишете реализацию.
3
|
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
|
|
18.09.2018, 15:24 [ТС] | 3 |
kolorotur, за мануалы спасибо!
Но вот какое устройство... Да понятия не имею) Есть прибор вполне реальный, который общается со службой, которая раз в минуту берёт с него данные и сохраняет в файлик. Прибор находится в изолированной части сети и доступ к нему никто кроме службы не имеет. Нужно чтобы эта самая служба сама "стала прибором". По сути надо передавать пять чисел float по сети Modbus (tcp/ip). И вот я даже не знаю как это назвать то по человечески и что мне нужно...
0
|
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
|
|
19.09.2018, 10:07 [ТС] | 4 |
Ещё актуально.
Я понимаю, что скорее всего прошу сам незнама чего. Но вот прочитал я про протокол и я понятия не имею, как мне работать с данными на таком низком уровне. Я вообще надеялся, что мне тут посоветуют какую-то библиотеку, на пример, а так... Я вообще не понимаю с чего начать. Вот пришёл нам какой-то запрос по сети Modbus (tcp/ip), как его "поймать", распознать, определить какую команду шлют? В общем, нужен хоть какой-то пример, а то я просто не понимаю с чего мне начинать.
0
|
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
|
||||||
19.09.2018, 12:40 [ТС] | 5 | |||||
И так, вот к чему я пришёл на данный момент: в службе я сделал простую слушалку на сокетах и пытаюсь к ней обратиться по протоколу Modbus. Для этого использую библиотеку nModbus4. Вот приложение, которое обращается к службе:
P.S. Или хотя бы скажите, иду я в правильном направлении или фигнёй какой-то страдаю?
0
|
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
|
||||||
19.09.2018, 13:52 [ТС] | 6 | |||||
Попытался пообщаться со своей службой с помощью утилиты Modbus Master Tool. Но увы, даже подключиться не выходит, я явно отвечаю что-то не то=(
Добавлено через 57 минут Попробовал сформировать уже ответ руками:
0
|
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
|
|
20.09.2018, 13:05 [ТС] | 7 |
Ещё актуально. Пока так и не понял, почему в ответ 0 байт.
Добавлено через 2 часа 49 минут Использовал другую утилиту Modbus TCP client, вот она ответ получает корректно.
0
|
1 / 1 / 0
Регистрация: 08.04.2015
Сообщений: 9
|
||||||||||||||||
22.10.2018, 21:08 | 8 | |||||||||||||||
вот как то так в таком формате приходят тебе данные ответить нужно так же только вместо адреса регистра свои данные и количество регистров опускаешь. Если корректно в Modbus TCP client то порядок байт надо поменять в программе и твои заработают
1
|
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
|
|
22.10.2018, 21:24 | 9 |
Вобще ModBus устройства бывают разные и спрашивать у них можно как минимум четыре команды. Так что нужно для начала знать какого типа устройство и какие на ней контакты. И в зависимости от этого принимать данные. А вообще зачем эмулировать устройство?
0
|
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
|
|
23.10.2018, 09:29 [ТС] | 10 |
Очень долго объяснять, но если опустить подробности: устройство закрыто от остальной сети, к нему доступ имеет только один компьютер, который для сети уже видим. Но общаться с устройством надо, поэтому надо его же сэмулировать на компьютере.
Но в общем задачу я решил с помощью библиотеки EasyModbus: Библиотеки для эмуляции modbus
0
|
1 / 1 / 0
Регистрация: 08.04.2015
Сообщений: 9
|
|
23.10.2018, 15:09 | 11 |
Зачем эмулировать??? шлюз без понтов пишется за пол часа с перекурами по 15 минут.
0
|
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
|
|
23.10.2018, 15:46 [ТС] | 12 |
Чтобы полностью ответить на этот вопрос мне придётся написать целую стену текста. Как бы сократить...
Короче, это самое устройство, которое не видно для остальной сети, может быть заменено другим почти таким же устройством, но не умеющим работать по Mudbus и с ним будет общаться только этот один компьютер. Всю эту схему придумывал не я, задачу поставил тоже не я, а куда более умные люди. Так надо, короче)
0
|
23.10.2018, 15:46 | |
23.10.2018, 15:46 | |
Помогаю со студенческими работами здесь
12
Как работать с modbus tcp? Проблемы с подключенияем по Modbus TCP Использование классов в modbus TCP Передать дробное число по modbus Формирование байтов для ответа по Modbus Лучший вариант для работы с Modbus Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |