ПП «НТФ «ЛІТ» · НЕ ЛТПТ.159.000

ЛТПТ03 — Протокол передачі даних GSM / TCP/IP

Настанова розробника серверного програмного забезпечення

Зміст

1. Загальний опис 2. Параметри TCP/IP-з'єднання 3. Формат пакету даних 4. Детальний опис полів 5. Розрахунок CRC16 6. Повний приклад декодування 7. Алгоритм вибору сервера 8. Обмеження та рекомендації 9. Налаштування приладу

1. Загальний опис

Перетворювач тиску ЛТПТ03 передає виміряні дані на віддалений сервер за допомогою вбудованого GSM-модему через мережу TCP/IP. Прилад ініціює з'єднання та надсилає пакет у текстовому форматі ASCII.

Факт успішної доставки визначається на транспортному рівні TCP — окремої відповіді від сервера на прикладному рівні не потрібно. Якщо TCP-з'єднання встановлено і пакет надіслано без помилки, дані вважаються доставленими.

2. Параметри TCP/IP-з'єднання

Прилад підключається до сервера за параметрами, що задаються при налаштуванні:

ПараметрОписНалаштовується
IP-адреса сервераIPv4, до 4 серверів (основний + 3 резервних). Невикористовуваний сервер — 0.0.0.0
Порт сервераTCP-порт для кожного сервера
APN оператораТочка доступу мобільного оператора для реєстрації в мережі
Інтервал передачівід 10 до 3600 с, крок 5 с
ПротоколTCP/IP (текстовий пакет)
Напрямок з'єднанняПрилад → Сервер (клієнт ініціює)

3. Формат пакету даних

Надсилається один текстовий рядок ASCII (без символів переносу рядка в кінці):

N<nnn> <PP>00<%%>00<CRC4>

Візуальна схема пакету (приклад: прилад №123, тиск 3,8 кгс/см², заряд 78%):

N
1 симв
N
nnn
3 симв
123
SP
1
·
PP
2 симв
26
00
2 симв
00
%%
2 симв
4E
00
2 симв
00
CRC4
4 симв
3ECC

Повний рядок пакету:

N123 26004E003ECC
Розмір пакету: фіксований, 17 байт. Усі символи є символами ASCII — кожен символ займає 1 байт. Довжина пакету не змінюється незалежно від значень тиску та заряду.

4. Детальний опис полів

Поле Тип Опис Приклад
N ASCII символ Ідентифікатор типу пакету. Завжди символ N N
nnn ASCII символи (цифри 0–9) Номер приладу. Три ASCII-цифри від 000 до 999 123
SP ASCII пробіл (0x20) Роздільник між номером приладу і блоком даних ·
PP Байт тиску (HEX-запис) Значення тиску, кгс/см² × 10, записане як 2 HEX-символи.
Декодування: тиск_кгс = HEX_to_DEC(PP) / 10
26
(0x26 = 38 → 3,8 кгс)
00 Байт 0x00 (HEX-запис) Службовий байт зі значенням 0x00. Входить до розрахунку CRC 00
%% Байт заряду (HEX-запис) Заряд батареї у відсотках, записаний як 2 HEX-символи.
Декодування: заряд_% = HEX_to_DEC(%%)
4E
(0x4E = 78 → 78%)
00 Байт 0x00 (HEX-запис) Службовий байт зі значенням 0x00. Входить до розрахунку CRC 00
CRC4 2 байти CRC16 (HEX-запис) CRC16 від 4 байтів: PP, 0x00, %%, 0x00. Little-endian: молодший байт першим 3ECC
Разом Фіксована довжина пакету — 17 символів (байт)

5. Розрахунок CRC16

CRC обчислюється від 4 байт у такому порядку: PP 00 %% 00 (бінарні значення байт, не ASCII-символи).

Принцип кодування: блок даних пакету PP 00 %% 00 є HEX-рядком — кожні 2 ASCII-символи кодують 1 байт значення. Для розрахунку CRC весь блок 26004E00 (8 ASCII-символів) декодується як 4 байти: [0x26, 0x00, 0x4E, 0x00].

Алгоритм CRC16

// Поліном CRC16-MODBUS (0x8005, initial value 0xFFFF) function crc16(bytes) { let crc = 0xFFFF; for (const b of bytes) { crc ^= b; for (let i = 0; i < 8; i++) { if (crc & 0x0001) { crc = (crc >> 1) ^ 0xA001; } else { crc = crc >> 1; } } } return crc; // little-endian }
Зверніть увагу: результат CRC16 є 2-байтним числом у форматі little-endian. У пакеті він записується як 4 HEX-символи у порядку: молодший байт, потім старший байт.

Приклад розрахунку CRC

Для пакету: тиск 3,8 кгс, заряд 78%

Вхідні байти (бінарно) PP = 0x2600 = 0x00%% = 0x4E00 = 0x00
Результат CRC16 0xCC3E (little-endian: молодший байт 0x3E, старший байт 0xCC)
Запис у пакеті (CRC4) 3ECC (молодший 3E, потім старший CC)

Верифікація CRC на сервері

Для перевірки на стороні сервера: обчисліть CRC16 від 4 байт PP 00 %% 00 та порівняйте з полем CRC4 пакету. Якщо значення не збігаються — пакет пошкоджений і має бути відкинутий.

6. Повний приклад декодування

Отриманий рядок Поле HEX → DEC Результат
N123 26004E003ECC NПрилад №123
123Номер приладу: 123
260x26 = 38Тиск: 38 / 10 = 3,8 кгс/см² (0,373 МПа)
000x00Службовий байт
4E0x4E = 78Заряд батареї: 78%
000x00Службовий байт
3ECCCRC16Контрольна сума: перевірено ✅

Ще кілька прикладів

Пакет Прилад № PP (HEX→DEC) Тиск, кгс/см² %% (HEX→DEC) Заряд, %
N001 0A0050003FFC10x0A=101,00x50=8080
N045 FF0064001AF0450xFF=25525,50x64=100100
N200 000019000BB42000x00=00,00x19=2525

7. Алгоритм вибору сервера

Прилад підтримує до 4 серверів (1 основний + до 3 резервних). Логіка перемикання між серверами:

Відправити на поточний основний сервер (на початку — сервер №1)
TCP успішно → передача завершена
↓ якщо помилка TCP
Спробувати сервер №2
Успішно → запам'ятати №2 як основний, завершити
Помилка → спробувати сервер №3
Успішно → запам'ятати №3 як основний, завершити
Помилка → спробувати сервер №4
Успішно → запам'ятати №4 як основний, завершити
🔴Всі сервери недоступні → передача не вдалася, повтор при наступному інтервалі
🕐Раз на годину — повернення до сервера №1 (перевірка відновлення основного сервера)
Для серверної сторони: сервер має бути готовий приймати з'єднання в будь-який момент. Прилад є клієнтом — він ініціює TCP-з'єднання, надсилає пакет і закриває з'єднання. Тривале keep-alive з'єднання не підтримується.

8. Обмеження та рекомендації

Обмеження діапазону тиску в протоколі

Діапазон ЛТПТ03 кгс/см² Макс. PP (HEX)
10; 35; 70; 100; 250; 400; 600 кПа0,1 … 6,13D
0,6 МПа6,13D
1,0 МПа10,266
1,6 МПа16,3A3
2,5 МПа25,5FF

Рекомендації для серверної сторони

9. Налаштування приладу

ПараметрОпис
Інтервал передачі10–3600 с, крок 5 с
IP-адреса сервера 1 (основний)IPv4. Якщо не використовується — 0.0.0.0
Порт сервера 1TCP-порт
IP-адреса серверів 2–4 (резервні)IPv4, аналогічно
Мінімальний поріг напругиПри падінні нижче порогу GSM-модем вимикається
Пороговий тиск (аварійна передача)При перевищенні цього значення виконується негайна позачергова передача даних.
APN оператораІм'я точки доступу для GPRS/LTE