Частичный запрос DNP3 для двоичных входов - как правильно составить ответ?

Я работаю над кодом для удаленной станции DNP3 уровня 1, которая имеет 12 двоичных входов. Я знаю, что в запросе сканирования целостности или запросе двоичных входов с квалификационным кодом 0x06 (включить все) я должен возвращать входные данные, содержащиеся в 2 байтах, где 4 старших бита старшего байта всегда будут равны 0. Другими словами, ответ будет содержать:

      0x00 0x0b 0b0000???? 0b????????

В ответе выше значение каждого последующего байта выглядит следующим образом:

  • начальный индекс (0),
  • стоп-индекс (11),
  • старший байт с замаскированными 4 старшими битами
  • младший байт, содержащий первые 8 двоичных входов

Это все ясно и просто - пока все хорошо.

Но я не могу решить, как правильно обрабатывать запросы, которые запрашивают только несколько двоичных входов - скажем, от индекса 2 до 9? Я:

  • по-прежнему используйте 2 байта для входных данных и просто замаскируйте те, которые исключены из запроса. например:
      0x02 0x09 0b000000?? 0b??????00
  • или сдвинуть биты, чтобы использовать как можно меньше байтов?
      0x02 0x09 0b????????
/* bit 0 in last byte is actually binary input 2, bit 1 is binary input 3, etc. */

Какое из этих двух решений правильное? Спасибо!

0 ответов

Другие вопросы по тегам