ModbusSlaveМоделирование
Автономное приложение для Windows, поддерживающее протоколы Modbus RTU, TCP, UDP и ASCIIoverRTU для моделирования.
Также включены версии Mono для Linux и Mac OS X, это версии VB Net, поэтому:
- Для Linux вам придется установить пакеты
mono-complete
и mono-vbnc
- Mac может отличаться в зависимости от версии OS X, возможно, следует установить
mono
и mono-basic
пакеты.
Если брандмауэр включен, он может предложить вам разрешить этому приложению обмениваться данными в сети:
- Обычно ему должно быть разрешено общение в частной сети, иначе он может работать неправильно.
- Не разрешайте публичный доступ, если вы не знаете, что делаете.
- После завершения тестирования не забудьте удалить это приложение из списка разрешенных приложений брандмауэра.
Приложение предназначено для одновременного запуска нескольких экземпляров приложения, например:
- Используйте один и тот же протокол для каждого экземпляра, но с разными номерами портов, например:
- IP 127.0.0.1 TCP-порт 501 и IP 127.0.0.1 TCP-порт 502
- Используйте сочетание различных протоколов с помощью других инструментов (например, com0com для протокола RTU в Windows).
Приложение должно обслуживать запросы для любого действительного идентификатора подчиненного устройства Modbus.
Все это основано на модифицированных библиотеках nModbus .NET 3.5, Copyright (c) 2006 Скотт Александер:
- Они включены в качестве ресурса для версии Windows, но являются отдельными для версии Mono.
Предназначен для использования в качестве инструмента быстрого тестирования:
- Можно протестировать с помощью аналога ModbusMaster (см. видео ниже)
- Или, возможно, вместо этого используйте программное обеспечение AdvancedHMI, поскольку оно очень функциональное и бесплатное.
Скриншот
Функциональность
- Все значения могут быть установлены до установления соединения — катушки, дискретные входы, входные регистры, регистры временного хранения.
- Представление «Сетка данных» изначально настроено на отображение 20 строк адресов, но его можно изменить в раскрывающемся списке
Row Count
, чтобы при необходимости отображалось больше или все строки. - В представлении сетки данных, выбранном с помощью раскрывающегося списка
I/O Address Range
, дважды щелкните значение, чтобы изменить его:- Логические значения будут меняться между 0 и 1.
- Для значений Uint16 требуется целое число без знака от 0 до 65535.
- Дискретные входы и входные регистры обеспечивают доступ к главному приложению
read-only
:- Устройство MODBUS, назначенное как
Master
может ТОЛЬКО отправлять запросы на чтение этих значений. - Этими значениями должен управлять пользователь непосредственно в симуляторе, иначе они не будут меняться.
- Катушки и регистры хранения обеспечивают доступ
read/write
к главному приложению:- Устройство MODBUS, обозначенное как
Master
может отправлять запросы на чтение этих значений, а также отправлять запросы на изменение этих значений. - При необходимости этими значениями пользователь также может манипулировать непосредственно в симуляторе.
- Для протоколов
RTU
и ASCIIoverRTU
на одном ПК этот симулятор может использовать:- Программа com0com для Windows для предоставления пар виртуальных последовательных портов
- Программа tty0tty для Linux для предоставления пар виртуальных последовательных портов
- Дополнительное текстовое поле позволяет вручную вводить последовательный порт:
- В основном предназначен для Linux, чтобы можно было получить доступ к парам виртуальных портов
tty0tty
, например /dev/tnt0
<=> /dev/tnt1
. - Это поле было удалено в версии Mac Mono.
- Библиотека также поддерживает запись по битам по маске, код функции 22 (0x16H или FC22).
Использование
-> Для Windows
- Либо используйте исполняемые файлы Windows из папки
exe
, либо следуйте инструкциям ниже, чтобы собрать их самостоятельно:- Загрузите и установите версию сообщества Visual Studio (в идеале 2019 года).
- Загрузите и распакуйте zip-файл этого проекта.
- Откройте это как существующий проект в Visual Studio и в меню выполните:
- Построить/Построить решение (или нажать Ctrl-Shift-B).
- Отладка/Начать отладку (или нажмите F5), чтобы запустить приложение.
- Найдите созданный EXE-файл в папке
/bin/Debug
и скопируйте его в предпочитаемую папку или на рабочий стол.
- Для тестирования протоколов RTU используйте com0com для создания виртуальных последовательных портов.
-> Для моно
- Убедитесь, что Mono установлено на вашем компьютере:
- Пакеты
mono-complete
и mono-vbnc
для Linux. - Для Mac вам, возможно, придется поэкспериментировать, возможно,
mono
и mono-basic
пакеты.
- Загрузите и распакуйте zip-файл этого проекта и найдите архив Mono в папке
Mono
. - Извлеките 4 файла и, возможно, переименуйте вновь созданную папку и/или exe-файл во что-то более короткое, если хотите (просто для ускорения навигации по терминалу).
- Откройте терминал, перейдите в папку и введите:
sudo mono ModbusSlaveSimulation.exe
:- На Mac вам может потребоваться переключиться на учетную запись суперпользователя
su
.
- Для тестирования протоколов RTU в Linux вы можете установить и использовать виртуальные порты tty0tty, в то время как на Mac более поздние версии OS X, похоже, имеют псевдотерминалы - пары устройств, таких как
/dev/ptyp3
и /dev/ttyp3
.
Примечание для пользователей Mac: это было протестировано на старом компьютере iMac G5 PowerPC с Mono v2.10.2. Наблюдалось странное поведение: приложение теряло фокус, что нарушало непрерывную связь TCP. Существует текстовое поле с красным крестиком, по которому вы можете щелкнуть, чтобы попытаться сохранить фокус (если после этого вы сделаете что-то еще, щелкните его еще раз). Поскольку я не могу проверить это каким-либо другим способом, вам остается поэкспериментировать.
Видео
Modbus.TCP.Communication.mp4
Лицензия
Лицензия MIT — см. также файл README.txt в папке «Ресурсы».
Товарные знаки
Любые торговые марки, прямо или косвенно упомянутые в этом проекте, принадлежат их владельцам.
Полезные ресурсы
Форум веб-сайта AdvancedHMI, еще один проект с открытым исходным кодом.