Фото и видео

Новости (архив)


Контакты

contact@forca.ru

Содержание материала

4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

4.1. Ведение дисковых журналов

4.1.1. В процессе работы программа сохраняет текущие данные в дисковых файлах (дисковых журналах) в формате DBF. Регистрация производится с привязкой по времени на УПУ:

а) попыток и результатов выполнения команд ТУ;

б) изменений состояний ТС;

в) выходов за пределы уставок допускового контроля значений ТИТ;

г) значений по каналам ТИТ и ТИИ с установленным периодом регистрации;

д) нарушений/восстановления связи с УКП и КЩ;

е) смены/установки уставок допускового контроля каналов ТИТ УКПМ;

ж) оперативных действий оператора;

з) ошибок оборудования телекомплекса (внутренней диагностики УКП, УПУ и ошибки обработки телеинформации в ПЭВМ).

4.1.2. Периоды регистрации устанавливаются индивидуально по всем каналам ТИ и ТИИ. Необходимым условием ведения баз данных является наличие файла ведения журналов - FILE.FIL в формате ASCII. Файл указаний редактирует пользователь в соответствии со следующим. После ключевого слова (TU, TC, TI, TII, TIA, UST, OP, KP, ERR) должны быть указаны пути и имена файлов баз данных и их информационная емкость. Назначение ключевых слов следующее:

TU - признак файлов базы данных по регистрации команд ТУ;

TC - признак файлов базы данных по регистрации изменений ТС;

TI - признак файлов базы данных по регистрации значений каналов ТИ;

TII - признак файлов базы данных по регистрации значений каналов ТИИ;

TIA - признак файлов базы данных по регистрации выходов за пределы уставок значений ТИТ;

UST - признак файлов базы данных по регистрации изменений уставок допускового контроля ТИТ;

KP - признак файлов базы данных по регистрации нарушения и восстановления связи с УКП;

OP - признак файлов базы данных по регистрации оперативных действий оператора;

ERR - признак файлов базы данных ошибок оборудования телекомплекса.

Пример файла FILE.FIL (число строк файла определяется исходя из необходимости ведения соответствующих журналов): TU TU_SMALL.DBF 50 TU_LARGE.DBF 2500 TC TC_SMALL.DBF 50 TC_LARGE.DBF 2500 TI TI_SMALL.DBF 50 TI_LARGE.DBF 2500 TII TII_SMAL.DBF 50 TII_LARG.DBF 2500 TIA TIA_SMAL.DBF 50 TIA_LARG.DBF 2500 KP KP_SMAL.DBF 20 KP_LARGE.DBF 200 UST UST_SMAL.DBF 10 UST_LARG.DBF 200 OP OP_SMAL.DBF 50 OP_LARG.DBF 500 ERR ERR_SMAL.DBF 5 ERR_LARG.DBF 200

В каждой строке за ключевым словом и разделителем (пробелом) следуют имена двух файлов, условно - "малая" и "большая" базы данных. Имена файлов баз данных могут быть выбраны произвольными. "Малая" база служит для оперативного наполнения и может быть размещена на электронном диске для экономии ресурса "жесткого" диска. Перегрузка данных из "малой" базы в "большую" осуществляется после каждого наполнения "малой" базы. Емкость баз данных задается пользователем произвольно (исходя из размера выделенной памяти на носителе) в этой же строке после соответствующего имени и разделителя-пробела. Единицей измерения емкости служит одна запись данных. "Большая" база организована в виде кольцевого файла, т. е. после ее очередного заполнения данные перекрывают данные, размещенные в начале. ПРЕДУПРЕЖДЕНИЯ:

1. Длина полного имени файла базы данных не долна превышать 45 символов.

2. Емкость "большой" базы должна быть кратна емкости "малой".

Программа формирования выходного документа выбирает данные из "большой" базы, а при ее отсутствии (например, до первого заполнения "малой") из "малой". Если файла указаний нет в текущем каталоге, то при запуске программа выдаст предупредительное сообщение, а при работе ведение баз данных выполняться не будет.

Для получения требуемого документа на экране, принтере или в файле необходимо создать файл форм с именем FORMS.OUT. При отсутствии этого файла в текущем каталоге и попытке получить документ будет выдано предупредительное сообщение и формирование документа не производится.

Формат файла форм рассмотрим на типовом примере.

Содержимое файла FORMS.OUT: @001 FORMA1.TU TU_LARGE.DBF

