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

3.3 Структура программного модуля обработки данных счётчиков электроэнергии

Разрабатываемый программный модуль должен выполнять основные функции по чтению и обработки данных счётчика электроэнергии. В связи с этим спроектирована функциональная модель на примере UML-диаграммы вариантов использования (Use Case diagram).

На рисунке 3.4 приведена диаграмма вариантов использования разрабатываемого программного модуля. Здесь показано одно действующее лицо: пользователь программного продукта.

Рисунок 3.4 – Диаграмма вариантов использования модуля управления учётными записями

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

  • устанавливать дату и время на устройстве;

  • назначать или снимать пароль при необходимости;

  • вводить идентификационный номер счётчика.

3.4 Последовательность выполнения запроса модуля обработки данных счётчика электроэнергии

Диаграмма последовательности обработки запроса модуля обработки данных счётчика электроэнергии представлена на рисунке 3.5.

Рисунок 3.5 – Диаграмма последовательности обработки запроса

Из рисунка видно, какую последовательность действий необходимо совершить, чтобы считать данные со счётчика электроэнергии. Самым главным объектом, который будет задавать необходимые команды в приложении, является пользователь. Рассмотрим последовательность отправки пакета байт данных по последовательному каналу связи СОМ-порту. Пользователь выбирает нужную вкладку пользовательского приложения и нажимает кнопку «Чтение». Программа формирует нужное количество запросов, представленных в виде отдельных пакетов байт данных. Далее все сгенерированные пакеты байт данных отправляются на преобразователь, а затем на преобразователь отправляет преобразованные пакеты данных на счётчик электроэнергии для считывания показаний. Счётчик проверяет все пакеты на правильность (без потери битов данных в отдельном отправляемом пакете) переданных пакетов байт данных с помощью циклического кода «CRC» и формирует ответные пакеты байт данных. Обратный процесс передачи пакета байт данных от счётчика электроэнергии конечному пользователю проходит по той же цепочке.

3.5 Чтение, модификация и обнуление параметров

Основное назначение протокола обмена это чтение, модификация и обнуление параметров счетчика. Перечень параметров приведен в таблице «Кодировка параметров» приложения А. Все параметры предполагают возможность чтения за исключением параметра № 37 «Пароль», который можно только изменить. Знаком «+» в полях «Модификация» и «Обнуление» помечены те параметры, которые можно изменять или обнулять. В полях «Смещение» (С), «Тариф» (Т) и «Уточнение» (У) приведены допустимые значения для каждого из параметров. Символ «+» в поле «Модификация» (М) означает, что этот параметр можно изменить. Символ «+» в поле «Обнуление» (О) означает, что этот параметр можно обнулить.

В счетчике предусмотрена защита от несанкционированного изменения параметров счетчика. Имеется два уровня доступа. Основной уровень предоставляет полный доступ ко всем модифицируемым параметрам, а вспомогательный позволяет изменить только сетевой адрес, конфигурацию порта связи и маску отображаемых параметров. Каждый из уровней доступа защищен своим паролем. Поэтому перед выполнением команд, которые могут изменить какой-либо параметр необходимо подтвердить свое право на выполнение таких действий. Получить тот или другой уровень доступа можно с помощью команды «Отключить защиту». Аргументом команды «Отключить защиту» является 8-ми байтный пароль. Если после отключения защиты счетчик не принял ни одной команды изменяющей параметры в течение 240 секунд, то защита будет восстановлена автоматически. Защиту также можно восстановить с помощью команды «Восстановить защиту».

Предприятием-изготовителем счетчики поставляются с основным и вспомогательным паролем равным «00000000». Каждый символ пароля это ASCII-код символа «0» (шестнадцатеричный код – 0х30). Пользователь счетчика может изменить пароли с помощью параметра № 37. Формат пакета команды для чтения параметра приведен на рисунке 3.6. Поле «функция» должно содержать код 3 или 4. Назначение полей «адрес» и «CRC» были рассмотрены выше.

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

