Обмен со счетчиком ЦЭ6850М

Драйвер оформлен в виде драйвера t12, протокол соответствует IEC 62056-21 (2002-05) в части режимов A-D (режим E не поддерживается).

Протокол обмена со счетчиком встроен в Micro TRACE MODE 6 для Windows CE. Если COM-порт с назначением Host OEM RS задан, Микро МРВ использует встроенный драйвер с полной поддержкой МЭК (только для профессионального формата). Если COM-порт не задан, Микро МРВ использует драйвер t12 с поддержкой МЭК посредством ручного конфигурирования переменных.

Кроме атрибутов, общих для всех источников/приемников (см. Редакторы источников (приемников) , а также Шаблоны каналов обмена ), в редакторе шаблона канала обмена задаются следующие атрибуты:

   Порт – номер используемого СОМ-порта, уменьшенный на 1, однобайтное десятичное число;

   Номер прибора – уникальный для каждого прибора номер, однобайтное десятичное число. Каждому номеру должна соответствовать своя строка-идентификатор;

   ID прибора – идентификатор прибора в сети, строка длиной до 16 символов;

   Стартовая скорость – начальная скорость обмена, значение выбирается из меню в соответствии с настройкой прибора. Если выбрано значение с окончанием "+", команды окончания сеанса и инициализации не посылаются (в начале очередного сеанса ID прибора посылается только в том случае, если он изменился или была ошибка обмена). Для значений без плюса команды инициализации и разрыва связи посылаются всегда;

   Запрос – тип запроса к прибору, значение выбирается из меню (см. описание запросов ниже);

   Параметр 1 – первый параметр запроса, значение зависит от типа запроса (см. ниже);

   Параметр 2 – второй параметр запроса, значение зависит от типа запроса (см. ниже).

Типы запросов и их параметры (номер запроса – в соответствии с plc_ce6850m2.tmc):

   0, CTIME – широковещательная команда коррекции хода часов, канал должен быть типа OUTPUT;

   1, Exyst – запрос количества учтенной энергии, параметры имеют следующее значение:

   Параметр 1 – набор битовых флагов, задающий условия чтения: значение битов 0 и 1 – интервал (0 – нарастающим итогом, 1 – за сутки, 2 или 3 – за месяц); бит 2 – активная (0) или реактивная (1) энергия; бит 3 – отпущенная (0) или потребленная (1) энергия. При запросах энергии за день и за месяц используется дополнительный параметр для указания номера дня (месяца) – см. EnerNparam;

   Параметр 2 – номер тарифа, 0 – суммарная энергия, 1 – энергия по первому тарифу, 2 – по второму тарифу, …, 5 – энергия, накопленная в общем регистре;

   2, Graph – запрос конкретного значения из графика нагрузки, дата для чтения графика задается с помощью запросов GraYear, GraMonth и GraDay. Значение параметров:

   Параметр 1 – набор битовых флагов; бит 0 – активная (0) или реактивная (1) энергия; бит 1 – отпущенная (0) или потребленная (1) энергия;

   Параметр 2 – номер архивной записи в сутках;

   3, Gra25 – график нагрузки потерянного часа при переходе с летнего на зимнее время. Значение параметров:

   Параметр 1 – набор битовых флагов, бит 0 – активная (0) или реактивная (1) энергия; бит 1 – отпущенная (0) или потребленная (1) энергия;

   Параметр 2 – номер записи в архиве;

   4, Ener3 – энергия за последний завершенный трехминутный интервал; Параметр 1 – тип энергии (0 – активная потребленная, 1 – активная отпущенная, 2 – реактивная потребленная, 3 – реактивная отпущенная);

   5, Power – мгновенная мощность, значение параметров:

   Параметр 1 – тип мощности (0 – полная, 1 – активная, 2 – реактивная);

   Параметр 2 – фаза (0 – фаза A, 1 – фаза B, 2 – фаза C, 3 – суммарная мощность по всем фазам);

   6, Curre – значение тока; Параметр 1 – номер фазы (0 – фаза A, 1 – фаза B, 2 – фаза C);

   7, Volta – значение напряжения; Параметр 1 – номер фазы (0 – фаза A, 1 – фаза B, 2 – фаза C);

   8, Cos_f – коэффициент активной мощности; Параметр 1 – номер фазы (0 – фаза A, 1 – фаза B, 2 – фаза C, 3 – ABC);

   9, Sin_f – коэффициент реактивной мощности; Параметр 1 – номер фазы (0 – фаза A, 1 – фаза B, 2 – фаза C, 3 – ABC);

   10, CorUU – углы между векторами напряжений; Параметр 1 – тип вектора (0 – между векторами A и B, 1 – BC, 2 – CA);

   11, CorIU – углы между векторами тока и напряжения; Параметр 1 – фаза (0 – по фазе A, 1 – по фазе B, 2 – по фазе C);

   12, Frequ – частота сети в герцах, дополнительные параметры не используются и должны быть равны 0;

   13, Stat – состояние счетчика, 16-битное число, расшифровку значений отдельных битов см. в руководстве по эксплуатации счетчика электрической энергии ЦЭ6850М. Дополнительные параметры не используются и должны быть равны 0;

   14, Elos – энергия потерь; Параметр 1 – тип потерь (0 – потери при отпуске, 1 – потери при потреблении);

   15, EnerNparam – запрос для передачи номера дня (месяца) в драйвер (для запроса Exyst). Дополнительные параметры не используются и должны быть равны 0;

   16, GraYear – запрос для передачи года в драйвер (для запроса Graph). Двухзначное число, последние 2 цифры номера года; дополнительные параметры не используются и должны быть равны 0;

   17, GraMonth – запрос для передачи месяца в драйвер (для запроса Graph). Дополнительные параметры не используются и должны быть равны 0;

   18, GraDay – запрос для передачи дня в драйвер (для запроса Graph). Дополнительные параметры не используются и должны быть равны 0;

   19, Max

   20, Rel_n

   32, Powp

   33, ENM_ARC

   34, END_ARC

   35, Ecmzt

   36, Ecdzt

