Частичный запрос 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. */
Какое из этих двух решений правильное? Спасибо!