Работа с WB-MAP3E

Просмотр 15 сообщений - с 16 по 30 (из 37 всего)
  • Автор
    Записи
  • #39516
    manjey73
    Участник

    0C 00 00 56 C9 5C 00 00 00 00 00 00 00 59 D9 — не совсем понятно, где тут 3 регистра по 4 байта, тут циферь больше для этого

    Лог ответа Modbus выложите

    • Ответ изменён 1 год назад пользователем manjey73.
    #39519
    MasyanyX
    Участник

    Вот последние 5 обменов:

    2025-07-17 15:40:44 Сеанс связи с устройством [7] WB-MAP3E
    Запрос значений группы элементов «Напряжение»
    Отправка (8): 11 04 14 0F 00 06 47 6B
    Приём (2/2): 11 04
    Приём (15/15): 0C 00 00 56 B4 64 00 00 00 00 00 00 00 66 39
    OK

    2025-07-17 15:40:47 Сеанс связи с устройством [7] WB-MAP3E
    Запрос значений группы элементов «Напряжение»
    Отправка (8): 11 04 14 0F 00 06 47 6B
    Приём (2/2): 11 04
    Приём (15/15): 0C 00 00 56 A1 5C 00 00 00 00 00 00 00 96 1B
    OK

    2025-07-17 15:40:50 Сеанс связи с устройством [7] WB-MAP3E
    Запрос значений группы элементов «Напряжение»
    Отправка (8): 11 04 14 0F 00 06 47 6B
    Приём (2/2): 11 04
    Приём (15/15): 0C 00 00 56 78 88 00 00 00 00 00 00 00 6D 21
    OK

    2025-07-17 15:40:54 Сеанс связи с устройством [7] WB-MAP3E
    Запрос значений группы элементов «Напряжение»
    Отправка (8): 11 04 14 0F 00 06 47 6B
    Приём (2/2): 11 04
    Приём (15/15): 0C 00 00 56 FE 30 00 00 00 00 00 00 00 2D 95
    OK

    2025-07-17 15:40:57 Сеанс связи с устройством [7] WB-MAP3E
    Запрос значений группы элементов «Напряжение»
    Отправка (8): 11 04 14 0F 00 06 47 6B
    Приём (2/2): 11 04
    Приём (15/15): 0C 00 00 56 D0 A4 00 00 00 00 00 00 00 F0 AB
    OK

    #39520
    MasyanyX
    Участник

    Меня смущает куча нулей, похоже на обращение в пустые регистры, но это ведь не так :\

    #39521
    manjey73
    Участник

    ну 3-й параметр тут по нулям, а предполагалось напряжение L3 ? значит вы не попали по адресации

    Part of Data Package Description Value
    11 Slave address 0x11 (17)
    04 Function code 0x04 (4) — Read Input Registers
    0C Byte count 0x0C (12)
    00 00 56 B4 64 00 00 00 00 00 00 00 Register value 0x0000 (0), 0x56B4 (22196), 0x6400 (25600), 0x0000 (0), 0x0000 (0), 0x0000 (0)
    66 39 CRC 0x6639 (26169)

    Говорю же, парсером воспользуйтесь

    Запрос
    11 04 14 0F 00 06 47 6B

    Part of Data Package Description Value
    11 Slave address 0x11 (17)
    04 Function code 0x04 (4) — Read Input Registers
    14 0F Starting address Physical: 0x140F (5135)
    Logical: 0x1410 (5136)
    00 06 Quantity 0x0006 (6)
    47 6B CRC 0x476B (18283)

    физикал адрес 5135 а логикал 5136

    • Ответ изменён 1 год назад пользователем manjey73.
    #39527
    MasyanyX
    Участник

    Ничего не понимаю, я уже двигал по единичке вплоть до +-10 и вверх и вниз, там пустые регистры, в этих хотябы какие то числа есть. Ладно, большое спасибо за уделенное время, видимо не судьба.

    #39528
    manjey73
    Участник

    Ну а вы не учитываете, что у вас разрывы есть?

    то есть uint16 — значение, потом пустота, пустота, потом следующее значение…
    Изучите карту регистров, ну ведь прибор у вас на руках, не сложно же чуть потыкать и найти правильное соотношение адресации и перестановки, если она необходима.

    Что вы так сразу все бросаете 🙂

    #39529
    MasyanyX
    Участник

    Не то чтобы бросаю, 6 часов подряд, голова кипит, на сегодня достаточно, но меня волнует не это, а то что Ваше время и нервы трачу 🙁

    #39530
    manjey73
    Участник

    Еще момент, у вас если вы читаете как u32 их (uint) там может быть не uint как таковой, а еще надо формулу применять.
    А вот при u16 (ushort) просто разделить на 100.

    Еще такой момент, в каком режиме оно сейчас работает? может через какой-то регистр настраивается в каком виде отдавать, u16 или u32…

    да какие тут нервы? нервы тратите вы, так как железяка у вас 🙂
    я с WB пока дел не имел но темы про их представление u32 или s32 всплывали или тут или еще где…

    • Ответ изменён 1 год назад пользователем manjey73.
    #39543
    MasyanyX
    Участник

    Добрый день, про режим работы нигде не говорится, мне удалось прочитать регистры хранения «калибровок» и могу также записывать в них. Они прочитались вообще без проблем, только со сдвигом адреса +1 почему-то.
    Остается вопрос как читать Input регистры, они отличаются тем что у регистров хранения просто u16, а у этих u16 big endian, при этом перестановка байт не помогает.

    Вот лог чтения инпутов, может ли быть проблема в том, что скада пилит ответ на два отдельных респонза и изза этого путается при чтении значений из второго?

    Запрос значений группы элементов «Напряжение»
    Отправка (8): 11 04 14 10 00 02 77 6E
    Приём (2/2): 11 04
    Приём (7/7): 04 55 57 90 00 26 59
    OK

    #39545
    MasyanyX
    Участник

    Как я понимаю, мой финальный вопрос должен звучать следующим образом: умеет ли rapid scada работать с big endian и что для этого нужно?

    #39546
    manjey73
    Участник

    Вот добейтесь за счет правильной настройки адресации, чтобы вы не добавляли +1.
    Эта настройка для того и сделана, чтобы один раз настроить и потом вводить адреса регистров из документации. Разные производители оборудования по разному указывают регистры, кто-то указывает физические, кто-то логические. Вот один раз разберетесь с этим для конкретного прибора(производителя) и все.

    u16 big endian — тут то же самое, поймете как правильно переставить, дальше уже не думаете, а знаете.

    #39547
    manjey73
    Участник

    У вас слишком короткий запрос на группу напряжений, у вас при u16 должно прочитаться 6 регистров. здесь у вас запрос 2-х а за счет адресации кто первый или пустой и второй… смотреть надо

    #39548
    manjey73
    Участник

    11 Slave address 0x11 (17)
    04 Function code 0x04 (4) — Read Input Registers
    04 Byte count 0x04 (4)
    55 57 90 00 Register value 0x5557 (21847), 0x9000 (36864)
    26 59 CRC 0x2659 (9817)

    по идее попали — напряжение 218,47 следующий регистр это для u32 и их вместе, если объединить уже на 100 делить нельзя. Тут у WB какая-то собственно придуманная ахинея, извиняюсь за каламбур…

    то есть вы тут прочли напряжение L1 регистром u16, второй регистр вам тут не впал. Ну или используйте это как u32 (uint) и потом ставьте множитель, который указан в документации.
    Если сделаете запрос u16 в количестве 6 штук, то каждый нечетный будет вам UL/100
    четный просто игнорируете в плане добавления в каналы и все.

    • Ответ изменён 1 год назад пользователем manjey73.
    #39549
    MasyanyX
    Участник

    Да, в группе напряжений только один регистр для начала, попробую тогда указать все три.
    Вы правы, я почему указал только один, потому что хотел читать вот эти 21847, а остальное отбрасывать

    #39550
    MasyanyX
    Участник

    Про ахинею не то слово, спасибо за подсказку, попробую еще пошаманить

Просмотр 15 сообщений - с 16 по 30 (из 37 всего)
  • Для ответа в этой теме необходимо авторизоваться.