Канал запроса CTIME может быть только типа OUTPUT. Достаточно создать по одному такому каналу на каждый используемый COM-порт, т.к. запрос широковещательный и принимается всеми устройствами.

Для запроса значения из графика нагрузки необходимо создать 3 канала типа OUTPUT с запросами GraYear, GraMonth и GraDay (запись значений в эти каналы задает параметры запроса Graph) и сам канал с запросом Graph, указав тип запрашиваемой энергии (Параметр 1). Запрос Graph является блоковым и возвращает массив значений из архива за указанные сутки, номер конкретной записи в массиве задается параметром Параметр 2.

Каналы EnerNParam, GraYear, GraMonth, GraDay передают параметры запросов в драйвер и могут быть типов INPUT и OUTPUT; значения параметров сохраняются отдельно для каждого прибора. Каналы прочих типов запросов должны быть INPUT.

Например, канал для запроса мгновенной активной мощности, суммированной по 3 фазам, при связи с прибором с идентификатором 7777777777777777 через порт COM2 на начальной скорости 300 бод должен быть сконфигурирован следующим образом: Порт=1, Номер прибора=0; ID прибора=7777777777777777; Стартовая скорость=300, Запрос=Power, Параметр 1=1, Параметр 2=3, Тип=INPUT.

Запросы 4862

Запросы 48…62 (USER_DEF_00USER_DEF_14) используются, если прибор переключен в режим программирования.

Для этих запросов строка ID прибора задается следующим образом:

ID=<ID прибора>;N=<имя команды или параметра>;[TMOUT=<время бездействия после посылки команды, мс, DEC>;][FORMAT=<формат времени>;][PASSW=<пароль>]

Строка формата времени может содержать следующие символы:

   D – день;

   M – месяц;

   Y – год;

   h – часы;

   m – минуты;

   s – секунды;

   x – пропустить значение времени;

   v – интерпретировать как значение;

   t – инициализировать приемную структуру (создается в памяти) текущим временем (DMY, символ "t" может быть указан только в нулевой позиции строки формата);

   T – инициализировать приемную структуру текущим временем (DMYhms, символ "T" может быть указан только в нулевой позиции строки формата);

   + – интерпретировать полученное значение месяца 0…11 как 1…12 (символ "+" может быть указан только в нулевой, первой или второй позиции строки формата);

   G – запрет коррекции с учетом зимнего/летнего времени (символ "G" может быть указан только в нулевой, первой или второй позиции строки формата).

Если возвращается массив, то для передачи его данных в каналы TRACE MODE можно использовать следующие способы:

   создать необходимое число одинаково сконфигурированных каналов (в том числе с одинаковым значением атрибута Параметр 1). В каждый такой канал записывается число, которое в массиве имеет порядковый номер, равный значению атрибута Параметр 2 канала;

   создать единственный канал и привязать его к каналу CALL.ChGroupReq – в этом случае данные массива записываются в аргументы CALL.ChGroupReq. Если элемент массива содержит как значение, так и метку времени, аргументы создаются парами (в первый записывается значение, во второй – метка времени). Если Параметр 2 равен 0, в аргументы записываются все данные массива, в противном случае – только те элементы, для которых остаток от деления их номера в массиве на Параметр 2 равен 0. Номер аргумента, с которого начинается запись, равен сумме значений атрибутов Номер прибора и 34; атрибут 34 задает шаг записи по аргументам (если 0, шаг равен 1 и т.д.).

Для запроса 60 выражение "N=…" задается следующим образом:

N=<имя параметра>([<команда>])

Команда представляет собой строку подстановок:

%<символ>%<символ>…

В канале INPUT могут использоваться следующие подстановки (временные параметры – из структуры времени (см. ниже)):

%P – <день месяца>.<номер месяца>.<2 цифры года>.<номер 30-минутного интервала с начала суток>;

%p – <день месяца>.<номер месяца>.<2 цифры года>.<номер 5-минутного интервала с начала суток>;

%E – <день месяца>.<номер месяца>.<2 цифры года>.<Параметр 2>;

