- PVSM.RU - https://www.pvsm.ru -

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 1

В последнее время протокол DLMS/COSEM стал активно применяться в приборах учета (счетчики электрической энергии, тепла, воды, газа) отечественного производства. Почти у каждой компании, специализирующейся на выпуске микроконтроллеров, имеется, сертифицированный стек DLMS/COSEM, используя который можно сократить стоимость и время разработки прибора учета, поддерживающий данный протокол. В этой статье речь пойдет о стеке DLMS/COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments.

Стек DLMS/COSEM от компании TI имеет следующие особенности:

  • Поддерживаются все интерфейсные классы COSEM.
  • Поддерживаются три уровня ассоциации: открытый доступ (no security), низкий уровень секретности (low security) и высокий уровень секретности (high security). Доступ к прибору учета в режиме высокого уровня секретности осуществляется с применением 4-стадийной аутентификацией, основанной на алгоритме AES128.
  • Поддерживается только LN (long name) адресация.
  • Поддерживается одна, двух и четырех байтовая адресация.
  • Поддерживаются сервисы GET, SET, GET WITH BLOCK, SET WITH BLOCK, ACTION, а также селективный доступ для объектов класса Profile Generic.
  • Требуемый размер памяти для хранения стека – 24 кБ.
  • Требуемый размер оперативной памяти – 1,8кБ.

Для того чтобы «пощупать» стек нам понадобятся:

  1. Среда разработки IAR Embedded Workbench for MSP430;
  2. DLMS/COSEM клиент, возьмем бесплатный с открытым исходным кодом DLMSDirector [1] от компании Gurux;
  3. Оценочная плата EVM430-F6779;
  4. Отладчик/программатор MSP-FET430UIF.

Загрузка и распаковка