Поле «код параметра» уточняет запрашиваемый параметр. Соответствие кода и названия параметра приведено в приложении А. Поле «смещение» уточняет, к какому временному интервалу относится запрашиваемый параметр. Модуль поля указывает, на сколько единиц отстоит запрашиваемый временной интервал от текущей даты и времени, а знак указывает направление. Например, если требуется получить приращение энергии за предыдущий месяц, то поле «смещение» должно содержать число «-1», если за текущий то «0». Для некоторых параметров это поле может иметь другое назначение. Более подробно о кодировании этого поля изложено ниже. Допустимые значения поля «смещение» для каждого параметра приведены в приложении А.

Поле «тариф» должно содержать код требуемого тарифа. Число 0 зарезервировано для бестарифных значений, 1…4 кодирует один из 4 тарифов. Для некоторых параметров это поле может иметь другое назначение. Допустимые значения поля «тариф» для каждого параметра приведены в приложении А.

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

Если поля «смещение», «тариф» или «уточнение» для запрашиваемого параметра не имеет смысла (например, необходимо считать версию программы), то в этом случае значения этих полей должны быть 0. Как показано на рисунках выше, для чтения параметров используются функции № 3 и № 4. Обе эти функции имеют одинаковый формат запроса и работают с одним и тем же набором параметров. Запрос с функцией № 4 включен в протокол обмена для представления одного и того же параметра в двух вариантах. Например, при считывании параметра № 1 «Суммарная накопленная энергия» запросом с функцией № 3, в ответном сообщении будет возвращена энергия в двоичном представлении без учета коэффициентов трансформации по току и напряжению, а тот же параметр, считанный запросом с функцией № 4, будет представлен числом типа «float» в том же формате, в каком он отображается на индикаторе электросчетчика. В настоящее время альтернативное представление значений реализовано только для некоторых параметров (более подробно смотри ниже по тексту). Для всех остальных параметров, запросы с функциями № 3 и № 4, абсолютно равнозначны, но для обеспечения совместимости с будущими версиями программного обеспечения счетчика настоятельно рекомендуется для чтения таких параметров использовать запрос с функцией № 3. В ответ на запрос счетчик возвратит пакет, вид которого представлен на рисунке 3.7.

Рисунок 3.7 – Структура пакета, возвращаемого счётчиком

Значение полей «функция» и «код параметра» повторяют значение соответствующего поля запроса. В случае успешного выполнения запроса поле «результат» будет содержать «0», а поле «данные» – запрашиваемый параметр (параметры). Наличие кода отличного от «0» в поле «результат» является признаком невозможности выполнения запроса. В этом случае поле «данные» будет отсутствовать, а в поле «функция» будет установлен старший бит в «1». Возможные значения кода «результат» приведены в приложении Б. Содержание поля «данные» зависит от типа считываемого параметра и подробно рассматривается ниже. Для модификации параметров используется пакет с функцией № 16. (Здесь и далее если не оговорено, то имеется в виду десятичное представление числа). Формат пакета приведен на рисунке 3.8.

Рисунок 3.8 – Формат пакета данных для модификации параметров

Все поля рассматривались ранее. Поле «уточнение» позволяет более полно конкретизировать модифицируемый параметр. Наполнение поля «данные» зависит от модифицируемого параметра. Формат ответного сообщения представлен на рисунке 3.9.

Рисунок 3.9 – Формат ответного пакета

Как следует из рисунка 3.9, формат ответа совпадает с ответом на команду чтение параметра, представленной на рисунке 3.6, за исключением того, что поле «данные» отсутствует. Обнулить параметры можно командой с кодом функции № 30. Формат команды представлен на рисунке 3.10.

Рисунок 3.10 – Формат пакета команды обнуления

Здесь, как и обычно, поле «код параметра» содержит код обнуляемого параметра. Формат ответа будет таким же, как и ответ на команду модификации, представленной на рисунке 3.6.