%G – <Параметр 2>;

%g – <Параметр 1>;

%M – минуты;

%H – часы;

%S – секунды;

%d – день месяца;

%m – номер месяца;

%n – номер предыдущего месяца;

%y – 2 цифры года;

%Y – 4 цифры года;

%K – если Параметр 2 больше номера месяца – 2 цифры предыдущего года, в противном случае – 2 цифры текущего года;

%k – подстановка зависит от номера появления %k в строке:

   первое появление – <Параметр 1>;

   второе появление – значение младшего полубайта атрибута Параметр 2;

   третье появление – 2 цифры года;

%N – <день месяца>.<номер месяца>.<2 цифры года>.<номер Параметр2-минутного интервала с начала суток>;

%B – зарезервировано;

%b – зарезервировано;

%<любой символ, кроме перечисленных выше> – указанный символ.

В канале OUTPUT могут использоваться: %G, %g, %M, %H, %S, %n, %m, %y, %Y, %d, %B, %b, %<любой символ, кроме перечисленных выше> и %P (в отличие от канала INPUT, вместо %P в канале OUTPUT подставляется выходное значение канала (9, Q)).

Для запроса 60 в отсутствие команды (скобки пусты) подставляется <Параметр 1>.<Параметр 2> (как в канале чтения, так и в канале записи).

Для запросов, отличных от 60, выражение "N=…" также может быть задано как N=<имя параметра>([<команда>]) (как в канале чтения, так и в канале записи). При этом скобки могут быть пусты или содержать %G или %<любой символ, кроме перечисленных выше>. Если скобки пусты или содержат %G, подставляется выходное значение канала (9, Q).

Структура времени по умолчанию инициализируется текущим временем. Для изменения используется команда "%∼", результат которой зависит от значения атрибута Параметр 1:

   0 – <текущее время> - 1ч

   1 – <текущее время> - 1 день

   2 – <текущее время> - 86400*<текущий день>

   3 – <текущее время> - 0.5ч

   4 – <текущее время> - 10мин

   5 – <текущее время> - 5мин

   6 – <текущее время> - 1мин

   16 – <текущее время> - (Параметр 2 + 1) ч

   17 – <текущее время> - (Параметр 2 + 1) дней

   33 – смещение на начало дня и на Параметр 2 дней назад

Запрос 63

Запрос 63, USER_DEF_15 используется, если прибор переключен в режим программирования.

Формат строки ID прибора для запроса 63, USER_DEF_15:

ID=<ID прибора>;N=<имя параметра>;…;N=<имя параметра>

В соответствии с заданным числом параметров, МРВ генерирует запросы к прибору и записывает полученные данные в каналы аналогично запросам 48…62.

Запросы 128131

Запросы 128 (REQ_READ), 129 (PARSE_READ), 130 (MULTI_PARSE) и 131 (REQ_READ(file)) предназначены для обычного режима работы прибора. В этом режиме в приемную структуру (создается в памяти) считываются параметры, заданные производителем прибора.

Запрос 128 или 131 инициализирует обычный режим и считывает все данные (запрос 131, кроме того, записывает данные в файл с именем прибора).

Если канал с запросом 128, REQ_READ привязан к каналу CALL.ChGroupReq, то, кроме инициализации и считывания данных из прибора, из приемной структуры в аргументы CALL.ChGroupReq записываются параметры, заданные в строке ID прибора. Формат строки:

ID=<ID прибора>;N=<имя параметра>;…;N=<имя параметра>

Если канал с запросом 130, MULTI_PARSE привязан к каналу CALL.ChGroupReq, то из приемной структуры в аргументы CALL.ChGroupReq записываются параметры, заданные в строке ID прибора. Формат строки:

ID=<ID прибора>;N=<имя параметра>;…;N=<имя параметра>

Формат строки ID прибора для запроса 129, PARSE_READ:

ID=<ID прибора>;N=<имя параметра>;[FORMAT=<формат времени>]

Формат времени задается так же, как для запросов 48…63.

Если канал с запросом 129 привязан к CALL.ChGroupReq, данные записываются в аргументы CALL.ChGroupReq, в противном случае производится поиск каналов для записи.

Запросы 4043

Формат строки ID прибора для запросов 40…43 (USER_ARC_00USER_ARC_03):

ID=<ID прибора>;N=<имя, по которому считываются значения>;T=<имя, по которому считываются метки времени>;TF=<формат времени>

Строка формата времени может содержать те же символы, что и для запросов 48…63, за исключением символа "v".

Запросы 40 и 41 используются в режиме программирования прибора, 42 и 43 – в обычном режиме (для выборки из приемной структуры).

Канал должен быть привязан к CALL.ChGroupReq. Номер аргумента, с которого начинается запись данных, задается атрибутом Номер прибора (четный аргумент – значение, нечетный – метка времени).

Если число NT считанных меток времени меньше числа NV считанных значений, то выполняется коррекция меток времени:

Для всех запросов в атрибут 45, T канала CALL.ChGroupReq записывается время последнего успешного приема, а в атрибут 1, A – число считанных значений.