Таблица содержит данные журнала событий.
Журнал событий, index = update_time
SQL column
|
type
|
Описание
|
update_time
|
timestamp
|
Метка времени
|
elix
|
bytea
|
Индекс записи (16 bytes)
|
rec_type
|
smallint
|
Тип события;
|
rec_type_name
|
text
|
Расшифровка типа события;
|
rec_state
|
smallint
|
Состояние события;
|
cmd_result
|
smallint
|
Результат команды ТУ;
|
rec_state_text
|
text
|
Расшифровка состояния события;
|
fix_time
|
timestamp
|
Время фиксации события;
|
rec_text
|
text
|
Текст события;
|
user_name
|
text
|
Имя пользователя;
|
ext_kind
|
smallint
|
Внутренняя информация расширенных событий;
|
ext_source
|
smallint
|
Внутренняя информация расширенных событий;
|
ext_binary
|
bytea
|
(variable bytes)
|
ts_add_flags
|
bit(8)
|
Внутренние флаги ТС событий;
|
ack_time
|
timestamp
|
Время квитирования;
|
ack_user
|
text
|
Пользователь, выполнивший квитирование;
|
importance
|
smallint
|
Уровень важности;
|
Общие колонки для всех телепараметров
|
name
|
text
|
Наименование телепараметра
|
tm_type
|
smallint
|
Тип телепараметра 0=ТС, 1=ТТ, 2=ТИ
|
tm_type_name
|
text
|
Наименование типа
|
tma
|
int
|
Адрес, ((uint32)ch << 24) + ((uint32)rtu << 16) + point
|
tma_str
|
varchar(20)
|
'Адрес в формате '#{TC|TT|TI}Канал:КП:Объект'
Примеры: '#TT:0:1:1', '#TC:0:1:1' (символы латинские)
Если тип телепараметра одназначно определен для данной колонки данной таблицы, то в условиях запроса можно задавать значение в сокращенном виде, например:
select * from oik_cur_tt where tma_str = '0:1:1'
|
ch
|
smallint
|
Канал
|
rtu
|
smallint
|
КП
|
point
|
smallint
|
Объект
|
class_id
|
smallint
|
Класс телепараметра
|
group_id
|
smallint
|
Группа телепараметра;
|
flags
|
int
|
Информация о флагах параметра. #define UNRELIABLE_HDW 0x0001 // Недостоверность аппаратная
#define UNRELIABLE_MANU 0x0002 // Недостоверность от пользователя
#define REQUESTED 0x0004 // Идет опрос
#define MANUALLY_SET 0x0008 // Установлено вручную
#define LEVEL_A 0x0010 // Сработала уставка первого уровня
#define LEVEL_B 0x0020 // ------- " ------- второго уровня
#define LEVEL_C 0x0040 // ------- " ------- третьего уровня
#define LEVEL_D 0x0080 // ------- " ------- четвертого уровня
#define INVERTED 0x0100 // ТС инвертируется при занесен
#define RESCHANNEL 0x0200 // Данные взяты с резервного канала
#define TMCTRL_PRESENT 0x0400 // Есть команда - volatile [ТС]
#define HAS_ALARM 0x0400 // Есть уставки - volatile [ТИТ]
#define STATUS_CLASS_APS 0x0800 // АПС [ТС]
#define TMSTREAMING 0x1000 // Передавать со временем
#define F_ABNORMAL 0x2000 // Отлично от нормального
#define F_UNACKED 0x4000 // ТС несквитирован
#define F_IV 0x8000 // 101 IV
Пример:
select LPAD(to_hex(flags),8,'0'), * from oik_cur_tt where (flags & x'3'::int) <> 0;
select LPAD(to_hex(flags),8,'0'), * from oik_cur_tt where (flags & x'0400'::int) <> 0;
|
Общие колонки для телесигналов
|
v_code
|
smallint
|
Код значения;
|
v_s2
|
smallint
|
|
Общие колонки для телеизмерений аналоговых
|
v_val
|
real
|
Значение;
|
v_code
|
smallint
|
|
Уставки
|
alarm_id
|
smallint
|
уставка -> [oik_alarms].alarm_id
|
alarm_active
|
boolean
|
[oik_alarms].active
|
Обязательные условия в запросе:
[ oik_event_log ] : update_time
[ oik_event_log_elix ] : elix
Примеры запросов:
SELECT * FROM oik_event_log
WHERE update_time > '2017-04-26 12:00:00'::timestamp
AND update_time < '2017-05-1 12:00:00'::timestamp;
SELECT elix, right(elix::text,16) as elix_right,
update_time, rec_type, rec_type_name, rec_state, cmd_result, rec_state_text,
fix_time, rec_text, user_name, ext_kind, ext_source, ext_binary, ts_add_flags,
flags, LPAD(to_hex(flags),8,'0') as flags,
v_s2, right(LPAD(to_hex(v_s2::int),4,'0'),4) as v_s2,
name, tma_str, class_id, group_id, v_code, v_val, alarm_id, alarm_active
FROM oik_event_log_elix
WHERE elix >= '\x00 00 00 00 00 00 00 00 1c 30 00 00 00 00 00 00'
LIMIT 100;