3.5.1 Параметры группы энергия

Счетчик рассчитывает и сохраняет следующую информацию об энергии:

      • накопленная энергия от момента запуска (последнего обнуления);

      • приращение энергии за текущие и количество дней предыдущего месяца (без одного дня);

      • приращение энергии за текущий и 23 предыдущих месяцев;

      • приращение энергии за текущий год и 7 предыдущих;

      • накопленная энергия на начало суток всех дней текущего месяца;

      • накопленная энергия на начало текущего месяца и 23 предыдущих;

      • накопленная энергия на начало текущего года и 7 предыдущих.

Графическое представление группы параметров, относящихся к энергии, приведено в приложении Д. Энергия хранится в виде 5 блоков регистров. Каждый блок, в свою очередь, содержит 4 регистра, которые представляют значения активной и реактивной энергии в двух направлениях («E+», «E-», «R+» и «R-»). Блок «0» предназначен для бестарифных значений, а четыре оставшихся блоков хранят тарифные значения от Т1 до Т4. Каждый регистр имеет размерность 32 бита и хранит значение энергии в двоичном формате. Вес младшего разряда зависит от исполнения прибора. Реальное значение энергии можно рассчитать по формуле:

(Вт·ч), (3.1)

где N – значение регистра энергии;

Ke – весовой коэффициент (Вт·ч, вар·ч);

KI – коэффициент трансформации по току;

KU – коэффициент трансформации по напряжению.

Для запроса значений энергии используется формат, приведенный на рисунке 3.6. За один цикл обмена со счетчиком можно считать значения энергии только из одного блока регистров. Поэтому в запросе, поля «код параметра», «смещение» и «тариф» конкретизируют блок регистров, а поле «уточнение» позволяет считать или одно значение или все 4. Код «0» этого поля указывает счетчику, что требуются все 4 значения, а коды «1…4» предназначены для чтения одного из «E+», «E-», «R+» или «R-» параметров соответственно. Формат ответа приведен на рисунке 3.6. Поле «данные» содержит одно или 4 значения энергии в зависимости от значения поля «уточнение». При запросе с функцией № 3, содержимое соответствующего регистра будет просто скопировано в поле «данные» и энергия будет представлена в двоичном формате. При запросе с функцией № 4 электросчетчик вычисляет энергию по формуле (3.1) с учётом единицы измерения используемой электросчетчиком в текущий момент, и результат расчета помещает в поле «данные». В этом случае для представления энергии используется 4-х байтный формат числа с плавающей запятой (тип «float» языка С). Если электросчетчик предназначен только для измерения активной потребленной энергии то регистры «E-», «R+» и «R-» будут содержать «0».

3.5.2 Параметры группы мощность

К параметрам группы мощность относятся:

  • средняя 3-х минутная активная и реактивная мощность прямого и обратного направления за текущие и предыдущие 3-х минутные;

  • средняя 3-х минутная активная и реактивная мощность прямого и обратного направления за текущие 3-х минутные и предыдущие 3-х минутные с меткой времени;

  • средняя 30-ти минутная (или 15-ти минутная) активная и реактивная мощность прямого и обратного направления за текущий и предыдущий интервалы;

  • средняя 30-ти минутная (или 15-ти минутная) активная и реактивная мощность прямого и обратного направления за текущий и предыдущий интервалы с меткой времени;

  • максимальная 30-ти минутная (или 15-ти минутная) активная и реактивная мощность прямого и обратного направления по 4-м тарифам и бестарифная за текущий и 23 предыдущих месяца.

