Привет всем, столкнулся с проблемой коммуникации между Arduino (Master) и Modbus RTU(Slave). Задача поставлена так : Считывать дата с электромагнитного расходометра Promag P 300 и выписывать значения в консоль. Не могу найти проблему и как её решить, либо она в коде либо в настройке регистров.
Расходомер подключен через модуль Rs 485 к ардуино.
Для определения регистра использовал DataSheet:
@SSaienko
так какой адрес регистра правильный - 5053 или 0х5053 ? - это как бы очень большая разница
И еще, секция даташита 7.5.1 указывает, как менять адрес девайса. Если адрес не менять, по умолчанию все девайсы имеют Модбас адрес 247. Что-то я не вижу в коде, чтобы вы обращались к девайсу по такому адресу.
Вы точно знаете, что ваш сенсор имеет адрес 1 ?
Уверен на сто процентов так как этот адрес настраивается непосредственно на расходометре мануально,247 адресов быть не может, ниже прикреплю фото из datasheet:
На счет адреса регистра ссылаясь снова на даташит:
так как адрес 1 то регистр должен быть 5053, но прочитав описание библиотеки Modbus Master
и посмотрев несколько видео по этому поводу одни пишут 0x5053 другие 5053
// set word 0 of TX buffer to least-significant word of counter (bits 15…0)
node.setTransmitBuffer(0, lowWord(i));
// set word 1 of TX buffer to most-significant word of counter (bits 31…16)
node.setTransmitBuffer(1, highWord(i));
// slave: write TX buffer to (2) 16-bit registers starting at register 0
result = node.writeMultipleRegisters(0, 2);
// slave: read (6) 16-bit registers starting at register 2 to RX buffer
result = node.readHoldingRegisters(2, 6);
// do something with data if read is successful
if (result == node.ku8MBSuccess)
{
for (j = 0; j < 6; j++)
{
data[j] = node.getResponseBuffer(j);
}
}
}`
не вижу здесь дефиниции пинов на которые нужно подключить модуль к ардуино
The device offers a special memory area, the Modbus data map (for a maximum of 16 device parameters)
…
Carried out using the operating menu of the measuring device:
Expert → Communication → Modbus data map → Scan list register 0 to 15
И, раз уж регистры в таблице приведены в десятичной форме, то и адреса тоже должны быть в таковой.
Проблема в том что это дипломная работа и я в основном работал на ПЛК но из-за длительного ожидания на доставку ПЛК мне сказали сделать его на ардуино с которым так каковом особо не работал.
Это само собой было на что ответ получил такой “Вы же хотите закончить университет?”. Поэтому и обращаюсь к небезразличным людям которые могут помочь в решении данного вопроса и написания кода.
Сдается мне вы не понимаете о чем пишете.
Вы путаете три разных числа - число регистров, адрес регистра и адрес девайса.
Еще раз - прочитайте раздел 7.5.1 даташита. Адрес вашего расходомера по умолчанию 247:
The device address must always be configured for a Modbus slave. The valid device
addresses are in the range from 1 to 247. Each address may only be assigned once in a
Modbus RS485 network. If an address is not configured correctly, the measuring device is
not recognized by the Modbus master. All measuring devices are delivered from the
factory with the device address 247
И нах…й нужен такой “специалист” ?
Дети в школе роботов программируют в хвост и в гриву !!!
Постыдился бы плакаться …
Нет ума - готовь бабло в теме Ищу исполнителя !