Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420

Библиотеки для эмуляции modbus

18.10.2018, 14:47. Показов 3052. Ответов 10

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Возникла необходимость эмулировать устройство modbus (не какое-то конкретное), которое сможет общаться по TCP/IP и RTU. Необходимо на запрос отвечать конкретными данными. Прошу посоветовать подходящие для этого дела библиотеки (в том числе коммерческие).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2018, 14:47
Ответы с готовыми решениями:

WINAPI для эмуляции нажатия клавиш
Здравствуйте, подскажите функцию WINAPI необходимую для нажатия клавиши, например "G". Гуглил, но не нашел.

Внести изменения в реестр для эмуляции Webbrowser
Здравствуйте. Необходимо установить для webbrowser использование 9-го режима ie. Я для этого создал .reg-файл со следующим содержанием: ...

Лучший вариант для работы с Modbus
Здравствуйте. Внезапно у меня появилась задача: организовать передачу данных от приложения с помощью Modbus по tcp/ip. Начал гуглить,...

10
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
19.10.2018, 11:48
https://github.com/rossmann-en... sServer.cs
https://www.youtube.com/result... bus+server
1
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
22.10.2018, 14:57  [ТС]
Woldemar89, спасибо. Но тут сразу нужна помощь)
Сделать клиент получилось без проблем, вот тут хорошие примеры: http://easymodbustcp.net/codes... bustcp-net
Но мне то нужно сэмулировать сам прибор, т.е. нужен сервер. Как я понял, это последний пример. Но увы, он вот так с ходу работать не хочет. Сразу же лезут сообщения, что компилятор не знает что такое MqttRootTopic, MqttBrokerAddress... Нужно подключить что-то ещё?

Добавлено через 10 минут
Удалил то, что скопировал и написал руками заново. Заработало о_о. Программистика какая-то...
Но что такое

C#
1
2
modbusServer.MqttRootTopic = "examplemodbusserver";
            modbusServer.MqttBrokerAddress = "www.mqtt-dashboard.com";
Так и не понял

Добавлено через 1 минуту
Да, и под "заработало" я имею в виду запустилось. В консоль ничего не выводится. Но клиент к серверу подключается.

Добавлено через 10 минут
Точнее нет, всё же и в консоле пишет. Ох, я уже сам запутался.
В общем, вы не могли бы мне просто разжевать пример, как отправить запрос на чтение, ну, пусть будет с 10 по 15 Holdin registers и ответить на это числами от 0 до 5?
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.10.2018, 15:02
Я этой приблудой не пользовался, и, к сожалению, времени у меня нет.
Смотрели Simulator?
https://github.com/rossmann-en... rSimulator
0
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
22.10.2018, 15:18  [ТС]
Получилось. Вот пример сервера и клиента, сделанные с помощью библиотеки EasyModbus:

Сервер:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Program
    {
        static void Main ( string [] args )
        {
            Program application = new Program ( );
            application.startServer ( );
        }
 
        public void startServer ( )
        {
            EasyModbus.ModbusServer modbusServer = new EasyModbus.ModbusServer ( );
            modbusServer.holdingRegisters = new EasyModbus.ModbusServer.HoldingRegisters ( modbusServer );
            modbusServer.holdingRegisters [ 5 ] = 99; //Для примера зададим одному из регистров конкретное значение
            modbusServer.Listen ( );
            Console.ReadKey ( );
            modbusServer.StopListening ( );
        }
    }
Клиент:
C#
1
2
3
4
5
6
7
private void button1_Click ( object sender, EventArgs e )
        {
ModbusClient modbusClient = new ModbusClient ( "127.0.0.1", 502 );
            modbusClient.Connect ( );
            int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters ( 0, 10 ); //Читаем регистры от 0 (первого) до 10
            int nRes = readHoldingRegisters [ 4 ]; //В этом элементе как раз будет наше значение 99 
}
0
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
09.11.2018, 15:10  [ТС]
Проблема вновь актуальна.
EasyModbus хоть и хороша, но как мне пояснили (Юридические тонкости при использовании библиотеки) из-за юридических особенностей, мне придётся делать код своего приложения открытым, или хотя бы предоставлять по запросу. Это неприемлемо.
Следовательно мне нужна другая библиотека.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
09.11.2018, 18:06