В приложении Е приведено графическое представление иерархии параметров группы мощность. Также как и энергию, мощность можно считать с помощью функций № 3 и № 4. Запрос с функцией № 3 позволяет получить мощность в формате «float» с размерностью «Вт». На запрос с функцией № 4 будет возвращена «реальная» мощность, с учетом единицы измерения используемой электросчетчиком в текущий момент. Так как значения средней мощности не учитывают тариф, то в пакете запроса поле «тариф» должно быть нулевым. Поля «смещение» и «уточнение» заполняются по тем же правилам, что и для параметров группы энергия. При формировании запроса на чтение максимальной мощности необходимо учитывать то обстоятельство, что одновременно можно считать только одно значение мощности (в поле «уточнение» недопустим код «0»). Формат поля «данные» ответного пакета различаются при считывании средних и максимальных значений. Формат поля «данные» для средней мощности такой же, как и для энергии. Значение максимальной мощности считываются совместно с датой и временем фиксации максимума. Дата и время кодируются 6-ю байтами. Формат ответа при запросе максимальной мощности приведен на рисунке 3.11.

Рисунок 3.11 – Формат ответа при запросе максимальной мощности

Ответное сообщение при запросе параметров с номерами 38 и 39 совпадает с параметрами 5 и 6 соответственно, но после значений мощности добавлена 2-х байтная метка времени. Метка времени – это номер соответствующего интервала в течение суток. Так, например, для 3-х минутных мощностей сутки разбиваются на 480 интервалов, и метка времени будет равна числу в диапазоне от 0 до 479. Для 15-ти и 30-ти минутных интервалов значение меток будет в диапазоне от 0 до 47 и от 0 до 95 соответственно. Эти параметры целесообразно использовать при архивировании средних мощностей на удаленном компьютере, при этом метка времени позволяет исключить дублирование и пропуск значений при рассинхронизации времени счетчика и компьютера. Если электросчетчик предназначен только для измерения активной потребленной энергии, то регистры «P-», «Q+» и «Q-» будут содержать «0».

3.5.3 Срезы энергии

В зависимости от исполнения, счетчик оперирует с 30-ти или 15-ти минутными интервалами. В начале каждого интервала счетчик сохраняет в энергонезависимой памяти количество энергии накопленной за предыдущий интервал по четырем направлениям («E+», «E-», «R+», «R-»). Объема памяти достаточно для хранения получасовых срезов за 2 месяца или 15-ти минутных за 1 месяц. Назначение полей в команде запроса на чтение несколько отличается от стандартного значения. Формат полей приведен на рисунке 3.12.

Рисунок 3.12 – Формат полей на чтение срезов энергии

Как видно из рисунка, вместо полей «смещение», «тариф» и «уточнение» необходимо использовать номер месяца (1…12), номер дня (1…31) и номер среза соответственно. Допустимыми значениями для поля «№ среза» могут быть числа от 0 до 47 при получасовом срезе или от 0 до 95 при 15-ти минутном срезе. В ответном сообщении поле «данные» будет соответствовать формату, приведенному на рисунке 3.13. Если требуемый срез отсутствует, то поле ответа будет содержать нули.

Рисунок 3.13 – Формат поля «данные» ответного сообщения

Формат полей «E+», «E-», «R+», «R-» зависит от функции используемой в запросе. При запросе с функцией № 3 каждое поле будет представлено в двоичном формате без учета KI и KU, размер каждого поля равен 2-ум байтам. Реальное значение приращения энергии, в этом случае, рассчитывается по формуле (3.1). При запросе с функцией № 4 каждое поле будет представлено 4-х байтным числом в формате «float» c учётом коэффициентов трансформации по току и напряжению и с учетом единицы измерения энергии, используемой счетчиком в текущий момент.

Параметр «Срезы энергии за 6 интервалов», позволяет одним запросом считать срезы энергии за 6 интервалов. Формат запроса полностью совпадает с запросом, представленным на рисунке 3.6, а поле данных ответа будет содержать 6 срезов энергии. Каждый из 6-ти срезов соответствует формату представленному на рисунке 3.6. Если счетчик используется только для учета потребленной энергии, то срезы по направлениям «E-», «R+» и «R-» будут всегда нулевыми и для того чтобы повысить эффективность использования каналов связи предусмотрена возможность одним запросом считать 24 среза активной потребленной энергии. Для этих целей используется все тот же запрос с параметром № 40, но в поле «месяц» старший бит должен быть установлен в «1». Если счетчик принимает запрос с параметром № 40 он анализирует старший бит поля «месяц» и если он установлен в «0», то этот запрос выполняется стандартным образом, если же старший бит установлен в «1», то в поле данных ответа будет последовательно помещено 24 значения срезов активной потребленной энергии в формате, определенном полем «функция».