@002 FORMA1.TC TC_LARGE.DBF @003 FORMA1.TI TI_LARGE.DBF @004 FORMA1.TII TII_LARG.DBF @005 FORMA1.TIA TIA_LARG.DBF @006 FORMA1.BAD KP_LARGE.DBF @007 FORMA1.UST UST_LARG.DBF @008 FORMA1.OP OP_LARG.DBF @009 FORMA1.ERR ERR_LARG.DBF

После ключевого символа '@' без разделителя должен стоять номер строки, являющийся указателем при выборе типа и формы документа. После разделителя указывается имя файла конкретной формы, в котором содержится шаблон для вывода, и далее после разделителя имя файла базы данных, которую нужно вывести.

На один и тот же тип данных может быть создано неограниченное количество конкретных форм.

Рассмотрим формат файла конкретной формы на примере формы журнала регистрации команд телеуправления.

Содержимое файла FORMA1.TU: @PAGE_LENGTH 50 @ENDP @STEP 0 @ENDE @CONNEKT 0 @ENDC @TITLE

Форма 1

УТВЕРЖДАЮ

Руководитель группы сменных диспетчеров __________

"____"__________201 г.

Сменный отчет регистрации ТУ @ENDT @HEAD

+-------------------------------------------------------------+
 |Напр|Наименование|Наименование| Фамилия |Опе- |Дата|Время|ТС|
 | | УКП | объекта ТУ |диспетчера|рация| | | |
 |----+------------+------------+----------+-----+----+-----+--|
 @ENDH
 @SUBSCRIPT
 +-------------------------------------------------------------+
 @ENDS
 @BOTTOM
 Сменный диспетчер _________________(..............)
 @ENDB
 @PRN_STYLE 27,77 @ENDY
 @FILDES
 ,|,FILD1>2/4,|,FILD3/20,|,FILD4/19,|,FILD5/7,|,FILD6/5,|,
 DATE>2-12-1991/10,|,TIME>1:00:00/8,|,FILD9/2,|,
 @NAME_DOC A:\AA\BB\CC\file.doc @ENDA
 @NAME_DBF D:\EE\FF\GG\file.dbf @ENDM
 @ENDF

В файле формы заложено несколько текстовых блоков, заключенных между ключевыми словами. Рассмотрим каждое из них.

1) @PAGE_LENGTH ... @ENDP - длина страницы выходного документа при выводе его на принтере.

2) @STEP ... @ENDE - шаг выборки записей данных из базы в выходной документ ( в секундах);

3) @CONNEKT ... @ENDC - признак взаимосвязи между фильтрами по дате и по времени в данной форме;

4) @TITLE ... @ENDT - название выходного документа, выводимое один раз на первой странице;

5) @HEAD ... @ENDH - "шапка" страницы документа, формируется на каждой странице при выводе документа на принтер;

6) @SUBSCRIPT ... @ENDS - нижняя часть бланка документа, формируемая в конце каждой страницы при выводе на принтер;

7) @BOTTOM ... @ENDB - нижняя часть документа, формируемая один раз в конце при выводе на принтер;

8) @PRN_STYLE ... @ENDY - установка шрифта принтера: 27,64 - сброс принтера, 14 - двойная ширина символа, 27,77 - шрифт "элита", 15 - сжатый шрифт, 27,83,48 - верхний индекс, 27,83,49 - нижний индекс, 27,45,49 - подчеркивание, 27,69 - выделение, 27,71 - двойной удар, 27,112,49 - пропорциональный, 27,120,49 - NLQ;

9) @FILDES ... @ENDF - формат вывода записи данных;

10) @NAME_DOC A:\AA\BB\CC\file.doc @ENDA - полное имя файла отчета в формате ASCII;

11) @NAME_DBF D:\EE\FF\GG\file.dbf @ENDM - полное имя файла отчета в формате DBF.

На структуре последнего формата остановимся подробнее. Структура формируется из нескольких элементарных блоков. Рассмотрим первый из них - ",|,FILD1>2/4".

Запятые использованы для выделения символьной последовательности, которая подставляется в строку выходного документа в качестве разделителя между столбцами таблицы. Как правило, разделитель в строке формата должен соответствовать разделителю в "шапке" таблицы. Если последовательность разделителя состоит из одного символа, как в указанном примере, то вывод информации в данном столбце будет осуществляться, начиная с крайней левой позиции. Если такой подход не устраивает и информацию желательно выводить в центре столбца, например, то для этого непосредственно за разделителем "|" необходимо указать нужное количество пробелов или иных ASCII - символов.

Например, в нашем случае при заданной ширине столбца 4 символа и желании выводить номер направления, поле которого в базе данных равно 1 позиции, в крайней правой позиции, следует данный блок в строке формата записать так:",| ,FILD1>2/1".

Обратите внимание на изменение ширины столбца!

