Просмотр полной версии : ПЛК63 - Modbus возвращает ошибку 02
Ошибка ILLEGAL ADDRESS DATA.
даже если один регистр забиваю, все равно. Регистр 332 пользовательский или регистр 0 - не имеет значения.
Как с этим бороться ?
Без ОРС сервера от Owen ПЛК по документации должен опрашиваться ведь ?
Ошибка ILLEGAL ADDRESS DATA.
даже если один регистр забиваю, все равно. Регистр 332 пользовательский или регистр 0 - не имеет значения.
Как с этим бороться ?
Без ОРС сервера от Owen ПЛК по документации должен опрашиваться ведь ?
так хотя бы лог выложили, что Вы там передаете, может перевернули байтв в регистре и запрашиваете не один регистр а 65536 вот и проблема нарисовалась
должен опрашиваться ведь
Вообще без проблем. Возвращает 02 - это хорошо. Связь - есть. А что 02 :
1.банально не сделали этот регистр в ПЛК63. Мы ж не видим проекта 63-его
2.см. п#2. Мы ж не видим проекта мастера
1-е - Регистры в ПЛК есть, иначе бы я их не опрашивал.
2-е - часть регистров в ПЛК зашиты намертво, например 0-10 это регистры состояния выходов, параметр real.
Реакция на них аналогичная, связь есть, данных нет, ошибка та же.
Валенок , опрашивает Rapid SCADA. накидал несколько параметров для проверки, а тут облом-с..
Holding Registers, адрес регистра 0, float (4 байта). переставлением не занимался, так как ошибка говорит за себя, не видит она данного регистра, а он должен быть.
В РЭ и в руководстве по программированию никакой конкретики, только разделение предустановленых регистров и пользовательских для разных типов данных. Все.
Ну так это рапид-скада и чудит. Уверены что, например, не вычитает 30001/40001 ?. Посылку прям по байтам выкладывает где ?
Какая конкретика нужна для модбас-слейва кроме доступных функций, карты регистров и формата данных (ну может специально оговоренных ограничений типа не полной многорегистровости для запросов) ?
да, тоже подумал на счет 30001/40001 когда домой ехал.
В то же время подключался к другим устройствам Рапидой, проблем не было. И к МЭ110 и шнайдеровским Micrologic-ам, всегда вбивал регистры из руководств и всегда получал то, что нужно.
А тут странность...
99% - в этом. Все симптомы - exc#2.
Отправка (8): 01 03 00 01 00 0A 94 0D
Приём (5/5): 01 83 02 C0 F1
Вот из лога запрос ответ, что-то мне сдается, что с запросом что-то не так ?
Отправка (8): 01 03 01 4C 00 08 84 27
Приём (5/5): 01 83 02 C0 F1
И лог запроса пользовательских данных
что не так, пытаетесь читать 10 регистров начиная с первого, т.е заканчивается 11 - а он есть?
Групповое чтение в ПЛК63 по отличным от указанного в конфигурации адресам.
Отправка (8): 01 03 00 01 00 0A 94 0D
Приём (5/5): 01 83 02 C0 F1
Вот из лога запрос ответ, что-то мне сдается, что с запросом что-то не так ?
Отправка (8): 01 03 01 4C 00 08 84 27
Приём (5/5): 01 83 02 C0 F1
И лог запроса пользовательских данных
что не так, пытаетесь читать 10 регистров начиная с первого, т.е заканчивается 11 - а он есть?
10 регистров из области %Q за один раз читать запрещается.
20503
Для группового чтения используйте регистры с номера 4184.
Да, я уже понял, что связано с групповым запросом. Сегодня поеду проверять...
Сейчас только определюсь, почему у меня с 1-ого регистра читалось а не с 0-ого
Проверил, все работает.
Как определить в какой последовательности попадают данные для возможности группового запроса ?
И возможности передать dword все-таки нет. записывал переменную в DateP (dword), при чтении 0. На живом контроллере работает не так, как в эмуляторе.
Проверил, все работает.
И возможности передать dword все-таки нет. записывал переменную в DateP (dword), при чтении 0. На живом контроллере работает не так, как в эмуляторе.
Наверно опять что-то перепутали. Например оставили тип "Конфигурационный" вместо "Оперативный".
А то получается, что ни какой пользовательский элемент по сети записать нельзя?
Проверил, все работает.
Как определить в какой последовательности попадают данные для возможности группового запроса ?
И возможности передать dword все-таки нет. записывал переменную в DateP (dword), при чтении 0. На живом контроллере работает не так, как в эмуляторе.
Как передашь dword - так и упадет. Но у рапиды порядок слов (а то и байтов) дворда может быть другой.
Из рапиды запиши типа 16#12345678, сделай в КДС вид 16#, и наведи на эту DateP - указатель то дворд.
Не парьтесь, не работает :).
Параметр был "Оперативный", записывал из программы температуру, переведя в dword, порядок байт хоть обменяйся.
Разрешил показ на экране - 01.01.2000 при нулях в переменной по сети.
Валенок, у Рапиды порядок байт такой, какой задашь.
petera, int можно и float можно.
Вопрос открытый, как рассчитать где будут храниться данные при групповом запросе ?
Ведь вся область Q транслируется, не только пользовательские данные, но и все разрешенные в конфигурации регистры, которые нельзя отключить. Состояние выходов, имя устройства, контраст и так далее...
Филоненко Владислав
23.10.2015, 12:43
Вопрос открытый, как рассчитать где будут храниться данные при групповом запросе ?
Ведь вся область Q транслируется, не только пользовательские данные, но и все разрешенные в конфигурации регистры, которые нельзя отключить. Состояние выходов, имя устройства, контраст и так далее...
Прибавить 0x1000
Филоненко Владислав то есть данные собираются как и в варианте прямого запроса ? 0 регистр, real первого выхода, 82 регистр - пользовательский 4 байта, 332 регистр - пользовательский 2 байта.
Не получается как-то, выход 1, real регистр 0, если прибавить 0х1000 то это 4096 а по мануалу область Q начинается с 4185
И в 3хх регистрах есть и I область.
Если собрать последовательно все Q и назначить им регистры, так будет правильно или порядок какой-то иной ?, например сперва все системные, потом пользовательские, или сперва STRING потом 4-х байтные, потом 2-х байтные или как ?
Где представители Овен, что скажут ?
Приеду домой, скажу. Проверенный на реальном объекте пример.
DI - 4096
AI1 - 4098
AI2 - 4102
AI3 - 4106
.....
AO1 - 4140
AO2 - 4142
.....
Первый параметр из первой ветви - 4176
Далее подряд с учетом на выравнивание на четный адрес параметров QD
ASo Хм, ниче непонятно, на кой тогда документация, если она не соответствует ?
АО, это ведь каналы Q, почему они в области каналов I ?
Что значит первый параметр первой ветви ?
melky, нормально у 63/73 работает по базовым адресам. Не юзал бы (причем не однократно) - не говорил.
С копией гиморой в том, что стоит вставить новый параметр в меню (которому можно задать новый адрес и парится про существующие) как адреса копии все передут. Адресация в копии базируется на физическом расположении в меню и с учетом выравнивания.
ASo Хм, ниче непонятно, на кой тогда документация, если она не соответствует ?
АО, это ведь каналы Q, почему они в области каналов I ?Она соответствует, но с некоторыми ошибками в адресах. Читайте внимательно.
ASoЧто значит первый параметр первой ветви ?
Aso правильно сказал - юзерная ветка начинается с 4176. Но - только чтение. Про адресацию сказал выше.
Т.е. адресация в копии - не имеет никакого отношения к индивидуальным адресам забитым руками.
Причем в копии есть даже параметры с не забитыми адресами
Копия позволяет сделать групповой запрос, а обращение по указанным регистрам только по отдельности.
Вот и хочу настроить групповой запрос хотя бы пользовательских данных.
Вот и хотелось бы понять, как и в какой последовательности туда попадают данные. Ну и соответственно как начиная с адреса 4096 попадают данные предустановленные
Копия позволяет только читать данные. Вот это и плохо.
Копия позволяет только читать данные. Вот это и плохо.
Чем плохо? Все замечательно! Читаем групповухой, а пишем - индивидуально в регистр. Master-OPC и куча других средств это позволяют.
Учитывая, что чтение существенно чаще записи - самое оно.
Видимо это имхо. Просто я сетевой параметр описываю переменной как RW. И он и тут и там ....
А тута каждому W и плюс 1 R на все. На 1 параметр больше будет
Валенок, не сыпьте матюками :)
ПЛК уже в работе, есть список переменных, менять ничего уже не буду. Просто надо разобраться в правильности группового запроса. Соответствие переменных адресам.
Ну да ладно. Раз охота с адресами возится
Для меня ST полутемный лес честно говоря.
Настоящему индейцу завсегда везде..
Валенок, вот объясни дураку, при чем тут адрес 4096, если пользовательские данные сидят ДАЛЬШЕ ?
И можно было в двух словах, как в данном случае работает массив ?
С 4096 сидит копия. Можно из структуры выкинуть все кроме пользовательских веток и читать с 4176 - это пользовательские.
примерно понял. Только float все равно придется вычислять как и где сидит. Структура вся в ворд ведь. А там еще и стринг сидит.
Зачем структура в ворде ? Она - в том в чем есть.
На картинке с квадратиками - настоящий адрес ai5 в копии. Тоже самое и реалами в меню.
Валенок, так вы же копируете область памяти в массив word , нет ? p : pointer to array[4096..5000] of word
Вы будете считывать параметры другим контроллером или компом?
ASo компом, той же скадой, просто нужен групповой запрос, вместо каждого регистра по отдельности. Раздельно очень медленно, я включаю автомат (стоит допконтакт) а изменение вижу с большой задержкой при скорости 115 к/с
Набросал сейчас с адреса 4176 последовательно как в конфигурации, поеду проверять.
Так какие проблемы?
Читайте как пример MasterOPC групповухой, с указанием отдельного регистра записи в RW параметрах.
Пример устройства во вложении.
ASo Спасибо за наводку по адресу 4176, действительно пользовательские данные идут последовательно с данного адреса, согласно Конфигурации, даже те параметры, которым не назначены регистры.
Что касается системных, после каждого AI идет регистр "Время измерения". С небольшими перестановками. Все еще не вычислил, просто не все параметры набрал.
MasterOPC мне не поможет, не использую. Сохранил потом посмотреть...
ASo Спасибо за наводку по адресу 4176, действительно пользовательские данные идут последовательно с данного адреса, согласно Конфигурации, даже те параметры, которым не назначены регистры.
Дык Вам про это говорилось! Тем же Валенком.
Что касается системных, после каждого AI идет регистр "Время измерения". С небольшими перестановками. Все еще не вычислил, просто не все параметры набрал.А Вам так нужно время измерения в компе?
ASo вообще-то и вам важно, так как AI идут через два регистра и при групповом запросе можно лохануться.
Поправлю сегодня табличку и выложу.
Эээээ.... Это учитывается при запросе. Собственно, многие системы учитывают это сами, задавая максимальный разрыв, при котором группа "закрывается" и создается следующий групповой запрос.
ASo ну я Rapid SCADA настраивал, там отдельно группы создаются.
Вот набросал, что вычислил.
Пользовательские переменные идут последовательно, как в конфигурации. Местами требуется выравнивание.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot