11.05.2018, 11:52 | #1 |
Senior Member
Регистрация: Jan 2015
Сообщения: 116
Благодарил(а): 2 раз(а)
Поблагодарили:
2 раз(а) в 1 сообщении
|
Modbus опрос
Добрый день. На объекте установлен контроллер 2Gi с уже вращающимся внутри алгоритмом. Недавно добавилось программируемое реле Zelio(SR3B261BD) с модулем modbus RTU (SR3MBU01BD).
Его с помощью 2Gi нужно будет опросить и отправить данные в скаду. С помощью утилиты CAS Modbus Scanner я благополучно опрашиваю Zelio Запрос: 0A 03 00 14 00 01 C5 75 Ответ: 0A 03 02 00 03 5D 84 Пытался считать напрямую с помощью Мастер ОРС все норм Запрос: 0A 03 9C 55 00 01 BB 31 Ответ: 0A 03 02 00 03 5D 84 С помощью 2Gi никак не получается Как правильно сконфигурировать переменную по адресу 40021 функция 03 в Лоджике. Адрес Zelio 10, скорость 57600, четность нет, стоп бит 1. Подскажите пожалуйста что я делаю не так? Тестовый файл во вложении. |
11.05.2018, 12:01 | #2 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 163
Благодарил(а): 240 раз(а)
Поблагодарили:
165 раз(а) в 157 сообщениях
|
Ответ: Modbus опрос
Цитата:
абсолютный 40021 по которому лезет 03функция и адрес 40021 в лоджике это совсем разные адреса я бы попробовал читать адреса 21-22 разными способами - R(in) R(out) |
|
11.05.2018, 12:41 | #3 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Modbus опрос
Цитата:
У вас переменная с адресом 0014h (20 десятичный). 40021 - это не адрес переменной. Подробности по ссылке. Подробности по номерам функций в справке. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
11.05.2018, 14:05 | #4 |
Senior Member
Регистрация: Jan 2015
Сообщения: 116
Благодарил(а): 2 раз(а)
Поблагодарили:
2 раз(а) в 1 сообщении
|
Ответ: Modbus опрос
Уважаемые LordN и Arsie, "поиграл" с Rin и Rout ничего не вышло (.
Еще раз покопался в хелпе лоджика никак не пойму реализации с обращением к определенным переменным(регистрам). мое понимание организации регистров 1-9999 ReadCoil функция 0х01 10001-19999 DiscreteInput функция 0х02 30001-39999 Input Register функция 0х04 40001-49999 Holding Register функция 0х03 В утилите CAS Modbus Scanner я напрямую задавал область памяти ( Arsie считает что слово адрес здесь не применимо) 40021 и считывал данные. В ОРС не задается область памяти 40021, там я выставлял ее выбирая HOLDING REGISTER, а дальше задавал смещение(offset) в моем случае 20. Итого 40001+20=40021 и данные получал. В хелпе лоджика написано, что функцию 0х03 выполняет R(out) и R/Wout задал им смещение 20,21,22, но результат нулевой. Как всегда смотрю в книгу фижу фигу. Не понимаю как лоджик запрашивает регистры в режиме мастера. В режиме слэйва вообще все просто особенно если выставляешь старый тип адресации. |
11.05.2018, 15:10 | #5 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Modbus опрос
Вы описание под ссылкой точно открывали? Похоже, что нет.
Ваша цель: адрес 20 десятичный, тип "Integer", для функции 03 направление, согласно справке, "R(out)". Проверьте дважды, десятичный вы адрес задаёте или шеснадцатеричный. PS. А по поводу "как я это понимаю", чётко написано в документе стандарта Modbus: "Holding register 40001 is addressed as register 0000 in the data address field of the message. The function code field already specifies a ‘holding register’ operation. Therefore the ‘4XXXX’ reference is implicit" __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
11.05.2018, 19:20 | #6 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 163
Благодарил(а): 240 раз(а)
Поблагодарили:
165 раз(а) в 157 сообщениях
|
Ответ: Modbus опрос
я тоже терпеть не могу читать по много букв и потому когда начинаются запарки с адресами т.е. либо я туплю, либо в доках на дивайс какой-нить трэшь, то поступаю тупо, в карте прописываю по несколько адресов подряд для каждой функции и смотрю что из этого выйдет. диапазоны адресов всегда беру одинаковые.
ну и всегда отключаю групповые запросы т.к. с ними кто как, а одиночные поддерживают абсолютно все. |
18.05.2018, 12:07 | #7 |
Senior Member
Регистрация: Jan 2015
Сообщения: 116
Благодарил(а): 2 раз(а)
Поблагодарили:
2 раз(а) в 1 сообщении
|
Ответ: Modbus опрос
Arsie, LordN спасибо, все заработало, хотя полного понимания так и не вышло, какие то туманные пятна все равно остались )))
|