syntax = "proto2"; package org.traccar.protobuf; message OmnicommMessage { repeated uint32 mID = 1 [packed=true]; // идентификатор события (возможно несколько событий в одном сообщении.) optional group General = 2 { // Основные параметры optional uint32 Time = 1;//[4] Время/дата события (в OmnicommTime) optional uint32 IDFAS = 2;//[4] Идентификатор бортового оборудования optional bytes IDDrv = 3;//[8] ID iButton (8 байт) optional uint32 FLG = 4;//[1] Общие флаги состояния /* Битовая маска: 0 бит = Положение ключа зажигания 0 – зажигание выключено, 1 – зажигание включено. 1 бит = Наличие связи GSM 0 – Нет связи, 1 – Есть связь. 2 бит = Корректность данных GPS 0 – Данные некорректны, 1 – Данные корректны. 3 бит = Нахождение в роуминге 0 – В домашней сети, 1 – В роуминге. 4 бит = Состояние питания 0 – Внешнее питание, 1 – Резервное питание. 5 бит = Тревожная кнопка (текущее состояние кнопки) 0 – Кнопка отжата, 1 – Кнопка нажата. 6 бит = Вскрытие устройства 0 – Устройство закрыто, 1 – Устройство открыто. 7 бит = Состояние дискретного выхода 0 – Выключен, 1 – Включен. 8 бит = Кнопка голосового вызова 0 - Кнопка отжата 1 - Кнопка нажата 9 бит = глушение GPS 0 – Выключен, 1 – Включен. 10 бит = глушение GSM 0 – Выключен, 1 – Включен. 11 бит = неисправность аккумулятора 0 – Нет, 1 – Да. */ optional uint32 Mileage = 5;//[4] Пробег (1LSB = 0.1 метр) optional uint32 VImp = 6;//[2] Скорость по датчику (1LSB = 1км/ч) optional uint32 TImp = 7;//[2] Обороты по датчику (1LSB = 1об./мин.) optional uint32 Uboard = 8;//[4] Напряжение питания (1LSB = 0.1В) optional uint32 BatLife =9;//[4] Уровень заряда аккумулятора (1LSB = 1%) optional sint32 SumAcc = 10;//[4] Корень суммы квадратов ускорений осей x,y,z (1LSB = 0.01g) optional bytes Phone = 11;//[6] Номер вызывающего или вызываемого абонента optional sint32 AmtrX = 12;//[4] Ускорение по оси X optional sint32 AmtrY = 13;//[4] Ускорение по оси Y optional sint32 AmtrZ = 14;//[4] Ускорение по оси Z optional bytes TachoCardID = 15;//[16] ID карты тахографа (16 байт) optional uint32 AccelStatus = 16;//[1] Статус калибровки акселерометра: 0 - не используется, 1 - калибруется, 2 - откалиброван, 3 - Ошибка определения осей optional uint32 HoursKoef = 17;// Моточасы с использование коэффициента optional uint32 GsmSignalQuality = 18;// Уровень сигнала GSM, усл.ед.: 0 - нет сигнала, 1 - плохой, 2 - слабый, 3 - удовлетворительный, 4 - хороший, 5 - отличный optional uint32 WifiSignalQuality = 19;// Уровень сигнала Wi-Fi, усл.ед? 0 - нет сигнала, 1 - плохой, 2 - слабый, 3 - удовлетворительный, 4 - хороший, 5 - отличный } optional group Photo = 4 { // Описание блока передачи части изображения optional uint32 POSBLK=1;//[4] Позиция текущего блока (в байтах от начала фотографии) optional uint32 SZPHOTO=2; //[4] Размер всей фотографии (в байтах) optional uint32 SIZEBLK=3;//[4] Размер текущего блока фотографии (в байтах) optional bytes IMGDAT=4;//[2048] Буфер фотографии (данные фотографии) optional uint32 IDPH=5;//[4] Идентификатор фотографии optional uint32 IMGSTAT=6;//[1] Статус изображения, см. Таблицу "Коды состояния фотокамеры". } optional group NAV = 5 { // Навигация required sint32 LAT=1;//[4] Широта (1LSB = 0,0000001гр.) required sint32 LON=2;//[4] Долгота (1LSB = 0,0000001гр.) required uint32 GPSVel=3;//[2] Скорость по GPS (1LSB = 0.1км/ч) required uint32 GPSDir=4;//[2] Направление (1LSB = 1гр.) required uint32 GPSNSat=5;//[1] Количество спутников required sint32 GPSAlt=6;//[2] Высота над уровнем моря (1LSB = 0.1м) optional uint32 GPSTime = 7;//[4] Время/дата события по GPS (в OmnicommTime) } optional group UniDt = 6 { // Универсальные входы optional sint32 UniVal0 = 1;//[4] Данные универсального входа 1 optional sint32 UniVal1 = 2;//[4] Данные универсального входа 2 optional sint32 UniVal2 = 3;//[4] Данные универсального входа 3 optional sint32 UniVal3 = 4;//[4] Данные универсального входа 4 optional sint32 UniVal4 = 5;//[4] Данные универсального входа 5 optional sint32 UniVal5 = 6;//[4] Данные универсального входа 6 } optional group CanDt_J1939 = 7 { // Данные шины CAN (протокол J1939) optional uint32 SPN70 = 70;//[1] Cостояние парковочного тормоза /* Возможные значения 00 - Parking brake not set 01 - Parking brake set 10 - Error 11 - Not available */ optional uint32 SPN91 = 91;//[1] Пположение педали акселерометра (0.4%) /* Ошибки: 254 = Error 255 = Not available */ optional uint32 SPN96 = 96; // Уровень топлива 1 бак.(0.4 %) Если есть SPN38, то первый бак, если нет, общий уровень /* Ошибки: 251=Error 252= Not available */ optional uint32 SPN100 = 100;//[1] Давление масла двигателя (1 LSB=4 kPa) /* Ошибки: 254 = Error 255 = Not available */ optional uint32 SPN110 = 110;//[1] температура ОЖ двигателя. Cмещение -40 (диапазон данных от -40 до 210°C) /* Ошибки: 254 = Error 255 = Not available */ optional uint32 SPN174 = 174;//[1] температура топлива. Cмещение -40 (диапазон данных от -40 до 210°C) /* Ошибки: 254=Error 255= Not available */ optional uint32 SPN175 = 175;//[2] температура масла двигателя. Cмещение - 273 (диапазон данных от -273 до 1735 deg C) optional uint32 SPN182 = 182;//[4] суточный расход топлива (0.5 L) /* Ошибки: 4 261 412 864 .. 4 278 190 079 =Error 4 278 190 080 .. 4 294 967 294 = Not available */ optional uint32 SPN184 = 184;//[2] мгновенная экономичность (1/512 km/L) /* Ошибки: 65 024 .. 65 279 =Error 65 280 .. 65 535 = Not available */ optional uint32 SPN190 = 190;//[2] обороты двигателя (0.125 rpm) /* Ошибки: 65 024 .. 65 279 =Error 65 280 .. 65 535 = Not available */ optional uint32 SPN244 = 244;//[4] суточный пробег (0.125 km) /* Ошибки: 4 261 412 864 .. 4 278 190 079 =Error 4 278 190 080 .. 4 294 967 294 = Not available */ optional uint32 SPN245 = 245;//[4] общий пробег (0.125 km) /* Ошибки: 4 261 412 864 .. 4 278 190 079 =Error 4 278 190 080 .. 4 294 967 294 = Not available */ optional uint32 SPN247 = 247;//[4] общее время работы двигателя (0.05 hr) /* Ошибки: 4 261 412 864 .. 4 278 190 079 =Error 4 278 190 080 .. 4 294 967 294 = Not available */ optional uint32 SPN250 = 250;//[4] общий расход топлива за все время (0.5 L) /* Ошибки: 4 261 412 864 .. 4 278 190 079 =Error 4 278 190 080 .. 4 294 967 294 = Not available */ optional uint32 SPN521 = 521;//[1] положение педали рабочего тормоза (0.4 %) /* Ошибки: 254=Error 255= Not available */ optional uint32 SPN522 = 522;//[1] положение педали сцепления (0.4 %) /* Ошибки: 254=Error 255= Not available */ optional uint32 SPN527 = 527;//[1] состояние круиз-контроля /* Возможные значения: 0 = Off/Disabled 1 = Hold 2 = Accelerate 3 = Decelerate 4 = Resume 5 = Set 6 = Accelerator Override 7 = Not available */ repeated uint32 SPN582 = 582 [packed=true]; /*PGN 65258 */ //[2*8] Нагрузка на ось optional uint32 SPN597 = 597;//[1] состояние педали рабочего тормоза /* Возможные значения: 0 = Brake pedal released 1 = Brake pedal depressed 2 = Error 3 = Not Available */ optional uint32 SPN598 = 598;//[1] состояние педали сцепления /* Возможные значения: 0 = Clutch pedal released 1 = Clutch pedal depressed 2 = Error 3 = Not Available */ optional uint32 SPN914 = 914;//[2] пробег до следующего ТО. Cмещение -160635 km (5 km) /* Ошибки: 65 024 .. 65 279 =Error 65 280 .. 65 535 = Not available */ optional uint32 SPN916 = 916;//[1] время работы двигателя до следующего ТО. Cмещение -32127 hr (1 hr) /* Ошибки: 65 024 .. 65 279 =Error 65 280 .. 65 535 = Not available */ repeated uint32 SPN928 = 928 [packed=true]; /*PGN 65258 */ //[1*8] индекс оси optional uint32 SPN1624 = 1624;//[2] мгновенная скорость (1/256 km/h) // (по CAN это SPN 84, номер не менял чтобы конфликтов с предыдущими прошивками не возникло) /* Ошибки: 65 024 .. 65 279 =Error 65 280 .. 65 535 = Not available */ optional uint32 SPN1821 = 1821;//[1] состояние дверей /* Возможные значения: 0 = At least 1 door is open 1 = Closing last door 2 = All doors closed 3..13 = Not defined 14 = Error 15 = Not available */ optional uint32 SPN1856 = 1856;//[1] состояние ремней безопасности /* Возможные значения: 0 = NOT Buckled 1 = OK - Seat Belt is buckled 2 = Error - Switch state cannot be determined 3 = Not Available */ } optional group LLSDt = 8 { // Топливные датчики LLS/LLS-AF optional sint32 TLLS1 = 1; //[1] температура (1LSB = 1гр.C) optional uint32 CLLS1 = 2; //[2] уровень optional sint32 FLLS1 = 3; //[1] код состояния см. Таблицу "Коды состояния LLS". optional sint32 TLLS2 = 4; //[1] температура (1LSB = 1гр.C) optional uint32 CLLS2 = 5; //[4] уровень optional sint32 FLLS2 = 6; //[1] код состояния см. Таблицу "Коды состояния LLS". optional sint32 TLLS3 = 7; //[1] температура (1LSB = 1гр.C) optional uint32 CLLS3 = 8; //[4] уровень optional sint32 FLLS3 = 9; //[1] код состояния см. Таблицу "Коды состояния LLS". optional sint32 TLLS4 = 10; //[1] температура (1LSB = 1гр.C) optional uint32 CLLS4 = 11; //[4] уровень optional sint32 FLLS4 = 12; //[1] код состояния см. Таблицу "Коды состояния LLS". optional sint32 TLLS5 = 13; //[1] температура (1LSB = 1гр.C) optional uint32 CLLS5 = 14; //[4] уровень optional sint32 FLLS5 = 15; //[1] код состояния см. "Коды состояния LLS". optional sint32 TLLS6 = 16; //[1] температура (1LSB = 1гр.C) optional uint32 CLLS6 = 17; //[4] уровень optional sint32 FLLS6 = 18; //[1] код состояния см. "Коды состояния LLS". optional sint32 TLLS7 = 19; //[1] температура (1LSB = 1гр.C) optional uint32 CLLS7 = 20; //[4] уровень optional sint32 FLLS7 = 21; //[1] код состояния см. "Коды состояния LLS". optional sint32 TLLS8 = 22; //[1] температура (1LSB = 1гр.C) optional uint32 CLLS8 = 23; //[4] уровень optional sint32 FLLS8 = 24; //[1] код состояния см. "Коды состояния LLS". repeated uint32 LLSRefKoef= 25 [packed=true]; //[8] набор из восьми поправочных коэффициентов ДУТ (поз. 0 - ДУТ1, поз. 1 - ДУТ2, ...) } optional group Other = 9 { // прочее оборудование optional group OneWire = 1 { // Температурные датчики 1-wire Присутствуют только температуры с настроенных датчиков optional sint32 OneWire1 = 1; //[1] температура c датчика 1 optional sint32 OneWire2 = 2; //[1] температура c датчика 2 optional sint32 OneWire3 = 3; //[1] температура c датчика 3 optional sint32 OneWire4 = 4; //[1] температура c датчика 4 optional sint32 OneWire5 = 5; //[1] температура c датчика 5 optional sint32 OneWire6 = 6; //[1] температура c датчика 6 optional sint32 OneWire7 = 7; //[1] температура c датчика 7 optional sint32 OneWire8 = 8; //[1] температура c датчика 8 } optional group Pherip = 2 { // Периферия кладется в архив только при данные с только подключенных и настроенных устройств optional uint32 PassengerIn= 1; //[1] Количество вошедших пассажиров optional uint32 PassengerOut= 2; //[1] Количество вышедших пассажиров optional uint32 DoorMask= 3; //[1] маска дверей датчика пасажиропотока optional uint32 DriverStatus= 4; //[1] Статус водителя optional bytes TPMS = 5; //[92] Система контроля давления воздуха в шинах, всего возможно 46 датчика. Массив из 46 структур по 2 байта. optional bytes iQFreeze = 6; //[512] Система контроля рефрижераторами iQFreeze.json - http://wiki.omnicomm.ru/pages/viewpage.action?pageId=11567726 } optional group ExCAN = 3 { // Расширенные парметры CAN repeated uint32 SPNid = 1; //[24] Коды SPN repeated uint32 SPNval = 2; //[24] Зачения SPN optional uint64 Adr64TEREX = 10; optional uint64 Adr65TEREX = 11; optional uint64 Adr66TEREX = 12; optional uint64 Adr67TEREX = 13; repeated uint64 Adr11TEREX = 14; //[10] Коды ошибок optional uint64 Adr69TEREX = 15; } optional group Taho_DDD = 4 { // Описание блока передачи части DDD-файла optional uint32 BLKPOS=1;// Позиция текущего блока (в байтах от начала файла) optional bytes FILEDATA=2;//[1024] Данные блока optional bytes CARDID=3;//[16] Идентификатор карты водителя optional uint32 STATUS_DATA=4; // параметр равен 1 если данный блок последний в файле, 2 - если ошибка чтения данных, 0 – если обычный блок данных } optional group APC = 5 { // Данные от ДПП IRMA. optional uint32 APCStatus1 = 1; //[1] Статус ДПП IRMA #1: 0 – ок, 1 – «саботаж», 2 – «дефект», 3 – «датчик не отвечает» optional uint32 APCStatus2 = 2; //[1] Статус ДПП IRMA #2: 0 – ок, 1 – «саботаж», 2 – «дефект», 3 – «датчик не отвечает» optional uint32 APCStatus3 = 3; //[1] Статус ДПП IRMA #3: 0 – ок, 1 – «саботаж», 2 – «дефект», 3 – «датчик не отвечает» optional uint32 APCStatus4 = 4; //[1] Статус ДПП IRMA #4: 0 – ок, 1 – «саботаж», 2 – «дефект», 3 – «датчик не отвечает» optional uint32 APCNumberIn1 = 5; //[2] Количество вошедших пассажиров подсчитанное на ДПП IRMA #1 optional uint32 APCNumberOut1 = 6; //[2] Количество вышедших пассажиров подсчитанное на ДПП IRMA #1 optional uint32 APCNumberIn2 = 7; //[2] Количество вошедших пассажиров подсчитанное на ДПП IRMA #2 optional uint32 APCNumberOut2 = 8; //[2] Количество вышедших пассажиров подсчитанное на ДПП IRMA #2 optional uint32 APCNumberIn3 = 9; //[2] Количество вошедших пассажиров подсчитанное на ДПП IRMA #3 optional uint32 APCNumberOut31 = 10; //[2] Количество вышедших пассажиров подсчитанное на ДПП IRMA #3 optional uint32 APCNumberIn4 = 11; //[2] Количество вошедших пассажиров подсчитанное на ДПП IRMA #4 optional uint32 APCNumberOut4 = 12; //[2] Количество вышедших пассажиров подсчитанное на ДПП IRMA #4 } optional group MobileEye = 6 { // Данные от MobileEye optional uint32 MobileEyeStatus = 1; //[1] Статус MobileEye (битовая маска событий) repeated bytes CAN700 = 2; // Данные с MobileEye адресс кэн 700 repeated bytes CAN727 = 3; // Данные с MobileEye адресс кэн 727 repeated bytes CAN760 = 4; // Данные с MobileEye адресс кэн 760 } optional group SafeDriving = 7 { // Данные о безопасном вождении optional uint32 EventMask = 1; //[4] Инициатор посылки события (Битовая маска) 0 – Скорость, 1 – Обороты, 2 – Ускорение, 3 – Боковое ускорение, 4 - Ускорение торможения, 5 - Вертикальное ускорение optional uint32 SpeedThreshold = 2; //[4] Порог Скорости, поле присутствует если EventMask/Бит 0 = 1 optional uint32 RPMThreshold = 3; //[4] Порог Оборотов, поле присутствует если EventMask/Бит 1 = 1 repeated float AccelDangThs = 4 [packed=true]; //[4] } optional group GenComm= 8{ // Данные о GenComm генераторе optional uint32 GEN_OILPRESS1 = 1; optional sint32 GEN_TEMP1 = 2; optional float GEN_VOLT1 = 3; optional uint32 GEN_RPM1 = 4; optional float GEN_UL1_1 = 5; optional float GEN_UL2_1 = 6; optional float GEN_UL3_1 = 7; optional float GEN_IL1_1 = 8; optional float GEN_IL2_1 = 9; optional float GEN_IL3_1 = 10; optional uint32 GEN_STATUS1 = 11; optional uint32 GEN_HOURS1 = 12; repeated bytes GEN_ALARM1 = 13; //[28] optional uint32 GEN_OILPRESS2 = 14; optional sint32 GEN_TEMP2 = 15; optional float GEN_VOLT2 = 16; optional uint32 GEN_RPM2 = 17; optional float GEN_UL1_2 = 18; optional float GEN_UL2_2 = 19; optional float GEN_UL3_2 = 20; optional float GEN_IL1_2 = 21; optional float GEN_IL2_2 = 22; optional float GEN_IL3_2 = 23; optional uint32 GEN_STATUS2 = 24; optional uint32 GEN_HOURS2 = 25; repeated bytes GEN_ALARM2 = 26; //[28] optional uint32 GEN_OILPRESS3 = 27; optional sint32 GEN_TEMP3 = 28; optional float GEN_VOLT3 = 29; optional uint32 GEN_RPM3 = 30; optional float GEN_UL1_3 = 31; optional float GEN_UL2_3 = 32; optional float GEN_UL3_3 = 33; optional float GEN_IL1_3 = 34; optional float GEN_IL2_3 = 35; optional float GEN_IL3_3 = 36; optional uint32 GEN_STATUS3 = 37; optional uint32 GEN_HOURS3 = 38; repeated bytes GEN_ALARM3 = 39; //[28] optional float GEN_UC = 40; // величина напряжения зарядного генератора optional uint32 GEN_IC = 41; // ток заряда стартерных АКБ optional float GEN_FREQ = 42; // частота выдаваемого напряжения optional float GEN_UL1L2 = 43; // напряжения линейные optional float GEN_UL2L3 = 44; // -- optional float GEN_UL1L3 = 45; // -- optional uint32 POW_ACT_L1 = 46; // активная мощность optional uint32 POW_ACT_L2 = 47; // -- optional uint32 POW_ACT_L3 = 48; // -- optional uint32 POW_FULL_L1 = 49; // полная мощность optional uint32 POW_FULL_L2 = 50; // -- optional uint32 POW_FULL_L3 = 51; // -- optional uint32 POW_REACT_L1 = 52; // реактивная мощность optional uint32 POW_REACT_L2 = 53; // -- optional uint32 POW_REACT_L3 = 54; // -- optional float POW_KOEF = 55; // коэффициент мощности optional uint32 POW_GEN_TOTAL = 56; // общая выработка электроэнергии optional uint32 FUEL_LEVEL = 57; // текущий объём топлива optional uint32 SMS_REGS_0 = 60; // состояние регистра состояния 0 для SMS-оповещений (для отладки) optional uint32 SMS_REGS_1 = 61; // состояние регистра состояния 1 для SMS-оповещений (для отладки) optional uint32 SMS_REGS_2 = 62; // состояние регистра состояния 2 для SMS-оповещений (для отладки) optional uint32 SMS_REGS_3 = 63; // состояние регистра состояния 3 для SMS-оповещений (для отладки) optional uint32 SMS_REGS_4 = 64; // состояние регистра состояния 4 для SMS-оповещений (для отладки) } optional group FuelSensorModbus= 9 { // Данные о сторонних датчиках уровня топлива optional float FuelLevel = 1; optional float MedianLevel = 2; optional uint32 LevelPercent = 3; optional float FuelVolume = 4; optional sint32 FuelTemp = 5; optional float FuelWeight = 6; optional float FuelDensity = 7; optional sint32 VaporTemp = 8; optional float VaporWeight = 9; optional float LiquidWeight = 10; repeated sint32 PointTemp = 11; } optional group WeightControl= 10 { // Данные о весовом контроле repeated float AxelWeight = 1; repeated float AxelLimit = 2; optional float TotalWeight = 3; optional float TotalWeightLimit = 4; } } optional group ICONDt = 10 { // данные ICON optional bytes VehicleStatus = 1; //[24] строка статуса ТС. Сейчас от ICON передаётся 20 символов+NULL. [Hex2ASCII] optional uint32 VehicleStatusID = 2; //[1] ID статуса ТС. [Hex2Dec] optional uint32 VehicleStatusGroupID = 3; //[1] ID группы статусов ТС. Резерв. [Hex2Dec] optional uint64 MsgID = 4; //[8] UID сообщения optional uint32 MsgStatus = 5; //[4] флаг статуса сообщения, см CMDPBF.proto optional uint32 StatDate = 6; //[4] Время/дата изменения статуса сообщения (в OmnicommTime) optional bytes VehicleStatusPrev = 7; //[24] строка предыдущего статуса ТС. Сейчас от ICON передаётся 20 символов+NULL. [Hex2ASCII] optional uint32 VehicleStatusFlags = 8; // флаг активности текущего статуса ТС (0x1 - активен, 0x0 - завершен) } optional group OBDDt_J1979 = 11 { // Данные шины CAN (протокол J1979) // в формулах расчёта значений OBD используются обозначения A, B, C, D // uint32 data = [D | C | B | A], где А - младший байт, D - старший байт optional uint32 SID_0x01_PID_0x0D = 1;// Скорость ТС = A (km/h) - Vehicle Speed Sensor optional uint32 SID_0x01_PID_0x31 = 2;// Пробег после сброса ошибок = (256 * A + B), (km) - Distance travelled since DTCs cleared optional uint32 SID_0x01_PID_0x4E = 3;// Время работы двинателя после сброса ошибок = (A*256)+B (минуты) - Engine Run Time since diagnostic trouble codes cleare optional uint32 SID_0x01_PID_0x42 = 4;// Напряжение борта, В = ((A*256) + B)/1000 (В) - Control module voltage optional uint32 SID_0x01_PID_0x0C = 5;// Обороты = (256 * A + B) / 4 (rpm) - Engine RPM optional uint32 SID_0x01_PID_0x2F = 6;// Объема топлива = (100 * A / 255) (%) - Fuel Level Input optional uint32 SID_0x01_PID_0x5E = 7;// Среднее значение мгновенного расхода = (256 * A + B) *0,05 (L/h) - Engine Fuel Rate // Терминал получает несколько значений мгновенного расхода по OBD, рассчитывает и отправляет среднее optional uint32 SID_0x01_PID_0x5C = 8;// Температура масла = (A - 40) (°C)- Engine Oil Temperature optional uint32 SID_0x01_PID_0x05 = 9;// Температура ОЖ = (A - 40) (°C) - Engine Coolant Temperature optional uint32 SID_0x01_PID_0x01 = 10;// Статус неисправности Check Engine - Monitor status since DTCs cleared /* Malfunction Indicator Lamp (MIL) Status: Если A/бит 7 = 0, то ошибки нет Если A/бит 7 = 1, то ошибка есть */ optional bytes SID_0x09_PID_0x02 = 11;// [18] VIN ТС = ASCII null-terminated string. Идут значащие символы, потом нулевой байт. Если перый байт нулувой, то строка пустая. optional uint32 SID_0x01_PID_0x5E_quantity = 12; // Кол-во успешно полученных ответов при расчёте среднего значения мгновенного расхода (optional uint32 SID_0x01_PID_0x5E = 7) } optional group LOG = 16 { repeated string Debug = 1; //[1024] Отладочный лог optional uint32 LLSRefNum= 2; // признак наличия подключенных датчиков REF к терминалу – битовая маска. бит 0 соответсвует подключенному 1-ому датчику и т.д. repeated uint32 LLSRefLevelBef= 3 [packed=true]; repeated uint32 LLSRefLevelAfter= 4 [packed=true]; repeated uint32 LLSRefKoef= 5 [packed=true]; repeated uint32 LLSRefSens= 6 [packed=true]; repeated uint32 LLSRefTemp= 7 [packed=true]; } }