3.5.4 Тарифные расписания

Счетчик позволяет вести учет потребленной энергии по 4-м тарифам в 48-ми зонах по 12-ти сезонам с учетом рабочих и выходных дней. В счетчиках с версией ПО до 1.15 сезоны соответствуют месяцам и их переназначение невозможно. В таких счетчиках возможно изменение только основных тарифных зон по 12-ти месяцам для рабочих и выходных дней. В счетчиках с версией ПО от 1.15 сезоны могут быть произвольными. Минимальная длительность сезона составляет 1 день. На любой календарный день можно назначить любой из 12-ти сезонов. Минимальная зона действия тарифа составляет 30 минут, причем в один и тот же получас могут присутствовать несколько тарифов. В счетчик можно записать резервное тарифное расписание, которое вступит в действие с указанной даты.

Тарифное расписание (основное и резервное) состоит из тарифных сезонов и тарифных зон. Тарифные сезоны указывают номер сезона (от 1 до 12) для каждого календарного дня всего года. Тарифные сезоны для одного месяца состоят из 31-ого байта (по максимальному количеству дней месяца). За один сеанс обмена можно считать или записать тарифные сезоны только одного месяца. При чтении и записи поле «уточнение» должно определять номер месяца (от 1 до 12), а поле «данные» ответа при чтении или команды при записи содержит 31 байт.

Тарифные зоны должны составляться отдельно для рабочих и выходных дней для каждого из 12 сезонов. Тарифные зоны для одного сезона состоит из 48-ми байт. Первый байт соответствует тарифам для нулевого получаса (от 00 часа 00 минуты до 00 часа 30 минут), каждый бит байта соответствует одному из тарифов (бит 0 соответствует тарифу A, бит 1 соответствует тарифу B, бит 2 соответствует тарифу С). За один сеанс обмена можно считать или записать тарифные зоны только для одного сезона. При чтении и записи поле «уточнение» должно определять номер сезона (от 1 до 12), а поле «данные» ответа при чтении или команды при записи содержит 48 байт. Если было изменено тарифное расписание для текущего месяца, то работу по новому тарифному расписанию счетчик начнет с началом следующего получаса.

Для резервных тарифных сезонов поле «уточнение» должно указывать номер от 13 до 24 (месяцы от января до декабря соответственно). Для резервных тарифных зон поле «уточнение» должно указывать номер от 13 до 24 (сезоны от 1 до 12 соответственно). Кроме того необходимо установить дату перехода на резервное расписание. Эта дата кодируется 6-ю байтами (секунда, минута, час, день, месяц, год). В поле «уточнение» нужно установить «1». Однако нужно учитывать, что переход произойдет именно при наступлении указанных суток, т.е. в «00:00:00». После перехода на резервное тарифное расписание они поменяются местами (резервное станет основным, а основное – резервным), что даст возможность определения нового резервного расписания.

3.5.5 Лимиты на электроэнергию

Лимиты вводятся вместо тарифов (при параметризации счетчика необходимо выбрать будут ли использоваться тарифы или лимиты). При выборе лимитов необходимо задать их численные значения. Значения задаются в единицах вывода данных на экран (Вт·ч, кВт·ч, МВт·ч). Всего можно задать до четырех лимитов. Нулевое значение означает неиспользуемый лимит. Значения лимитов задаются в формате 4-х байтного числа с плавающей точкой. Формат пакета задания лимитов представлен на рисунке 3.14.