Не по теме:

FaceHoof, вы сурьезно? :D


Цитата Сообщение от FaceHoof Посмотреть сообщение
делать код своего приложения открытым, или хотя бы предоставлять по запросу. Это неприемлемо.
Следовательно мне нужна другая библиотека.
Вам не нужно предоставлять код вашего приложения, а нужно будет (да кому оно надо емае?...) предоставлять код вашей библиотеки.
Форкните EasyModbus под той же лицензией, перепишите как вам надо, она будет лежать в открытом доступе.
А своем приложении ее уже используйте, как вы это будете делать - никого волновать не должно.

https://habr.com/post/284390/
Вместе с GPL 3.0 вышла так же обновленная версия GNU Lesser GPL 3.0, которая продолжает отличаться тем, что позволяет использовать свободные библиотеки в закрытом ПО.
1
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
12.11.2018, 13:20  [ТС]
Woldemar89, бррр... до чего ж я "люблю" все эти... юридические штуки.
Так, т.е. единственное, что мне может потребоваться предоставлять - это код библиотеки, изменённый мной и то лишь при условии, что кто-то сильно заинтересуется и попросит, да?
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
12.11.2018, 13:31
Цитата Сообщение от FaceHoof Посмотреть сообщение
может потребоваться предоставлять - это код библиотеки, изменённый мной
Я не на все 100% уверен, но около 98%, что да, это максимум что может потребоваться.

https://github.com/rossmann-en... /README.md
EasyModbus is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Я бы на вашем месте форкнул либу на гитхабе, переписал, и использовал.

Цитата Сообщение от FaceHoof Посмотреть сообщение
лишь при условии, что кто-то сильно заинтересуется и попросит, да?
Ну это очевидно же, что да. (никому оно нафиг не надо я думаю)

Вам же советовали написать разработчикам в другой теме - по моему, это самый быстрый путь разобраться в вашим вопросом.
Вы им писали? Или хотите еще пару месяцев всех тут поспрашивать и в итоге сменить либу, как вы хотели?
0
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
12.11.2018, 14:19  [ТС]
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Вы им писали?
Ничего не ответили =/
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Или хотите еще пару месяцев всех тут поспрашивать и в итоге сменить либу, как вы хотели?
Ну блин, страшно всё это. Особенно если ну совсем не разбираешься)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
12.11.2018, 14:36
Цитата Сообщение от FaceHoof Посмотреть сообщение
страшно всё это
Ну, раз страшно, тогда внимательно изучайте readme.md и текст лицензии, я бы сделал как написал выше и не парил бы себе мозги, но, дело ваше, разумеется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2018, 14:36
Помогаю со студенческими работами здесь

Формирование байтов для ответа по Modbus
Здравствуйте. Мне нужно сформировать ответ на запрос по протоколу modbus (TCP/IP). Нашёл весьма простое описание как ответ должен...

Приложение для управления устройством по modbus RTU
Необходимо написать приложение для управления девайсом по modbus RTU. функция чтения 0х03, записи - 0х06 и 0х10. Не могу найти примеры как...

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

Вызов таймера для выполнение цикла функции в ModBus ASCII
Добрый день,столкнулся с проблемой есть код для отправки фрейма по COM-порту: private void bnt_Read_Click(object sender, EventArgs...

Программа для протокола MODBUS. С чего начать
Всех с новым годом. Решил не терять на праздниках времени и наклепать одну программку для протокола MODBUS. У нас в конторе много устройств...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru