Просмотр полной версии : Регистры МВ 110-8ДФ
Доброго времени суток.
Пишу программу для рабты с блоком ввода МВ 110-8ДФ, и вот что получается:
Отправляю сообщение: 10 10 00 41 00 01 00 00 00 С9
Получаю ответ: 10 10 00 40 00 01 03 5C
Всё вродебы ничего. Просто обнулил регистр с адресом 0040
Далее анлогично обнуляю остальные регистры.
Сообщения: 10 10 00 41 00 01 00 00 3D 09, 10 10 00 42 00 01 00 00 79 09 и тд.
Ответы соответственно: 10 10 00 41 00 01 52 9C, 10 10 00 42 00 01 A2 9C и тд.
После этого считываю значение всех восьми регистров: 10 03 00 40 00 08 46 99
И получаю ответ: 10 03 10 0000 003D 0079 0044 00F1 00CC 0088 00B5 79 C7
Непонятно. Получается что обнуляется только первый регистр, а остальные заполнены какимито числами не имеющими между собой никакой явной последовательности.
И ещё вопрос, что обозначает чисо 16 после команды в ответном фрэйме? Это количествобайт в регистрах? Для чего эта цифра?
Вы же можете набрать команду 10 03 00 41 00 01 CRC, тем самым отдельно проверить каждый регистр
третий байт должен показывать количество байт "полезной нагрузки" сообщения без CRC
Попробовал... Дело в том что в регистры в место нолей записываются какие-то числа. И как их не прочитай все одно и тоже. Эти же числа выводит и программа конфигуратор. Зато сам конфигуратор регистры обнуляет очень даже хорошо, и при запросе из моей программы я получаю нули. Баг... Конфигуратор связывается с блоком по другому протоколу, а по модбасу всё работает не так как надо.
Кстати у меня тут стоит ещё МУ110-8Р. В нем тоже чтото не так. Записываю битовую маску выходов 00, блок отвечает что всё нормально и включает 2, 4, 5, 8 реле. Непонятно...
попробуйте записать 6 функцией (Preset Single Register), если опять не пойдет, попробуйте скачать эмулятор слейва и на нем сперва потренироваться, возможно Вы не угадали с передачей байт (BE или LE)
Кирилл Валюнин
28.10.2011, 13:52
По 8ДФ
Запись в 41ый регистр 0
Request
00:07 [10][10][00][41][00][01][02][00]
08:0F [00][69][11]
Response
00:07 [10][10][00][41][00][01][52][9C]
Считываем 8м регситров (с 40го)
00:07 [10][03][00][40][00][08][46][99]
Response
00:07 [10][03][10][00][00][00][00][00]
08:0F [00][00][00][00][00][00][00][00]
10:17 [00][00][00][1D][66]
все пустые
Записываем в 41 регистр 6
Request
00:07 [10][10][00][41][00][01][02][00]
08:0F [06][E9][13]
Response
00:07 [10][10][00][41][00][01][52][9C]
Считываем 8м регистров (с 40 го)
Request
00:07 [10][03][00][40][00][08][46][99]
Response
00:07 [10][03][10][00][00][00][06][00]
08:0F [00][00][00][00][00][00][00][00]
10:17 [00][00][00][14][A0]
6 ка на своем месте; ничего постороннего нет
Кирилл Валюнин
28.10.2011, 13:55
по 8Р выложите команду, которой пишете битову маску, пожалуйста
странно конечно что модули себя так ведут
10 10 00 41 00 01 00 00 00 С9и правильный
[10][10][00][41][00][01][02][00][00][69][11]
насколко я знаю
1. Если Slave принимает корректный запрос и может его нормально обработать, то возвращает нормальный ответ.
2. Если Slave не принимает какого-либо значения, никакого ответа не отправляется. Master диагностирует ошибку по тайм-ауту.
3. Если Slave принимает запрос, но обнаруживает ошибку (parity, LRC, or CRC), никакого ответа не отправляется. Master диагностирует ошибку по тайм-ауту.
4. Если Slave принимает запрос, но не может его обработать (обращение к несуществующему регистру и т. д.), отправляется ответ содержащий в себе данные об ошибке.
я поэтому и не всматривался в запросы, ответы то были
Благодарю за ответы. Действительно всё работает. Сбило столку то что блок не выдал сообщения об ошибке. И ещё то что стандарт я читал очень давно, и всего я просто не помню, а большинство производителей не используют байт количества полезной нагрузки. Если честно вообще в первый раз увидел его, хотя работал со многими блоками и ввода-вывода и релейной защиты и прочей автоматики.
С битовой маской история таже.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot