Административный номер точки учета - Meter Point Administration Number - Wikipedia

А Административный номер точки учета, также известный как MPAN, Номер поставки или же S-номер, это 21-значный номер, используемый в Великобритания однозначно идентифицировать электричество точки снабжения такие как индивидуальные домашние резиденции. Газовым эквивалентом является Контрольный номер точки измерения и эквивалент воды / сточных вод для потребителей, не являющихся бытовыми, составляет ID точки поставки. Система была введена в 1998 году с целью создания конкурентной среды для электроэнергетических компаний, позволяющей потребителям легко менять поставщика, а также упрощая администрирование. Хотя название предполагает, что MPAN относится к определенному счетчику, MPAN может иметь несколько связанных с ним счетчиков,[1] или вообще нет там, где это неограниченное предложение. Источник питания, получающий питание от оператора сети (DNO ) имеет Импорт MPAN, а поколение и микрогенерация проекты, возвращающиеся в сеть DNO, получают экспортные MPAN.[1]

Структура

MPAN обычно делится на две части: основные и верхние данные. Ядро - это последние 13 цифр и уникальный идентификатор. Данные в верхней строке предоставляют информацию о характеристиках поставки и являются обязанностью поставщика.

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

MPAN Format.jpg

Основные данные находятся во второй строке, дополнительные данные - в первой.

Класс профиля (ПК)

Первые две цифры полного MPAN отражают класс профиля.[3]

00Получасовая поставка (импорт и экспорт)
01Без ограничений внутри страны
02Одомашненный Счетчик экономичности двух и более ставок
03Без ограничений внутри страны
04Не для дома Экономика 7
05Не для дома, с возможностью записи максимальной нагрузки (MD) и с коэффициентом загрузки (LF ) меньше или равно 20%
06Не для дома, с возможностью записи MD и LF менее или равным 30% и более 20%
07Не для дома, с возможностью записи MD и LF меньше или равным 40% и больше чем 30%
08Не для домашнего использования, с возможностью записи MD и с LF более 40% (также все MSID, экспортируемые не через полчаса)

Расходы профильного класса 00 измеряются каждые полчаса (HH), то есть они регистрируют потребление электроэнергии каждые полчаса каждого дня, а поставки других классов профиля измеряются не через полчаса (NHH). Предложение NHH должно быть повышено до HH, если:[4]

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

а. предыдущие двенадцать месяцев; или же
б. период с момента последнего значительного изменения спроса (в зависимости от того, что короче)

превышает 100кВт.

Данные HH регистрируются измерителем и собираются путем загрузки на месте или с помощью методов удаленной связи, таких как GSM, SMS, GPRS или телефонная линия.[2]

Внутренние MPAN импорта NHH всегда имеют класс профиля 01 или 02. Внутренним MPAN экспорта NHH назначается класс профиля 08.[3]

Код переключателя времени измерителя (MTC)

MTC - это трехзначный код, который отражает различные регистры, которые может иметь счетчик, например, единичный тариф, разделение дня и ночи или сезонное время суток.[5][6]

Диапазоны MTC
001–399DNO специфический
400–499Зарезервированный
500–509Коды для связанных систем измерения - общие для всей отрасли
510–799Коды для родственных систем измерения - специфические для DNO
800–999Коды, общие для всей отрасли

Класс коэффициента потерь в линии (LLFC)

Класс коэффициента потерь в линии или LLFC[7] используется для определения связанных Распространение Использование системы (DUoS) взимает плату за MPAN. Цифра отражает как объем распределительной инфраструктуры, используемой для снабжения точки выхода, так и количество энергии, потерянной из-за нагрева кабелей, трансформаторов и т. Д.[2]

Основной

Ядро MPAN представляет собой последние 13 цифр MPAN и однозначно определяет точку выхода. Он состоит из двухзначного идентификатора дистрибьютора, за которым следует восьмизначный уникальный идентификатор, затем две цифры и одна контрольная цифра.

ID дистрибьютора

Карта лицензионных участков DNO

Великобритания разделена на четырнадцать регионов сбыта. Для каждой области отдельная компания, оператор распределительной сети, имеет лицензию на распределение электроэнергии.[8] Они эффективно переносят электричество из Национальная сеть до точек выхода (каждый имеет уникальный MPAN и возможность нескольких метров), где находятся клиенты. Владелец распределительной сети взимает плату с поставщиков электроэнергии за передачу электроэнергии в их сети. Их лицензированные регионы DNO являются теми же географическими зонами, что и предыдущие. национализированные электрические щиты.[8]

DNO
Я БЫИмяОператорТелефонный номерID участника рынка[9]Идентификатор группы GSP[10]
10Восточная АнглияUK Power Networks0800 029 4285EELC_A
11Ист-МидлендсWestern Power Distribution0800 096 3080EMEB_B
12ЛондонUK Power Networks0800 029 4285ЛОНД_C
13Мерсисайд и Северный УэльсSP Energy Networks0330 10 10 444MANW_D
14западное СредиземьеWestern Power Distribution0800 096 3080MIDE_E
15Северо-Восточная АнглияСеверная энергосистема0800 011 3332NEEB_F
16Северо-Западная АнглияЭлектричество Северо-Запад0800 048 1820NORW_ГРАММ
17Северная ШотландияШотландские и Южные электрические сети0800 048 3516HYDE
18Южная ШотландияSP Energy Networks0330 10 10 444SPOW_N
19Юго-Восточная АнглияUK Power Networks0800 029 4285SEEB_J
20Южная АнглияШотландские и Южные электрические сети0800 048 3516ЮГ_ЧАС
21Южный УэльсWestern Power Distribution0800 096 3080SWAE_K
22Юго-Западная АнглияWestern Power Distribution0800 096 3080SWEB_L
23ЙоркширСеверная энергосистема0800 011 3332YELG_M

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

Шотландское гидрораспределение электроэнергии также предоставляют услуги распространения в Южной Шотландии как IDNO и Южный распределительный щит предоставлять услуги IDNO во всех других регионах Англии и Уэльса. Другие IDNO не имеют «базовой» зоны.[11]

Независимые операторы распределительных сетей
Я БЫИмяЛицензиатИдентификатор участника рынка[9]
24GTCНезависимые энергетические сетиIPNL
25ESP ЭлектричествоESP ЭлектричествоДЛИНА
26ЭнергетикаGlobal Utilities Connections (Electric) LtdGUCL
27GTCООО "Электросетевая компания"ETCL
28EDF IDNOUK Power Networks (IDNO) LtdEDFI (больше не живу)
29Harlaxton Energy Networks LtdHARL
30Пил Электричество Сети ЛтдПЕНЛ
31UK Power Distributions LtdUKPD
32EANEnergy Assets Networks LtdUDNL
35FEALFulcrum Electricity Assets LtdFEAL
36Vattenfall Network LimitedНДС

Состояние MPAN

Источник питания, идентифицированный MPAN, может находиться в одном из четырех состояний: отключен, отключен, под напряжением и новый.

  • Отключено: сервисный кабель удален, MPAN не будет использоваться повторно.
  • Обесточен: сервисный кабель на месте, но предохранитель удален. Счетчик остается подключенным к распределительной сети, но электричество использовать нельзя.
  • Под напряжением: Сервисный кабель и предохранитель на месте. Поставка полностью работоспособна.
  • Новое: был создан новый MPAN, однако верхняя строка (дополнительные данные, состоящие из класса профиля и кода переключения времени измерителя) еще не завершена. Сервисный кабель может быть установлен или не установлен.

Эти условия ни в коем случае не стандартизированы. Например, отключенное питание может называться «мертвым» источником питания.

Экспорт MPAN

Подавляющее большинство MPAN - это импортные MPAN, в которых потребляется энергия. Однако, если поставка экспортируется в торговую сеть, выдается экспортный MPAN. Если поставка и импорт, и экспорт, то выдается как импортный MPAN, так и экспортный MPAN.

Микрогенерация

Раньше для экспортных MPAN требовалось установить счетчик, совместимый с получасовым интервалом. С 2003 года появилась возможность микрогенерация проекты с мощностью 30 кВт или ниже, чтобы иметь неполчасовой счетчик для экспорта обратно в распределительную сеть. Внедрение было медленным: первый экспортный MPAN микрогенерации был выпущен в июне 2005 года. Некоторые поставщики могут не беспокоиться о регистрации экспортного MPAN в MPAS, поскольку выручка очень мала. Экспортная мощность более 30 кВт должна измеряться каждые полчаса.

Отмеренная точка подачи

Точка измерения потребления (MSP) - это точка, в которой находится счетчик, измеряющий потребление потребителем. Таким образом, это также точка, в которой либо оператор распределительной сети Поставка или боковой кабель оператора сети здания прекращается, и начинается установка оборудования заказчика. Чтобы надежно установить MSP поставщика, MPAN должен быть связан с серийный номер счетчика.

Хотя MPAN обычно ассоциируется с серийным номером одного счетчика, в некоторых случаях существует связь «многие ко многим». Например, один метр может быть связан как с импортным, так и с экспортным MPAN, или один MPAN может быть измерен тремя отдельными счетчиками.

Свод правил измерения[12]

Процессуальный кодекс
КодКлассифицироватьКонфигурация
COP10менее 72 кВтУстановлен один счетчик полного тока HH. Представлен в феврале 2009 г.[13]
COP5менее 1 МВтУстановлен один счетчик ДН.
COP3От 1 МВт до 10 МВтУстановлено два счетчика, основной и контрольный, регистрирующие одинаковую нагрузку. Основной счетчик, используемый для выставления счетов.
COP2От 10 МВт до 100 МВтУстановлено два счетчика как в КС3, но более высокого класса точности.
COP1> 100 МВтОчень мало сайтов в Великобритании на этом уровне, как правило, электростанции и соединения с Национальная сеть.

Неизмеренные поставки

Возможно, что небольшие предсказуемые запасы не будут измеряться.[14] Примеры: уличные фонари, светофоры, знаки, болларды, телефонные киоски, Кабельное телевидение и рекламные дисплеи.

Для того, чтобы оборудование было подключено к распределительной сети через безлимитное соединение, его потребление не должно превышать 500 Вт, и оно должно работать предсказуемым образом, без возможности включения его вручную по запросу конечного пользователя. Обычно оборудование либо работает и получает электричество 24 часа в сутки, либо управляется фотоэлементом, как это часто бывает с уличными фонарями.

Заказчик несет ответственность за ведение точного и актуального инвентаря неизмеренных расходных материалов и за информирование UMSO (Оператора неизмеренных расходных материалов) обо всех изменениях в подключенном оборудовании.

Более крупные местные власти, как правило, торгуют своей неизмеренной энергией на получасовой основе. Для этого они нанимают администратора счетчика.[15][16] который будет использовать ежедневные данные из массива фотоэлектрических блоков управления (PECU), которые затем используются для расчета потребления энергии. Массив PECU - это устройство, которое содержит репрезентативное количество фотоэлементов, которые власти используют в своих уличных фонарях или светофорах.[17] Продавая электроэнергию без учета измерения каждые полчаса, орган власти будет точно платить за электроэнергию, потребляемую их заявленным неизмеренным оборудованием, а поскольку данные загружаются ежедневно, орган будет видеть, что их счета за электроэнергию меняются в течение года, чтобы отражать изменения в сезоне и дневном освещении уровни.

Если, однако, торговля неизмеренными запасами осуществляется не почасово, UMSO берет на себя ответственность за расчет EAC (расчетного годового потребления). Это делается с использованием простой формулы, которая учитывает мощность схемы оборудования и годовые часы работы. Например, оборудование, которое используется 24 часа в сутки, будет иметь 8766 часов в год. Например, для камеры видеонаблюдения с номинальной мощностью 24 Вт EAC будет 210,384 кВт · ч, рассчитанное как мощность схемы × годовые часы, разделенные на 1000.

