|
4 / 4 / 0
Регистрация: 18.07.2013
Сообщений: 382
|
|
Работа с Modbus RTU09.04.2015, 11:18. Показов 32310. Ответов 169
Метки нет (Все метки)
Есть некий модуль ввода/вывода, со своим адресом, дискретный и аналоговый сигнал поддерживает. RS-485 интерфейс, протокол MODBUS.
По СОМ порту передает данные на ПК. Нужно написать приложеньеце, которое будет подключать с СОМ порту определенному, находить по адресу модуль, соединяться с ним и считывать с него и посылать на него данные. Хочу понять с чего мне начать. Немного владею Delphi и хочу в ней написать простую программку. Подключение к модулю, считывать и посылать на него сигнал. Горит. Добавлено через 3 часа 2 минуты Кто нибудь, подскажите алгоритм хотя бы, пожалуйста?!
0
|
|
| 09.04.2015, 11:18 | |
|
Ответы с готовыми решениями:
169
Работа с контроллером производительности нории КПН-4М по Modbus RTU over RS-485 Получить измеренное значение датчика давления (АИР-20/М2-МВ) по Modbus RTU
|
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
|
| 09.04.2015, 15:35 | |
|
В сети есть документация на протокол MODBUS. Если что, у меня есть описание на английском, могу поделиться.
Ваша программа будет выступать мастером, устройство слейвом. Вам скорее всего потребуется реализовать только функции 4 для чтения и 16 для записи. В документации дан алгоритм формирования пакетов. Согласно этому алгоритму формируете пакет. Далее его нужно послать в COM-порт и потом принять ответ. Для этого в сети есть компоненты для работы с COM-портом. После того как пакет принят по алгоритму, описанному в документации, делаете разбор. Чтобы устройство с RS-485 подключить к компьютеру нужен конвертер аппаратный RS-485/RS-232. Собственно всё ![]() Добавлено через 6 минут Ещё ... чтобы работать с устройством, нужно конечно знать карту modbus-адресов его регистров.
2
|
|
|
Почетный модератор
|
||
| 09.04.2015, 16:12 | ||
|
вот здесь, https://www.cyberforum.ru/asutp/ в закрепленных темах.
1
|
||
|
4 / 4 / 0
Регистрация: 18.07.2013
Сообщений: 382
|
|
| 10.04.2015, 07:57 [ТС] | |
|
В мануалах на приборы все регистры расписаны, там все ясно.
Данные считываю с 4х00000, а посылаю на 0х00000. В ОРС уже посылал и принимал, через скаду управление проходит на ура.
0
|
|
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
|
| 10.04.2015, 10:11 | |
|
Вот пример простой программки modbus-мастера (RTU, TCP) с исходниками:
ModbusTests.zip Проверял под Delphi 2009 и 7. Правда там всё самописное, и работа с COM и с MODBUS, работа с TCP идёт через synapce. Работа с COM идёт в синхронном режиме, поэтому в идеале всю работу с устройством желательно перенести во второй поток (пример однопоточный).
3
|
|
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
|
| 10.04.2015, 10:15 | |
|
И ещё ... в примере используется адресация как самом протоколе, т.е. то что указывается в окне будет и в модбас-посылках.
2
|
|
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
|
| 10.04.2015, 10:35 | |
|
1
|
|
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
|
| 10.04.2015, 10:36 | |
|
Никаких дополнительных компонент устанавливать не требуется.
1
|
|
|
4 / 4 / 0
Регистрация: 18.07.2013
Сообщений: 382
|
|||||
| 13.04.2015, 08:18 [ТС] | |||||
|
Протестил программу на дискретном модуле в/в с адресом 12. Что-то считалось, но записать на DO_0-DO_7 так и не получилось. Ставил все 8 Аутпутов в "единицу", загружал тестовую программку и так не увидел по данным регистрам все 8 единиц подряд.
А с аналогового модуля так и не получилось ничего даже считать (адрес 11). Посмотрите пожалуйста таблицу соответствия адресов на дискретный модуль. Все делал по ней, по этой таблице. Вопрос. Как в этой программку задать номера регистров?
P.S. Имеется ОРС сервер фирмы инсат, на нем тестил, все получалось - это для утверждения, то что все правильно. Может это программка не доделана?
0
|
|||||
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
|
| 13.04.2015, 08:51 | |
|
Программа предназначена для тестирования. С удобством и функциональностью я в ней не заморачивался
![]() При чтении регистров (2-х байтных) в запросном модбасном пакете передаётся: начальный адрес регистров и кол-во регистров. Этим полям пакета соответствуют поля в программе (один к одному): "Адрес регистров" (в окне в десятичном виде) и "Кол-во регистров". То что будет считано отобразится в таблице, т.е. в таблице будут значения 2-х байтовых регистров. Чтобы преобразовать значения регистров в требуемый вид там добавлены специальны кнопки.
0
|
|
|
4 / 4 / 0
Регистрация: 18.07.2013
Сообщений: 382
|
|
| 13.04.2015, 09:01 [ТС] | |
|
0
|
|
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
|
| 13.04.2015, 09:01 | |
|
Программа доделана и опробывалась с "железом". Тоже всё нормально. Просто программа сделана именно по протоколу один к одному. Т.е. я её не делал, чтобы с ней было удобно работать с разным железом, она сделано чтобы было удобно работать именно с протоколом
Например в программе используется адресация как в протоколе, т.е. регистровая. В железе может быть например байтовая адресация. Читать и писать регистры можно разными функциями (терминология протокола). В программе функции для чтения и записи задаются.
0
|
|
|
4 / 4 / 0
Регистрация: 18.07.2013
Сообщений: 382
|
|
| 13.04.2015, 09:03 [ТС] | |
|
0
|
|
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
|
| 13.04.2015, 09:16 | |
|
Например, у нужно считать 4 байта (float) с адреса 0x32 . Если адресация регистровая, то в программе нужно задать адрес 50 (=0x32) и кол-во регистров 2. Если адресация байтовая, то в программе нужно задать адрес 25 (=0x19) и кол-во регистров так же 2.
Добавлено через 8 минут Закончу пример... После того как регистры считали жмём кнопку "Взять и регистров" там где написано float. После этого в поле ввода мы получим наше значение.
0
|
|
|
4 / 4 / 0
Регистрация: 18.07.2013
Сообщений: 382
|
|||
| 13.04.2015, 16:06 [ТС] | |||
|
Загрузил MOD_RSsim через эту прогу эмулирую сигнал. Получается программа считывает с Holding Registers, а как считывать с Coil или Input я так и не понял. Надо что-то в программе менять? Добавлено через 26 минут
0
|
|||
|
|
|||
| 13.04.2015, 16:31 | |||
Кидаться в компонентное программирование тоже рановато. Да и первая же ссылка в моем посту дает монитор-запросчик Modbus RTU без компонентов.
Но вот незадача: 1- в теме Modbus library over TCP/IP for C#/Delphi/Lazarus/PHP/Python уже приложен полный архив с примерами, инструкцией по установке. Делаем вывод, что вы не читали то, что скачали. 2- в текущей теме вам нужен Modbus RTU по Serial интерфейсу, в той теме для Modbus TCP. Вы не видите между ними разницы?
0
|
|||
|
52 / 52 / 7
Регистрация: 23.08.2013
Сообщений: 123
|
||
| 14.04.2015, 06:43 | ||
|
Вам на самом деле желательно более глубоко ознакомиться с протоколом, чтобы что-то пониматься, без этого никак, благо описания имеются...
0
|
||
|
4 / 4 / 0
Регистрация: 18.07.2013
Сообщений: 382
|
|||
| 14.04.2015, 08:10 [ТС] | |||
|
Разницу между Modbus RTU и Modbus TCP вижу ту, что в RTU нужно проводить проверку на наличие ошибок, а TCP протокол сам делает это. Добавлено через 2 минуты
0
|
|||
|
|
|||
| 14.04.2015, 13:06 | |||
0
|
|||
| 14.04.2015, 13:06 | |
|
Помогаю со студенческими работами здесь
20
Modbus TCP. Работа с регистратором РМТ-59
ADAM-4017+. 8-канальный модуль аналогового ввода с поддержкой протокола Modbus (подключение и работа) Работа по Modbus RTU с ПЛК Intellisys из своих приложений Работа с модулем ICP DAS I-8831 по Modbus RTU Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|