Рисунок 3.14 – Формат пакета задания лимитов

Поля «лимит1»...«лимит4» задают численные значения лимитов электроэнергии. Поле «флаг» определяет, будут ли применяться лимиты: 0 – используются тарифы, 1 – используются лимиты.

3.5.6 Параметры группы «константы»

К этой группе относятся параметры с номерами 0, 17…26. Поля «смещение», «тариф» и «уточнение» в команде запроса на чтение должны быть нулевыми. Формат поля «данные» ответного сообщения для параметров группы «константы» приведен в таблице 3.1.

Таблица 3.1 – Формат поля «данные» ответного сообщения

№ параметра

Название параметра

Формат поля «данные»

0

Идентификационный номер устройства

2-х байтное целое число

17

Тип прибора

16 символов ASCII

18

Заводской номер

10 символов ASCII

19

Дата выпуска

6 байт (с, мин, час, день, мес., год)

20

Версия программы

4 символа ASCII

21

Сетевой адрес

1 байтное целое число

22

Идентификатор пользователя

8 символов ASCII

23

Конфигурация порта связи

6 байт

24

Кпр. телеметрии (имп/кВт ч)

8 байт

25

Коэффициент KI

4-х байтное целое число

26

Коэффициент KU

4-х байтное целое число

Параметр «Идентификационный номер устройства» кодируется двухбайтным целым числом и позволяет определить группу и тип устройства. Старший байт определяет группу (электросчетчики, счетчики тепловой энергии, концентраторы и т.д.), а младший определяет тип устройства в группе. Группа «Электросчетчики» имеет код «1». Внутри этой группы типу «СС-301» присвоен код «1», а типу «СС-101» – код «2». Поэтому идентификационный номер однофазного счетчика «СС-101» в шестнадцатеричной системе счисления будет иметь код «0х0102», а трехфазный счетчик «СС-301» код «0х0101». Параметр «конфигурация порта связи» относится к порту 2. Кодировка конфигурации представлена на рисунке 3.15.

Рисунок 3.15 – Формат кодировки последовательного порта связи

Поле «скорость» определяет скорость обмена в бодах и может варьировать в диапазоне от 100 до 19200 бод с шагом в 1 бод. Поле «тип» определяет тип физического интерфейса и может принимать следующие значения:

а) 0 – нет порта;

б) 1 – MBUS;

в) 2 – токовая петля;

г) 3 – RS-485.

Поле «N инфо» показывает количество информационных бит и всегда равно «8». Поле «Паритет» определяет вид паритета и может принимать значения:

а) 0 – без паритета;

б) 1 – контроль на нечетность;

в) 2 – контроль на четность.

Поле «N стоп» содержит количество стоповых бит. Допустимое значение «1». Параметр «Кпр.» телеметрии имеет формат, приведенный на рисунке 3.16.

Рисунок 3.16 – Формат телеметрии параметра «Кпр.»

Поле «Кпр.» это 4-х байтное целое число, определяющее количество импульсов телеметрии на 1 кВт·ч (квар·ч) энергии. Поле «Ke» определяет весовой коэффициент регистра энергии в мВт·ч (мвар·ч). Этот коэффициент используется при расчете потребленной энергии. Размерность Ке – милливатт в час (милливар в час). Поле «резерв» – не используется.

Сетевой адрес прибора, идентификатор пользователя, конфигурация порта связи и «Кпр.» телеметрии допускают модификацию с помощью команды с функцией № 16. Значения сетевого адреса и конфигурацию порта связи можно изменить, используя основной или вспомогательный доступ. Формат поля «данные» команды должен совпадать с форматом, приведенным в таблице 3.1. При изменении конфигурации порта необходимо иметь в виду, что тип интерфейса и число информационных бит, не могут быть модифицированы (их значения проверяются счетчиком, поэтому они должны быть в пределах допуска). Значение «Кпр.» телеметрии должно быть в пределах от 100 до 10000 имп/кВт·ч.