Интерфейс RS-485 протокол MODBUS RTU.

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
Raider
Сообщения: 2
Зарегистрирован: 17 авг 2015, 15:02

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Raider »

Плюс 1 к сюрпризам от ОВНА! Если пожелаете считать данные со второго регистра по адресу 2 , вас постигнет неудача. ибо лежат данные по адресу 7, 3 - 13. Хотелось бы узнать, почему?
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Mr.Kubikus »

Привет!

Рад, что у вас все заработало.

По поводу доступа к данным по второму измерительному каналу (если я правильно понял ваш второй камент), то никаких сюрпризов тут нет. Надо внимательнее изучать документацию :) Карта регистров MODBUS подробно расписана в документе "МВА8. Руководство по эксплуатации" на страницах 51-53. Там хорошо видно, что один измерительный канал занимает в памяти 8 последовательных регистров. Соответственно первый канал - регистры 0-7, второй - 8-13 и т.д.
Raider писал(а):Плюс 1 к сюрпризам от ОВНА! Если пожелаете считать данные со второго регистра по адресу 2 , вас постигнет неудача. ибо лежат данные по адресу 7, 3 - 13. Хотелось бы узнать, почему?
Raider писал(а):Оч. полезная тема, от себя могу добавить по поводу вывода знаков после запятой:
valueFromSensor = (float)regs[1]/100.00;
C преобразователем собранном на ADM485 работает прекрасно!
С уважением, Григорий
GitHub FB ВК
Andrey_161
Сообщения: 1
Зарегистрирован: 15 июл 2016, 15:28

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Andrey_161 »

Подниму темку, а как с помощью этой библиотеки опрашивать несколько ведомых устройств?
Тима
Сообщения: 131
Зарегистрирован: 16 ноя 2012, 21:03

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Тима »

Andrey_161 писал(а):Подниму темку, а как с помощью этой библиотеки опрашивать несколько ведомых устройств?
В строке
modbus_construct(&packets[PACKET1], 1, READ_HOLDING_REGISTERS, 1, 1, 0);
выделенное красным - это адрес устройства. Настраиваешь в разных приборах разные адреса и обращаешься к каждому устройству по отдельности.
Тима
Сообщения: 131
Зарегистрирован: 16 ноя 2012, 21:03

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Тима »

Новая задача, подключиться к плк delta dvp-ss2.
Вот адресация регистров памяти:
1.png
1.png (44.54 КБ) 45414 просмотров
2.png
2.png (22.57 КБ) 45414 просмотров
Интересует чтение/запись регистров M и D. Если в предыдущих примерах в скетче мы задавали просто номер ячейки памяти, то теперь как это делать с приставками M,D?
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Mr.Kubikus »

Надо посмотреть документацию на ПЛК. Вполне возможно, что в ПЛК для каждой функции Modbus зарезервирован свой собственный блок памяти с собственным адресным пространством от 0 до N.
С уважением, Григорий
GitHub FB ВК
Тима
Сообщения: 131
Зарегистрирован: 16 ноя 2012, 21:03

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Тима »

Излазил доки на плк, так и не нашел ничего похожего. Может как-то не так искал? :o
Тима
Сообщения: 131
Зарегистрирован: 16 ноя 2012, 21:03

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Тима »

Накопал на форуме делты вот такую табличку:
Снимок31.PNG
Снимок31.PNG (89.33 КБ) 45411 просмотров
Может это то, что нам надо?
Тима
Сообщения: 131
Зарегистрирован: 16 ноя 2012, 21:03

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Тима »

Ещё вот такой документ нашел: Вроде то, что надо...
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Интерфейс RS-485 протокол MODBUS RTU.

Сообщение Mr.Kubikus »

Попробую ответить максимально последовательно. Ответ строю исходя из полученной от вас информации. Если я что-то понял не так, то поправьте. Итак:

Исходные данные:
1. У вас есть ПЛК Delta серии DVP-SS2.
DVP-SS2_L-a.jpg
DVP-SS2_L-a.jpg (13.01 КБ) 45403 просмотра
2. ПЛК подключен к шине RS485 и работает в режиме подчиненного устройства MODBUS-RTU
3. Вам надо передать данные из ПЛК из ячеек памяти D0000 - D4999 в ведущее устройство MODBUS.

Решение:
1. Вам надо скачать актуальную документацию на ваш контроллер - DELTA_IA-PLC_DVP-ES2-EX2-SS2-SA2-SX2-SE-TP_PM_EN_20181030.pdf
2. В этом документе на стр. 4-10 и 4-11 находится карта памяти контроллера DVP-SS2.
3. В таблице адресам ПЛК D0000-D4999 соответствуют адреса MODBUS 404097~440960.
4. Первая цифра 4 в адресе означает, что для обращения к памяти надо использовать функцию MODBUS 4 (Read Holding Registers) и указывать в качестве адреса значение, которое находится справа от цифры 4. Например для обращения к D0255 надо использовать функцию MODBUS и адрес MODBUS 4352 (4097+255).
2019-08-09-16_33_58-DELTA_IA-PLC_DVPa.png
2019-08-09-16_33_58-DELTA_IA-PLC_DVPa.png (12.47 КБ) 45403 просмотра
С уважением, Григорий
GitHub FB ВК
Ответить