Показано с 1 по 8 из 8

Тема: ПЛК210 Опрос Discrete Inputs

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию ПЛК210 Опрос Discrete Inputs

    Добрый день.
    Опрашиваю slave устройство по ModbusRTU. Функции 04 и 03 работают корректно, Holding и Input регистры читаю. Но при использовании функции 02 в буфер опроса ответ 256, когда ожидается бит. При этом если сниферить линию, пакеты запроса и ответа корректны.
    Изображения Изображения

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,627

    По умолчанию

    Добрый день.

    когда ожидается бит
    Уточните, пожалуйста, что именно вы под этом понимаете.

  3. #3

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.



    Уточните, пожалуйста, что именно вы под этом понимаете.
    0 или 1, а не целочисленное типа 256
    Последний раз редактировалось SolitarY; 22.07.2024 в 12:42.

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,627

    По умолчанию

    Цитата Сообщение от SolitarY Посмотреть сообщение
    0 или 1, а не целочисленное типа 256
    Предположу, что вы используете DATA_RW для всех запросов (в т. ч. "Функции 04 и 03").

    Теперь предположение:

    Считали в буфер, например, значение 345 (функцией 04 или 03). Т.е. DATA_RW[0] имеет значение 345 - оно же 2#0000_0001_0101_1001.

    Теперь вызвали код с вашего скриншота - считываем один дискрет инпут с адресом 97.

    В ответ получает байт со значением 00 - бит сброшен (01 02 01 00 ... ).

    Соответственно, этот байт копируется в буфер, затирая младший байт в DATA_RW[0].

    Получаем 2#0000_0001_0000_0000, оно же 256.

    В рамках данного предположения - это совершенно закономерный результат.

  5. #5

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Предположу, что вы используете DATA_RW для всех запросов (в т. ч. "Функции 04 и 03").

    Теперь предположение:

    Считали в буфер, например, значение 345 (функцией 04 или 03). Т.е. DATA_RW[0] имеет значение 345 - оно же 2#0000_0001_0101_1001.

    Теперь вызвали код с вашего скриншота - считываем один дискрет инпут с адресом 97.

    В ответ получает байт со значением 00 - бит сброшен (01 02 01 00 ... ).

    Соответственно, этот байт копируется в буфер, затирая младший байт в DATA_RW[0].

    Получаем 2#0000_0001_0000_0000, оно же 256.

    В рамках данного предположения - это совершенно закономерный результат.
    Спасибо за наводку! Действительно один буфер для опроса, так что чистка буфера перед считыванием DI помогла.

  6. #6
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,593

    По умолчанию

    Цитата Сообщение от SolitarY Посмотреть сообщение
    0 или 1, а не целочисленное типа 256
    Screenshot 2024-07-22 124153.png и что не так когда биты меняются, соответствующее целочисленное так же меняется
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #7
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,593

    По умолчанию

    Цитата Сообщение от SolitarY Посмотреть сообщение
    при использовании функции 02 в буфер опроса ответ 256, когда ожидается бит. При этом если сниферить линию, пакеты запроса и ответа корректны.
    на скрине у Вас в WORD значение 256, значит если слово сделать масссивом двух байт в первом (нулевом по индексу массива) байте единица стоит в нулевом разряде, всё как по стандарту

    ЗЫ Вот только на скрине геркулеса у Вас в ответе ни чего не включено, поэтому не понятно что вообще лежит в DATA_RW[0]
    Последний раз редактировалось capzap; 22.07.2024 в 12:37.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #8

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ЗЫ Вот только на скрине геркулеса у Вас в ответе ни чего не включено, поэтому не понятно что вообще лежит в DATA_RW[0]
    почему непонятно? пакет - 01 02 01 00 А1 88
    01 - slave id, 02 - функция чтения DI, 01 - кол-во байт ответа, 00 - ответ, А1 88 - CRC

Похожие темы

  1. Чтение дискретных входов Discrete Inputs от carel evd по modbus пр120
    от Stasyllius_83 в разделе Программируемые реле
    Ответов: 8
    Последнее сообщение: 25.02.2024, 23:10
  2. Опрос ТСРВ-024М с ПЛК210
    от Irida в разделе ПЛК2хх
    Ответов: 6
    Последнее сообщение: 23.02.2024, 22:36
  3. ПЛК210-003 опрос СП310 Modbus TCP
    от anisnaya в разделе ПЛК2хх
    Ответов: 1
    Последнее сообщение: 06.10.2023, 08:47
  4. ПЛК210 и опрос 29 УПП по RS485
    от Chaynik в разделе ПЛК2хх
    Ответов: 3
    Последнее сообщение: 27.06.2023, 13:18
  5. ПЛК210 опрос RS-485
    от Andrei04 в разделе ПЛК2хх
    Ответов: 14
    Последнее сообщение: 02.11.2022, 15:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •