PDA

Просмотр полной версии : Передача данных c СПК207 по протоколу Modbus RTU



Maria
01.03.2016, 14:08
Здравствуйте!
Мне необходимо осуществить передачу данных с СПК207 на верхний уровень по протоколу Modbus RTU. Я осуществляла данную задачу, как с помощью стандартного конфигуратора, так и с помощью библиотеки Modbus-slave. И в том и в другом случае данные передаются, но тестер Modbus при этом считывает только 27 регистров. Если поставить длину, большую 27, выдается ошибка. В проекте я передаю посылку, большую, чем 27 регистров. Кроме того, я использовала данный тестер при работе с другими контроллерами и с его помощью удавалось считывать посылку длиной до 124 регистров.

Maria
02.03.2016, 13:09
Возможно существует какая-то дополнительная настройка, которую я не нашла в документации?
Теперь я пытаюсь считать данные из COM порта с помощью SCADA системы. Результат тот же самый, что и при считывании данных тестером Modbus: получить данные удается только при запросе 27 регистров и менее; при запросе SCADA системой 28 регистров в посылке приходят нули.

capzap
02.03.2016, 13:12
осталось дождаться когда Вы проект выложите, чтоб узнать в чем же на самом деле проблема

Maria
02.03.2016, 13:48
https://yadi.sk/d/DxbdyQ6lpqt4G
22933
22934

capzap
02.03.2016, 14:17
попробуйте указать ADR(MB_Buffer[1])

видимых ошибок вроде нет

Maria
02.03.2016, 14:45
Происходит тоже самое.

capzap
02.03.2016, 14:57
можно еще попробовать, вместо sizeof поставить константу 127, больше всё равно нельзя с регистрами работать в одном запросе

Maria
02.03.2016, 15:32
Попробовала поставить и 124 и 127, все равно читает только 27 регистров. Возможно это с какими-то аппаратными ограничениями связано.
В посылке в 28 регистре значение отображается, но кажется, перед CRC еще лишний байт появляется.
22940

capzap
02.03.2016, 16:08
смотрите на третье красное число, оно говорит что в посылке отправлено 56 байт и за ними должна следовать CRC, если тестер не контролирует CRC то должен отображать всю полученную инфу, если же контролирует, то ответ не должен засчитываться и вобще ни чего не должно было отобразиться, найдите другого мастера

Maria
02.03.2016, 16:32
Я считала, что CRC - это последние 2 байта в посылке.
А по поводу другого мастера, я еще скадой пытаюсь считать данные со всеми Вашими рекомендациями, все равно может считать не больше 27 регистров.

capzap
02.03.2016, 16:45
Я считала, что CRC - это последние 2 байта в посылке.
А по поводу другого мастера, я еще скадой пытаюсь считать данные со всеми Вашими рекомендациями, все равно может считать не больше 27 регистров.

тогда остается одно, косяк в библиотеке

Maria
02.03.2016, 16:53
Может быть кто-то еще с этим сталкивался?
Это получается может быть не очень удобно, если нужно передать на верхний уровень большую посылку: в 4 раза больше запросов придется делать.