Кроме того, ширину столбца нельзя задать равной нулю! Если необходимо не выводить какое-либо поле из записи данных, то нужно не указывать имени этого поля в строке формата вообще. При этом, разумеется, нужно удалить соответствующий столбец в "шапке" документа. Если нужно оставить какой-либо столбец просто пустым, то кроме неуказания имени этого поля следует расширить разделитель последующего столбца в требуемой мере. Например, при необходимости оставить пустым первый столбец в нашем случае следует задать строку формата так: ,| |, FILD2/20, . . .

"FILD1" - имя поля в записи файла данных, которое нужно вывести в данном столбце таблицы (в нашем случае, в первый столбец таблицы будет выводится информация из поля записи данных с именем "FILD1"). Имена полей фиксированы на уровне программного формирования базы данных, поэтому пользователь не должен менять эти имена. Если программа формирования выходного документа не найдет в заголовке файла данных какого-либо имени, которое задано ей в строке формата @FILDES . . . @ENDF, то будет выведено предупредительное сообщение (код ошибки - 16) и выходной документ сформирован не будет.

Имена и содержимое полей в записях данных :

Для журналов регистрации команд ТелеУправления (здесь и далее через дробь указана ширина соответствующего поля записи базы данных): FILD1/1- номер направления; FILD2/3 - адрес УКП; FILD3/20 - наименование УКП; FILD4/20 - наименование объекта ТУ; FILD5/15 - фамилия диспетчера; FILD6/5 - операция(ВКЛ, ОТКЛ,ВКЛ-Щ или ОТКЛ-Щ); DATE/8 - дата; TIME/6 - время; FILD9/2 - номер потверждающего ТС. FILD10/9 - квитанция от УКП.

Для журналов регистрации аварийных отклонений по ТС: FILD1/1- номер направления; FILD2/3 - адрес УКП; FILD3/20 - наименование УКП; FILD4/20 - наименование ТC; FILD5/1 - состояние ТС; DATE/8 - дата;

TIME/6 - время; FILD8/5 - номер ТС; FILD9/1 - состояние датчика ТС (0 или 1), соответствующее состоянию ОБЪЕКТ ВКЛЮЧЕН.

Для журналов регистрации аварийных отклонений (допусковый контроль) по ТИТ: FILD1/1- номер направления; FILD2/3 - адрес УКП; FILD3/20 - наименование УКП; FILD4/20 - наименование сигнала ТИТ; FILD5/7 - значение сигнала ТИТ; FILD6/7 - единица измерения; FILD7/8 - признак отклонения; DATE/8 - дата; TIME/6 - время; FILD10/3 - номер аварийного сигнала ТИТ.

Для журналов регистрации измерений по каналам ТИТ: FILD1/1- номер направления; FILD2/3 - адрес УКП; FILD3/20 - наименование УКП; FILD4/20 - наименование сигнала ТИТ; FILD5/7 - значение сигнала ТИТ; FILD6/7 - единица изменения первичного сигнала ТИТ; DATE/8 - дата; TIME/6 - время; FILD9/3 - номер сигнала ТИТ.

Для журналов регистрации измерений по каналам ТИИ: FILD1/1- номер направления; FILD2/3 - адрес УКП; FILD3/20 - наименование УКП; FILD4/20 - наименование ТИИ; FILD5/7 - значение сигнала ТИИ; FILD6/7 - единица изменения первичного сигнала ТИИ; DATE/8 - дата; TIME/6 - время; FILD9/3 - номер сигнала ТИИ.

Для журналов регистрации нарушений/восстановления связи с УКП или КЩ: FILD1/1- номер направления; FILD2/20 - наименование направления; FILD3/3 - адрес УКП; FILD4/20 - наименование УКП или номер КЩ; DATE/8 - дата; TIME/6 - время; FILD7/12 - тип отклонения; FILD8/4 - функция, при выполнении которой зарегистрировано нарушение/восстановление связи с УКП.

Для журналов регистрации изменений уставок допускового контроля ТИТ: FILD1/1 - номер направления; FILD2/20 - наименование направления;

FILD3/3 - адрес УКП; FILD4/20 - наименование УКП; FILD5/3 - номер канала ТИТ; FILD6/20 - наименование сигнала ТИТ; DATE/8 - дата; TIME/6 - время; FILD9/12 - событие; FILD10/15 - фамилия оператора, производившего смену/установку уставок ТИТ; FILD11/7 - старое значение уставки канала ТИТ; FILD12/7 - новое значение уставки канала ТИТ; FILD13/8 - тип уставки (аварийная, предупредительная или скорости изменения).