Если оборудование уличное освещение, то используется тот же процесс; однако годовые часы будут меняться, поскольку каждому фотоэлементу назначается установленное количество часов в году, которое указывает, как и когда включается и выключается свет. Эти годовые часы были установлены Elexon и не согласовываются с UMSO на местном уровне заказчиком.

После того, как расчет EAC был произведен, назначенному заказчиком поставщику электроэнергии предоставляется сертификат EAC для выставления счетов, а электронная копия EAC отправляется назначенному сборщику данных. DNO делает Распространение Использование системы плата с поставщика электроэнергии за доставку электроэнергии на неизмеренное оборудование потребителя.

Стандартная конфигурация расчетов (SSC)

Каждый полчаса Supply имеет четырехзначный код, называемый стандартной конфигурацией расчетов (SSC), который определяет количество регистров счетчика и время, в течение которого каждый регистр регистрирует потребление электроэнергии. Время записи регистра указывается с помощью пятизначного кода Time Pattern Regime (TPR). Так, например, источник с SSC 0943 имеет два регистра с TPR 00404 и 00405. Регистр 00404 TPR записывает с 01:00 до 02:30 и с 08:00 до 23:30, а регистр 00405 записывает все остальное время. .[18]

Система администрирования Meter Point

Каждый DNO управляет системой администрирования точек измерения (MPAS), которая содержит следующую информацию для каждого MPAN:

MPRS - это название программного пакета, реализующего систему MPAS для всех DNO.[19] Поскольку MPRS используется большинством DNO, он часто используется как синоним термина MPAS.

ЭКОЭС

ECOES (Центральная онлайн-справочная служба по электроэнергии) - это веб-сайт, который позволяет пользователям и уполномоченным отраслевым сторонам искать сведения о поставках (в прошлом и в настоящее время), используя такие вещи, как 13-значный номер нижней строки MPAN, серийный номер счетчика или почтовый индекс. Пользователь может определить широкий спектр данных, относящихся к поставке, включая полный адрес, детали счетчика, текущее состояние подачи питания, а также назначенных сторон (например, поставщика, дистрибьютора, MOP, DC и DA). Сайт заполняется на основе информации, присланной поставщиком относительно системы учета.[20]

Только небытовые пользователи (с двумя действующими MPAN, которые не относятся к классу 1 или 2) могут зарегистрироваться для доступа к этой услуге.[21]

Проверить модуль разряда

Контрольная цифра

Последняя цифра в MPAN является контрольной цифрой и подтверждает предыдущие 12 (ядро) с использованием теста модуля 11. Контрольная цифра рассчитывается следующим образом:

  1. Умножьте первую цифру на 3
  2. Умножьте вторую цифру на следующее простое число (5)
  3. Повторите это для каждой цифры (пропущено 11 в списке простых чисел для целей этого алгоритма)
  4. Сложите все эти продукты
  5. Контрольная цифра - это сумма по модулю 11 по модулю 10.[22]
Примеры проверки MPAN
Алгоритм в Java:
int контрольная цифра(Нить Проверять) {    int[] простые числа = {3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43};    int сумма = 0;    за (int я = 0; я < простые числа.длина; я++) {        сумма += Характер.getNumericValue(Проверять.диаграмма(я)) * простые числа[я];    }    возвращаться сумма % 11 % 10;}

В Matlab:

