Здравствуйте! Помогите разобраться с протоколом Modbus RTU, а именно:
1. Существует контроллер управления котлом КУК-02. Контроллер содержит коммуникационный порт ModBus Server: - физический уровень RS-485, двухпроводная линия; - канальный уровень MODBUS Serial Line в режиме RTU; - формат символа: 1 старт бит, 8 бит данных, младший бит передаётся первым, контроля чётности нет, 2 стоп бита; - скорости обмена 9600, 19200, 38400, 57600, 115200, 0.25М, 0.5М, 2М; - диапазон сетевых адресов 1...247. Поддерживаемые функции: 01, 02, 03, 04, 05, 06, 15, 16. Цифровые входы/выходы и регистры адресуются начиная с 0, т.е. регистр №1 имеет адрес 0000h. Полное описание: http://www.sktbpe.com/downloads/file/kuk2.pdf 2. Есть контроллер WinPAC WP-8441.
Необходимо получить данные с КУК-02 на WP-8441.
Создал проект, в источниках приёмниках компонент Modbus с функциями Rout_word (3). Задал в файле *.cnf ключ DEBUGON=200. Данные не приходят, а в логе такие сообщения:
Подскажите в чём может быть проблема?
Posted by Nico (Участник № / Member № 5342) on :
первый байт ответа контроллера должен совпадать с первым байтом запроса и = сетевому адресу
поскольку ответ "бредовый" то скорей всего: .провода ..не верная скорость или формат ...не RS485
для проверки можно запустить узел на PC
Posted by Avgorr (Участник № / Member № 2607) on :
Оборудование находится 25 км от города. Порт прослушать не получится. КУК-02 снять для эксперимента тоже нельзя. Несколько раз пытал монтажников, как они подключили, и какие настройки RS-485 выставили. Уверяют, что скорость 19200, адрес 1. Если в проекте для эксперимента изменить скорость RS на 4800, 9600, то в логе пишется тоже самое. Если поставить скорость 38400, то пишется чуть по другому:
Без перехвата трафика COM-порта, видимо, не обойтись. Проблема явно на физическом уровне. Самое простое - все-таки запустить тот же узел на ПК и запротоколировать обмен. При необходимости - с перехватом через PortMon.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Дополнительно следует провести следующий эксперимент с тем же протоколированием. На штатных настройках COM-порта, совпадающих с настройками в контроллере, изменить в проекте номер Modbus-устройства так, чтобы он не совпадал с Modbus-номером контроллера. Но наиболее убедительная диагностика будет получена при организации связи контроллера с ПК - запуском того же узла проекта на ПК.
Posted by Avgorr (Участник № / Member № 2607) on :
Изменяю адрес Modbus-устройства в источниках приёмниках на любой произвольный, а также больше 247 - протокол такой же "бредовый".
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Первый вариант - на линии RS-485 присутствует какой-то поток данных от устройства, подключенного к этой линии или шум вследствие несогласованности или неправильного монтажа физического канала RS-485 или питания его приемо-передатчиков. Контроллер WinPAC в данном случае получает не ответ от КУК-2, а ложный шум. Надо работать с линией RS-485. Второй вариант - брак в работе COM2 контроллера WinPAC. Надо проверить этот порт на подключении к другой линии. Если запустить тот же узел на ПК и подключить его к КУК-2, можео исключить гипотезу "возможного брака COM2 контроллера WinPAC".
Posted by Avgorr (Участник № / Member № 2607) on :
Спасибо. На следующей неделе поеду на объект.
Posted by Avgorr (Участник № / Member № 2607) on :
Вопрос решился. Оказывается на КУК-2 интерфейс обозначен: A,B, на WinPAC: +D,-D. Наладчики подключили A на +D, B на -D. Переделали наоборот и всё заработало. Тему можно закрыть. Спасибо.