Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом_Климов_Д.С._320602.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

3.2 Протокол обмена данных со счётчиком

Диалог между управляющим компьютером (в дальнейшем УК) и счетчиком основан на принципе – главный-подчиненный. Роль главного всегда играет УК, а счетчик (счетчики) может быть только подчиненным. Для работы со счетчиком можно использовать два варианта протокола: протокол с адресацией по сетевому адресу (в дальнейшем базовый протокол), который может использоваться для любых счетчиков, а также протокол с адресацией по заводскому номеру (в дальнейшем протокол с расширенной адресацией), который может использоваться для счетчиков, начиная с версии 1.15 программного драйвера.

Основные положения базового протокола приведены ниже:

1 Протокол предусматривает одно главное и до 254 подчиненных устройств.

2 Сообщения, которыми обмениваются между собой главное и подчиненные устройства, помещаются в пакеты. Структура пакета представлена на рисунке 3.1.

Рисунок 3.1 – Структура пакета отправляемых данных

3 Каждое подчиненное устройство, включенное в сеть, имеет свой уникальный адрес.

4 Для широковещательного обмена зарезервированы два адреса 0 и 255. Все подчиненные устройства принявшие пакет с адресом 0 или 255 обязаны его исполнить. Пакет, содержащий 0 адрес, требует ответа от подчиненного устройства, а пакет с адресом 255 ответа не требует.

5 Для повышения надежности передачи используется избыточный циклический код (CRC).

6 Байты, принадлежащие одному пакету должны передаваться непрерывным потоком.

7 Тайм-аут между байтами больший, чем время передачи 7 байт является признаком завершения пакета. Если скорость обмена меньше 150 бод, тайм-аут равен 500 мс.

8 Если в пакет помещается тип данных, состоящий из нескольких байт, то самый младший байт типа данных должен следовать первым.

Поля «адрес», «функция» и «CRC» составляют обрамление пакета, а поле «сообщение» – содержимое пакета. Поле «адрес» имеет размерность 1 байт и содержит сетевой адрес счетчика или широковещательный адрес, поле «функция» тоже однобайтное и определяет функцию, выполняемую пакетом. Допустимые значения этого поля будут подробно определены ниже. Поле «CRC» это 2-х байтное число представляющее собой результат шифрования циклическим кодом полей «адрес», «функция» и «сообщение». Более подробно о контроле циклическим кодом и пример его расчета будут приведены ниже.

Наполнение поля «сообщение» зависит от функции выполняемой пакетом. Инициатива обмена всегда принадлежит УК, он формирует пакет запроса, передает его в линию и ожидает ответ от счетчика. В свою очередь все счетчики «прослушивают» линию и если пакет запроса принят без искажений, проверяют поле «адрес» и если оно равно 0 или 255, или совпадает с собственным адресом, то обнаруживший совпадение счетчик приступает к выполнению команды. После выполнения команды снова анализируется адрес и если он не равен 255, то отправляется ответ в линию. Время выполнения запроса зависит от его типа. Время выполнения запросов при чтении параметров из счетчика, как правило, не превышает 0,2 с. Модификация/обнуление параметров счетчика может составлять от 1 до 2 с.

В ответном пакете поле «адрес» совпадает с соответствующим полем команды. Если счетчик может обработать команду, то поле «функция» не изменяется, в противном случае старший бит этого поля устанавливается в 1. Наполнение поля «сообщение» зависит от команды. При использовании команд модификации и обнуления необходимо иметь в виду, что не все параметры могут быть изменены, а также то, что выполнение этих команд возможно только при отключении защиты. Начиная с версии 1.15, появилась возможность адресации по заводскому номеру. Структура пакета отправляемых данных представлена на рисунке 3.2.

Рисунок 3.2 – Структура пакета отправляемых данных

Начиная с версии 1.21, появилась возможность передачи длины, и номера пакета. Структура пакета отправляемых данных представлена на рисунке 3.3.

Рисунок 3.3 – Структура пакета отправляемых данных

При этом полностью сохраняется возможность работы со счетчиком по его сетевому адресу. Основные положения протокола с расширенной адресацией приведены ниже:

  • протокол предусматривает одно главное и любое количество подчиненных устройств (подчиненные устройства должны иметь уникальные заводские номера);

  • сообщения, которыми обмениваются между собой главное и подчиненные устройства, помещаются в пакеты. Структуры пакетов были представлены выше;

  • для повышения надежности передачи используется избыточный циклический код (CRC);

  • байты, принадлежащие одному пакету должны передаваться непрерывным потоком для пакетов типа 1, для пакетов типа 2 и 3 допускаются разрывы в потоке данных длительностью не более 500 мс;

  • тайм-аут между байтами больший, чем время передачи 7 байт является признаком завершения пакета для пакетов типа 1, для пакетов типа 2 и 3 признаком завершения пакета является прием количества байт указанных в длине пакета; если в пакет помещается тип данных, состоящий из нескольких байт, то самый младший байт типа данных должен следовать первым.

Поле «заголовок» всегда постоянно и содержит два байта [0xFF, 0x7F]. Данное поле означает, что будет использоваться расширенная адресация. Поле «len» содержит байт длины пакета. Длина пакета считается целиком, с учетом заголовка и контрольной суммы. Поле «num» содержит однобайтный номер пакета. Номер пакета в ответном сообщении счетчика должен совпадать с номером пакета в запросе. Таким образом, можно проверить, что ответ пришел именно на наш запрос. Поле «адрес» содержит сетевой адрес счетчика, которому предназначен запрос. Нулевое значение адресует счетчики с любым сетевым адресом. Размерность поля составляет один байт.

Маска заводского номера может содержать любые символы заводского номера и символ «?». Размер данного поля 8 байт. Символ «?» означает, что в данной позиции может находиться любой символ. Например, маска «1???????» адресует счетчики с заводскими номерами, начинающимися на «1», а маска «????????» адресует все счетчики (широковещательный запрос). Размер и содержание полей «функция» и «сообщение» аналогично таковым в базовом протоколе. Поле «инверсия CRC» это 2-х байтное число, представляющее собой результат шифрования циклическим кодом всего тела пакета. Рассчитывается так же как для базового протокола и инвертируется побитно. При использовании расширенной адресации можно организовать поиск счетчиков по их заводским номерам. Подробнее про алгоритм поиска счетчиков будет описано ниже.