функцияпроверить =контрольные цифры(MPANCore)% MPANCore - это массив ячеек из 13-значных строк.% Check - это логический вектор того же размера, что и MPANCore.% (100 000 MPAN за 0,05 секунды.)основной = двойной(char(MPANCore)')-48; c = основной(1:12,:);п = [3 5 7 13 17 19 23 29 31 37 41 43]' * те(1, размер(c, 2));м = мод(мод(сумма(п.*c), 11), 10); k = основной(13,:); проверить = м == k;

В Pascal / Delphi:

функция Контрольная цифра(MPANCore : множество из Байт): Целое число;const  Простые числа : множество [0..11] из Байт = (3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43);вар  я : целое число;начинать  Результат := 0;  за я := 0 к 11 делать    Результат := Результат + (MPANCore[я] * Простые числа[я]);  Результат := Результат мод 11 мод 10;конец;

В Ruby:

# где mpan - строкаdef контрольная цифра(мпан)  простые числа = [3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43]  (0..11).вводить(0) { |сумма, п| сумма + (мпан[п, 1].to_i * простые числа[п]) } % 11 % 10конец

В Visual Basic:

Общественные Функция mpancheck(мпан В качестве Нить) В качестве Булево    Майкл Диармид (EDF)    'Обновлено 08.04.2010 MD    'Возвращает True / False, если MPAN действителен  На Ошибка Идти к бесценный    Тусклый c В качестве Вариант, сумма В качестве Целое число, я в качестве Байт       c = Множество(0, 3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43)    За я = 1 К 12        сумма = сумма + (Середина(мпан, я, 1) * c(я))    Следующий я    Если Правильно(мпан, 1) = ((сумма Мод 11) Мод 10) потом        mpancheck = Истинный    Ещебесценный:        mpancheck = Ложь    Конец Если Конец Функция

В VisualBasic.Net 2010:

Общественные Функция mpancheck(мпан В качестве Нить) В качестве Булево        Майкл Диармид (EDF)        'Обновлено 08.04.2010 MD        'Возвращает True / False, если MPAN действителен        Редакция Tym Huckin (16.03.2012) для VB 2010        На Ошибка Идти к бесценный        Тусклый c В качестве Объект, сумма В качестве Целое число        c = Новый Список(Из Целое число) Из {0, 3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43}        За я = 1 К 12            сумма = сумма + (Середина(мпан, я, 1) * c(я))        Следующий я        Если sRight(мпан, 1) = ((сумма Мод 11) Мод 10) потом            Возвращаться Истинный        Ещебесценный:            Возвращаться Ложь        Конец Если    Конец Функция    Общественные Функция sRight(sSTRING В качестве Нить, ИЛЕН В качестве Целое число) В качестве Нить        Тусклый sRET В качестве Нить = ""        Пытаться            Если ИЛЕН >= Лен(sSTRING) потом                sRET = sSTRING            Конец Если            sRET = Середина(sSTRING, Лен(sSTRING) - (ИЛЕН - 1), ИЛЕН)        Ловить бывший В качестве Исключение            sRET = ""        Конец Пытаться        Возвращаться sRET    Конец Функция

Или VB.Net 2010, избегая использования библиотеки совместимости VB6:

    '' '<резюме>    '' 'Проверяет номер MPAN    '' '    '' ' По крайней мере, последние 13 цифр номера MPAN, включая контрольную цифру,     '' 'выражается строкой     '' ' Истина для действительного, иначе ложь     '' ' Написано Мартином Миланом, май 2012 г., без использования библиотеки совместимости VB6 для профиля клиента .Net 4.0     Общественные Функция MPANIsValid(мпан В качестве Нить) В качестве Булево                'Задайте начальные условия.        Тусклый validationResult В качестве Булево = Ложь                Если мпан.Длина > 12 потом                        'Считайте контрольную цифру в целочисленную переменную.            Тусклый intCheckDigit В качестве Целое число            Если Целое число.TryParse(мпан.Подстрока(мпан.Длина - 1), intCheckDigit) потом                                Тусклый strTest В качестве Нить = мпан.Подстрока(мпан.Длина-13,12)                Тусклый intPrimes() В качестве Целое число = { 3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43}                Тусклый productTotal В качестве Целое число = 0                Тусклый blnError В качестве Булево = Ложь                                За я В качестве Целое число = 0 К 11 Шаг 1                    Тусклый intTestDigit В качестве Целое число                    Если Целое число.TryParse(мпан.Подстрока(я,1), intTestDigit) потом                        productTotal += (intTestDigit * intPrimes(я))                    Еще                        blnError = Истинный                        Выход За                    Конец Если                Следующий                                Если Нет blnError потом                    validationResult = ((productTotal Мод 11 Мод 10) = intCheckDigit)                    Еще                    validationResult = Ложь 'Из-за ошибки синтаксического анализа.                 Конец Если                            Конец Если                    Конец Если                Возвращаться validationResult            Конец Функция

В C #:

 1    /// <резюме> 2    /// Проверяет номер MPAN. 3    ///  4    ///  По крайней мере, последние 13 цифр номера MPAN, включая контрольную цифру,  5    /// выражается в виде строки.  6    ///  Истина для действительного, иначе ложь.  7    общественный статический bool MpanIsValid(нить мпан) 8    { 9        // Задаем начальные условия.10        bool validationResult = ложный;1112        если (мпан.Длина > 12)13        {14            // Считываем контрольную цифру в целочисленную переменную.15            int intCheckDigit = 0;16            если (int.TryParse(мпан.Подстрока(мпан.Длина - 1), из intCheckDigit))17            {18                нить strTest = мпан.Подстрока(мпан.Длина - 13, 12);19                int[] intPrimes = {3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43};20                int productTotal = 0;21                bool blnError = ложный;2223                за (int я = 0; я <= 11; я++)24                {25                    int intTestDigit = 0;26                    если (int.TryParse(strTest.Подстрока(я, 1), из intTestDigit))27                    {28                        productTotal += (intTestDigit * intPrimes[я]);29                    }30                    еще31                    {32                        blnError = истинный;33                        перемена; 34                    }35                }3637                если (!blnError)38                {39                    validationResult = ((productTotal % 11 % 10) == intCheckDigit);40                }41                еще42                {43                    validationResult = ложный; // Из-за ошибки синтаксического анализа. 44                }45            }46        }4748        возвращаться validationResult;49    }

В виде формулы в Excel 365:

'MPAN в ячейке A1 = IF (RIGHT (MOD (SUM (MID (A1, SEQUENCE (12), 1)), {3; 5; 7; 13; 17; 19; 23; 29; 31; 37; 41; 43 }), 11)) = ВПРАВО (A1), «Правильно», «Недопустимый MPAN»)

В Python:

def контрольная цифра(мпан):    "" "Проверить цифру MPAN.    Аргументы:      mpan - первые 12 цифр номера MPAN, исключая контрольную цифру.    """    возвращаться сумма(основной * int(цифра) за основной, цифра в \            застегивать([3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43], мпан)) % 11 % 10

В PL / SQL:

Создайте или же заменять функция mpan_check(мпан в varchar2) возвращаться логический является  - CDP АТКИНСОН  res целое число := 0;  ТИП prime_tab ЯВЛЯЕТСЯ ВАРРЕЙ(12) ИЗ целое число;  простые числа prime_tab := prime_tab (3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43);начинать    за я в 1..12 петля        res := res + to_number( substr( мпан, я, 1) ) * простые числа (я);  конец петля;    возвращаться to_char(мод(мод(res , 11) , 10)) = substr(мпан,13,1);конец mpan_check;

В JavaScript:

 1функция checkMPAN(мпан) { 2    вар простые числа = [3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43]; 3    вар сумма = 0; 4    вар м = мпан.нанизывать(); 5 6    если (м.длина - 1 === простые числа.длина) { 7        за (вар я = 0; я < простые числа.длина; я++) { 8            сумма += parseInt(м.диаграмма(я)) * простые числа[я]; 9        }10        возвращаться сумма % 11 % 10 === parseInt(м.диаграмма(12));11    }1213    возвращаться ложный;14}

В PHP:

функция checkMPAN($ mpan){    $ простые = множество(3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43);    $ сумма = 0;    $ mpan = str_split($ mpan);    	    если ((считать($ mpan) - 1) == считать($ простые)) {        за ($ i = 0; $ i < считать($ простые); $ i++) {    	    $ сумма += $ mpan[$ i] * $ простые[$ i];    	}    	возвращаться (($ сумма % 11 % 10) == конец($ mpan)) ? истинный : ложный;    } еще {    	возвращаться ложный;    }}

В SQL Server:

СОЗДАЙТЕ НАЗНАЧЕНИЕ is_valid_mpan (  @мпан    VARCHAR(50)  )ВОЗВРАТ INTВ КАЧЕСТВЕ  НАЧИНАТЬ	- Тим Фостер (4 января 2013 г.)	ЗАЯВИТЬ @is_mpan	INT		,@Икс		INT = 1		,@сумма		INT = 0				ЗАЯВИТЬ	@обр	СТОЛ (я бы INT ЛИЧНОСТЬ(1, 1), вал INT)		ВСТАВЛЯТЬ В @обр(вал) ЗНАЧЕНИЯ(3),(5),(7),(13),(17),(19),(23),(29),(31),(37),(41),(43)		ПОКА @Икс <= 12	  НАЧИНАТЬ		ВЫБРАТЬ	@сумма	= @сумма + (ПОДСТАВКА(@мпан, @Икс, 1) * вал)		ИЗ	@обр		КУДА	я бы	= @Икс				ВЫБРАТЬ @Икс = @Икс + 1	  КОНЕЦ	  	ЕСЛИ ВЕРНО(@мпан, 1) = ((@сумма % 11) % 10)	  НАЧИНАТЬ		ВЫБРАТЬ @is_mpan = 1	  КОНЕЦ	ЕЩЕ	  НАЧИНАТЬ		ВЫБРАТЬ @is_mpan = 0	  КОНЕЦ	ВОЗВРАЩАТЬСЯ @is_mpanКОНЕЦ

В MySQL:

СОЗДАЙТЕ ОПРЕДЕЛЕНИЕ=`корень`@`%` НАЗНАЧЕНИЕ `is_valid_mpan`(мпан варчар(13)) ВОЗВРАТ int(11)начинать	ЗАЯВИТЬ is_mpan	INT;	ЗАЯВИТЬ Икс		INT;	ЗАЯВИТЬ сумма		INT;	объявить Ret     int;		набор Икс = 1;	набор сумма = 0;					СОЗДАЙТЕ ВРЕМЕННЫЙ СТОЛ ЕСЛИ НЕТ СУЩЕСТВУЮТ обр	ВЫБРАТЬ 1 `я бы`, 3 `вал` союз все	ВЫБРАТЬ 2 `я бы`, 5 `вал` союз все	ВЫБРАТЬ 3 `я бы`, 7 `вал` союз все	ВЫБРАТЬ 4 `я бы`, 13 `вал` союз все	ВЫБРАТЬ 5 `я бы`, 17 `вал` союз все	ВЫБРАТЬ 6 `я бы`, 19 `вал` союз все	ВЫБРАТЬ 7 `я бы`, 23 `вал` союз все	ВЫБРАТЬ 8 `я бы`, 29 `вал` союз все	ВЫБРАТЬ 9 `я бы`, 31 `вал` союз все	ВЫБРАТЬ 10 `я бы`, 37 `вал` союз все	ВЫБРАТЬ 11 `я бы`, 41 `вал` союз все	ВЫБРАТЬ 12 `я бы`, 43 `вал`;				ПОКА Икс <= 12 ДЕЛАТЬ			ВЫБРАТЬ (ПОДСТАВКА(мпан, Икс, 1) * вал)		в Ret		ИЗ	обр		КУДА	я бы	= Икс;				набор сумма = сумма + Ret;				набор Икс = Икс + 1;		 	КОНЕЦ пока;	  	ЕСЛИ ВЕРНО(мпан, 1) = ((сумма % 11) % 10) тогда		набор is_mpan = 1;	ЕЩЕ		набор is_mpan = 0;	конец если;		уронить ВРЕМЕННЫЙ стол обр;	  	ВОЗВРАЩАТЬСЯ is_mpan;конец;

В Swift 3 есть:

 func действует(мпан: Нить) -> Bool {        позволять простые числа = [3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43]        позволять символы = Множество(мпан.символы).карта({Int(Нить($0))}).flatMap({$0})        возвращаться застегивать(простые числа, символы).уменьшать(0) { $0 + $1.0 * $1.1} % 11 % 10 == символы.последний!    }

В Apex (Salesforce):

 1    /** 2    * @description Проверяет MPAN. Написано Адамом Драй, июнь 2018 г. Версия Apex 43 3    * @param mpan 13-значный MPAN, включая контрольную цифру на конце 4    */ 5    общественный Булево mpanIsValid(Нить мпан) { 6 7        Список<Целое число> простые числа = новый Список<Целое число>{3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43}; 8 9        // Считываем контрольную цифру в целочисленную переменную10        Целое число контрольная цифра = Целое число.значение(мпан.верно(1));1112        Нить strTest = мпан.подстрока(0, 12);13        Целое число productTotal = 0;1415        за (Целое число я = 0; я <= 11; я++) {16            Целое число testDigit = Целое число.значение(strTest.Подстрока(я, я + 1));17            productTotal += (testDigit * простые числа[я]);18        }1920        Целое число computedCheck = Математика.мод(Математика.мод(productTotal, 11), 10);        21        Булево validationResult = (computedCheck == контрольная цифра);2223        возвращаться validationResult;24    }

Смотрите также

внешняя ссылка

Рекомендации

  1. ^ а б Элексон. «Урегулирование экспорта микрогенерации» (PDF). Архивировано из оригинал (PDF) 9 октября 2007 г.
  2. ^ а б c Энергия Linx (2007). «MPAN (административный номер точки измерения)». Получено 2007-02-22.
  3. ^ а б Элексон. «BSCP516 - Балансировочно-расчетный кодекс» (PDF). Архивировано из оригинал (PDF) на 2012-03-19. Получено 2011-07-25.
  4. ^ Элексон (2015-06-25). «Изменение класса измерений и изменение класса профиля» (PDF). Архивировано из оригинал (PDF) на 2016-08-17. Получено 2016-07-05.
  5. ^ MRASCo. «Грубый путеводитель по ЦПМ» (PDF). Архивировано из оригинал (PDF) на 2016-01-13. Получено 2011-02-05.
  6. ^ Элексон. "Таблица классов переключателя времени счетчика". Архивировано из оригинал 26 апреля 2011 г.. Получено 2011-08-23.
  7. ^ "Класс (ы) коэффициентов потерь в линии". Глоссарий Elexon. Получено 2013-01-27.
  8. ^ а б EnergyLinx (2007). "Запрос MPAN (запрос административного номера точки счетчика)". Получено 2007-02-22.
  9. ^ а б Элексон. «Роль участника рынка». Получено 2009-12-20.[мертвая ссылка ]
  10. ^ Элексон. «ГСП Групп». Получено 2010-06-22.[мертвая ссылка ]
  11. ^ Ofgem. «Уведомление в соответствии с разделом 11 Закона об электроэнергии 1989 г.» (PDF). Архивировано из оригинал (PDF) 30 декабря 2005 г.. Получено 2007-02-22.
  12. ^ Видеть «Архивная копия». Архивировано из оригинал на 2007-08-13. Получено 2008-11-16.CS1 maint: заархивированная копия как заголовок (связь)
  13. ^ «Реализация изменений».[мертвая ссылка ]
  14. ^ «Неизмеренные припасы». ЭЛЕКСОН. Получено 3 января 2019.
  15. ^ Power Data Associates Ltd. «Администратор счетчика».
  16. ^ ICTIS (UK) Ltd. «Администратор счетчика».
  17. ^ "Фотоэлектрические блоки управления". Power Data Associates. Получено 1 января 2019.
  18. ^ Элексон (2011-12-12). «Что такое стандартные конфигурации расчетов?». Получено 2016-07-05.
  19. ^ St. Clements Services Ltd. «Система регистрации точек учета». Получено 2008-05-29.
  20. ^ MRASCO. «Доступ к данным ECOES». Получено 2009-07-11.
  21. ^ "Briefing_Note_on_Customer_Access_NDC_2" (PDF). ЭКОЭС. MRASCO. Получено 25 июн 2015.
  22. ^ Ассоциация энергосбытов. "Определение элемента данных v1, финал" (PDF). п. 23. Архивировано из оригинал (PDF) на 2007-09-25. Получено 2014-02-25.