На мой взгляд, протоколы приборов учета должны отвечать следующим пожеланиям:
1. В пакетах должны быть начальные и конечные ограничители. Использование в качестве ограничителей пакетов временных интервалов (как в ModBus RTU) не всегда приемлимо, т.к., эти временные интервалы могут искажаться коммуникационным оборудованием (например, при связи через GSM SCD), и , как следствие, на приемной стороне возможно ложное обнаружение начала/конца пакета . Если байты в теле пакета совпадают с ограничителями, то можно использовать байт-стаффинг.
2. В запросах и ответах должен быть идентификатор пакета (при запросе генерируется путем последовательного инкрементирования или случайным образом, в ответе копируется из запроса). Наличие идентификатора запроса позволит избежать ошибок интерпретации принятых данных при повторах запросов. Особенно это актуально при использовании самоорганизующихся сетей, где время ответа на запрос заранее неизвестно.
3. Желательно в запросах управлять длиной ответа, например, передавать маску считываемых параметров. Протоколы, предусматривающие для чтения каждого параметра отдельный запрос, неудобны на низкоскоростных каналах связи. Если в ответе на запрос передается длинный массив параметров, то будут ограничения по использованию коммуникационного оборудования с малым объемом буферной памяти.
4. Для работы на низкоскоростных каналах связи протокол прибора учета должен быть по возможности лаконичным: данные должны представляться в компактных форматах без указания названий параметров и единиц измерения. Нежелательно представление данных в виде ASCII-строк.
5. При чтении архивных данных из приборов учета протокол прибора учета должен предусматривать возможность чтения как отдельной записи из архива, так и группы смежных записей.
6. При работе с архивами приборов учета должна быть предусмотрена возможность чтения индексов (номеров в базе) записей архивов самой ранней и самой поздней по времени без выполнения операций поиска по базе архивов. Альтернативный вариант организации архивов приборов учета – самая поздняя по времени запись архива имеет фиксированный индекс (например, 0). Во избежании неопределенности в интерпретации данных, в теле ответа желательно указывать временные параметры запроса.
7. Для связи с приборами учета нежелательно использовать протоколы обмена, имеющие следующие особенности:
- различные значения стартовой и рабочей скорости обмена (из-за сложностей с применением для связи с прибором модемов различных типов);
- однократная за сеанс связи с прибором передача сетевого идентификатора прибора при открытии канала связи (сетевой адрес прибора должен передаваться в каждом запросе/ответе);
- передача пароля прибора в открытом виде.
8. В приборе учета должна быть команда фиксации текущих значений параметров качества энергии и возможность чтения зафиксированных значений.
К сожалению, известные мне стандартные протоколы передачи данных не отвечают приведенным пожеланиям, и, наверное, с учетом разнообразия типов используемых каналов связи, ресурсов контроллера в приборе учета, особенностей организации данных в приборе и других факторов, использование нестандартных протоколов для связи с приборами учета неизбежно.