Стек DLMS/COSEM доступен по адресу (http://www.ti.com/tool/dlmsobj-eval [2]), для его загрузки необходимо иметь учетную запись TI. Сам стек упакован в дистрибутив под названием DLMS-4.0.6-windows-installer. После его установки, в папке установки будет лежать zip-папка «DLMS_Object» в которой находятся файлы стека.

Библиотека состоит из следующих файлов:

  • iec62056_demo.c: В этом файле инициализируется вся периферия микроконтроллера и конечный автомат HDLC;
  • uart_comms.c: Файл конфигурации для модуля UART;
  • iec62056_link.r43: В этом файле реализованы HDLC и MAC уровни;
  • server_msgs.r43: В этом файле реализован прикладной уровень COSEM;
  • config.c: Основной конфигурационный файл. В этом файле можно удалять или добавлять параметры для списка объектов (object list);
  • app_server_msgs.c: В этом файле пишутся функции для извлечения данных из памяти и предоставления их библиотеке DLMS;
  • config.h: Макроопределения и прототипы функций для файла config.c;
  • cosem.h: Определения всех констант, используемых в прикладном уровне COSEM;
  • iec_62056_link.h: Макроопределения и прототипы функций для HDLC уровня;

Все эти файлы уже собраны в проект под название dlms_obj.eww.

Запуск проекта

В этой части мы запустим демонстрационный проект и посмотрим, как представляются объекты COSEM. Для этого, открываем файл dlms_obj.eww в IAR for MSP430 и выбираем требуемый микроконтроллер, в нашем случае это MSP430F67791.

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 2

Собираем проект и программируем контроллер. Открываем программу DLMSDirector и добавляем новое устройство со следующими параметрами:

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 3

Нажимаем кнопку «ОК». Затем в дереве «Devices» выбираем наше устройство, нажимаем кнопку «Connect» и … получаем вот такую ошибку:

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 4

Исправляется она легко, открываем файл uart_comms.c проекта dlms_obj.eww и в строке 132 видим, что при конфигурировании UART была допущена «опечатка»:

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 5

Правильная строка должна иметь вид:

P3SEL0 |=(BIT0|BIT1);

После исправления, связь с прибором учета успешно устанавливается, в результате чего становится доступной кнопка «Read», а в статусной строке мы видим «Ready»:

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 6

Для загрузки информации с прибора учета нажимаем кнопку «Read». Процесс этот не быстрый, поэтому придется чуть-чуть подождать. В результате получаем дерево из объектов COSEM:

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 7

В данном стеке, в открытом доступе, по умолчанию, отображается пять объектов:

  • 0.0.1.0.0.255 – отображает текущее время в приборе учета;
  • 0.0.40.0.0.255 – отображает информацию о текущей ассоциации;
  • 0.0.40.0.1.255 – отображает информации об ассоциации №1;
  • 0.0.41.0.0.255 – отображает так называемое SAP назначение;
  • 0.0.42.0.0.255 – отображает логическое имя устройства, по сути – серийный номер счетчика.

Например, информация о текущем времени в приборе учета представляется следующим образом:

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 8

Мы можем не только узнать время, но и получить информацию о часовом поясе, об источнике тактирования, о дате и времени перехода на летнее время и обратно, а в режиме высокой секретности появляется возможность задавать эти параметры.

Для доступа к прибору учета в режиме низкой секретности необходимо использовать следующие настройки (Пароль по умолчанию — 00000000):

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 9

В этом режиме доступно гораздо больше объектов COSEM:

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 10

Добавление нового объекта COSEM

Для добавления нового объекта открываем файл config.c проекта dlms_obj.eww, находим структуру:

const struct object_desc_s object_list[]

и добавляем в нее следующую строку:

{ASSOC_PC_MR_US, CLASS_ID_DATA, 0, {  0,   0,  96,   1,   0, 255}, 2,  Obj_Meter_Sr_No, 0, NULL}

Где:

  • ASSOC_PC_MR_US – определяет видимость объекта, в данном случае объект будет виден и в режиме открытого доступа, и в режиме доступа с низким уровнем секретности и в режиме доступа с высоким уровнем секретности;
  • CLASS_ID_DATA – идентификатор интерфейсного класса, в данном случае объект относится к классу Data;
  • 0 – версия класса (0);
  • { 0, 0, 96, 1, 0, 255} – логическое имя объекта;
  • 2 – количество атрибутов (2);
  • Obj_Meter_Sr_No – указатель на список атрибутов;
  • 0 – количество методов (0);
  • NULL – указатель на список методов (методы отсутствуют).

Затем создаем структуру со списком атрибутов в том же файле:

static const struct attribute_desc_s Obj_Meter_Sr_No[] =
{
    {1, ACCESS_PCR__MRR__USR_, TAG_OCTET_STRING,    (void *) object_list[11].instance_id, NULL},
    {2, ACCESS_PCR__MRR__USR_, TAG_OCTET_STRING,    (void *) Meter_Sr_No, NULL},
};

Где:

  • Первый параметр – номер атрибута;
  • Второй параметр – права доступа;
  • Третий параметр – тип данных атрибута;
  • Четвертый параметр – указатель на данные;
  • Пятый параметр – функция обратного вызова. Это функция вызывается, когда данные необходимо взять, например, из EEPROM памяти. Более подробную информацию можно получить из руководства пользователя.

В нашем случае объект не имеет функции обратного вызова, а в качестве типа данных используется строка байтов.

Meter_Sr_No указывает на следующую структуру:

const uint8_t Meter_Sr_No[] =
{
    8, 'A','B','C','D','1','2','3','4'
};

Вот и все процедуры по созданию нового объекта. Результат:

Знакомство со стеком DLMS-COSEM для микроконтроллеров семейства MSP430 компании Texas Instruments - 11

Заключение

В данной статье не приводится полного описания библиотеки DLMS/COSEM для микроконтроллеров семейства MSP430, так как без освещения основных моментов самого протокола это сделать трудно. Однако тем, кому такое описания необходимо могут ознакомиться с ним загрузив его с сайта компании TI (http://www.ti.com/tool/dlmsobj-eval [2]).

Автор: AlexFTF

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/msp430/123792

Ссылки в тексте:

[1] DLMSDirector: http://www.gurux.fi/Download

[2] http://www.ti.com/tool/dlmsobj-eval: http://www.ti.com/tool/dlmsobj-eval

[3] Источник: https://habrahabr.ru/post/302180/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox