Формат структуры данных и структуры описателей
Параметры и настройки датчиков ZETSENSOR хранятся в его внутренней памяти в виде структур языка C. Каждой из структур, доступных для чтения и записи, соответствует структура-описатель.
Формат структуры данных имеет следующий вид (см. Рисунок 1).
Рисунок 1. Формат структуры данных ZETSENSOR
STRUCT_HEAD имеет следующий вид:
typedef struct {
unsigned int size : 12;
unsigned int struct_type : 10;
unsigned int status : 10;
unsigned int write_enable : 16;
unsigned int usCRC16 : 16;
} STRUCT_HEAD;
где:
size – размер структуры;
struct_type – идентификатор структуры;
status – идентификатор ошибки;
write_enable – статус при записи данных;
usCRC16 – контрольная сумма.
Наиболее важными являются структуры DEV_PAR (структура с идентификационными данными датчика, идентификатор структуры 0x18C) и CHANNEL_PAR (структура с настройками измерительного канала датчика, идентификатор структуры 0x0D0)
Структура DEV_PAR имеет вид:
typedef struct {
STRUCT_HEAD head;
long type;
unsigned long long serial_num;
long compile_time;
long edition_time;
unsigned long dev_addr;
} DEV_PAR;
где:
type – идентификатор типа датчика;
serial_num – серийный номер датчика;
compile_time – версия программного обеспечения датчика;
edition_time – время последнего изменения настроек датчика;
dev_addr – адрес устройства (от 1 до 63).
Структура CHANNEL_PAR имеет вид:
typedef struct {
STRUCT_HEAD head;
float value;
float frequency;
char measure[8];
char channel_name[32];
float min_level;
float max_level;
float reference;
float sense;
float resolution;
} CHANNEL_PAR;
где:
value – текущее измеренное значение, ед. изм.;
frequency – частота обновления данных в канале, Гц;
measure – единица измерения по каналу;
channel_name –название канала;
min_level – минимальное измеряемое значение по каналу, ед. изм.;
max_level – максимальное измеряемое значение по каналу, ед. изм.;
reference – опорное значение, ед. изм.;
sense – чувствительность, В/ед. изм.;
resolution – порог чувствительности, ед. изм.;
Структуры расположены в памяти датчика друг за другом.