Для журналов регистрации оперативных действий оператора: FILD1/1- номер направления; FILD2/3 - адрес УКП; FILD3/20 - наименование УКП; FILD4/6 - наименование телефункции; FILD5/12 - регистрируемый параметр; FILD6/5 - значение контролируемого параметра на момент изменения; FILD7/5 - изменившееся значение контролируемого параметра; FILD8/15 - фамилия оператора, производившего изменение параметра; DATE/8 - дата; TIME/6 - время.

Для журналов регистрации ошибок оборудования телекомплекса: FILD1/65 - характеристика аварийного события; DATE/8 - дата; TIME/6 - время.

После имени поля следует необязательная последовательность фильтра со знаком сравнения, определящим режим фильтрации. В качестве знака сравнения могут быть использованы символы "=", ">", "<".

При наличии фильтра указание знака сравнения обязательно!

Программа формирования выходного документа пропускает только те записи, которые удовлетворяют условиям фильтрации. В нашем примере, для столбца "Направление" при заданном фильтре ">2" в выходной документ попадут только те команда ТУ, которые были отправлены по 3-ему и 4-ому направлениям, при том условии, конечно, что по остальным полям записи фильтрация будет преодолена успешно.

Следующая часть блока - ширина столбца, которая задается после разделителя "/". Если задана ширина столбца большая, чем ширина поля в записи файла данных, то остаток заполняется пробелами, если наоборот, то информация обрезается по ширине столбца.

Особым образом производится фильтраация по полям (столбцаам) даты ("DATE") и времени ("TIME"). Фильтры этих полей предназначены для выборки записей из базы данных по временным параметрам. Помимо сравнения по указанным фильтрам, для полей даты и времени имеет значение также признак их взаимосвязи, задаваемый в ключевом блоке @CONNEKT . @ENDC и имеющий значения есть/нет. При наличии взаимосвязи даты и времени при фильтрации сообщений программа рассматривает события относительно единственной временной отметки. Так, при наличии взаимосвязи и значениях фильтров по DATE ">22-6-1992" и TIME ">15:00" в отчет попадут события, произошедшие после 15 часов 22 июня 1992 года. В этом случае, отметим, знак фильтра по времени не обрабатывается. Еслли признак взаимосвязи не установлен и при тех же значениях фильтров в выходной документ попадут события, которые былли зафиксированы с 15 до 00 часов каждые сутки послле 22 июня 1992 года. Принцип фильтрации выводимых данных по дате/времени приведен в таблице.

Таблица 1

 +-------------------------------------------------------------------+
 | | Запись | Запись | |
 |Отношение | фильтра| фильтра | Фильтрация |
 |D и Т | даты D |времени Т| |
 |----------+--------+---------+-------------------------------------|
 | есть | нет | нет | отсутствует |
 |----------+--------+---------+-------------------------------------|
 | есть | *D1) | нет | отсутствует |
 |----------+--------+---------+-------------------------------------|
 | есть | =D | =T | производится, вывод одного значения |
 | | | | с временем равным или минимально |
 | | | | предшествующим ему в пределах STEP |
 | | | | Интервал: D(T...T-STEP) |
 |----------+--------+---------+-------------------------------------|
 | есть | нет | =T | то же, значение даты - дата послед- |
 | | | | ней записи |
 | | | | Интервал: ENDDAY(T...T-STEP) |
 |----------+--------+---------+-------------------------------------|
 | есть | нет | <T | производится, вывод всех значений, |
 | | | | предшествующих указанному времени |
 | | | | на дату последней записи с учетом |
 | | | | STEP |
 | | | | Интервал: начало журнала...ENDDAY(T)|
 |----------+--------+---------+-------------------------------------|
 | есть | нет | >T | производится, вывод всех значений, |
 | | | | последующих за указанным временем |
 | | | | на дату последней записи с учетом |
 | | | | STEP |
 | | | | Интервал: ENDDAY(T)...конец журнала |
 |----------+--------+---------+-------------------------------------|
 | есть | <D | *T | производится, вывод всех значений, |
 | | | | предшествующих указанному времени |
 | | | | Интервал: начало журнала(интервал T)|
 | | | | ...D(интервал T) |
 +-------------------------------------------------------------------+
 ---------------
 1) "*" - любой из символов из ряда ">", "<" или "=".
 
 Продолжение таблицы 1
 +-------------------------------------------------------------------+
 | | Запись | Запись | |
 |Отношение | фильтра| фильтра | Фильтрация |
 |D и Т | даты D |времени Т| |
 |----------+--------+---------+-------------------------------------|
 | есть | >D | *T | производится, вывод всех значений, |
 | | | | последующих за указанным временем |
 | | | | Интервал: D(интервал T)...конец |
 | | | | журнала(интервал T) |
 |----------+--------+---------+-------------------------------------|
 | нет | нет | нет | отсутствует |
 |----------+--------+---------+-------------------------------------|
 | нет | *D | =T | производится, вывод одного значения |
 | | | | по всем указанным датам со временем,|
 | | | | равным или минимально предшествующим|
 | | | | в пределах STEP указанному |
 | | | | Интервал T: T-STEP...T |
 |----------+--------+---------+-------------------------------------|
 | нет | *D | <T | производится, вывод всех значений |
 | | | | по всем указанным датам со временем,|
 | | | | предшествующим указанному с учетом |
 | | | | STEP |
 | | | | Интервал T: 00:00.00...T |
 |----------+--------+---------+-------------------------------------|
 | нет | *D | >T | производится, вывод всех значений, |
 | | | | по всем датам, последующим за ука- |
 | | | | занным временем c учетом STEP до |
 | | | | 24 часов |
 | | | | Интервал T: T...23:59.59 |
 |----------+--------+---------+-------------------------------------|
 | нет | *D | нет | производится, вывод всех значений, |
 | | | | по всем указанным датам |
 | | | | Интервал T: 00:00.00...23:59:59 |
 |----------+--------+---------+-------------------------------------|
 | нет | =D | *Т | производится, вывод всех значений |
 | | | | в соответствии с отношением времени |
 | | | | по указанной дате |
 | | | | Интервал: D(интервал T) |
 |----------+--------+---------+-------------------------------------|
 | нет | <D | *Т | производится, вывод всех значений |
 | | | | в соответствии с отношением времени |
 | | | | по датам, предшествующим указанной |
 | | | | Интервал: начало журнала(интервал T)|
 | | | | ...D(интервал T) |
 |----------+--------+---------+-------------------------------------|
 | нет | >D | *Т | производится, вывод одного значения |
 | | | | в соответствии с отношением времени |
 | | | | по датам, последующим указанной |
 | | | | Интервал: D(интервал T)... |
 | | | | ...конец журнала(интервал T) |
 +-------------------------------------------------------------------+

