PTPiREE (format danych)

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

PTPiREE – format wymiany danych stosowany w licznikach energii elektrycznej.

Budowa[edytuj | edytuj kod]

Plik złożony jest z nagłówka zawierającego sześć wierszy, listy pomiarów energii elektrycznej oraz sumy kontrolnej. Wiersze oddzielone są znakami końca linii 0x0A 0x0D.

Budowa nagłówka[edytuj | edytuj kod]

  1. Nazwa spółki dystrybucyjnej.
  2. ID 1, często numer licznika.
  3. ID 2, często typ licznika.
  4. Rodzaj energii elektrycznej: CP, CO, QP, QO.
  5. Data pomiarów.
  6. Ilość pomiarów energii elektrycznej (typowo 24).

Budowa wiersza pomiaru energii elektrycznej[edytuj | edytuj kod]

Wiersz składa się dwóch wartości: wartości pobranej energii elektrycznej oraz wskaźnika jakości.

Wartość pobranej energii jest podawana z dokładnością do trzech miejsc po przecinku, separatorem miejsc dziesiętnych jest”.” (kropka). W formacie sprintf jest to „%.3f”.

Wskaźnik jakości przyjmuje trzy wartości:

  • „+” – dane poprawne.
  • „-” – dane niepoprawne lub brak danych.
  • „*” – dane niepełne.

Suma kontrolna[edytuj | edytuj kod]

Suma kontrolna wyliczana jest według algorytmu crc16 ccitt xmodem. Suma kontrolna wyliczana jest na bajtowym ciągu znaków złożonym z nagłówka oraz listy pomiarów wraz ze znakami końca linii.

Przykładowy kod PHP wyliczający sumę kontrolną:

<?php
$len = strlen($fullContent);
$crc=0;
$polynomial = 0x1021;
for($i = 0; $i < $len; $i++) 
{
    for ($j = 0; $j < 8; $j++) 
    {
        $b = ord($fullContent[$i]);
        $bit = (($b >> (7-$j) & 1) == 1);
        $c15 = (($crc >> 15 & 1) == 1);
        $crc <<= 1;
        if($c15 ^ $bit) $crc ^= $polynomial;
    }
}
$crc &= 0xffff;
$fullContent.=sprintf("%04X",$crc)."\r\n";
?>