В любом случае, если значений не находится в указанном интервале фильтра, выводится пустая запись. Вводить фильтр по дате следует в формате: ЧЧ-ММ-ГГГГ (число-месяц-год), фильтр по времени - в формате: ЧЧ:ММ:СС (часы:минуты:секунды).

Контроль введенных оператором фильтров на достоверность не производится !

Последовательность расположения ключевых блоков в файле не имеет значения, но при отсутствии некоторых из них программа выдаст предупредительное сообщение с кодом ошибки = 5 (Синтактическая ошибка в файле конкретной форме). Также программа поступит при обнаружении некорректно сформированных ключевых блоков. Это не относится к блокам @STEP ... @ENDE, @CONNEKT ... @ENDC, @PAGE_LENGTH ... @ENDP.

Если эти блоки не указаны или указаны некорректно, то первым двум присваивается значение = 0, а длине странице - 60 строк.

В случае невозможности подготовки документа программа выдает на экран сообщение об ошибки при формировании документа и код этой ошибки.

Соответствие ошибочных обрабатываемых ситуаций и кодов следующее:

//1 - ошибка открытия файла форм;

//2 - синтаксическая ошибка или отсутствие требуемого указателя в файле форм;

//3 - ошибка открытия файла конкретной формы;

//4 - ошибка в задании ширины столбца выходного документа(=0);

//5 - синтаксическая ошибка в файле конкретной формы (возможно, нет одного из ключевых слов);

//6 - ошибка выделения динамической памяти;

//7 - ошибка в формировании страницы выходного файла- документа;

//8 - файл данных пуст;

//9 - ошибка входных параметров;

//10 - ошибка открытия файла указаний;

//11 - не найдено имя "большого" файла в файле указаний при ошибке открытия "большого" файла;

//12 - ошибка открытия и большого, и малого файлов данных;

//13 - первый байт открытого файла данных не соответствует первому байту файлов, формируемыми в формате dBASE;

//14 - файл данных не содержит записей;

//15 - длина файла данных не соответствует имеющимся в нем параметрам;

//16 - в файле данных нет поля с именем, заданным в строке формата файла формы;

//17 - кол-во столбцов в вых. документе превышает предельное(75);

//18 - длина стpоки выходного документа превысило предельную(512);

//19 - ошибка открытия файла выходного документа;

//20 - ошибка длины файла форм;

//21 - ошибка "открытия" файла "малой" базы данных;

//22 - ошибка записи на выходное устройство.