2. Требования по обеспечению удобства эксплуатации.

Программное обеспечение АРМ РД должно функционировать в диалоговом режиме с выдачей иерархических меню основных функций подсистем, например, текст запроса по мере его формирования отображается на экране. Система меню является подсказкой, исключающей ошибку оператора.

3. Требования к операционной и программной совместимости.

Программное обеспечение средств регистрации и документирования АРМ должно обеспечивать:

информационную совместимость в части возможности замены ЭВМ РС/АТ на модель более высшего порядка, замену принтера на более производительный, и т.п.

 

4.2 Программная реализация

Постановка задачи.

Задачей данного дипломного проекта является разработка программ формирования и обработки запросов для трех форм представления БС и выдача их на экран монитора и принтер.

Программы должны быть разработаны для технических средств АРМ РД и обеспечивать информационную и программную совместимость в части возможности замены ЭВМ на модель более высокого порядка, замену принтера на более производительный и т.п. Программы обработки запросов должны функционировать в составе остального ПО АРМ РД и минимизировать время обработки запроса.

Это означает, что необходимо организовать поиск по БД таким образом, чтобы минимизировать время поиска по БД, и, следовательно, уменьшить время ответа на запрос оператора (характеристика, рассмотренная в п.2.5 может быть минимизирована не только техническими, но и программными средствами).

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

Вид представления информации после преобразования БС на экран монитора и принтер.

Исходя из соображений практического смысла были выбраны 3 формы представления БС: компактная-символическая, табличная, справочная (первая, вторая и третья формы представления БС соответственно).

Первая форма представления БС.

Первая форма представления БС приведена на рис.21 и позволяет выдавать на экран информацию о БС по всем разнотипным устройствам (по любому сочетанию устройств, по всем устройствам сразу, и т.д.)

1-5 поля - ключевые. Поле 6 - БС технических устройств в позиционном коде. Для каждого устройства определено фиксированное количество этих байтов (максимальное значение 4 группы или 4слова).

Подпись:

Пример кодирования одного слова для устройства i (рис.22) - значение 035007 надо интерпретировать как:

Рис. 22

 
Данная форма представления удобна для работы с большими объемами данных (за день неделю, месяц. .) по всем устройствам, где для оператора важен факт обнаружения неисправности (если значения БС не равны нулю, то в данном устройстве произошел какой-то сбой). Но эта форма неудобна тем, что требует расшифровки данных с помощью инструкции. Для устранения этого неудобства вводится вторая форма представления, где выборка выполняется по одному, выбранному оператором устройству.

Вторая форма представления БС.

Пример представления формы 2 приведен на рис.23. Как видно из рис.23, форма 2 является отражением формы 1 для одного устройства и требует меньших усилий при расшифровке данных, т.к здесь “шапки” колонок таблицы содержат более или менее понятные сокращения и обозначения для специалистов, обслуживающих аппаратуру, т.е. обозначения даются терминах, понятных для сферы деятельности оператора.

Третья форма представления БС.

Существует третья форма представления, которая является трансформированной формой 2, выбранной на один момент времени, т.е. она отражает техническое состояние i-го устройства в заданный момент времени. Пример формы 3 приведен на рис.24. Как видно из рис.24, форма 3 представляет собой развернутую справку с перечнем неисправностей и рекомендаций по устранению этих неисправностей. Длина справки практически ограничивается при этом только соображениями достаточности информации, представленной в справке.

Ш-1

Неисправно направление связи С1 по передаче от ВК к Ш по причине неполучения от Ш-1 кодограмм по времени.

ОТСУТСТВУЕТ СИГНАЛ СЕТЬ1

Заменить блок А4 в стойке П1

Ш-1 заблокирован функциональной задачей

Рис. 24

Определение реализуемых функций программ обработки запросов для 3-х форм представления БС.

Программы обработки запросов для трех форм представления БС должны выполнять следующие функции:

Для первой формы представления БС:

Нахождение заданных оператором записей БС в БД по любому сочетанию устройств, используя различные варианты поиска по БД, а именно:

по всей БД (дата и время не используются);

в едином интервале по дате и времени;

в указанном интервале времени по каждому дню интервала дат;

за один день в указанном интервале времени.

Расшифровка БС заданных оператором устройств, учитывая интервал поиска.

Выдача расшифрованных БС на монитор или принтер в первой форме представления. Как видно из описанного выше, первая форма представления БС выдается, на экран монитора в виде, представленном на рис.21.

Для второй формы представления БС:

Нахождение необходимой записи БС в БД по конкретному устройству, заданному оператором, используя различные варианты поиска:

по всей БД;

в едином интервале по дате и времени;

в интервале времени по каждому дню интервала дат;

за один день в указанном интервале времени.

Можно отметить, что варианты поиска по БД для первой и второй форм представления БС совпадают.

Расшифровка БС заданного оператором устройства, учитывая интервал поиска.

Выдача расшифрованных БС на экран монитора или принтер в форме представленной на рис.23, причем вид экрана будет различным в зависимости от устройства, задаваемого оператором, т.к устройства системы не идентичны и обладают конкретными свойственными лишь им характеристиками.

Для третьей формы представления БС:

1. Нахождение последней по времени или одной записи по конкретному устройству, заданному оператором,

2. Расшифровка БС заданного оператором устройства,

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

 

4.3 Состав программ

Структура программ представлена на рис.25.

BS1_inq. exe - программа обработки запросов для первой формы представления БС;

Initsearch - модуль, определяющий выбор функции поиска;

Interval - определение граничных номеров записей в заданном интервале поиска;

Search1 - инициализация функции поиска (все записи в заданном интервале);

Search2 - инициализация функции поиска (не более 1-го искомого значения по каждому полю);

Search3 - инициализация функции поиска (более 1-го искомого значения хотя бы по 1-му полю);

Recprint. c - форматирование и запись найденной строки в файл.

Bs2_inq. c - программа обработки запросов для второй формы представления БС;

Interval. c - определение граничных номеров интервала поиска;

Search. c - поиск;

Recprint. c - форматирование и запись найденной строки в файл.

Form2. c - программа представления БС в текстовом виде;

Bs3_inq. c - программа обработки запросов для третьей формы представления БС;

Form3. c - представление БС в виде справки;

 

4.4 Описание программ

Функциональное назначение программ обработки запросов, требования, предъявляемые к ним, а также вид представления информации на экране монитора и принтере были рассмотрены выше.

Программа обработки запроса для первой формы представления БС вызывается из программы формирования запроса со следующими аргументами:

1) “BS1_inq. exe”;

2) имя базы данных;

3) вариант выборки по дате и времени:

“0” - дата и время не используются, “1” - единый интервал по дате и времени, “2” - много интервалов - поиск производится в указанном интервале времени для каждого значения даты из числа входящих в интервал даты, “3” - единый интервал в течение одного дня (используется только первое значение даты);

4) интервал поиска по дате, например, “01/01/98-20/01/98”;

5) интервал поиска по времени, например, “06: 00: 00-09: 00: 00” и далее значения остальных полей БД.

Результат обработки запроса записывается в файл “inquiry. res" После окончания обработки должна быть вызвана программа “inq_out. exe" для отображения результатов на экран и принтер.

Параметры из командной строки передаются в программу обработки запроса и производится определение формата записи для базы данных, к которой произведен запрос. Затем открывается файл результатов запроса и в него записываются строки запроса и шапка таблицы. После этого производится инициализация работы с БД. В зависимости от варианта поиска, выбранного оператором, программа подключает модули, обеспечивающие определение граничных номеров интервала поиска и инициирующие функцию поиска.

Функции поиска search1 (все записи в указанном интервале) и search2 (не более одного искомого значения по каждому полю) Поиск производится по максимальному номеру записи. Например, сначала просматривается поле, содержащее тип устройства и выбираются записи с номерами 5, 10, 36, 48. Затем производится поиск по виду сообщения. Если искомый вид сообщения находится лишь в 15-м поле, то все поля с 1-го по 36-е пропускаются и поиск начинается с 36-го поля. С помощью такого алгоритма производится минимизация времени поиска по БД. Как только искомые поля совпадают, то номер найденной записи фиксируется и управление передается программе recprint, которая форматирует найденную строку и записывает ее в файл.

Функция поиска search3 (более одного искомого значения хотя бы по одному полю) открывает массив буферов для поиска, его размерность равна количеству полей в таблице. Размерность каждого из массивов rec [i] равна количеству искомых значений по i-му полю таблицы. В каждый буфер заносится одно искомое значение по какому-либо полю таблицы. Каждому буферу rec [i] [j] соответствует элемент массива массивов z [i] [j], в котром хранится текущий номер найденной записи по данному буферу (т.е. записи, в соответствующем поле которой находится значение, равное значению, занесенному в буфер). Еще в одном массиве хранятся текущие номера найденных строк по каждому полю, где max - текущий номер записи при поиске, т.е. записи с номерами, меньше max уже просмотрены. Для каждого буфера находится запись со значением, равным занесенному в этот буфер и с номером, большим либо равным max. Найденные номера заносятся в соответствующие z [i] [j]. Затем для каждого поля определяется значение текущего номера найденных строк по каждому полю. Если хотя бы по одному полю произошел выход за пределы интервала поиска, значит, поиск закончен. Если же значения текущих номеров найденных строк совпадают по всем полям, значит, искомая запись найдена. Найденная строка форматируется и записывается в файл.

Алгоритм программы обработки запроса для второй формы представления БС логически выстроен по такому же принципу, однако он проще, т.к поиск производится для одного устройства. Перед записью найденной строки в файл производится представление БС в текстовом виде.

Программы обработки запросов для третьей формы представления БС находят последнюю по времени запись в БД и выдают преобразованные БС в файл.

Алгоритмы программ приведены в Приложении 1.

Тексты программ приведены в Приложении 2.

 

4.5 Оценка результатов работы программ

Результатом данного дипломного проекта является разработка программ формирования и обработки запросов для 3-х форм представления БС. Программы разработаны для технических средств АРМ РД и функционируют в составе специального ПО АРМ РД.

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

Требование по обеспечению надежности для программной обработки запросов обеспечивается также выбором средств программирования, - блочная структура программы на Си обеспечивает как защиту данных, так и высокий уровень контроля за областями действия и видимости переменных.

Требование удобства эксплуатации также является требованием, предъявляемым к специальному ПО АРМ РД вцелом и обеспечивается общей логикой организации пользовательского интерфейса.

Еще одно требование, которое было оговорено в п.4.2.1 - это минимизация времени поиска по БД. Здесь нужно конкретизировать, что минимизация времени ответа на запрос осуществляется на нескольких уровнях:

“технологическом” - средства архивирования БД;

“логическом" - информация хранится в нескольких базах данных (см. п.3.3 - одна из причин формирования подобных отношений - это минимизация времени поиска);

“программном” - выделение границ и интервалов поиска.

Кроме того, выбор формы представления, для которой формируется запрос и заданный интервал, будут влиять на время поиска записей. Если, например, оператор выбрал 1-ю форму представления и сформировал запрос по нескольким устройствам, причем задал вариант поиска по всей БД, то время ответа будет больше, чем если бы оператор сформировал запрос для 3-й формы представления БС, которая обеспечивает поиск лишь одной записи в БД. Если для 3-й формы представления БС время ответа будет составлять 2-3 сек. то для сложных запросов может приближаться к десяткам секунд. Поэтому нельзя привести одно конкретное значение времени ответа на запрос оператора.

Приведем следующие рекомендации оператору АРМ РД: чем сложнее запрос и чем больше количество устройств, по которым сформирован запрос -тем дольше поиск. Если необходимо быстро получить информацию, то рекомендуется выбрать 3-ю или 2-ю форму представления, которые предназначены для получения информации по одному устройству. Если же количество записей в БД увеличилось настолько, что поиск занимает ощутимое время, то рекомендуется пользоваться средствами архивации.

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


Организационно-экономическая часть

 

Введение

Темой организационно-экономической части дипломного проекта является технико-экономическое обоснование (ТЭО) по теме: “Бизнес-план разработки".

В дипломном проекте производится разработка программ обработки запросов к базе данных автоматизированного рабочего места регистрации и документирования (АРМ РД).

В ТЭО необходимо рассмотреть следующие вопросы:

Планирование разработки с построением сетевого графика;

Расчет стоимости разработки;

Экономическую эффективность разработки;

Состав и назначение основных разделов хозяйственного договора.

В первой части ТЭО необходимо рассчитать срок разработки и построить сетевой график работ по созданию программного обеспечения АРМ РД. В данном случае под разработкой подразумеваются не только программы обработки запросов к базе данных, а программное обеспечение АРМ РД в целом.

Во второй части ТЭО необходимо рассчитать стоимость разработки программного обеспечения АРМ РД с момента получения первого варианта технического задания и заканчивая оформлением документации и сдачей разработки. При этом учитывается, что разработка производится на средства, выделяемые из Госбюджета (финансирование по целевым программам).

В третьей части ТЭО необходимо обосновать экономическую эффективность разработки.

В заключительной части ТЭО необходимо сформулировать основные пункты хозяйственного договора, заключаемого между двумя сторонами - заказчиком и исполнителем, а также сформулировать назначение пунктов хозяйственного договора и порядок их согласования и утверждения.


1. Планирование разработки с использованием сетевого графика

Большая сложность и комплексность научно-исследовательских и опытно-конструкторских работ, одновременное участие многих исполнителей, необходимость параллельного выполнения работ, зависимость начала многих работ от результатов других, значительно осложняет планирование разработки. Наиболее удобными в этих условиях являются системы сетевого планирования и управления, основанные на применении сетевых моделей планируемых процессов, допускающих использование современной вычислительной техники, позволяющих быстро определить последствия различных вариантов управляющих воздействий и находить наилучшие из них. Они дают возможность руководителям своевременно получать достоверную информацию о состоянии дел, о возникших задержках и возможностях ускорения хода работ, концентрируют внимание руководителей на “критических” работах, определяющих продолжительность проведения разработки в целом, заставляют совершенствовать технологию и организацию работ, непосредственно влияющих на сроки проведения разработки, помогают составлять рациональные планы работ, обеспечивают согласованность действий исполнителей.

Планирование научно-исследовательских работ с применением сетевого метода ведётся в следующем порядке:

составляется перечень событий и работ;

устанавливается топология сети;

строится сетевой график по теме;

определяется продолжительность работ (tож);

рассчитываются параметры сетевого графика;

определяется продолжительность критического пути;

проводится анализ и оптимизация сетевого графика, если это необходимо.

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

Исходные данные для расчета получают методом экспертных оценок. Для работ, время выполнения которых неизвестно, исполнитель или другие специалисты, привлекаемые в качестве экспертов, дают в соответствие с принятой системой три или две вероятностные оценки продолжительности:

tmin - минимальную;

tmax - максимальную;

tнв - наиболее вероятную или только первые две.

Эти величины являются исходными для расчёта ожидаемого времени tож по формулам (1) и (2).

 (1)

 (2)

После построения графика и выбора необходимых исходных данных рассчитывают параметры сети: сроки совершения событий, резервы времени, продолжительность критического пути. Расчёт параметров сети наиболее удобно выполнять табличным методом, если число событий не превышает 100 - 150. Этому условию соответствует проводимая разработка.

Для описания сети в “терминах событий" используются следующие понятия.

Ранний срок наступления события (Tpi) - минимальный срок, необходимый для выполнения всех работ, предшествующих данному событию, равен продолжительности наибольшего из путей, ведущих от исходного события 1 к данному (формула (3)).


 (3)

Критический путь сети (Ткр) - максимальный путь от исходного события 1 до завершающего события С.

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

 (4)

Все события в сети, за исключением событий, принадлежащих критическому пути, имеют резерв времени (Ri), приведённый в выражении (5).

 (5)

Резерв времени события показывает, на какой предельный срок можно задержать наступление этого события, не увеличивая общего срока окончания работ (т.е. продолжительности критического пути).

При описании сети “в терминах работ" определяют ранние и поздние сроки начала и окончания работ (формулы (6) - (9)).

ранний срок начала:

 (6)

поздний срок начала:

 (7)

ранний срок окончания:

 (8)

поздний срок окончания:

 (9)

Работы сетевой модели могут иметь два вида резервов времени: полный (Rпi,j) и свободный (Rci,j). Полный резерв показывает, на сколько может быть увеличена продолжительность данной работы или сдвинуто её начало так, чтобы продолжительность максимального из проходящих через неё путей не превысила критического пути. Полный резерв, если он не использован до конца при выполнении данной работы, частично может быть перераспределён и между другими работами, лежащими на данном пути. Полный резерв рассчитывается по формуле (10).

 (10)

Свободный резерв показывает максимальное время, на которое можно увеличить продолжительность данной работы или изменить её начало, не меняя ранних сроков начала последующих работ.

Он является независимым резервом времени данной работы, т.к использование его не меняет величины свободных резервов остальных работ сети.

Свободный резерв рассчитывается по формуле (11).


 (11)

В соответствии с вышеизложенной методикой приведём планирование разработки.

Перечень событий и работ по каждому этапу приводится в таблице 1. Процесс разработки подразделяется на пять этапов:

Подготовительный этап.

Выбор методов и средств решения.

Разработка алгоритмов программ.

Отладка программ и анализ результатов.

Оформление документации и подготовка к сдаче разарботки.

В таблице 1 приведен перечень событий и работ, имеющих место при разработке АРМ РД.

Перечень событий и наименование работ

Таблица 1.

этапа

№ соб. Событие

Код

работы

Наименование работы
I 0 Первый вариант ТЗ получен

0-1

0-3

Согласование и уточнение первого варианта ТЗ

Составление перечня материалов по тематике

1 Промежуточный вариант ТЗ согласован 1-2 Составление окончательного варианта ТЗ
2 Окончательный вариант ТЗ утвержден 2-5 Проведение анализа существующих методов решения и получение сравнительных хар-к
3 Перечень материалов по тематике составлен 3-4 Изучение материалов по тематике
II 4 Материалы по тематике задачи изучены 4-8 Выбор окончательного метода решения
5 Анализ существующих методов решения проведен, сравнительные хар-ки получены 5-6 Предварительный выбор метода решения
6 Метод решения предварительно выбран 6-7 Уточнение и согласование выбранного метода решения
7 Выбранный метод решения согласован 7-8 Утверждение окончательного метода решения
III 8 Окончательный метод решения утвержден

8-9

8-10

8-11

Изучение лит-ры по ЯП

Составление эскизного варианта алгоритма

Анализ входной и выходной информации

9 Литература по ЯП изучена 9-14 Выбор языка программирования
III 10 Эскизный вариант алг. Составлен 10-12 Уточнение алгоритма решения
11 Анализ входной и выходной информации проведен 11-12 Уточнение алгоритма решения
12 Алгоритм решения проработан 12-13 Разработка блок-схемы алгоритма
13 Блок-схема алгоритма составлена 13-14 Выбор языка программирования
14 Язык прграммирования выбран

14-15

14-16

Определение структуры программы

Работа над модулями программы

15 Структура программы разработана 15-17 Работа над текстами программ
16 Модульная структура разработана 16-17 Работа над текстами программ
IV 17 Тексты программ составлены

17-18

17-19

Логический анализ программы и ее корректирование

Компиляция программ

18 Логический анализ программ, их корректирование завершены 18-20 Исправление ошибок в программах
IV 19 Компиляция программ завершена 19-21 Редактирование программ в единый модуль
20 Исправление ошибок завершено 20-21 Редактирование программ в единый модуль
21 Редактирование программ в единый загрузочный модуль завершено

21-22

21-23

Выполнение программ

Анализ рез-тов выполнения

22 Выполнение программ завершено 22-24 Проверка функ-ия прог-мм в различных условиях работы
V 23 Анализ результатов выполнения программ завершен

23-24

23-25

Проверка функ-ия прог-мм в различных условиях работы

Выпуск документации

24 Проверка функ-ия прог-мм в различных условиях работы завершена 24-26 Подготовка отчета о работе
25 Выпуск документации завершен 25-26 Подготовка отчета о работе
26 Отчет о работе подготовлен

На основании перечня событий и работ построен сетевой график работ (рис.1).

Кружки на сетевом графике обозначают события, стрелки - работы, номер над стрелкой - время, необходимое для выполнения данной работы. Каждый кружок, изображающий событие, делится на четыре сектора. В верхнем секторе располагается номер события, в левом секторе - ранний срок наступления события, в правом секторе - поздний срок окончания события. В нижнем секторе располагается резерв времени наступления события.

Для определения полного резерва времени работы надо из числа в правом секторе конечного события вычесть число в левом секторе начального события и продолжительность работы между конечным и начальным событиями. Для определения свободного резерва надо из числа в левом секторе конечного события вычесть число в левом секторе начального события и продолжительность работы.

Расчет параметров сетевого графика удобно производить, последовательно заполняя таблицу параметров сети по определенным правилам.

Расчет ожидаемого времени выполнения работы  производится по формуле (2) с использованием минимальной и максимальной  вероятностных оценок продолжительности работ.

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

Раннее окончание каждой работы  определяется по формуле (8) и фактически равно сумме величин раннего начала и продолжительности данной работы.

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

Заполнение графы позднего срока окончания работ , кроме ее последней строки производится снизу вверх следующим образом: находятся все работы, последующие за рассматриваемой, и определяются разности между поздним окончанием этих работ и их продолжительностью. Минимальная из полученных величин заносится в графу позднего срока окончания работ.

Данные графы позднего срока начала работ  находятся как разность позднего окончания этих работ и их продолжительности.

Полный  и свободный  резервы времени определяются по формулам (10) и (11) соответственно.

Параметры сетевого графика представлены в таблице 2.

Параметры сетевого графика

Таблица 2.

Код

Соб.

0-1 25 30 27 0 27 0 27 0 0
0-3 10 15 12 0 12 32 44 32 0
1-2 15 25 19 27 46 27 46 0 0
2-5 30 40 34 46 80 46 80 0 0
3-4 40 50 44 12 56 44 88 32 0
4-8 50 60 54 56 110 88 142 32 32
5-6 20 35 26 80 106 80 106 0 0
6-7 15 25 19 106 125 106 125 0 0
7-8 15 20 17 125 142 125 142 0 0
8-9 55 60 57 142 199 142 199 0 0
8-10 50 60 54 142 196 146 200 4 0
8-11 35 45 39 142 181 163 202 21 0
9-14 45 55 49 199 248 199 248 0 0
10-12 15 25 19 196 215 200 219 4 0
11-12 15 20 17 181 198 202 219 21 17
12-13 15 20 17 215 232 219 236 4 0
13-14 10 15 12 232 244 236 248 4 4
14-15 50 60 54 248 302 248 302 0 0
14-16 25 40 31 248 279 311 342 63 0
15-17 140 160 148 302 450 302 450 0 0
16-17 100 120 108 279 387 342 450 63 63
17-18 40 80 56 450 506 450 506 0 0
17-19 20 25 22 450 472 498 520 48 0
18-20 25 40 31 506 537 506 537 0 0
19-21 30 40 34 472 506 520 554 48 48
20-21 15 20 17 537 554 537 554 0 0
21-22 10 15 12 554 566 554 573 7 0
21-23 15 20 17 554 571 554 571 0 0
22-24 20 30 24 566 597 566 597 0 0
23-24 10 15 12 571 583 585 597 14 14
23-25 30 40 34 571 605 571 605 0 0
24-26 25 30 27 597 617 597 624 0 0
25-26 15 25 19 605 624 605 624 0 0

2. Расчет стоимости разработки

Величину затрат на научно-исследовательские работы определяют на основе метода калькуляций. В этом случае затраты определяются расчетом по отдельным статьям расходов и их последующим суммированием в форме. Рассмотрим затраты по отдельным статьям расходов.

 

2.1 Расчёт статьи “материалы, покупные изделия, полуфабрикаты"

На эту статью относится стоимость материалов, покупных изделий, полуфабрикатов и других материальных ценностей, расходуемых непосредственно в процессе выполнения НИР по теме. Цена материальных ресурсов определяется по соответствующим ценникам. В стоимость материальных затрат включаются транспортные расходы (10% от прейскурантной цены).

Расчёт статьи “материалы, покупные изделия, полуфабрикаты" приводится в таблице 3.

Наименование

товара

Ед. Измерения Кол-во Цена за единицу (руб) Суммар. затраты (руб)
Дискеты Пачка 2 90 180
Чертежная бумага Листы 20 5 100
Бумага для принтера Пачка 3 80 240
Итого: 520

С учётом транспортных расходов:

520 + 0.1 *520 =572 (руб)


2.2 Расчёт основной заработной платы по теме

К этой статье относятся основная заработная плата работников, а также премии, входящие в фонд заработной платы. Расчёт основной заработной платы выполняется на основе трудоёмкости выполнения каждого этапа в человеко-днях и величины месячного должностного оклада исполнителя.

Среднее количество рабочих дней в месяце равно 20-ти. Следовательно, дневная заработная плата определяется делением размера оклада на количество рабочих дней в месяце.

Трудоемкость определяется следующим образом: по таблицам 1 и 2 находится количество дней, которое необходимо потратить на каждый из 5-ти этапов разработки.

Например, на первом этапе разработки потребуется количество дней, равное сумме продолжительностей работ, коды которых: 0-1, 0-3, 1-2, 2-5, 3-4. Трудоемкость каждого этапа определяется для группы специалистов, отвечающих за этот этап разработки.

Произведение трудоемкости на сумму дневной заработной платы определяет затраты по зарплате для каждого работника на все время разработки.

Расчет основной заработной платы по теме приведен в таблице 4.

Расчет основной заработной платы по теме.

Таблица 3.

Наименование этапов работ Исполнитель

Оклад

(руб)

Дневная зар. Плата (руб)

Трудоемкость

(в человеко-днях)

Затраты по

зар. плате

(руб)

1. Подготовительный этап

Ведущий инженер

Инженер

1200

1000

60

50

252

252

15120

12600

2. Разработка алгоритмов и программ

Ведущий инженер

Инженер

Инженер

1200

1000

1000

60

50

50

864

864

864

51840

43200

43200

3. Oформление докум-ии и подготовка к сдаче Инженер 1000 50 46 2300
ИТОГО: 168260
2.3 Расчет дополнительной заработной платы

На эту статью относятся выплаты, предусмотренные законодательством о труде за неотработанное по уважительным причинам время: оплата очередных и дополнительных отпусков и т.п. (принимается в размере 20% от суммы основной заработной платы):

168260*0.2=33652 руб.

 

2.4 Расчёт отчислений на социальные нужды

Затраты по этой статье определяются в процентном отношении от суммы основной и дополнительной заработной платы (40.5%):

(168260+33652) * 0.405=81774 руб.

 

2.5 Расчёт накладных расходов

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

Накладные расходы принимаются в размере 250% от суммы основной заработной платы.

168260*2.5=420650 руб.

2.6 Расчёт договорной цены

Калькуляция стоимости разработки приведена в таблице 5.

Полная себестоимость разработки определяется суммированием пп.1 - 5 таблицы 5.

Оптовая цена определяется следующим образом:

Цопт = себестоимость + прибыль.

Прибыль составляет 30% от себестоимости:

Прибыль = 704732*0.3=211420 руб.

Цопт = 704732 + 211420=916152 руб.

При расчете договорной цены в общую стоимость закладывается сумма налога на добавленную стоимость, равного 20% от оптовой цены.

Разработка финансируется государством, следовательно, налог на добавленную стоимость при расчете договорной цены не учитывается.

Следовательно, договорная цена разработки составит 916152 руб.

Таблица 5.

№п/п Наименование статьи расхода Затраты (в руб)
1. Материалы, покупные изделия, полуфабрикаты 396
2. Основная заработная плата 168260
3. Дополнительная заработная плата 33652
4. Отчисления на социальные нужды 81774
5. Накладные расходы 420650
6. Полная себестоимость 704732
7. Прибыль 211420
8. Оптовая цена 916152
9. НДС -------
10. Договорная цена 916152

 


3. Экономическая эффективность разработки

Основная задача, поставленная перед разработчиком - это создание программного обеспечения (ПО) для автоматизированного рабочего места регистрации и документирования комплекса средств автоматизации. Разработка не имела ранее подобных аналогов и является специализированным ПО, которое обеспечивает следующие функции:

получение и регистрацию данных о состоянии объекта управления;

позволяет человеку производить анализ полученных данных и на основании их оперативно реагировать на изменения, возникающие в системе;

повышает эффективность работы оператора за счет наглядного представления данных на экране монитора и тем самым сокращает работу оператора с бумагами (инструкциями).


4. Основные разделы хозяйственного договора

Последним разделом технико-экономического обоснования по теме: “Бизнес-план разработки” является формирование основных разделов хозяйственного договора.

Хозяйственный договор - это двустороннее соглашение, заключаемое юридическими лицами (исполнителем и заказчиком) для достижения какой-либо цели.

В данном случае заключение хозяйственного договора преследует своей целью создание программ, позволяющих оператору АРМ РД оперативно получать информацию о состоянии системы, быстро реагировать на изменения, происходящие в системе, резко сократить работу с бумагами (инструкциями).

Основные разделы хозяйственного договора:

Предмет договора.

В этом пункте оговаривается предмет договора и сроки проведения работ.

Стоимость работ, порядок и условия платежей и расчетов.

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

Подготовка работ.

В этом пункте хозяйственного договора оговариваются условия, которые обязуется обеспечить заказчик для исполнителя работ. Это может быть предоставленная аппаратура, программное обеспечение, помещение и т.п.

Порядок и сроки сдачи и приемки работ.

Определяет временные рамки действия данного договора, а также порядок и сроки сдачи работ.

Особые условия.

В этом пункте оговаривается, как производятся изменения и дополнения к настоящему договору и их согласование сторонами.

Юридические адреса и реквизиты сторон.

Данный пункт включает юридические адреса сторон, а также их банковские реквизиты.

Условия хозяйственного договора (пп.1-5) предварительно оговариваются обеими сторонами и в случае, если все условия хозяйственного договора удовлетворяют требованиям исполнителя и заказчика, то руководящие лица обеих сторон подписывают договор и скрепляют его печатями.


Заключение

В данном разделе дипломного проекта было представлено технико-экономическое обоснование (ТЭО) по теме: “Бизнес-план разработки".

В ТЭО были рассмотрены следующие вопросы:

Планирование разработки с построением сетевого графика;

Расчет стоимости разработки;

Экономическая эффективность разработки;

Состав и назначение основных разделов хозяйственного договора.

В первой части ТЭО рассчитаны параметры сетевого графика работ по созданию программного обеспечения АРМ РД и по этим параметрам построен сетевой график работ. Расчет параметров сети был выполнен табличным методом, найдены сроки свершения событий, резервы времени, продолжительность критического пути.

Время разработки комплекса программ АРМ РД составит 624 дня (приблизительно 2.6 года).

Во второй части ТЭО рассчитана стоимость разработки программного обеспечения АРМ РД с момента получения первого варианта технического задания и заканчивая оформлением документации и сдачей разработки.

Величина затрат на научно-исследовательские работы определена на основе метода калькуляций. Расчет произведен в ценах 1998г. Стоимость разработки составит 916 152 руб.

В третьей части ТЭО приведена экономическая эффективность разработки, а в заключительной части сформулированы основные пункты хозяйственного договора, заключаемого между двумя сторонами - заказчиком и исполнителем, а также назначение пунктов хозяйственного договора и порядок их согласования и утверждения.


Охрана труда и техника безопасности

 

Введение

Охрана труда - система законодательных актов, постановлений, организационных, санитарных и технических мер, обеспечивающих безопасные для здоровья условия труда на рабочем месте. Научно-технический прогресс внёс изменения в условия производственной деятельности работников умственного труда. Их труд стал более интенсивным, напряжённым, требующим затрат умственной, эмоциональной и физической энергии. Это имеет прямое отношение и к специалистам, связанным с проектированием, разработкой, эксплуатацией, сопровождением и модернизацией автоматизированных систем управления различного назначения.

На рабочем месте инженера-программиста должны быть созданы условия для высокопроизводительного труда. В настоящее время всё большее применение находят автоматизированные рабочие места, которые оснащаются персональными ЭВМ с графическими дисплеями, клавиатурами и принтерами.

В данном дипломном проекте разрабатываются программы, составляющие часть ПО АРМ регистрации и документирования данных. Оператор АРМ регистрации и документирования испытывает значительную нагрузку, как физическую (сидячее положение, нагрузка на глаза), так и умственную, что приводит к снижению его трудоспособности к концу рабочего дня.


1. Характеристика помещения и факторы, действующие на оператора в процессе его труда

Помещение, в котором находится рабочее место оператора, имеет следующие характеристики:

длина помещения: 6.5 м;

ширина помещения: 3.7 м;

высота помещения: 3.5 м;

число окон: 4;

число рабочих мест: 2;

освещение: естественное (через боковые окна) и общее искусственное;

вид выполняемых работ: непрерывная работа с прикладной программой в диалоговом режиме.

Напряжение зрения:

освещённость РМ, лк300;

размеры объекта, мм0.3 - 0.5;

разряд зрительной работыIII - IV.

На рабочем месте оператор подвергается воздействию следующих неблагоприятных факторов:

недостаточное освещение;

шум от работающих машин;

электромагнитное излучение;

выделение избытков теплоты.

Поэтому необходимо разработать средства защиты от этих вредных факторов. К данным средствам защиты относятся: вентиляция, искусственное освещение, звукоизоляция. Существуют нормативы, определяющие комфортные условия и предельно допустимые нормы запылённости, температуры воздуха, шума, освещённости. В системе мер, обеспечивающих благоприятные условия труда, большое место отводится эстетическим факторам: оформление производственного интерьера, оборудования, применение функциональной музыки и др., которые оказывают определённое воздействие на организм человека. Важную роль играет окраска помещений, которая должна быть светлой. В данном разделе дипломного проекта рассчитывается необходимая освещённость рабочего места и информационная нагрузка оператора.

Развитию утомляемости на производстве способствуют следующие факторы:

неправильная эргономическая организация рабочего места, нерациональные зоны размещения оборудования по высоте от пола, по фронту от оси симметрии и т.д.;

характер протекания труда. Трудовой процесс организован таким образом, что оператор вынужден с первых минут рабочего дня решать наиболее сложные и трудоёмкие задачи, в то время как в первые минуты работы функциональная подвижность нервных клеток мозга низка. Важное значение имеет чередование труда и отдыха, смена одних форм работы другими.

2. Расчёт освещения рабочего места оператора

Одним из основных вопросов охраны труда является организация рационального освещения производственных помещений и рабочих мест.

Для освещения помещения, в котором работает оператор, используется смешанное освещение, т.е. сочетание естественного и искусственного освещения.

Естественное освещение - осуществляется через окна в наружных стенах здания.

Искусственное освещение - используется при недостаточном естественном освещении и осуществляется с помощью двух систем: общего и местного освещения. Общим называют освещение, светильники которого освещают всю площадь помещения. Местным называют освещение, предназначенное для определённого рабочего места.

Для помещения, где находится рабочее место оператора, используется система общего освещения.

Нормами для данных работ установлена необходимая освещённость рабочего места ЕН=300 лк (для работ высокой точности, когда наименьший размер объекта различения равен 0.3 - 0.5 мм).

Расчёт системы освещения производится методом коэффициента использования светового потока, который выражается отношением светового потока, падающего на расчётную поверхность, к суммарному потоку всех ламп. Его величина зависит от характеристик светильника, размеров помещения, окраски стен и потолка, характеризуемой коэффициентами отражения стен и потолка.

Общий световой поток определяется по формуле:

,

где ЕН - необходимая освещённость рабочего места по норме (ЕН=300 лк);

S - площадь помещения, м2;

z1 - коэффициент запаса, который учитывает износ и загрязнение светильников (z1=1.5, табл. VII-5, [15]);

z2 - коэффициент, учитывающий неравномерность освещения (z2=1.1, стр.139 [15]);

h - коэффициент использования светового потока выбирается из таблиц в зависимости от типа светильника, размеров помещения, коэффициентов отражения стен и потолка помещения.

Определим площадь помещения, если его длина составляет Lд=6.5 м, а ширина Lш=3.7 м:

=6.5 3.7=24 м2

Выберем из таблицы коэффициент использования светового потока по следующим данным:

коэффициент отражения побелённого потолка Rп=70%;

коэффициент отражения от стен, окрашенных в светлую краску Rст=50%;

=0.7,

где hП - высота помещения = 3.5 м. Тогда по табл.7 [16] находим (для люминесцентных ламп i=0.7) h=0.38.

Определяем общий световой поток:

лм

Наиболее приемлемыми для помещения ВЦ являются люминесцентные лампы ЛБ (белого света) или ЛТБ (тёпло-белого света), мощностью 20, 40 или 80 Вт.

Световой поток одной лампы ЛТБ40 составляет F1=3100 лм, следовательно, для получения светового потока Fобщ=31263.2 лм необходимо N ламп, число которых можно определить по формуле

Подставим значения, полученные выше:

ламп.

Таким образом, необходимо установить 10 ламп ЛТБ40.

Электрическая мощность всей осветительной системы вычисляется по формуле:

, Вт,

где P1 - мощность одной лампы = 40 Вт, N - число ламп = 10.

Вт.

Для исключения засветки экранов дисплеев прямыми световыми потоками светильники общего освещения располагают сбоку от рабочего места, параллельно линии зрения оператора и стене с окнами. Такое размещение светильников позволяет производить их последовательное включение в зависимости от величины естественной освещённости и исключает раздражение глаз чередующимися полосами света и тени, возникающее при поперечном расположении светильников [17].

Расчёт местного светового потока не производится, т.к в данном случае рекомендуется система общего освещения во избежание отражённой блёсткости от поверхности стола и экрана монитора.

Коэффициент пульсации освещённости:

,

где Emax, Emin и Eср показатели освещённости для газоразрядных ламп при питании их переменным током - соответстсвенно максимальная, минимальная и средняя.

Возьмём по аналогии [16], табл.4 люминесцентную лампу ЛХБ приблизительно той же мощности. Включением смежных ламп в разные фазы (группы) трёхфазной электрической сети возможно добиться уменьшения коэффициента пульсации КП с 35 до 3 - т.е. почти в 12 раз (рис.1). На рис.1 указаны три выключателя (по одному на каждую фазу - группу ламп) - это необходимо для обеспечения возможности независимого управления группами ламп.

Равномерность распределения яркости в поле зрения. Характеризуется отношением  (данное отношение считается оптимальным) или . В данном случае , следовательно отношение .

Итак, для обеспечения нормальных условий работы программиста, в соответствии с нормативными требованиями, необходимо использовать данное число светильников указанной мощности для освещения рабочего помещения.

3. Расчёт информационной нагрузки

Расчёт информационной нагрузки оператора необходим для того, чтобы выяснить, будет ли оператор справляться с заданием.

Рассчитаем информационную нагрузку оператора. Воспользуемся табл.4 [18].

Количество операций, совершаемых оператором за 3 часа (табл.1):

Таблица 1.

Члены алгоритма Символ Количество членов

Частота повторения pi

Афферентные: 1
Наблюдение результатов F 10 1
Всего: 10
Эфферентные: 1
Выбор наилучшего варианта из нескольких C 3 0,04
Исправление ошибок D 1 0,01
Анализ полученных результатов M 40 0,54
Выполнение механических действий K 30 0,41
Всего: 74
Итого: 84

Рассчитаем энтропию информации:

Суммарная энтропия:

 бит/с.

Поток информационной нагрузки равен

,

где:

N - суммарное число всех членов алгоритма;

t - длительность выполнения всей работы, мин.

.


Вывод:

.

Следовательно, информационная нагрузка оператора укладывается в норму [19], табл.13.2

 

Выводы

В данном разделе дипломного проекта был произведён расчёт освещённости рабочего места (с выбором типа ламп и их количества), а также оценка информационной нагрузки.

Расчёты показали, что оператор получает информационную нагрузку, равную

.

Кроме того, необходимо в течение 8-ми часового рабочего дня предусмотреть один часовой перерыв на обед, 5-ти минутные перерывы каждые полчаса и 15-ти минутные перерывы каждые 1.5 - 2 часа. Работу необходимо организовать таким образом, чтобы наиболее сложные задачи решались с 11: 00 до 16: 00 - в период наибольшей активности человека, а не в начале дня, когда оператор ещё не достиг максимальной активности, и не в конце дня, когда уже развивается утомление.

Так как работа оператора не связана с решением крупных логических задач и достаточно однообразна, то рекомендуется по-возможности чередовать виды деятельности. Пример чередования видов работ и её интенсивности приведён в графике труда и отдыха (табл.2).


Таблица 2.

Время Вид работы и её интенсивность
9: 00 Начало работы
9: 00 - 9: 30 Вход в систему, решение общих организационных задач
9: 30 - 9: 35 5-ти минутный перерыв
9: 35 - 10: 10 Решение несложных задач, формирование запросов к системе
10: 10 - 10: 15 5-ти минутный перерыв
10: 15 - 10: 45 Решение несложных задач, изучение литературы
10: 45 - 11: 00 15-ти минутный перерыв
11: 00 - 11: 55 Решение логических, наиболее трудоёмких задач
11: 55 - 12: 00 5-ти минутный перерыв
12: 00 - 13: 00 Решение наиболее сложных и трудоёмких задач, требующих максимального умственного напряжения
13: 00 - 14: 00 Перерыв на обед
14: 00 - 14: 40 Наблюдение полученных результатов, исправление ошибок
14: 40 - 14: 45 5-ти минутный перерыв
14: 45 - 15: 10 Выполнение механических действий, анализ результатов, исправление ошибок
15: 10 - 15: 30 20-ти минутный перерыв
15: 30 - 16: 10 Анализ результатов, исправление ошибок
16: 10 - 16: 15 5-ти минутный перерыв
16: 15 - 17: 10 Выполнение механических действий, оформление отчётов, подведение результатов
17: 10 - 17: 15 5-ти минутный перерыв
17: 15 - 18: 00 Выход из системы, подготовка к следующему рабочему дню (план работ и т.д.)
18: 00 Конец работы

Гражданская оборона

 

Введение

В современных городах из-за высокой плотности застройки административное здание с расположенным в нем вычислительным центром может оказаться вблизи одного из опасных промышленных предприятий, таких как:

нефтеперерабатывающий завод;

газоперекачивающая станция;

ТЭЦ;

разного рода химические заводы;

предприятия по работе с радиоактивными материалами.

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

утечка СДЯВ;

утечка радиоактивных веществ;

опасность взрыва и пожара легко воспламеняющихся веществ.

Рассматривается следующая ситуация: поблизости от административного здания расположено хранилище сжиженного газа большой емкости. В результате нарушения целостности контейнера со сжиженным газом и его утечки происходит взрыв. При этом возможны разрушения здания вследствие поражения его ударной волной и развитие пожарной обстановки.

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

В представленном разделе дипломного проекта производится оценка последствий взрыва и определяются меры защиты оператора и аппаратуры ПЭВМ от воздействия высоких температур в случае развития пожарной обстановки.


1. Теоретическая часть

Источником взрыва является хранилище сжиженного пропана. При нарушении емкости со сжиженным пропаном, хранящимся под высоким давлением, происходит его вскипание с быстрым испарением, выброс в атмосферу и образование облака газопаровоздушной смеси. Когда объемная концентрация пропана превышает 7-9%, может произойти взрыв.

Для определения последствий взрыва газопаровоздушной смеси (ГПВС) необходимо оценить физическую устойчивость объекта к поражающим факторам взрыва ГПВС. В рассматриваемой ситуации поражающими факторами являются ударная волна и возможность развития пожарной обстановки на объекте.

 

1.1 Оценка воздействия ударной волны на объект

 

1.1.1 Характеристики ударной волны

Ударная волна - это область резкого сжатия среды, которая в виде сферического слоя распространяется от места взрыва во все стороны со сверхзвуковой скоростью.

Основным параметром ударной волны, характеризующим ее разрушающее и поражающее воздействие, является избыточное давление во фронте ударной волны. Избыточное давление во фронте ударной волны - это разность между максимальным давлением во фронте ударной волны и нормальным атмосферным давлением .

Зону очага взрыва ГПВС можно представить в виде 3-х концентрических окружностей с центром в точке взрыва, которые имеют радиусы , и  (рис.1), где:

 - радиус зоны детонационной волны;

 - радиус зоны поражения продуктами взрыва;

 - зона действия воздушной ударной волны.

Подпись:

Для каждой из этих зон считают избыточное давление, по которому определяют последствия взрыва.

, м,

где  - количество сжиженного газа, т.

В пределах  действует =1700кПа.

, м, в пределах   изменяется от 1650 до 300кПа.

, кПа,

где  - расстояние от центра взрыва до места расположения объекта.

В третьей зоне  определяется в зависимости от величины :

при ,

при


1.1.2 Поражающие факторы ударной волны

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

Применительно к гражданским и промышленным зданиям степени разрушения характеризуются следующим состоянием конструкции:

Cлабое разрушение: разрушаются оконные и дверные заполнения, легкие перегородки, частично кровля, возможны трещины в стенах верхних этажей. Здание может эксплуатироваться после проведения текущего ремонта.

Среднее разрушение: разрушение крыш, внутренних перегородок, окон, обрушение отдельных участков чердачных перекрытий. Для восстановления здания необходим капитальный ремонт.

Сильное разрушение: характеризуется разрушением несущих конструкций и перекрытий верхних этажей, образованием трещин в стенах и деформацией перекрытий нижних этажей. Использование помещений становится невозможным, а ремонт нецелесообразным.

Полное разрушение: разрушаются все основные элементы здания, включая несущие конструкции. Использовать здания невозможно.

Степень разрушения зданий зависит от устойчивости конструкции зданий к воздействию избыточного давления во фронте ударной волны.

 

1.2 Оценка пожарной обстановки

В зависимости от мощности взрыва и вызванных им разрушений в административном здании может развиться пожарная обстановка. Вероятность возникновения и распространения пожаров зависит от:

степени огнестойкости зданий и сооружений;

категории пожароопасности производства;

расстояния между зданиями и сооружениями;

погодных условий.

 

1.2.1 Влияние степени огнестойкости зданий и сооружений на развитие пожарной обстановки

Степень огнестойкости зданий и сооружений зависит от сопротивляемости материалов зданий к огню. По огнестойкости здания и сооружения делятся на пять категорий. I - основные элементы выполнены из несгораемых материалов, а несущие конструкции обладают повышенной сопротивляемостью к воздействию огня; II - основные элементы выполнены из несгораемых материалов; III - с каменными стенами и деревянными оштукатуренными перегородками и перекрытиями; IV - оштукатуренные деревянные здания; V - деревянные неоштукатуренные строения. Ориентировочное время развития пожара до полного охвата здания огнем: для зданий и сооружений I и II степени - не более 2ч, зданий и сооружений III степени - не более 1.5ч, для зданий и сооружений IV и V степеней - не более 1ч.

На развитие пожара в здании влияет также степень разрушения здания ударной волной. Отдельные и сплошные пожары возможны только на тех предприятиях, которые получили в основном слабые и средние разрушения, при сильных и полных разрушениях возможны только тления и горения в завалах.

 

1.2.2 Влияние категорий пожароопасности производства на развитие пожарной обстановки

По пожарной опасности объекты в соответствии с характером технологического процесса подразделяют на пять категорий: А, Б, В, Г, Д. Объекты категорий А - Г связаны с нефтеперерабатывающим, химическим, столярным, текстильным и подобного рода производством. Объекты категории Д связаны с хранением и переработкой негорючих материалов. Наиболее пожароопасны первые две категории.

 

1.2.3 Влияние расстояний между зданиями на распространение пожаров

Распространение пожаров определяется плотностью застройки территории. Для зданий I и II степеней огнестойкости плотность застройки должна быть более 30%, для зданий III степени - более 20%, для зданий IV и V степеней - более 10%.

 

1.2.4 Влияние погодных условий на распространение пожаров

Скорость ветра также влияет на скорость распространения пожара. При указанных в п.2.2.3 сочетаниях скорость распространения огня при скорости ветра 3-5 м/с будет составлять: при застройке II и III степени огнестойкости 60-120 м/ч, IV и V степени - 120-300 м/ч.

 

1.2.5 Оценка воздействия теплового импульса огненного шара на пожарную обстановку

Величина теплового потока от огненного шара характеризуется: радиусом огненного шара: , м, и временем его существования , сек, где  - половина массы сжиженного топлива, т.

Поток излучения  кВт/м2 от огненного шара, падающий на элемент объекта, определяется по формуле: , кВт/м2, где =270кВт/м2 - мощность поверхностной эмиссии огненного шара,  - коэффициент, учитывающий фактор угла падения,  - проводимость воздуха. Коэффициент  и проводимость  определяются по формулам:

,,


где .

Импульс теплового потока излучения определяется по формуле:

, кДж/м2.

Воспламенение различного рода материалов зависит от величины теплового импульса, а предельная величина импульса теплового потока для кожи человека составляет 42 кДж/м2.

Предельно безопасный радиус (радиус эвакуации) для человека составляет , м.

1.2.6 Оценка воздействия вторичных поражающих факторов на пожарную обстановку

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

 

1.2.7 Воздействие пожара на людей и элементы объекта

Во время пожара элементы объекта и люди подвергаются тепловому излучению. Возможность возникновения очагов воспламенения и горения устанавливается по данным возгораемости материалов. Ожоги, полученные человеком во время пожара, подразделяются на четыре степени по тяжести поражения организма и вызываются тепловыми импульсами определенной величины. Так, ожоги первой степени могут быть вызваны тепловым импульсом 80-160кДж, второй степени - 160-400кДж, третьей - 400-600кДж, четвертой - 600кДж и выше. Степень полученных ожогов определяется и характером одежды человека и степенью ее возгораемости.


1.3 Оценка устойчивости элементов объекта

На основании расчетов необходимо определить степень повреждения объекта и выявить необходимые меры по повышению устойчивости работы объекта.

В данной работе принимается допущение, что при массе газа 100 и более тонн последствия взрыва и горения сравнимы с последствиями применения ядерного оружия.


2. Расчетная часть

 

2.1 Исходные данные

Рабочее место оператора располагается в многоэтажном административном здании с большой площадью остекления, степень огнестойкости здания I - II, расстояние от здания до хранилища, где находится емкость с газом  м, масса пропана -  т, скорость ветра у земли  м/с, расстояния между зданиями - м.

 

2.2 Расчет

 

2.2.1 Оценка воздействия воздушной ударной волны на элементы объекта

 м,

т.к следовательно, считаем :

м

, следовательно, предполагаем, что здание попадает в зону воздушной ударной волны и считаем избыточное давление  для этой зоны. Определим величину

; так как , то

кПа.

Выводы:

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

Большая вероятность того, что здание будет полностью разрушено и единственным фактором, смягчающим действие воздушной ударной волны, являются большие оконные проемы. Здания с большим количеством и большой площадью проемов более устойчивы, так как в первую очередь разрушаются заполнения премов, а несущие конструкции при этом испытывают меньшую нагрузку, следовательно при взрыве ГПВС будут выбиты стекла. При этом возможны поражения оператора и техники как разрушенными перекрытиями, так и осколками стекла.

Так как плотность застройки невелика (меньше 50%), то экранирующее действие близлежащих зданий незначительно и давление ударной волны на здания не уменьшается.

 

2.2.2 Оценка пожарной обстановки

Радиус огненного шара:

 м,

время его существования


сек.

Поток излучения  от огненного шара:

, =270кВт/м2,,

,

 кВт/м2.

Импульс теплового потока излучения равен:

, кДж/м2.

Выводы: так как расчетная величина импульса теплового потока равна 470кДж/м2, а предельная величина импульса теплового потока для кожи человека составляет 42кДж/м2 [Л2], то человек получит ожоги третьей степени. Одежда на человеке должна быть плотная и преимущественно из натуральных материалов, т.к синтетические ткани вспыхивают гораздо быстрее. Предельно безопасный радиус (радиус эвакуации) для человека составляет  м, так что можно сделать вывод, что здание находится в недопустимой близости от хранилища сжиженных углеводородов. Техника, размещенная в здании, также получит повреждения, оплавятся пластмассовые части. Кроме того, возможно возникновение пожаров из-за вторичных поражающих факторов: пробоев и нарушения электропроводки. Так как при этом здание имеет I - II степень огнестойкости и по категориям пожароопасности производство относится к категории Д, то возможны не сплошные пожары, а тление и горение в завалах, с учетом того, что здание получит сильные и полные разрушения.

Так как среднее расстояние между зданиями 40-50м, а при I и II степенях огнестойкости зданий для возникновения сплошных пожаров расстояние между зданиями должно быть не больше 10-15м, то вероятность возникновения сплошных пожаров мала. Скорость ветра также будет мало влиять на распространение пожара, т.к она невелика, а сплошных пожаров, как было сказано выше, не возникнет.


3. Предложения по защите

 

3.1 Отнесение хранилища на безопасное расстояние от здания

Найдем расстояние удаления, при котором здание получит слабые разрушения. Примем  кПа.

После преобразований, полагая кПа, следует:

, отсюда , т.к , следовательно

 м. –

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

Защита оператора:

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

Найдем минимальное расстояние удаления, при котором здание не получит разрушений. Примем кПа.


После преобразований, полагая кПа, следует:

,

отсюда , т.к , следовательно

 м. –

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

 

3.2 Уменьшение массы хранимого пропана

В качестве еще одной меры предосторожности можно уменьшить массу хранимого пропана.

Посчитаем массу пропана, при которой импульс теплового потока излучения , кДж/м2, минимален. Примем  кДж/м2, как пороговое значение чувствительности кожи человека, при котором он не получает ожогов.

,  кВт/м2, ,

следовательно,


,

Составим систему уравнений:

Подставим во второе уравнение значения ,  и , выразим  через . Получим уравнение:

,

подставим

,

после некоторых преобразований получим:

,

отсюда  т, следовательно общая масса газа т.

При этом кПа. Можно сделать вывод, что при массе газа 12.72т здание подвергнется слабым разрушениям, а импульс теплового потока будет неопасным для техники и здоровья человека.

Защита оператора:

рекомендуется также в дополнение принять меры предосторожности по расположению рабочего места оператора, рассмотренные в п.3.1

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

Примем

кПа, , ,

 м,

подставляем  в , и находим т. Можно сделать вывод, что при данной массе газа хранилище можно оставить на расстоянии 315м от административного здания без каких бы то ни было последствий.

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

 

3.3 Меры по предупреждению аварийной ситуации на хранилище пропана

Необходимо также предусмотреть меры по предотвращению аварийной ситуации на хранилище пропана:

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

Датчики высокой чувствительности, реагирующие на превышение нормы температуры в хранилище, также снабженные сигнализацией.

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

Наличие систем вентиляции.

Система автоматических клапанов на газопроводах, которые автоматически перекрываются при резком возрастании расхода газа (резкое возрастание расхода газа как правило свидетельствует о прорыве газапровода).

 

3.4 Меры по защите административного здания

Строительство зданий и сооружений соответствующей огнестойкости и устойчивости к поражающим факторам ударной волны.

Конструирование и проектирование здания с учетом требований противопожарной безопасности.

 

3.5 Меры по индивидуальной защите оператора

Наличие средств индивидуальной защиты у персонала на производстве.

Обучение персонала оказанию первой медицинской помощи.

Наличие плана эвакуации.

Наличие средств пожаротушения.


Эргономика Введение

В современном мире технический прогресс приводит к существенному изменению условий, средств и характера трудовой деятельности. В производстве, на транспорте, в системах связи, строительстве и сельском хозяйстве все шире применяются автоматы и вычислительная техника, происходит автоматизация многих вычислительных процессов.

Благодаря техническому перевооружению производства существенно меняются функции и роль человека. Многие операции, которые раньше были его прерогативой, сейчас начинают выполнять машины, однако, каких бы успехов ни достигала техника, труд был и остается достоянием человека, а машины, как бы сложны они ни были, остаются лишь орудиями его труда. В связи с этим возникла новая дисциплина - эргономика, которая вобрала в себя методы целого ряда дисциплин - психологии и физиологии труда, производственной медицины, гигиены труда, научной организации труда, инженерной психологии и ряда других дисциплин.

Эргономика - это дисциплина, комплексно изучающая человека (группу людей) в конкретных условиях его (их) деятельности, связанной с использованием технических средств.

Во время работы часто возникают ситуации, в которых оператор ЭВМ должен за короткий срок принять правильное решение. Для успешного труда в таких условиях необходима рационально организованная окружающая среда, ограждающая работника от воздействия посторонних раздражителей, которыми могут быть мрачная окраска ЭВМ и помещения ВЦ, неудобное расположение сигнализации, клавиш управления и т.п. Поэтому всеми средствами нужно снижать утомление и напряжение оператора ЭВМ, создавая обстановку производственного комфорта.

Анализ перспектив развития технических средств показывает, что улучшение их эргономических характеристик составляет важный резерв повышения эффективности деятельности оператора. Целью эргономического анализа является не только повышение производительности труда человека и устранение его ошибок, но и сохранение при этом здоровья человека, развитие его личности. Необходим грамотный подход, прежде всего к рабочим местам, как к функционально и конструктивно законченным изделиям, а также к размещению и взаимному расположению отдельных технических средств в рабочей зоне, т.е. на столах операторов и вокруг них.

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

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


1. Теоретическая часть

 

1.1 Базовый подход к конструированию рабочего места оператора

При разработке перспективных рабочих мест широко используется базовый метод конструирования и его разновидности (функционально-модульный, функционально-узловой и функционально-блочный методы), основанные на принципах функциональной и размерной взаимозаменяемости, схемной и конструкторской унификации. Базовый метод имеет ряд важных преимуществ:

позволяет упростить процесс конструирования и макетирования;

обеспечивает возможность непрерывного совершенствования аппаратуры без коренных изменений конструкции;

сокращает объем конструкторской документации на этапе производства;

позволяет улучшить эксплуатационные характеристики аппаратуры, ремонтопригодность, улучшить эргономические и технико-эстетические параметры изделий.

Функционально-модульный метод позволит полнее удовлетворить все более ужесточающиеся требования технической эстетики к композиционной целостности, рациональности формы и качеству производственного исполнения изделий. Реализация этих требований позволит устранить разнохарактерность изделий, визуально и конструктивно не стыкующихся друг с другом.

 

1.2 Понятие рабочего места и рабочей зоны оператора

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

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

 

1.3 Формирование типового состава рабочей зоны

В общем случае в типовой состав рабочей зоны включают:

средства отображения информации индивидуального пользования (блоки отображения дисплеев, экраны персональных ЭВМ, и т.п.);

средства управления и ввода информации (пульты дисплеев, клавиатура и устройства позиционирования курсора);

устройства печати, документирования и хранения информации;

вспомогательное оборудование (средства оргтехники, хранилища для носителей информации, устройства местного освещения и т.д.)

стол и кресло оператора.

При эргономической оценке рабочего места оператора необходимо выбрать два-три эргономических принципа в качестве ведущих. Эргономическими принципами, которые необходимо учитывать при формировании рабочей зоны оператора, могут быть следующие:

учет последовательности и частоты использования отдельных средств в течение рабочей смены;

учет требований к скорости и точности приема информации оператором;

учет особенностей конструктивного выполнения технических средств и аппаратуры.


1.3.1 Организация пространства рабочего места оператора

Рабочее место оператора складывается из [Л2]:

пространства, занимаемого оборудованием;

пространства необходимого для технического обслуживания и ремонта;

зоны проходов, обеспечивающей нормальное функционирование оборудования;

сенсомоторного пространства (части пространства рабочего места, в которой осуществляется двигательная и сенсорная работа человека).

 

1.3.2 Условия, которым должна удовлетворять рабочая зона

Пространственные и размерные соотношения между элементами рабочего места должны быть достаточными для:

размещения работающего человека с учетом его рабочих движений и перемещений согласно технологическому процессу;

расположения средств управления в пределах максимальной и минимальной границ моторного пространства;

оптимального обзора визуальной информации,

смены рабочей позы и рабочего положения;

свободного доступа к оборудованию при ремонте и наладке;

рационального размещения основных и вспомогательных средств труда;

ведения записей, работы с документами и приборами.

В данном дипломном проекте ведущие эргономические принципы, характерные для рабочего места оператора и его реализация, будут рассмотрены в разделе 2.


2. Реализация эргономической оценки рабочего места оператора

Выберем в качестве основных эргономических требований организации рабочего места оператора следующие:

особенности конструктивного выполнения и расположения технических средств и аппаратуры;

длительность работы с данной аппаратурой;

точность и эффективность приема информации.

Первый принцип определяется выбранной аппаратурой, тогда как второй и третий зависят от первого и определяют функциональное состояние оператора.

 

2.1 Основные эргономические требования, предъявляемые к дисплею

Экран монитора должен размещаться на столе или на подставке так, чтобы расстояние наблюдения информации на его экране не превышало 700мм, оптимальное расстояние - 450-500мм.

Экран дисплея по высоте должен быть расположен на столе или подставке так, так, чтобы угол между нормалью к центру экрана и горизонтальной линией взора составлял 20 градусов.

Зрительный комфорт в основном определяется следующими факторами:

размерами знаков;

расстояние между знаками по горизонтали: 0,25 высоты знака;

расстояние между строками: 0,5-1,0 высоты знака;

количеством знаков в строке: 4-80;

максимально допустимым количеством строк для цветного изображения: не более 25.

Схема размещения алфавитно-цифрового дисплея (АЦД) приведена на рисунке 1.


Рис. 1


Угол наблюдения экрана, а также других средств отображения в горизонтальной плоскости (угол разворота блока отображения АЦД относительно оператора) в общем случае не должен превышать 60 градусов. При наличии трех и более дисплеев в рабочей зоне допускается увеличение этого угла, но он не должен превышать 90 градусов. При этом должно использоваться вращающееся кресло.

2.2 Основные эргономические требования, предъявляемые к клавиатуре

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

Для оператора ввода данных документ (бланк) рекомендуется располагать на расстоянии 450-500 мм от глаз оператора, преимущественно слева, при этом угол между экраном АЦД и документом в горизонтальной плоскости не должен превышать 30-40 градусов.

Клавиатуру, манипулятор “мышь" следует располагать в оптимальной зоне - части пространства рабочего места, ограниченного дугами, описываемыми предплечьями при движении в локтевых суставах с опорой в точке локтя и с относительно неподвижным плечом. Эта зона составляет не более 300 - 400мм от точки опоры локтя оператора [23].


2.3 Размещение кресла оператора в рабочей зоне

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

Сиденье должно иметь некоторый наклон назад (на 5-6 градусов), обеспечивающий устойчивость позы, высота сиденья кресла от поля 400-450 мм. Если по условиям работы сиденье расположено выше, необходимо иметь подставку для ног. Спинка кресла должна иметь вогнутую форму.

Рекомендуемая ширина спинки 300 мм. Угол наклона спинки следует выбирать в зависимости от назначения кресла. Для оператора, работающего за пультом с ЗПТ, оптимальным является наклон 5-10 градусов. При длительной работе за пультом (более 6 часов), если во время работы необходим отдых, целесообразно иметь возможность изменить по желанию оператора угол наклона спинки стула, но не более чем на 45 градусов.

 

2.4 Размещение устройств документирования

Устройства документирования, ввода-вывода информации рекомендуется располагать справа от оператора в зоне максимальной досягаемости. Шумящие устройства следует выносить за пределы рабочей зоны.

2.5 Расположение рабочего места оператора в помещении

Во время работы часто возникают ситуации, в которых оператор ЭВМ должен за короткий срок принять правильное решение. Для успешного труда в таких условиях необходима рационально организованная окружающая среда.

В ВЦ, как правило, применяют одностороннее естественное боковое освещение, причем светопроемы с целью уменьшения солнечной инсоляции устраивают с северной, северо-восточной или северо-западной ориентацией. В машинных залах рабочие места операторов, работающих с дисплеями, располагают подальше от окон и таким образом, чтобы оконные проемы находились сбоку. Если экран дисплея обращен к оконному проему, необходимы специальные экранирующие устройства (рис.2). Окна рекомендуется снабжать светорассеивающими шторами, регулируемыми жалюзи или солнцезащитной пленкой с металлизированным покрытием [17].

Рис. 2

1 - окно, 2 - полупрозрачный экран

 
Экран АЦД, документы, клавиатура пульта должны быть расположены так, чтобы перепад яркостей их поверхностей, зависящий от их расположения относительно источников света, не превышал 1: 10 при рекомендуемом значении 1: 3. При яркости изображения на экране 50-100 кд/м (номинальное значение) освещенность документа должна составлять 300-500 лк. Должны быть исключены слепящие яркости, блики и отображения от стекла экрана.

Для исключения засветки экранов дисплеев прямыми световыми потоками светильники общего освещения располагают сбоку от рабочего места, параллельно линии зрения оператора и стене с окнами.

Также размещение светильников позволяет производить их последовательное включение в зависимости от величины естественной освещенности и исключает раздражение глаз чередующимися полосами света и тени, возникающее при поперечном расположении светильников. [17].

Для обеспечения оптимальных условий работы операторов дисплейных устройств необходима определенная цветовая отделка помещений. Так, при использовании экранов красновато-желтого цвета с яркостью свечения до 15кд/м2 стену, противоположную экранам, окрашивают в насыщенный темно-коричневый цвет с коэффициентом отражения  =0.2, а остальные стены - в красно-коричневый цвет с  =0.35. При восприятии информации на экране зеленого цвета целесообразно окрашивать стену, на которую направлен взгляд оператора, в оливково-зеленый цвет с  =0.4. Окраске поверхностей следует придавать матовую фактуру [17].


Заключение

Итак, при эргономической оценке рабочего места оператора в качестве основных эргономических требований были выбраны следующие:

особенности конструктивного выполнения и расположения технических средств и аппаратуры;

длительность работы с данной аппаратурой;

точность и эффективность приема информации.

Результаты сведены в Таблицу 1, в которой отражены технические характеристики устройств и их влияние на каждое из эргономических требований.

Таблица 1.

Элементы рабочего места оператора Технические характеристики, предъявляемые к элементу рабочего места оператора На какое требование влияет данная характеристика
Экран монитора Оптимальное расстояние наблюдения информации на экране монитора - 450-500мм. 2

Расстояние между знаками по горизонтали: 0,25 высоты знака;

расстояние между строками: 0,5-1,0 высоты знака;

количество знаков в строке: 4-80;

максимально допустимое количество строк для цветного изображения: не более 25.

2, 3
Угол наблюдения экрана не должен превышать 60 градусов. При наличии трех и более дисплеев в рабочей зоне допускается увеличение этого угла, но он не должен превышать 90 градусов. 2
Клавиатура

Клавиатура должна быть размещена на столе или подставке так, чтобы высота клавиатуры пульта по отношению к полу составляла 650-720мм. При размещении пульта на стандартном столе высотой 750мм необходимо использовать кресло с регулируемой высотой сиденья и подставку под ноги.

Клавиатуру, манипулятор “мышь" следует располагать в оптимальной зоне -не более 300 - 400мм от точки опоры локтя оператора.

1, 2
Бланк данных Для оператора ввода данных документ (бланк) рекомендуется располагать на расстоянии 450-500 мм от глаз оператора, преимущественно слева, при этом угол между экраном АЦД и документом в горизонтальной плоскости не должен превышать 30-40 градусов. 2, 3
Кресло оператора Конструкция кресла оператора должна позволять сидеть, поддерживая тяжесть верхней части туловища не напряжением мышц спины, а путем опоры на спинку. Форма сиденья - квадратная со сторонами 400 мм, и с выемкой, по форме бедра. Наклон сиденья назад - 5-6 градусов, высота сиденья кресла от пола 400-450 мм. Если сиденье расположено выше, необходимо иметь подставку для ног. Спинка кресла должна иметь вогнутую форму, ширина спинки - 300 мм. Угол наклона спинки 5-10 градусов. При работе более 6ч на время отдыха угол наклона спинки можно изменить, но не более чем на 45 градусов. 1, 2

Устройства документи-

Рования

Устройства документирования информации рекомендуется располагать справа от оператора в зоне максимальной досягаемости, шумящие выносить за пределы рабочей зоны. 1, 3
Окружающее помещение

Экран АЦД, документы, клавиатура пульта должны быть расположены так, чтобы перепад яркостей их поверхностей, зависящий от их расположения относительно источников света, не превышал 1: 10 при рекомендуемом значении 1: 3. При яркости изображения на экране 50-100 кд/м (номинальное значение) освещенность документа должна составлять 300-500 лк. Должны быть исключены слепящие яркости, блики и отображения от стекла экрана.

При использовании экранов красновато-желтого цвета с яркостью свечения до 15кд/м2 стену, противоположную экранам, окрашивают в насыщенный темно-коричневый цвет с коэффициентом отражения  =0.2, а остальные стены - в красно-коричневый цвет с  =0.35. При восприятии информации на экране зеленого цвета стену, на которую направлен взгляд оператора, окрашивают в оливково-зеленый цвет с =0.4. Окраске поверхностей следует придавать матовую фактуру.

1, 2, 3

Заключение

Результатом данного дипломного проекта является разработка программ формирования и обработки запросов. Программы разработаны для технических средств АРМ РД и функционируют совместно с остальным ПО АРМ РД.

В процессе разработки программ выполнены требования к функциональным характеристикам, условия эксплуатации и требования к операционной и программной совместимости. В заключительной части дипломного проекта была дана оценка результатов работы программ и даны рекомендации оператору АРМ РД.

Объем памяти, занимаемый программой равен: V = 64 Кбайта.

В организационно-экономической части дипломного проекта было проведено планирование разработки с построением сетевого графика, расчет договорной цены разработки, обоснована экономическая целесообразность темы.

Договорная цена разработки составляет: Цд = 916 152 руб. в ценах 1998г.

В разделе “Охрана труда и техника безопасности” был выбран оптимальный режим освещенности и проведен расчет информационной нагрузки оператора.

Значение информационной нагрузки оператора АРМ РД составляет 0.6 бит/с.

В разделе “Гражданская оборона" были приведены требования по инженерной защите оператора и оборудования ПЭВМ от воздействия высоких температур при взрывах в ЧС мирного времени.

В разделе “Эргономика" была произведена оценка рабочего места оператора и разработано оптимальное рабочее место оператора.


Организационно-экономическая часть Бизнес-план разработки

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

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

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

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

Данный раздел проекта включает в себя расчет затрат на тему, определение договорной цены разработки и составление сетевого графика работ.

ОПРЕДЕЛЕНИЕ ЗАТРАТ НА ТЕМУ.

Для определения затрат на тему необходимо рассчитать следующие статьи расхода:

основная заработная плата персонала,

дополнительная заработная плата,

отчисления на социальные нужды,

производственные командировки,

оплата работ, выполняемых сторонними организациями,

накладные расходы,

основные материалы и покупные изделия.

Основная заработная плата определяется как произведение трудоемкости выполнения каждого этапа (вида работ) в человеко-днях, переведенных в человеко-месяцы, и величины месячного должностного оклада исполнителя.

Результаты расчета приводятся в таблице 2.1

Таблица 2.1 Основная заработная плата персонала по теме

N

п/п

Наименование

этапов

Исполнители Трудоемкость, в чел. мес. Должностной оклад, руб. Затраты по зарплате, руб.
1. Проведение НИР.

Нач.

Отдела

Вед. инж

Инж.1 кат.

5

5

15

2000

1200

1000

10000

6000

15000

2. Монтаж сети.

Монтажник

Рабочий

Инж.1 кат.

5

5

2

700

700

1000

3500

3500

2000

3. Наладка сети.

Вед. инж

Монтаж-ник

Инж.1 кат.

2

2

7

1200

700

1000

2400

1400

7000

Итого 50800

Таким образом, основная заработная плата персонала составляет 50800 руб.

Зосн = 50800 руб.

Дополнительная заработная плата научного и производственного персонала составляет 20% от основной.

Здоп = Зосн * 0.2 = 50800 * 0.2 = 10160 руб.

Отчисления на социальные нужды составляют 38.5% от суммы основной и дополнительной зарплат.

Зсн = 0.385 * (Зосн + Здоп) =

= 0.385 * (50800 + 10160) = 23470 руб.

Расчет затрат на материалы и покупные изделия производится на основе сводной ведомости (табл.2.2). (Цены на изделия приняты на начало октября 1998г).

Таблица 2.2. Затраты на материалы и покупные изделия

Материал,

покупное изделие

Количество,

ед.

Цена за ед.,

руб.

Сумма,

руб.

Сервер 4 36000 144000
Раб. станция 60 18000 1080000
Сетевое оборудование 8 1260 100800
Кабель 500 (м) 36 18000
Итого 1342800

В стоимость материальных затрат включаются также и транспортно-заготовительные расходы. Они составляют 10% от Змат.

Зтр = 0.1 * Змат

Зтр = 0.1 * 1342800 = 134280 руб.

Общая стоимость материальных затрат определяется как сумма Змат и Зтр.

Змато = Змат + Зтр

Змато = 1342800 + 134280 = 1477080 руб.

Накладные расходы составляют 250% от основной зарплаты производственного пресонала и считаются по формуле:

Зн = 2.5 * Зосн = 2ю5 * 50800 = 127000 руб.

Затраты, связанные с услугами смежных организаций составляют 20% от Зосн. В данной работе к услугам смежников не прибегают, и, следовательно, эта статья не учитывается при дальнейших расчетах калькуляции на тему.

Командировки составляют 20% от суммы основной и дополнительной заработных палат:

Зком = 0.2 * (Зосн + Здоп); Зком = 0.2 * (50800 + 10160) = 12192 руб.

Все расчеты по статьям калькуляции работы сведены в таблицу 2.3.


Таблица 2.3 Сметная калькуляция по теме.

N п/п Статья расхода Сумма, руб.
1. Основная заработная плата 50800
2. Дополнительная заработная плата 10160
3. Отчисления на социальные нужды 23470
4. Производственные командировки 12192
5. Оплата работ, выполняемых сторонними организациями -
6. Накладные расходы 127000
7. Материалы и покупные изделия 1477080
Итого 1700702

Таким образом себестоимость разработки составляет 1700702 руб.

С = 1700702 руб.

ОПРЕДЕЛЕНИЕ ДОГОВОРНОЙ ЦЕНЫ РАЗРАБОТКИ.

С помощью рассчитанной выше себестоимостью разработки можно определить ее договорную цену. Она рассчитывается по формуле:

Цд = С + Фз. п. * Нр * К / 100, где (2.1)

С - себестоимость разработки,

Фз. п. - заработкая плата сотрудников, непосредственно участвующих в выполнении работы, руб.,

Нр - рентабельность,%,

К - коэффициент, учитывающий заработную плату обслуживающих и управленческих подразделений.

Рентабельность рассчитывается в целом по организации в процентах к общему фонду заработной платы исходя из обязательного обеспечения выплаты фиксированных платежей. Корректирующий коэффициент К также рассчитывается в целом по организации как отношение общего фонда заработной платы к фонду заработной платы подразделений, непосредственно занятых проведением НИР. Величены Нр и К принимаются по данным НИИ, где выполняется дипломный проект.

При С = 1700702 руб., Фз. п. = Зосн + Здоп = 60960 руб., Нр = 15%, К = 5

определим договорную цену на разработку:

Цд = 1700702 + 60960 * 15 * 5/100 =

= 1746422 руб.

Договорная цена разработки составила 1746422 руб.

ПЛАНИРОВАНИЕ РАБОТ ПО ТЕМЕ С ПРИМЕНЕНИЕМ СЕТЕВЫХ МЕТОДОВ.

Как правило, планирование работ по теме усложняется тем, что в работе участвуют несколько исполнителей, начало многих работ зависит от результатов других и т.д. В таких условиях наиболее удобными являются системы сетевого планирования и управления (СПУ).

Планирование НИР с применением сетевого метода ведется в следующем порядке:

составляется перечень событий и работ,

устанавливается топология сети,

строится сетевой график по теме,

определяется продолжительность работ,

рассчитываются параметры сетевого графика,

определяется продолжительность критического пути,

проводится анализ и оптимизация сетевого графика.

Перечень событий приведен в таблице 2.4, перечень работ и их продолжительности - в таблице 2.5. На основании этих перечней строится сетевой график, изображенный на рис.2.1.


Таблица 2.4 Перечень событий сетевого графика.

Код события Событие
1. ТЗ на систему разработано.
2. ТЗ на систему утверждено.
3. Спецификация закупаемых ТС разработана.
4. Спецификация закупаемого ПО разработана.
5. Спецификация закупаемых ТС утверждена.
6. Спецификация закупаемого ПО утверждена.
7. Входной контроль закупаемых ТС проведен.
8. Входной контроль закупаемого ПО проведен.
9. Стенд создан.
10. Установлена и настроена сетевая ОС.
11. Установлено антивирусное ПО.
12. Установлены и отлажены специальные программные средства защиты информации.
13. Разработана и выпущена инструкция по использованию антивирусного ПО.
14. Разработана и выпущена инструкция по использованию встроенных средств защиты сетевой ОС.
15. Определены требования к дополнительным программным средствам по защите информации.
16. Разработана инструкция сетевому администратору по применению специальных средств защиты информации.
17. Разработка рекомендаций по использованию средств защиты на ЛВС заказчика.
18. Закончены работы по созданию системы защиты информации на ЛВС заказчика.
19. Закончены работы по испытанию и сдаче заказчику системы.
20. Оформлен протокол и акт испытаний.

Таблица 2.5 Перечень работ сетевого графика.

i-j Работа tmin tmax to
1-2 Утверждение ТЗ на систему. 25 30 27
2-3 Разработка спецификации закупаемых ТС. 5 7 6
2-4 Разработка спецификации закупаемого ПО. 10 12 11
3-5 Утверждение спецификации закупаемых ТС. 2 3 2
4-6 Утверждение спецификации закупаемого ПО. 3 4 3
5-7 Проведение входного контроля закупаемых ТС. 5 7 6
6-8 Проведение входного контроля закупаемого ПО. 10 14 12
7-9 Монтаж стенда. 10 15 12
9-10 Наладка стенда. 3 4 3
8-10 Установка сетевой ОС. 2 3 2
10-11 Установка антивирусного ПО. 2 3 2
10-12 Установка специальных программных средств защиты информации. 2 3 2
11-13 Разработка инструкции по использованию антивирусного ПО. 8 10 9
10-14 Разработка инструкции по использованию встроенных средств защиты сетевой ОС. 20 24 22
12-15 Формирование требований к дополнительным программным средствам по защите информации. 22 26 24
i-j Работа tmin tmax to
12-16 Разработка инструкции сетевому администратору по применению специальных средств защиты информации. 25 29 27
13-17 Выпуск инструкции по использованию антивирусного ПО. 5 8 6
14-17 Выпуск инструкции по использованию встроенных средств защиты сетевых ОС. 7 9 8
15-17 Выпуск инструкции по применению дополнительных программных средств защиты. 5 6 5
16-17 Выпуск инструкции сетевому администратору по применению специальных средств защиты. 5 7 6
17-18 Проведение работ по созданию системы защиты информации на ЛВС заказчика. 35 42 38
18-19 Проведение испытаний и сдача системы заказчику. 24 30 27
19-20 Оформление протокола и акта испытаний. 4 6 5

Выполнение больщинства работ по разработке нового изделия всегда связано с элементами неоднородности. Их продолжительность зависит от многих факторов, предвидеть которые очень трудно. Поэтому в системе сетевого планирования предложено определить две вероятностные оценки времени: оптимистическую и пессимистическую. Оптимистическая оценка - максимально необходимое время для выполнения данной работы при наиболее благоприятных условиях. Пессимистическая оценка - максимально необходимое время для выполнения работы при наиболее неблагоприятных условиях. В данной работе эти оценки берутся по опыту предыдущих разработок и все времена определяются в рабочих днях. Для расчета ожидаемой продолжительности работ используется формула:


to = (3tmin + 2tmax) / 5, (2.2)

где to - ожидаемая продолжительность работ,

tmin - оптимистическая оценка,

tmax - пессимистическая оценка.

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

Любая последовательность работ в сети называется путем. Путь, имеющий наибольшую продолжительность называется критическим (Tкр). В данной работе критический путь равен 161 дня и выделен на рис.2.1 жирной линией.

Для расчета сети "в терминах событий" используются следующие понятия. Ранний срок наступления события (Tpi) - минимальный срок, необходимый для выполнения всех работ, предшествующих данному событию. Ранний срок наступления события i определяется по формуле:

Tpi = max å toij. (2.3)

Поздний срок наступления события (Tni) - максимально допустимый срок наступления события i, при котором сохраняется возможность соблюдения ранних сроков наступления последующих событий. Поздний срок определяется по формуле:

Tni = Tкр - max å to. (2.4)

Все события в сети, кроме лежащих на критическом пути имеют резерв времени (Ri), который определяется по формуле:

Ri = Tni - Tpi. (2.5)

При описании сети "в терминах работ" определяются ранние и поздние сроки начала и окончания работы. Ранний срок начала - Трнij = Трi, поздний срок начала - Тпнij = Tni - tij, ранний срок окончания - Троij = Трi + tij, поздний срок окончания - Тпоij = Tnj.

Работы сетевой модели могут иметь два вида резервов: полный (Rnij) и свободный (Rcij). Полный резерв показывает, на сколько может быть увеличена продолжительность данной работы или сдвинуто ее начало так, чтобы продолжительность максимального из проходящий через нее путей не превысила критического пути. Полный резерв определяется

Rnij = Tnj - Tpi - tij. (2.6)

Свободный резерв указывает максимальное время, на которое можно увеличить продолжительность данной работы или изменить ее начало, не меняя ранних сроков начала последующих работ. Определяется в виде:

Rcij = Tpj - Tpi - Tij. (2.7)

Результаты расчета параметров сетевого графика представлены в таблице 2.6

Таблица 2.6 Временные параметры работ сетевого графика.

i-j toij Tрнij Троij Тпнij Tпоij Rnij Rcij
1-2 27 0 27 0 27 0 0
2-3 6 27 33 27 33 0 0
2-4 11 27 38 27 38 0 0
3-5 2 33 35 33 35 0 0
4-6 3 38 41 39 42 1 0
5-7 6 35 41 35 41 0 0
6-8 12 41 53 42 54 1 0
7-9 12 41 53 41 53 0 0
9-10 3 53 56 53 56 0 0
8-10 2 53 55 54 56 1 1
10-12 2 56 58 56 58 0 0
10-11 2 56 58 56 58 0 0
11-13 9 58 67 76 85 18 0
i-j toij Tрнij Троij Тпнij Tпоij Rnij Rcij
10-14 22 56 78 56 78 0 0
12-15 24 58 82 62 86 4 0
12-16 27 58 85 58 95 10 0
13-17 6 67 73 85 91 18 18
14-17 8 78 86 83 91 5 5
15-17 5 82 87 86 91 4 4
16-17 6 85 91 85 91 0 0
17-18 38 91 129 91 129 0 0
18-19 27 129 156 128 156 0 0
19-20 5 156 161 156 161 0 0

Анализ сетевого графика включает классификацию и группировку работ по величине резервов (полных и свободных), определение коэффициентов напряженности путей, расчет вероятности наступления завершающего события в заданный срок.

Коэффициент напряженности пути Кн (L) определяется по формуле

Т (L) - Т’кр (L)

Кн (L) = - ---------- - , (2.8)

Ткр - Т’кр (L)

где Т (L) - продолжительность пути, для которого определяется коэффициент напряженности,

Т’кр (L) - продолжительность работ данного пути (L), совпадающих с работами критического пути.

Коэффициенты напряженности работ данной разработки приведены в таблице 2.7

Найдем вероятность выполнения всего комплекса работ (Рк) за директивный срок 162 дня. Эта вероятность определяется с помощью аргумента нормальной функции распределения вероятностей:

Tд - Tкр

x = - ------- - , (2.9)

Ö å s tкрij

где n - число работ, лежащих на критическом пути, Тд - директивный срок, s = 0,04 (tmax - tmin) - дисперсия работы i,j критического пути (значения дисперсий приведены в таблице 2.7).

Значение Рк находим по ее аргументу х, используя таблицу интегралов Фурье.

Таблица 2.7 Параметры сетевого графика.

i-j Кн stкрij i-j Кн stкрij
1-2 1,0 1,0 10-12 1,0 0,04
2-3 1,0 0,16 10-14 0,2 0,64
2-4 0,08 0,16 11-13 0,1 0,16
3-5 1,0 0,04 12-15 0,23 0,64
4-6 0,1 0,04 12-16 1,0 0,64
5-7 1,0 0,16 13-17 0,16 0,36
6-8 0, 19 0,64 14-17 0,29 0,16
7-9 1,0 1,0 15-17 0,28 0,04
8-10 0,2 0,04 16-17 1,0 0,16
9-10 1,0 0,04 17-18 1,0 1,96
10-11 0,02 0,04 18-19 1,0 1,44
19-20 1,0 0,16

Аргумент нормальной функции распределения вероятностей равен 0,32. Используя таблицу интеграла Фурье, находим значение функции Рк = 0,63. Так как значение Рк попадает в интервал 0,35 < Рк < 0,65, то сетевой график не нуждается в оптимизации.



Рис.2.1 Сетевой график.
Приложение 1

Тексты программ

 // inquiry. prj

 // INQUIRY\inquiry. c

 // main (), initsearch (),mem_args ()

 // программа обработки запросов

#include <stdio. h>

#include <stdlib. h>

#include <string. h>

#include <fcntl. h>

#include <sys/stat. h>

#include <io. h>

#include <dos. h>

#include <alloc. h>

#include "pxengine. h"

TABLEHANDLE tblh; // дескриптор таблицы

RECORDNUMBER low,high; // границы интервала поиска

int nflds; // кол-во полей в таблице

int nformat; // формат результата

int handle; // дескриптор файла

void interval (long date1,long date2,char *time1, char *time2); // определение границ интервала поиска

void search3 (char *argv [], int *x); // поиск с перечислениями

void search2 (char *argv [], int *x, int n); // поиск без перечислений

void search1 (void); // поиск только по дате и времени

void initsearch (char *argv [], int *x, int p, int n); // выбор варианта поиска

void recprint (int nformat); // расшифровка записи БД в строку и запись этой строки в файл

char sag [7] [81] ={

"ДАТА ВРЕМЯ ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ НАПР-Е А N РР ИСТ ВС ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ НАПР-Е N РР ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ НАПР-Е К-ВО ВС 1СЛ 2СЛ 3СЛ 4СЛ ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ ТИП-У П ВС ТЕКСТ СООБЩЕНИЯ \r\n",

"ДАТА ВРЕМЯ КСУМ0 КСУМ1 КСУМ2 КСУМ3 \r\n",

"ДАТА ВРЕМЯ КСУП1 КСУС1 КСУП2 КСУС2 КСУП3 КСУС3 \r\n"

}; // шапки таблиц

char *inqstr; // строки запроса

/* строка аргументов функции main:

argv [1] - имя файла БД; или "!", означающий, что строка аргументов передается через память;

argv [2] - вариант поиска; 0 - поиск по всей БД, 1 - поиск в едином интервале по дате и времени, 2 - поиск в интервале времени по каждому дню интервала дат, 3 - поиск за один день в интервале времени;

argv [3] - дата;

argv [4] - время;

argv [5] и далее - искомые значения полей БД (argv [5] - третьего поля, argv [6] - четвертого поля и т.д.); "-" обоз-

начает любое значение данного поля; в случае нескольких искомых значений по одному полю (перечисление) они разделяются запятыми; пробелы в значениях заменены на '_'. */

void main (int argc,char *argv [])

{

int *x; // x [i] - количество искомых значений по i-му полю

int n=0; // количество полей, для которых заданы значения для поиска

int p=0; // количество полей c перечислениями

 // значения x,n,p определяются без учета полей даты и времени

char *name [] ={"all_inf","opi","shk","sbkdg","fk","ksum","ksum0"};

 // имена баз данных

long date1,date2; // граничные значения интервала дат

int a, i,j,k;

char *c;

char **mem_args (void);

RECORDHANDLE rech;

RECORDNUMBER num;

 // Получение аргументов в случае их передачи через память

if (argv [1] [0] =='! ')

{

argv=mem_args ();

for (argc=0; argv [argc] ! =NULL; ++argc);

}

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

 // произведен запрос

for (i=0; i<=6; ++i)

if (! strcmp (name [i],argv [1]) ||! strcmp (name [i],argv [1] +5))

{ nformat=i; break; }

 // открытие файла результатов запроса (inquiry. res) и

 // запись в него строк запроса и шапки таблицы

for (i=argc-1; argv [i] [0] =='-'; - -i) argc--;

handle=open ("inquiry. res",

O_CREAT | O_TRUNC | O_WRONLY,S_IREAD | S_IWRITE);

for (i=1,j=0; i<argc;)

{

inqstr= (char *) calloc (82,1);

memset (inqstr+1,' ',79);

inqstr [79] ='\r';

inqstr [80] ='\n';

inqstr [81] ='\0';

for (c=inqstr; i<argc; ++i)

{

if (strlen (inqstr) +strlen (argv [i]) >78+j)

{

if (strlen (argv [i]) >50 && (strlen (inqstr) <70 || strlen (argv [i]) >78))

{

for (k=j+77-strlen (inqstr); argv [i] [k] ! =','; - -k);

strcat (c," ");

strncat (c,argv [i] +j,k+1-j);

j=k+1;

}

break;

}

strcat (c," ");

strcat (c,argv [i] +j);

j=0;

}

inqstr [strlen (inqstr)] =' ';

_write (handle, inqstr,81);

free (inqstr);

}

_write (handle,sag [nformat],81);

 // инициализация работы с БД

j=coreleft () /1024-50;

if (j>256) j=256;

if (a=PXSetDefaults (j,1,30,MAXLOCKHANDLES,3,SortOrderAscii)) printf ("\n%s",PXErrMsg (a));

if (a=PXInit ()) printf ("\n%s",PXErrMsg (a));

if (a=PXTblOpen (argv [1],&tblh,0,0)) printf ("\n%s",PXErrMsg (a));

PXRecNFlds (tblh,&nflds);

x= (int *) calloc (argc+1,sizeof (int));

 // разбор аргументов запроса

for (i=5; i<argc; ++i)

{

if (argv [i] [0] =='-') continue;

++n;

for (c=argv [i],j=1; *c! ='\0'; ++c)

{

if (*c==',') ++j;

if (*c=='_') *c=' ';

}

x [i-2] =j;

if (j>1) ++p;

}

 // главный блок

switch (argv [2] [0])

{

case '0': low=1; PXTblNRecs (tblh,&high);

initsearch (argv,x,p,n);

break;

case '1':

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

PXDateEncode (atoi (argv [3] +11),atoi (argv [3] +14),atoi (argv [3] +17),&date2);

interval (date1,date2,argv [4],argv [4] +9);

initsearch (argv,x,p,n);

break;

case '2':

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

PXDateEncode (atoi (argv [3] +11),atoi (argv [3] +14),atoi (argv [3] +17),&date2);

interval (date1,date2,argv [4],argv [4] +9);

if (low==1 &&! high) break;

if (low==1)

{

PXRecBufOpen (tblh,&rech);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date1);

PXRecBufClose (rech);

}

PXTblNRecs (tblh,&num);

if (high==num)

{

PXRecBufOpen (tblh,&rech);

PXRecLast (tblh);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date2);

PXRecBufClose (rech);

}

for (; date1<=date2; ++date1)

{

interval (date1,date1,argv [4],argv [4] +9);

if (low>high) continue;

initsearch (argv,x,p,n);

}

break;

case '3':

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

interval (date1,date1,argv [4],argv [4] +9);

initsearch (argv,x,p,n);

}

free (x);

if (a=PXTblClose (tblh)) printf ("\n%s",PXErrMsg (a));

PXExit ();

close (handle);

}

 // initsearch

 // выбор функции поиска

void initsearch (char *argv [], int *x, int p, int n)

{

if (low>high) return;

if (p) search3 (argv+5,x);

else if (n) search2 (argv,x,n);

else search1 ();

}

 // Функция mem_args возвращает адрес строки параметров в случае ее передачи через память

#include "conn_mem. h"

char **mem_args ()

{

char ***dat;

dat= (char ***) conn_mem ();

return dat [ARGS_OFF/4] ;

}

 // bs2_inq. prj

 // INQUIRY\interval. c

 // interval ()

 // определение граничных номеров интервала поиска

#include <stdio. h>

#include <stdlib. h>

#include "pxengine. h"

#include "def. h"

void interval (long date1,long date2,char *time1,char *time2)

{

RECORDHANDLE rech;

itoa (atoi (time2+6) +1,time2+6,10);

PXRecBufOpen (tblh,&rech);

PXPutDate (rech,1,date2);

PXPutAlpha (rech,2,time2);

if (PXRecInsert (tblh,rech)) printf ("error");

PXRecNum (tblh,&high);

high;

PXRecDelete (tblh);

PXPutDate (rech,1,date1);

PXPutAlpha (rech,2,time1);

if (PXRecInsert (tblh,rech)) printf ("error");

if (PXRecNum (tblh,&low)) printf ("error");

PXRecDelete (tblh);

PXRecBufClose (rech);

}

 // inquiry. prj

 // INQUIRY\recprint. c

 // recprint ()

 // форматирование и запись в файл найденной строки

#include <stdio. h>

#include <mem. h>

#include <io. h>

#include <dos. h>

#include "pxengine. h"

#include "def. h"

#include "disp. h"

void recprint ()

{

long date;

int month,day,year;

int format [7] [7] = { {21,0,0,0,0,0,0},{21,28,30,35,38,42,46},

{21,29,34,37,0,0,0},{ 21,29,35,38,43,48,53 },

{ 21,27,29,33,0,0,0 },{ 21,28,35,42,49,0,0 },

{ 21,28,35,42,49,56,63 } };

static char string [82] ; // результирующая строка

RECORDHANDLE rech;

union REGS r;

int a, i;

memset (string,' ',82);

PXRecBufOpen (tblh,&rech);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date);

PXDateDecode (date,&month,&day,&year);

sprintf (string,"%.02d\\%.02d\\%.04d ",month,day,year);

PXGetAlpha (rech,2,10,string+11);

for (i=3; i<=nflds; ++i)

PXGetAlpha (rech, i,sizeof (string) - format [nformat] [i-2],

string+format [nformat] [i-3] -1);

for (i=0; i<=80; ++i) if (string [i] =='\0') string [i] =' ';

string [79] ='\r';

string [80] ='\n';

_write (handle,string,81);

PXRecBufClose (rech);

 // передача управления диспетчеру

 // (только для передачи cимвола на принтер!)

 // после каждой найденной записи

r. h. ah=1;

int86 (DISP,&r,&r);

}

 // inquiry. prj

 // INQUIRY\search12. c

 // search1 (),search2 (), (search3 () см в файле search3. c)

 // search1 - все записи в заданном интервале

 // search2 - задано не более одного искомого значения по каждому полю

 // search3 - более одного искомого значения xотя бы по одному полю

/* исходные данные:

int *x;, где x [i] - количество искомых значений по i-му полю (только для search2)

char *argv [] - см. комментарии в inquiry. c (только для search2)

RECORDNUMBER low,high; - границы интервала поиска */

#include <stdlib. h>

#include "pxengine. h"

#include "def. h"

void search2 (char *argv [], int *x, int n)

{

int a, i,j=0,*y;

int yes;

char *c,*c2;

char arg [10] ;

RECORDHANDLE *rec;

RECORDNUMBER *s,max=low;

s= (long *) calloc (n,sizeof (RECORDNUMBER));

rec= (unsigned int *) calloc (n,sizeof (RECORDHANDLE));

y= (int *) calloc (n,sizeof (int));

for (i=3; j<n; ++i)

{

if (! x [i]) continue;

PXRecBufOpen (tblh,rec+j);

PXPutAlpha (rec [j], i,argv [i+2]);

y [j++] =i;

}

while (1)

{

for (i=0; i<n; ++i)

{

if (max==1)

{

if (! (a=PXSrchFld (tblh,rec [i],y [i],SEARCHFIRST)))

PXRecNum (tblh,&s [i]);

}

else

if (s [i] <max)

{

PXRecGoto (tblh,max-1);

if (! (a=PXSrchFld (tblh,rec [i],y [i],SEARCHNEXT)))

PXRecNum (tblh,&s [i]);

}

if (a||s [i] >high)

{

free (s); free (rec); free (y);

return;

}

}

for (i=1,yes=1,max=s [0] ; i<n; ++i)

{

if (s [i] ! =max) yes=0;

if (s [i] >max) max=s [i] ;

}

if (yes) { ++max; recprint (); }

}

}

void search1 (void)

{

RECORDNUMBER i;

for (i=low; i<=high; ++i)

{

recprint ();

PXRecNext (tblh);

}

}

 // inquiry. prj

 // INQUIRY\search3. c

 // search3 ()

 // поиск

/* исходные данные:

int *x;, где x [i] - количество искомых значений по i-му полю

char *args [] - искомые значения полей БД (args [0] - третьего поля, argv [1] - четвертого поля и т.д.);

RECORDNUMBER low,high; - границы интервала поиска */

 // search1 - все записи в заданном интервале

 // search2 - не более одного искомого значения по каждому полю

 // search3 - более одного искомого значения xотя бы по одному полю

#include <stdlib. h>

#include <stdio. h>

#include "pxengine. h"

#include "def. h"

void search3 (char *args [], int *x)

{

/*

rec - массив массивов буферов для поиска, его размерность равна количеству полей в таблице. Размерность каждого из массивов rec [i] равна количеству искомых значений по i-му полю таблицы (то есть == х [i]). В каждый буфер заносится одно искомое значение (например, в rec [3] [0] - заносится первое искомое значение по 3-му полю таблицы).

Каждому буферу (rec [i] [j]) соответствует элемент массива массивов z (z [i] [j]), в котором хранится текущий номер

найденной записи по данному буферу (то есть записи, в соответствующем поле которой находится значение, равное значению, занесенному в буфер).

В массиве s хранятся текущие номера найденных строк по каждому полю (s [i] минимум из всех z [i] [j] по этому i).

max - текущий номер записи при поиске (то есть записи с номерами меньше max уже просмотрены).

*/

RECORDHANDLE **rec;

int i,j,k;

int yes;

char *c1,*c2;

char arg [10] ;

RECORDNUMBER *s,**z,max=low;

int a;

 // выделение памяти под массивы rec,z,s

 // и открытие буферов

s= (long *) calloc (nflds,sizeof (RECORDNUMBER));

rec= (unsigned int **) calloc (nflds,sizeof (RECORDHANDLE *));

z= (long **) calloc (nflds,sizeof (RECORDNUMBER *));

for (i=3; i<=nflds; ++i)

if (x [i])

{

rec [i] = (unsigned int *) calloc (x [i],sizeof (RECORDHANDLE));

z [i] = (long *) calloc (x [i],sizeof (RECORDNUMBER));

for (j=0; j<x [i] ; ++j) PXRecBufOpen (tblh,rec [i] +j);

}

 // заносим в буфера значения из args

 // (значения для одного поля разделены в args запятыми)

for (i=3; i<=nflds; ++i)

{

if (! x [i]) continue;

if (x [i] ==1)

PXPutAlpha (rec [i] [0], i,args [i-3]);

else

{

c1=args [i-3] ;

for (k=0; k<x [i] ; ++k)

{

c2=arg;

while (*c1! =',' && *c1! ='\0') *c2++=*c1++;

*c2='\0'; ++c1;

PXPutAlpha (rec [i] [k], i,arg);

}

}

}

 // цикл поиска

while (1) {

for (i=3; i<=nflds; ++i)

{

 // 1) Для каждого буфера находим запись с значением равным занесенному в этот буфер и с номером >= max.

 // Найденные номера заносим в соотвествующие z [i] [k]

 // Если искомых записей по данному буферу нет, заносим в z [i] [k] номер, превышающий верхнюю

 // границу интервала поиска

if (! x [i]) continue;

for (k=0; k<x [i] ; ++k)

{

if (max==1)

{

if (PXSrchFld (tblh,rec [i] [k], i,SEARCHFIRST)) z [i] [k] =high+1;

else PXRecNum (tblh,&z [i] [k]);

}

else

if (z [i] [k] <max)

{

PXRecGoto (tblh,max-1);

if (PXSrchFld (tblh,rec [i] [k], i,SEARCHNEXT)) z [i] [k] =high+1;

else PXRecNum (tblh,&z [i] [k]);

}

}

 // 2) Для каждого поля определяем значение s [i]

 // Если хотя бы по одному полю произошел выход за пределы интервала поиска, значит поиск закончен

s [i] =z [i] [0] ;

for (k=1; k<x [i] ; ++k) if (s [i] >z [i] [k]) s [i] =z [i] [k] ;

if (s [i] >high)

{

for (i=3; i<=nflds; ++i)

if (x [i])

{

for (j=0; j<x [i] ; ++j) PXRecBufClose (rec [i] [j]);

free (rec [i]); free (z [i]);

}

free (s); free (rec); free (z);

return;

}

}

 // 3),

4)

 // Проверяем совпадение значений s [i].

 // Если значения s [i] совпадают для всех полей по которым производится поиск, значит найдена искомая

 // (т.е. удовлетворяющая заданным условиям) запись, в этом случае вызываем функцию recprint

 // Определяем значение max для следующей итерации, это значение равно максимуму из s [i].

for (i=3;! x [i] ; ++i);

max=s [i] ;

for (++i,yes=1; i<nflds; ++i)

{

if (! x [i]) continue;

if (s [i] ! =max) yes=0;

if (s [i] >max) max=s [i] ;

}

if (yes) { PXRecGoto (tblh,max); ++max; recprint (); }

}

}

 // bs2_inq. prj

 // BS2_INQ\bs2_inq. c

 // main ()

 // программа обработки запросов для второй формы байтов состояний

#include <stdio. h>

#include <stdlib. h>

#include <string. h>

#include <fcntl. h>

#include <sys/stat. h>

#include <io. h>

#include <alloc. h>

#include "pxengine. h"

#include "devices. h"

TABLEHANDLE tblh; // дескриптор таблицы

RECORDNUMBER low,high; // границы интервала поиска

int nflds; // кол-во полей в таблице

int handle; // дескриптор файла

void interval (long date1,long date2,char *time1, char *time2); // определение границ интервала поиска

void search (char *type); // поиск

void recprint (void); // расшифровка записи БД в строку и запись этой строки в файл

char *sag; // шапкa таблицы

char *sag2; // шапкa таблицы-вторая строка

char *inqstr; // строка запроса

int length; // длина строки в таблице

/* строка аргументов функции main:

argv [1] - не используется

argv [2] - вариант поиска; 0 - поиск по всей БД, 1 - поиск в едином интервале по дате и времени, 2 - поиск в интервале

времени по каждому дню интервала дат, 3 - поиск за один день в интервале времени;

argv [3] - дата;

argv [4] - время;

argv [5] - тип устройства */

void main (int argc,char *argv [])

{

long date1,date2; // граничные значения интервала дат

int a, i;

char *c;

RECORDHANDLE rech;

RECORDNUMBER num;

 // открытие файла результатов запроса (inquiry. res) и запись в него строки запроса и шапки таблицы

handle=open ("inquiry. res",

O_CREAT | O_TRUNC | O_WRONLY,S_IREAD | S_IWRITE);

for (i=0; strcmp (devices [i]. type,argv [5]) && i<20; ++i);

switch (i)

{

case 0: // ШЭ-00

case 8: // ШЭ-08

sag= (char *) calloc (81,1);

strcpy (sag," ДАТА ВРЕМЯ ТИП_У П ВС СОСТОЯНИЕ_ШКАФА СЕТЬ1 СЕТЬ2 \r\n");

break;

case 1: // ШП-01

case 9: // ШП-09

sag= (char *) calloc (81,1);

strcpy (sag," ДАТА ВРЕМЯ ТИП_У П ВС СОСТОЯНИЕ_ШКАФА \r\n");

break;

case 4: // ШК-04

case 12: // ШК-12

sag= (char *) calloc (100,1);

strcpy (sag," ДАТА ВРЕМЯ ТИП_У П ВС КАНАЛЫ ЛИНИИ КНОН ФКДТ НСПД ФЗ ПИТАНИЕ Д-Ж К--Ы Б---ЫЕ К--Ы \r\n");

break;

case 2: // РМ-02

sag= (char *) calloc (81,1);

sag2= (char *) calloc (81,1);

strcpy (sag, " ДАТА ВРЕМЯ ТИП_У П ВС БЛОКИРОВКА ЕСТЬ СВЯЗЬ С ВК \r\n");

strcpy (sag2," ПЭВМ1 по ФК по ЛС1 по ЛС3 \r\n");

break;

case 10: // РМ-10

sag= (char *) calloc (81,1);

sag2= (char *) calloc (81,1);

strcpy (sag, " ДАТА ВРЕМЯ ТИП_У П ВС БЛОКИРОВКА ЕСТЬ_СВЯЗЬ_С_ВК \r\n");

strcpy (sag2," ПЭВМ2 по ФК по ЛС2 по ЛС4 \r\n");

break;

case 5: // РМ05Г

case 13: // РМ13П

sag= (char *) calloc (81,1);

strcpy (sag," ДАТА ВРЕМЯ ТИП_У П ВС ЛИНИИ КНОН ФКДТ НСПД ФЗ \r\n");

break;

case 3: // В

case 6: // КС1

case 14: // КС2

case 15: // АС

sag= (char *) calloc (81,1);

strcpy (sag," ДАТА ВРЕМЯ ТИП_У П ВС КАНАЛЫ ЛИНИИ ФКДТ НСПД ФЗ \r\n");

break;

case 7: // ВМ

sag= (char *) calloc (81,1);

strcpy (sag," ДАТА ВРЕМЯ ТИП_У П ВС АВАРИЯ ПИТАНИЯ НЕИСПР КАН КАНАЛЫ \r\n");

break;

case 16: // ВУ16

case 17: // ВУ17

case 18: // ВУ18

case 19: // ВУ19

sag= (char *) calloc (81,1);

strcpy (sag," ДАТА ВРЕМЯ ТИП_У П ВС МАГИСТРАЛЬ ПРИЕМА КНОН \r\n");

break;

}

length=strlen (sag);

inqstr= (char *) calloc (length+1,1);

memset (inqstr+1,' ',length);

for (c=inqstr, i=1; i<argc; ++i)

{

strcat (c," ");

strcat (c,argv [i]);

}

inqstr [strlen (inqstr)] =' ';

strcpy (inqstr+length-2,"\r\n");

_write (handle, inqstr,length);

_write (handle,sag,length);

_write (handle,sag2,length);

 // инициализация работы с БД

i=coreleft () /1024-50;

if (i>256) i=256;

if (a=PXSetDefaults (i,1,30,MAXLOCKHANDLES,3,SortOrderAscii)) printf ("\n%s",PXErrMsg (a));

if (a=PXInit ()) printf ("\n%s",PXErrMsg (a));

if (a=PXTblOpen ("fk",&tblh,0,0)) printf ("\n%s",PXErrMsg (a));

PXRecNFlds (tblh,&nflds);

 // главный блок

if (argv [2] [0] =='0')

{

low=1; PXTblNRecs (tblh,&high);

search (argv [5]);

}

else

if (argv [2] [0] =='1')

{

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

PXDateEncode (atoi (argv [3] +11),atoi (argv [3] +14),atoi (argv [3] +17),&date2);

interval (date1,date2,argv [4],argv [4] +9);

search (argv [5]);

}

else

if (argv [2] [0] =='2')

{

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

PXDateEncode (atoi (argv [3] +11),atoi (argv [3] +14),atoi (argv [3] +17),&date2);

interval (date1,date2,argv [4],argv [4] +9);

if (low==1 &&! high)

if (low==1)

{

PXRecBufOpen (tblh,&rech);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date1);

PXRecBufClose (rech);

}

PXTblNRecs (tblh,&num);

if (high==num)

{

PXRecBufOpen (tblh,&rech);

PXRecLast (tblh);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date2);

PXRecBufClose (rech);

}

for (; date1<=date2; ++date1)

{

interval (date1,date1,argv [4],argv [4] +9);

if (low>high) continue;

search (argv [5]);

}

}

else

if (argv [2] [0] =='3')

{

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

interval (date1,date1,argv [4],argv [4] +9);

search (argv [5]);

}

if (a=PXTblClose (tblh)) printf ("\n%s",PXErrMsg (a));

PXExit ();

close (handle);

}

 // bs2_inq. prj

 // BS2_INQ\form2. c

 // form2 ()

 // расшифровка байтов состояния

#include <string. h>

#include "devices. h"

void form2 (char *Type,char *bytes,char *text)

{

/* Type; тип устройства

bytes; нерасшифрованные байты состояния

text; буфер для расшифрованных БС */

int i;

for (i=0; strcmp (devices [i]. type,Type) && i<20; ++i);

switch (i)

{

case 0: // ШЭ-00

if (bytes [5] &0x04) strcpy (text,"НЕИСПРАВЕН");

else strcpy (text,"ИСПРАВЕН");

if (bytes [4] &0x02) strcpy (text+16,"CETЬ1");

break;

case 8: // ШЭ-08

if (bytes [5] &0x04) strcpy (text,"НЕИСПРАВЕН");

else strcpy (text,"ИСПРАВЕН");

if (bytes [4] &0x04) strcpy (text+22,"СЕТЬ2");

break;

case 1: // ШП-01

case 9: // ШП-09

if (bytes [5] &0x04) strcpy (text,"НЕИСПРАВЕН");

else strcpy (text,"ИСПРАВЕН");

break;

case 4: // ШК-04

case 12: // ШК-12

if (bytes [4] &0x04) strcpy (text,"К1");

if (bytes [4] &0x02) strcpy (text+2,"К2");

if (bytes [4] &0x01) strcpy (text+4,"К3");

if (bytes [5] &0x04) strcpy (text+7,"Л1");

if (bytes [5] &0x02) strcpy (text+9,"Л2");

if (bytes [5] &0x01) strcpy (text+11,"Л3");

if (bytes [3] &0x01) strcpy (text+14,"КНОН");

if (bytes [3] &0x02) strcpy (text+19,"ФКДТ");

if (bytes [3] &0x04) strcpy (text+24,"НСПД");

if (bytes [2] &0x01) strcpy (text+29,"ФЗ");

if (bytes [12] &0x04) strcpy (text+32,"П1");

if (bytes [12] &0x02) strcpy (text+34,"П2");

if (bytes [12] &0x01) strcpy (text+36,"П3");

if (bytes [11] &0x04) strcpy (text+40,"ДК1");

if (bytes [11] &0x02) strcpy (text+43,"ДК2");

if (bytes [11] &0x01) strcpy (text+46,"ДК3");

if (bytes [10] &0x04) strcpy (text+51,"БК1");

if (bytes [10] &0x02) strcpy (text+54,"БК2");

if (bytes [10] &0x01) strcpy (text+57,"БК3");

break;

case 3: // В

case 6: // КС1

case 14: // КС2

if (bytes [4] &0x04) strcpy (text,"К1");

if (bytes [4] &0x02) strcpy (text+2,"К2");

if (bytes [4] &0x01) strcpy (text+4,"К3");

if (bytes [5] &0x04) strcpy (text+7,"Л1");

if (bytes [5] &0x02) strcpy (text+9,"Л2");

if (bytes [5] &0x01) strcpy (text+11,"Л3");

if (bytes [3] &0x02) strcpy (text+14,"ФКДТ");

if (bytes [3] &0x04) strcpy (text+19,"НСПД");

if (bytes [2] &0x01) strcpy (text+24,"ФЗ");

break;

case 2: // РМ-02

if (bytes [5] &0x01) strcpy (text+3,"ЕСТЬ");

else strcpy (text+3,"НЕТ");

if (bytes [3] &0x04) strcpy (text+17,"НЕТ");

else strcpy (text+17,"ЕСТЬ");

if (bytes [2] &0x02) strcpy (text+24,"НЕТ");

else strcpy (text+24,"ЕСТЬ");

break;

case 10: // РМ-10

if (bytes [5] &0x01) strcpy (text+3,"ЕСТЬ");

else strcpy (text+3,"НЕТ");

if (bytes [2] &0x01) strcpy (text+17,"НЕТ");

else strcpy (text+17,"ЕСТЬ");

if (bytes [2] &0x04) strcpy (text+24,"НЕТ");

else strcpy (text+24,"ЕСТЬ");

break;

case 5: // РМ05Г

case 13: // РМ13П

if (bytes [5] &0x04) strcpy (text,"Л1");

if (bytes [5] &0x02) strcpy (text+2,"Л2");

if (bytes [5] &0x01) strcpy (text+4,"Л3");

if (bytes [3] &0x01) strcpy (text+7,"КНОН");

if (bytes [3] &0x02) strcpy (text+12,"ФКДТ");

if (bytes [3] &0x04) strcpy (text+17,"НСПД");

if (bytes [2] &0x01) strcpy (text+22,"ФЗ");

break;

case 7: // ВМ

if (bytes [5] &0x02) strcpy (text,"АВАРИЯ ПИТАНИЯ");

if (bytes [5] &0x04) strcpy (text+15,"НЕИСПР КАН");

if (bytes [4] &0x04) strcpy (text+26,"К1");

if (bytes [4] &0x01) strcpy (text+28,"К2");

if (bytes [4] &0x02) strcpy (text+30,"К3");

break;

case 16: // ВУ16

case 17: // ВУ17

case 18: // ВУ18

case 19: // ВУ19

if (bytes [5] &0x04) strcpy (text,"НЕИСПР МАГ ПРИЕМА");

if (bytes [3] &0x01) strcpy (text+18,"КНОН");

break;

case 15: // АС

 // Подкорректировать после согласования байта состояния

if (bytes [4] &0x04) strcpy (text,"К1");

if (bytes [4] &0x02) strcpy (text+2,"К2");

if (bytes [4] &0x01) strcpy (text+4,"К3");

if (bytes [5] &0x04) strcpy (text+7,"Л1");

if (bytes [5] &0x02) strcpy (text+9,"Л2");

if (bytes [5] &0x01) strcpy (text+11,"Л3");

if (bytes [3] &0x02) strcpy (text+14,"ФКДТ");

if (bytes [3] &0x04) strcpy (text+19,"НСПД");

if (bytes [2] &0x01) strcpy (text+24,"ФЗ");

break;

}

}

 // bs2_inq. prj

 // BS2_INQ\interval. c

 // interval ()

 // определение граничных номеров интервала поиска

#include <stdio. h>

#include <stdlib. h>

#include "pxengine. h"

#include "def. h"

void interval (long date1,long date2,char *time1,char *time2)

{

RECORDHANDLE rech;

itoa (atoi (time2+6) +1,time2+6,10);

PXRecBufOpen (tblh,&rech);

PXPutDate (rech,1,date2);

PXPutAlpha (rech,2,time2);

if (PXRecInsert (tblh,rech)) printf ("error");

PXRecNum (tblh,&high);

high;

PXRecDelete (tblh);

PXPutDate (rech,1,date1);

PXPutAlpha (rech,2,time1);

if (PXRecInsert (tblh,rech)) printf ("error");

if (PXRecNum (tblh,&low)) printf ("error");

PXRecDelete (tblh);

PXRecBufClose (rech);

}

 // bs2_inq. prj

 // recprint. c

 // BS2_INQ\recprint ()

 // форматирование и запись в файл найденной строки

#include <stdio. h>

#include <io. h>

#include <string. h>

#include <stdlib. h>

#include <dos. h>

#include "pxengine. h"

#include "def. h"

#include "disp. h"

void form2 (char *,char *,char *);

 // расшифровка байтов состояния

void recprint ()

{

long date; // дата в формате БД

int month,day,year; // расшифрованная дата

char *string; // результирующая строка

char *bytes; // нерасшифрованные байты состояния

RECORDHANDLE rech; // дескриптор записи

int a, i;

union REGS r;

string= (char *) calloc (length+1,1);

bytes= (char *) calloc (45,1);

PXRecBufOpen (tblh,&rech);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date);

PXDateDecode (date,&month,&day,&year);

sprintf (string,"%.02d\\%.02d\\%.04d ",month,day,year);

PXGetAlpha (rech,2,9,string+11); // t

PXGetAlpha (rech,3,6,string+20); // тип_у

PXGetAlpha (rech,4,2,string+26); // п

PXGetAlpha (rech,5,4,string+28); // вс

PXGetAlpha (rech,6,45,bytes); // бс

form2 (string+20,bytes+16,string+31);

for (i=0; i<=length; ++i) if (string [i] =='\0') string [i] =' ';

strcpy (string+length-2,"\r\n");

_write (handle,string,strlen (string));

PXRecBufClose (rech);

free (bytes);

free (string);

 // передача управления диспетчеру

 // (только для передачи cимвола на принтер!)

 // после каждой найденной записи

 // r. h. ah=1;

 // int86 (DISP,&r,&r);

}

 // bs2_inq. prj

 // BS2_INQ\search. c

 // search ()

 // поиск

#include <stdlib. h>

#include "pxengine. h"

#include "def. h"

void search (char *type)

{

int a, i,y [2] ;

RECORDHANDLE rec [2] ;

RECORDNUMBER s [2],max=low;

PXRecBufOpen (tblh,&rec [0]);

PXRecBufOpen (tblh,&rec [1]);

PXPutAlpha (rec [0],3,type);

PXPutAlpha (rec [1],5,"БС ");

y [0] =3; y [1] =5; s [1] =s [0] =0;

while (1)

{

for (i=0; i<=1; ++i)

{

if (max==1)

{

if (! (a=PXSrchFld (tblh,rec [i],y [i],SEARCHFIRST)))

PXRecNum (tblh,&s [i]);

}

else

if (s [i] <max)

{

PXRecGoto (tblh,max-1);

if (! (a=PXSrchFld (tblh,rec [i],y [i],SEARCHNEXT)))

PXRecNum (tblh,&s [i]);

}

if (a||s [i] >high)

{

PXRecBufClose (rec [0]);

PXRecBufClose (rec [1]);

return;

}

}

if (s [1] ==s [0]) { ++max; recprint (); }

else if (s [1] >s [0]) max=s [1] ;

else max=s [0] ;

}

}

 // bs3_inq. prj

 // BS3_INQ\bs3_inq. c

 // main ()

 // программа обработки запросов для третьей формы байтов состояния

 // вызывается из:

 // 1) main. prj, mloop2. c, bszapros ()

 // 2) makeinq. prj, makeinq. c, makeinq ()

#include <stdio. h>

#include <fcntl. h>

#include <sys/stat. h>

#include <io. h>

#include "pxengine. h"

#include <string. h>

void form3 (char *,char *, int);

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

/* аргументы функции main:

argv [1] - тип устройства */

void main (int argc,char *argv [])

{

int a;

int i;

int handle; // дескриптор файла результатов поиска

static char bytes [45] ; // буфер для нерасшифрованных байтов состояния

RECORDHANDLE rec; // дескриптор записи

TABLEHANDLE tblh; // дескриптор таблицы

 // открытие файла результатов изапись в него типа устройства

handle=open ("inquiry. res",

O_CREAT | O_TRUNC | O_WRONLY,S_IREAD | S_IWRITE);

write (handle,argv [1],strlen (argv [1]));

 // if (strlen (argv [1]) ==1) write (handle," ",2);

 // if (strlen (argv [1]) ==2) write (handle," ",1);

write (handle,"\r\n",2);

 // поиск и обработка результатов поиска

/* находится последняя по времени запись байтов

состояния для данного устройства */

if (a=PXInit ()) printf ("\n%s",PXErrMsg (a));

if (a=PXTblOpen ("fk",&tblh,0,0)) printf ("\n%s",PXErrMsg (a));

PXRecBufOpen (tblh,&rec);

PXPutAlpha (rec,5,"БС");

PXPutAlpha (rec,3,argv [1]);

if ( (a=PXSrchFld (tblh,rec,3,SEARCHFIRST)) ! =PXSUCCESS)

{ if (a==PXERR_RECNOTFOUND)

PXRecBufClose (rec);

if (a=PXTblClose (tblh)) printf ("\n%s",PXErrMsg (a));

PXExit ();

close (handle);

return;

}

else while (! (a=PXSrchFld (tblh,rec,3,SEARCHNEXT)));

PXRecGet (tblh,rec);

PXGetAlpha (rec,6,45,bytes);

form3 (argv [1],bytes+16,handle);

PXRecBufClose (rec);

if (a=PXTblClose (tblh)) printf ("\n%s",PXErrMsg (a));

PXExit ();

close (handle);

}

 // bs3_inq. prj

 // BS3_INQ\form3. c

 // form3 ()

 // расшифровка байтов состояния

#include <io. h>

#include <string. h>

#include "devices. h"

#include <dos. h>

void form3 (char *Type,char *bytes, int handle)

{

/* Type - тип устройства

bytes - нерасшифрованные байты состояния

handle - дескриптор файла результатов */

int i;

/*

struct date d;

struct time t;

getdate (&d);

gettime (&t);

z. bd1. date [0] =d. da_mon;

z. bd1. date [1] =d. da_day;

z. bd1. date [2] =d. da_year;

PXRecBufOpen (tblh,&rech);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date);

PXDateDecode (date,&month,&day,&year);

sprintf (string,"%.02d\\%.02d\\%.04d ",month,day,year);

*/

for (i=0; strcmp (devices [i]. type,Type) && i<CHDEV; ++i);

switch (i)

{

case 0: // ШЭ-00

if (bytes [5] &0x04)

write (handle," Шкаф НЕИСПРАВЕН \r\n",76);

else

write (handle," Шкаф ИСПРАВЕН \r\n",76);

if (bytes [4] &0x02)

write (handle,"НЕИСПРАВНОСТЬ первичной сети электропитания СЕТЬ 1 \r\n",76);

break;

case 8: // ШЭ-08

if (bytes [5] &0x04)

write (handle," Шкаф НЕИСПРАВЕН \r\n",76);

else

write (handle," Шкаф ИСПРАВЕН \r\n",76);

if (bytes [4] &0x02)

write (handle,"НЕИСПРАВНОСТЬ первичной сети электропитания СЕТЬ 2 \r\n",76);

break;

case 1: // ШП-01

case 9: // ШП-09

if (bytes [5] &0x04)

write (handle," Шкаф НЕИСПРАВЕН \r\n",76);

else

write (handle," Шкаф ИСПРАВЕН \r\n",76);

break;

case 4: // ШК-04

case 12: // ШК-12

if (bytes [0] &0x01)

write (handle,"ОСНОВНОЙ - шкаф ШК-12 \r\n",76);

else

write (handle,"ОСНОВНОЙ - шкаф ШК-04 \r\n",76);

write (handle," \r\n",76);

write (handle," ТЕХНИЧЕСКОЕ СОСТОЯНИЕ ШКАФА \r\n",76);

write (handle," \r\n",76);

if (bytes [5] &0x01)

write (handle," Шкаф РАБОТОСПОСОБЕН \r\n",76);

if (bytes [5] &0x02)

write (handle," Шкаф НЕИСПРАВЕН \r\n",76);

if (bytes [5] &0x04)

write (handle," Шкаф ЗАБЛОКИРОВАН по НСД \r\n",76);

if ( (! (bytes [5] &0x01)) && (! (bytes [5] &0x02)) && (! (bytes [5] &0x04)))

write (handle," Шкаф ИСПРАВЕН \r\n",76);

write (handle," \r\n",76);

if (bytes [4] &0x01)

write (handle,"НЕИСПРАВЕН 1-й канал АД \r\n",76);

if (bytes [4] &0x02)

write (handle,"НЕИСПРАВЕН 2-й канал АД \r\n",76);

if (bytes [4] &0x04)

write (handle,"НЕИСПРАВЕН 3-й канал АД \r\n",76);

if (bytes [3] &0x01)

write (handle,"НЕИСПРАВЕН 1-й канал УХК \r\n",76);

if (bytes [3] &0x02)

write (handle,"НЕИСПРАВЕН 2-й канал УХК \r\n",76);

if (bytes [3] &0x04)

write (handle,"НЕИСПРАВЕН 3-й канал УХК \r\n",76);

if (bytes [2] &0x01)

write (handle,"НЕИСПРАВНОСТЬ логической части ШК \r\n",76);

if (bytes [2] &0x02)

{write (handle,"НЕИСПРАВЕН хотя бы один или несколько элементов ИГП \r\n",76);

write (handle,"Для уточнения считай ячейку ВБШК1. ПФЗ для ШК1 или ВБШК2. ПФЗ для ШК2 \r\n",76);

}

if (bytes [2] &0x04)

{write (handle,"НЕИСПРАВНО УХК - установлена единица в 8-ом разряде уточненого слова \r\n",76);

write (handle,"состояния УХК \r\n",76);

}

if (bytes [1] &0x01)

write (handle,"БОЗУ занято более 3-х секунд \r\n",76);

if (bytes [1] &0x02)

{write (handle,"НЕИСПРАВНО УХК (неправильное сочетание 3 и 10 разрядов уточненого слова \r\n",76);

write (handle,"состояния УХК) \r\n",76);

}

if (bytes [1] &0x04)

{write (handle,"УХК ЗАБЛОКИРОВАН по причине работы с носителем 83т015. Получен 9 или 11 \r\n",76);

write (handle,"разряд в ИСС УХК (см. п.4.7 1. протокола инв.30337) \r\n",76);

}

if ( (! (bytes [12] &0x01)) && (! (bytes [12] &0x02)))

write (handle,"ПУ-1 ИСПРАВЕН \r\n",76);

if (bytes [12] &0x01)

write (handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-1 \r\n",76);

if (bytes [12] &0x02)

write (handle,"Неисправно направление связи, соединяющее с ПУ-1 \r\n",76);

if ( (! (bytes [12] &0x04)) && (! (bytes [11] &0x01)))

write (handle,"ПУ-2 ИСПРАВЕН \r\n",76);

if (bytes [12] &0x04)

write (handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-2 \r\n",76);

if (bytes [11] &0x01)

write (handle,"Неисправно направление связи, соединяющее с ПУ-2 \r\n",76);

if ( (! (bytes [11] &0x04)) && (! (bytes [11] &0x02)))

write (handle,"ПУ-3 ИСПРАВЕН \r\n",76);

if (bytes [11] &0x02)

write (handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-3 \r\n",76);

if (bytes [11] &0x04)

write (handle,"Неисправно направление связи, соединяющее с ПУ-3 \r\n",76);

if ( (! (bytes [10] &0x01)) && (! (bytes [10] &0x02)))

write (handle,"ПУ-4 ИСПРАВЕН \r\n",76);

if (bytes [10] &0x01)

write (handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-4 \r\n",76);

if (bytes [10] &0x02)

write (handle,"Неисправно направление связи, соединяющее с ПУ-4 \r\n",76);

if (bytes [10] &0x04)

write (handle,"Неисправен 1-й канал схемных узлов БУ-695 \r\n",76);

if (bytes [9] &0x01)

write (handle,"Неисправен 2-й канал схемных узлов БУ-695 \r\n",76);

if (bytes [9] &0x02)

write (handle,"Неисправен 3-й канал схемных узлов БУ-695 \r\n",76);

if (bytes [9] &0x04)

write (handle,"Неисправен 1-й канал ПРЦ \r\n",76);

if (bytes [8] &0x01)

write (handle,"Неисправен 2-й канал ПРЦ \r\n",76);

if (bytes [8] &0x02)

write (handle,"Неисправен 3-й канал ПРЦ \r\n",76);

if (bytes [8] &0x04)

{write (handle,"Неисправно направление связи С1 по передаче от ВМ к ШК и/или по приему \r\n",76);

write (handle,"от ШК к ВМ и/или по причине не получения от ШК кодограмм по времени. \r\n",76);

write (handle,"Формирует ФК-читай слово памяти ВБШК1 (2). ПФЗ \r\n",76);

if (bytes [7] &0x01)

write (handle,"ШК забракован функциональной задачей - читай слово памяти ВБШК1 (2). ПФЗ \r\n",76);

write (handle," \r\n",76);

write (handle," ИНФОРМАЦИОННОЕ СОСТОЯНИЕ ШКАФА \r\n",76);

write (handle," \r\n",76);

if (bytes [26] &0x02)

write (handle," Шкаф НЕИСПРАВЕН ПО ИНФОРМАЦИОННОМУ СОСТОЯНИЮ \r\n",76);

else

write (handle," Шкаф ИСПРАВЕН ПО ИНФОРМАЦИОННОМУ СОСТОЯНИЮ \r\n",76);

write (handle," \r\n",76);

write (handle," Состояние БХХХХХ ШХХХХХ и КХХХХ \r\n",76);

write (handle," \r\n",76);

write (handle," БХХХХХ ШХХХХХ 1-го массива СХХ \r\n",76);

if ( (! (bytes [15] &0x01)) && (! (bytes [15] &0x02)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [15] &0x01) && (bytes [15] &0x02))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [15] &0x01) && (! (bytes [15] &0x02)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [15] &0x02) && (! (bytes [15] &0x01)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ ШХХХХХ 2-го массива СХХ \r\n",76);

if ( (! (bytes [17] &0x04)) && (! (bytes [16] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [17] &0x04) && (bytes [16] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [17] &0x04) && (! (bytes [16] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [16] &0x01) && (! (bytes [17] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ КХХХХ ОХХ \r\n",76);

if ( (! (bytes [18] &0x04)) && (! (bytes [18] &0x02)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [18] &0x04) && (bytes [18] &0x02))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [18] &0x02) && (! (bytes [18] &0x04)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [18] &0x04) && (! (bytes [18] &0x02)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ КХХХХ УХХ \r\n",76);

if ( (! (bytes [19] &0x02)) && (! (bytes [19] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [19] &0x02) && (bytes [19] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [19] &0x01) && (! (bytes [19] &0x02)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [19] &0x02) && (! (bytes [19] &0x01)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ КХХХХ УХ \r\n",76);

if ( (! (bytes [22] &0x02)) && (! (bytes [22] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [22] &0x02) && (bytes [22] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [22] &0x01) && (! (bytes [22] &0x02)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [22] &0x02) && (! (bytes [22] &0x01)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," БХХХХХ КХХХХ РХХ \r\n",76);

if ( (! (bytes [23] &0x01)) && (! (bytes [24] &0x04)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [23] &0x01) && (bytes [24] &0x04))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [24] &0x04) && (! (bytes [23] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [23] &0x01) && (! (bytes [24] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," \r\n",76);

write (handle," Состояние УХХХХХ ШХХХХХ и КХХХХ \r\n",76);

write (handle," \r\n",76);

write (handle," УХХХХХ ШХХХХХ 1-го массива СХХ \r\n",76);

if ( (! (bytes [14] &0x01)) && (! (bytes [15] &0x04)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [14] &0x01) && (bytes [15] &0x04))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [15] &0x04) && (! (bytes [14] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [14] &0x01) && (! (bytes [15] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ ШХХХХХ 2-го массива СХХ \r\n",76);

if ( (! (bytes [16] &0x04)) && (! (bytes [16] &0x02)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [16] &0x04) && (bytes [16] &0x02))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [16] &0x02) && (! (bytes [16] &0x04)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [16] &0x04) && (! (bytes [16] &0x02)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ КХХХХ ОХХ \r\n",76);

if ( (! (bytes [17] &0x02)) && (! (bytes [17] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [17] &0x02) && (bytes [17] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [17] &0x01) && (! (bytes [17] &0x02)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [17] &0x02) && (! (bytes [17] &0x01)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ КХХХХ УХХ \r\n",76);

if ( (! (bytes [19] &0x04)) && (! (bytes [18] &0x01)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [19] &0x04) && (bytes [18] &0x01))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [19] &0x04) && (! (bytes [18] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [18] &0x01) && (! (bytes [19] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ КХХХХ УХ \r\n",76);

if ( (! (bytes [21] &0x01)) && (! (bytes [22] &0x04)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [21] &0x01) && (bytes [22] &0x04))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [22] &0x04) && (! (bytes [21] &0x01)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [21] &0x01) && (! (bytes [22] &0x04)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," УХХХХХ КХХХХ РХХ \r\n",76);

if ( (! (bytes [23] &0x02)) && (! (bytes [23] &0x04)))

write (handle," НЕ ЗАПИСАНЫ \r\n",76);

if ( (bytes [23] &0x02) && (bytes [23] &0x04))

write (handle," УНИЧТОЖЕНЫ \r\n",76);

if ( (bytes [23] &0x02) && (! (bytes [23] &0x04)))

write (handle," СОХРАНЕНЫ \r\n",76);

if ( (bytes [23] &0x04) && (! (bytes [23] &0x02)))

write (handle," РАЗРУШЕНЫ \r\n",76);

write (handle," \r\n",76);

write (handle," НАВЯЗЫВАНИЕ ЛОЖНОЙ ИНФОРМАЦИИ \r\n",76);

write (handle," \r\n",76);

if (bytes [24] &0x02)

write (handle,"Есть НЛИ по массиву N1 шххххх СХХ \r\n",76);

if (bytes [24] &0x01)

write (handle,"Есть НЛИ по массиву N2 шххххх СХХ \r\n",76);

if (bytes [25] &0x04)

write (handle,"Есть НЛИ по массиву кхххх УХХ \r\n",76);

if (bytes [25] &0x01)

write (handle,"Есть НЛИ по массиву кхххх УХ \r\n",76);

if (bytes [26] &0x04)

write (handle,"Есть НЛИ по массиву кхххх РХХ \r\n",76);

if ( (! (bytes [24] &0x02)) && (! (bytes [24] &0x01)) && (! (bytes [25] &0x04))

&& (! (bytes [25] &0x02)) && (! (bytes [25] &0x01)) && (! (bytes [26] &0x04)))

write (handle,"НЛИ ОТСУТСТВУЕТ по всем массивам \r\n",76);

break;

case 3: // В

case 6: // КС1

case 14: // КС2

if (bytes [5] &0x04)

write (handle," КС НЕИСПРАВЕН \r\n",76);

else

write (handle," КС ИСПРАВЕН \r\n",76);

write (handle," \r\n",76);

if (bytes [19] &0x01)

write (handle,"Прием от АК1 трех кодограмм подряд с признаком К2 \r\n",76);

if (bytes [19] &0x02)

write (handle,"Прием от АК1 трех кодограмм подряд с ВПС=1010 \r\n",76);

if (bytes [19] &0x04)

write (handle,"Отсутствие информации от АК1 на входе ПУ более 12 сек \r\n",76);

if (bytes [18] &0x01)

write (handle,"Прием от АК1 трех кодограмм подряд с признаком получения УС \r\n",76);

if (bytes [18] &0x02)

write (handle,"Отсутствие связи в тракте от ЦКС1 до АК1 \r\n",76);

if (bytes [18] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ЦКС2 для АК1 \r\n",76);

if (bytes [17] &0x01)

write (handle,"Отсутствие связи в тракте от АК1 до ЦКС1 \r\n",76);

write (handle," \r\n",76);

if (bytes [23] &0x01)

write (handle,"Прием от АК3 трех кодограмм подряд с признаком К2 \r\n",76);

if (bytes [23] &0x02)

write (handle,"Прием от АК3 трех кодограмм подряд с ВПС=1010 \r\n",76);

if (bytes [23] &0x04)

write (handle,"Отсутствие информации от АК3 на входе ПУ более 12 сек \r\n",76);

if (bytes [22] &0x01)

write (handle,"Прием от АК3 трех кодограмм подряд с признаком получения УС \r\n",76);

if (bytes [22] &0x02)

write (handle,"Отсутствие связи в тракте от ЦКС1 до АК3 \r\n",76);

if (bytes [22] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ЦКС2 для АК3 \r\n",76);

if (bytes [21] &0x01)

write (handle,"Отсутствие связи в тракте от АК3 до ЦКС1 \r\n",76);

write (handle," \r\n",76);

if (bytes [26] &0x01)

write (handle,"Прием от АК6 трех кодограмм подряд с признаком К2 \r\n",76);

if (bytes [26] &0x02)

write (handle,"Прием от АК6 трех кодограмм подряд с ВПС=1010 \r\n",76);

if (bytes [26] &0x04)

write (handle,"Отсутствие информации от АК6 на входе ПУ более 12 сек \r\n",76);

if (bytes [25] &0x01)

write (handle,"Прием от АК6 трех кодограмм подряд с признаком получения УС \r\n",76);

if (bytes [25] &0x02)

write (handle,"Отсутствие связи в тракте от ЦКС1 до АК6 \r\n",76);

if (bytes [25] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ЦКС2 для АК6 \r\n",76);

if (bytes [24] &0x01)

write (handle,"Отсутствие связи в тракте от АК6 до ЦКС1 \r\n",76);

write (handle," \r\n",76);

if (bytes [16] &0x01)

write (handle,"Прием от ВПУ трех кодограмм подряд с признаком К2 \r\n",76);

if (bytes [16] &0x02)

write (handle,"Прием от ВПУ трех кодограмм подряд с ВПС=1010 \r\n",76);

if (bytes [16] &0x04)

write (handle,"Отсутствие информации от ВПУ на входе ПУ более 12 сек \r\n",76);

if (bytes [15] &0x01)

write (handle,"Прием от АК6 трех кодограмм подряд с признаком получения УС \r\n",76);

if (bytes [15] &0x02)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ВПУ \r\n",76);

if (bytes [15] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ЦКС2 для ВПУ \r\n",76);

if (bytes [14] &0x01)

write (handle,"Отсутствие связи в тракте от ВПУ до ЦКС1 \r\n",76);

write (handle," \r\n",76);

if (bytes [17] &0x04)

write (handle,"Отсутствие связи в тракте от ЦКС1 до ПУ \r\n",76);

write (handle," \r\n",76);

if (bytes [10] &0x02)

write (handle,"Отсутствие приема кодограмм в заданный интервал времени \r\n",76);

write (handle," \r\n",76);

if ( (bytes [12] &0x07) && (! (bytes [11] &0x07)))

write (handle,"Прием кодограмм с признаком отсутствия связи от ПУ до М486 \r\n",76);

if ( (bytes [11] &0x07) && (! (bytes [12] &0x07)))

{

write (handle,"Прием кодограмм с признаком искажения информации от ЦКС до М486 и/или \r\n",76);

write (handle,"прием кодограмм с признаком отсутствия импульса БИ \r\n",76);

}

if ( (bytes [11] &0x07) && (bytes [12] &0x07))

{

write (handle,"Прием кодограмм с признаком отсутствия связи от ПУ до М486 и/или \r\n",76);

write (handle,"прием кодограмм с признаком искажения информации от ЦКС до М486 и/или \r\n",76);

write (handle,"прием кодограмм с признаком отсутствия импульса БИ \r\n",76);

}

break;

case 2: // РМ-02

write (handle," \r\n",76);

if (bytes [5] &0x01)

write (handle,"АРМ ЗАБЛОКИРОВАНО по ФК оператором \r\n",76);

write (handle," \r\n",76);

if (bytes [5] &0x04)

write (handle,"НЕТ СВЯЗИ МЕЖДУ ПЭВМ1 и ВК \r\n",76);

if (bytes [4] &0x02)

write (handle,"Нет связи с ВК по одной из линий связи ЛС1 или ЛС3 \r\n",76);

if (bytes [3] &0x04)

write (handle,"Нет связи с ВК по линии связи ЛС1 \r\n",76);

if (bytes [2] &0x02)

write (handle,"Нет связи с ВК по линии связи ЛС3 \r\n",76);

break;

case 10: // РМ-10

write (handle," \r\n",76);

if (bytes [5] &0x01)

write (handle,"АРМ ЗАБЛОКИРОВАНО по ФК оператором \r\n",76);

write (handle," \r\n",76);

if (bytes [5] &0x04)

write (handle,"НЕТ СВЯЗИ МЕЖДУ ПЭВМ2 и ВК \r\n",76);

if (bytes [4] &0x02)

write (handle,"Нет связи с ВК по одной из линий связи ЛС2 или ЛС4 \r\n",76);

if (bytes [2] &0x01)

write (handle,"Нет связи с ВК по линии связи ЛС2 \r\n",76);

if (bytes [2] &0x04)

write (handle,"Нет связи с ВК по линии связи ЛС4 \r\n",76);

break;

case 5: // РМ05Г

case 13: // РМ13П

if (bytes [19] &0x01)

write (handle,"ОСНОВНОЙ АРМ - РМ-13П \r\n",76);

else

write (handle,"ОСНОВНОЙ АРМ - РМ-05Г \r\n",76);

write (handle," \r\n",76);

if (bytes [5] &0x04)

write (handle," АРМ НЕИСПРАВЕН \r\n",76);

else

write (handle," АРМ ИСПРАВЕН \r\n",76);

write (handle," \r\n",76);

if (bytes [16] &0x02)

write (handle,"Основное АРМ ИСПРАВНО \r\n",76);

if (bytes [16] &0x01)

write (handle,"Основное АРМ НЕИСПРАВНО \r\n",76);

if (bytes [16] &0x04)

write (handle,"Основное АРМ ЗАБЛОКИРОВАНО \r\n",76);

if (bytes [15] &0x01)

write (handle,"Основное АРМ РАЗБЛОКИРОВАНО \r\n",76);

if (bytes [19] &0x04)

write (handle,"Резервное АРМ ИСПРАВНО \r\n",76);

if (bytes [19] &0x02)

write (handle,"Резервное АРМ НЕИСПРАВНО \r\n",76);

if (bytes [18] &0x01)

write (handle,"Резервное АРМ ЗАБЛОКИРОВАНО \r\n",76);

if (bytes [18] &0x02)

write (handle,"Резервное АРМ РАЗБЛОКИРОВАНО \r\n",76);

if (bytes [5] &0x01)

write (handle,"АРМ ЗАБЛОКИРОВАНО по ФК оператором \r\n",76);

write (handle," \r\n",76);

if (bytes [4] &0x02)

write (handle,"Неисправна одна из трех линий магистрали обмена \r\n",76);

else

write (handle,"Все три линии магистрали обмена исправны \r\n",76);

if (bytes [12] &0x04)

write (handle,"Неисправна 1-я линия магистрали приема \r\n",76);

if (bytes [12] &0x02)

write (handle,"Неисправна 2-я линия магистрали приема \r\n",76);

if (bytes [12] &0x01)

write (handle,"Неисправна 3-я линия магистрали приема \r\n",76);

if (bytes [10] &0x02)

write (handle,"Отсутствует прием информации в ВМ от данного АРМ-1 \r\n",76);

break;

case 7: // ВМ

if (bytes [5] &0x02)

write (handle,"Авария электропитания в одном или нескольких каналах ШП-614 \r\n",76);

if (bytes [4] &0x04)

write (handle,"Неисправность 1 канала ШП-614 \r\n",76);

if (bytes [3] &0x01)

write (handle,"Неисправность 2 канала ШП-614 \r\n",76);

if (bytes [3] &0x02)

write (handle,"Неисправность 3 канала ШП-614 \r\n",76);

if (bytes [3] &0x04)

write (handle,"Произошел ПРОГРАММНЫЙ СБОЙ \r\n",76);

if (bytes [2] &0x01)

write (handle,"Авария питания 1 канала \r\n",76);

if (bytes [2] &0x02)

write (handle,"Авария питания 1 канала \r\n",76);

if (bytes [2] &0x04)

write (handle,"Авария питания 1 канала \r\n",76);

if (bytes [0] &0x01)

write (handle,"Нарушена целостность программного изделия-кассеты КП-610 - \r\n",76);

write (handle,"подсчитанная контрольная сумма не совпадает с эталоном \r\n",76);

break;

case 16: // ВУ16

case 17: // ВУ17

case 18: // ВУ18

case 19: // ВУ19

if (bytes [5] &0x01)

write (handle,"ПУ заблокировано оператором по ФК \r\n",76);

if (bytes [5] &0x04)

write (handle,"Нажата КНОПКА ОБНАРУЖЕНИЯ НЕИСПРАВНОСТИ \r\n",76);

break;

case 15: // АС

 // Подкорректировать после согласования

 // байта состояния

if (bytes [5] &0x04)

write (handle,"АРМ-РД НЕИСПРАВЕН - не работают обе ПЭВМ \r\n",76);

if (bytes [4] &0x01)

write (handle,"АРМ-РД РАБОТОСПОСОБЕН - работает одна из двух ПЭВМ \r\n",76);

if (bytes [4] &0x02)

write (handle,"Нет связи хотя бы по одной из линий связи ЛС1, ЛС2, ЛС3, ЛС4 \r\n",76);

if (bytes [4] &0x04)

write (handle,"Неисправен КСП-0 \r\n",76);

if (bytes [3] &0x01)

write (handle,"Неисправен КСП-1 \r\n",76);

if (bytes [3] &0x02)

write (handle,"Неисправен КСП-2 \r\n",76);

if (bytes [3] &0x04)

write (handle,"Нет связи по линии связи ЛС1 \r\n",76);

if (bytes [2] &0x01)

write (handle,"Нет связи по линии связи ЛС2 \r\n",76);

if (bytes [2] &0x02)

write (handle,"Нет связи по линии связи ЛС3 \r\n",76);

if (bytes [2] &0x04)

write (handle,"Нет связи по линии связи ЛС4 \r\n",76);

break;

}

}

 // bs2_out. prj

 // bs2_out. c

 // main ()

 // выдача результатов запроса по 2-й форме байтов состояния на экран

 // (из файла) или форматирование и постановка в очередь для выдачи

 // на принтер

#include <dos. h>

#include "cxlkey. h"

#include "disp. h"

extern void resScr (void);

 // выдача результатов запроса из файла на экран

extern void resPrn (void);

 // выдача результатов запроса из файла на принтер

void main (int argc,char *argv [])

{

void z (void);

setkbloop (z);

if (argv [1] [0] =='э') resScr ();

else resPrn ();

}

void z (void)

{

union REGS r;

r. h. ah=0;

int86 (DISP,&r,&r);

}

#include <dos. h>

#include "cxlkey. h"

#include "disp. h"

extern void resScr (void);

 // выдача результатов запроса из файла на экран

extern void resPrn (void);

 // выдача результатов запроса из файла на принтер

void main (int argc,char *argv [])

{

void z (void);

setkbloop (z);

if (argv [1] [0] =='э') resScr ();

else resPrn ();

}

void z (void)

{

union REGS r;

r. h. ah=0;

int86 (DISP,&r,&r);

}

 // inq_out. prj

 // INQ_OUT. C

 // main ()

 // выдача результатов запроса на экран (из файла)

 // или форматирование и постановка в очередь для выдачи на принтер

#include <string. h>

#include <process. h>

#include "cxlkey. h"

#include "cxldef. h"

extern void resScr (void);

 // выдача результатов запроса из файла на экран

extern void resPrn (void);

 // выдача результатов запроса из файла на принтер

void main (int argc,char *argv [])

{

void z (void);

setkbloop (z);

if (argv [1] [0] =='э') resScr ();

else resPrn ();

}

#include <dos. h>

#include "disp. h"

void z (void)

{

union REGS r;

r. h. ah=0;

int86 (DISP,&r,&r);

}

 // inq_out. prj

 // res_scr. C

 // res_scr ()

 // выдача результатов запроса на экран (из файла)

#include <stdio. h>

#include <string. h>

#include "cxlwin. h"

#include "cxlkey. h"

#include "cxlvid. h"

#define LEN 81

#define TXTATTR _CYAN

#define UP 0x4800

#define DOWN 0x5000

#define PGUP 0x4900

#define PGDOWN 0x5100

#define ESC 0x011b

void resScr (void)

{

FILE *f; // дескриптор файла результатов

int down; // номер текущей строки в файле

int ch; // код клавиши

int i;

char string [LEN] ;

int mwup; // количество строк над основным окном

 // вывод на экран строки запроса и шапки таблицы

f=fopen ("inquiry. res","r++");

fgets (string,LEN,f);

for (mwup=0; strncmp (string+3,"ДАТА",4); ++mwup)

{

wopen (mwup,0,mwup,79,5,BLUE|_LGREY,BLUE|_LGREY);

wprintf ("%.79s",string);

fgets (string,LEN,f);

}

wopen (mwup,0,mwup,79,5,YELLOW|_BLUE,YELLOW|_BLUE);

wprintf ("%.78s",string);

 // основное окно

wopen (++mwup,0,25,79,5,LCYAN|_BLUE,TXTATTR);

 // wshadow (LGREY);

 // вывод результатов запроса из файла на экран

for (down=mwup; down<25 && fgets (string,LEN,f) ! =NULL; ++down)

wprints (down-mwup,1,TXTATTR,string);

hidecur ();

 // цикл просмотра результатов

while ( (ch=getxch ()) ! =ESC)

switch (ch)

{

case UP: if (down<=25) break;

down--;

fseek (f, (long) (down-25+mwup) *LEN,0);

fgets (string,LEN,f);

wscroll (1,D_DOWN);

wprints (0,1,TXTATTR,string);

break;

case DOWN: if (fseek (f, (long) down*LEN,0)) break;

if (fgets (string,LEN,f) ==NULL) break;

wscroll (1,D_UP);

wprints (24-mwup,1,TXTATTR,string);

down++;

break;

case PGUP: for (i=0; i<=24-mwup; ++i)

{

if (down<=25) break;

down--;

fseek (f, (long) (down-25+mwup) *LEN,0);

fgets (string,LEN,f);

wscroll (1,D_DOWN);

wprints (0,1,TXTATTR,string);

}

break;

case PGDOWN: for (i=0; i<=24-mwup; ++i)

{

if (fseek (f, (long) down*LEN,0)) break;

if (fgets (string,LEN,f) ==NULL) break;

wscroll (1,D_UP);

wprints (24-mwup,1,TXTATTR,string);

down++;

}

break;

}

fclose (f);

wcloseall ();

}

 // bs2_out. prj

 // res_scr_. c

 // res_scr ()

 // выдача результатов запроса по 2-й форме байтов состояния на экран

 // (из файла)

#include <stdio. h>

#include <string. h>

#include "cxlwin. h"

#include "cxlkey. h"

#include "cxlvid. h"

#define LEN 100

#define TXTATTR _CYAN

#define UP 0x4800

#define DOWN 0x5000

#define PGUP 0x4900

#define PGDOWN 0x5100

#define RIGHT 0x4d00

#define LEFT 0x4b00

#define HOME 0x4700

#define END 0x4F00

#define ESC 0x011b

FILE *f; // дескриптор файла результатов

int down; // номер текущей строки в файле

char string [LEN] ;

int length; // длина строк в файле

int w1; // дескриптор окна

void screen_move (int right);

void resScr (void)

{

int right=0; // горизонтальное смещение

int ch; // код клавиши

int i;

 // вывод на экран строки запроса и шапки таблицы

f=fopen ("inquiry. res","r++");

wopen (0,0,0,79,5,BLUE|_LGREY,BLUE|_LGREY);

fgets (string,LEN,f);

wprints (0,1,BLUE|_LGREY,string);

w1=wopen (1,0,1,79,5,YELLOW|_BLUE,YELLOW|_BLUE);

fgets (string,LEN,f);

wprints (0,1,YELLOW|_BLUE,string);

length=strlen (string) +1;

 // основное окно

wopen (2,0,25,79,5,LCYAN|_BLUE,TXTATTR);

hidecur ();

 // wshadow (LGREY);

 // вывод результатов запроса из файла на экран

for (down=2; down<25 && fgets (string,LEN,f) ! =NULL; ++down)

{

string [right+80] ='\0';

wprints (down-2,1,TXTATTR,string);

}

 // цикл просмотра результатов

while ( (ch=getxch ()) ! =ESC)

switch (ch)

{

case UP: if (down<=25) break;

down--;

fseek (f, (long) (down-23) *length,0);

fgets (string,LEN,f);

string [right+79] ='\0';

wscroll (1,D_DOWN);

wprints (0,1,TXTATTR,string+right);

break;

case DOWN: if (fseek (f, (long) down*length,0)) break;

if (fgets (string,LEN,f) ==NULL) break;

wscroll (1,D_UP);

string [right+80] ='\0';

wprintc (22,0,TXTATTR,' ');

down++;

break;

case PGUP: for (i=0; i<=22; ++i)

{

if (down<=25) break;

down--;

fseek (f, (long) (down-23) *length,0);

fgets (string,LEN,f);

wscroll (1,D_DOWN);

string [right+80] ='\0';

wprints (0,1,TXTATTR,string+right);

wprintc (1,0,TXTATTR,' ');

}

break;

case PGDOWN: for (i=0; i<=22; ++i)

{

if (fseek (f, (long) down*length,0)) break;

if (fgets (string,LEN,f) ==NULL) break;

wscroll (1,D_UP);

string [right+80] ='\0';

wprints (22,1,TXTATTR,string+right);

down++;

}

break;

case LEFT: if (right) screen_move (--right); break;

case RIGHT: if (right+82<length) screen_move (++right); break;

case END: if (right+82<length) screen_move (right=length-82); break;

case HOME: if (right) screen_move (right=0); break;

}

fclose (f);

wcloseall ();

}

 // горизонтальная прокрутка

void screen_move (int right)

{

int i;

fseek (f,length,0);

fgets (string,LEN,f);

string [right+80] ='\0';

wwprints (w1,0,1,YELLOW|_BLUE,string+right);

if (down-22>2) fseek (f, (long) (down-22) *length,0);

for (i=0; i<=22 && fgets (string,length,f) ! =NULL; ++i)

{

string [right+80] ='\0';

wprints (i,1,TXTATTR,string+right);

}

}

#include <stdio. h>

#include <string. h>

#include "cxlwin. h"

#include "cxlkey. h"

#include "cxlvid. h"

#define LEN 80

#define ESC 0x011b

FILE *f; // дескриптор файла результатов

char string [LEN] ; // буфер для чтения из файла

void resScr (void)

{

int i;

int maxlen; // максимальная длина строки в файле результатов запроса

int startpos; // столбец окна с которого печатается текст

 // открытие файла результатов запроса и

 // определение размера самой длинной строки в этом файле

f=fopen ("inquiry. res","r++");

for (maxlen=0, i=0; fgets (string,LEN,f) ! =NULL; ++i)

if (strlen (string) >maxlen) maxlen=strlen (string);

fseek (f,0,0);

 // черный фон

wopen (0,0,24,79,5,0,0);

 // открытие окна

wopen ( (20-i) /2,5, (20-i) /2+i+2,75,1,YELLOW|_BLUE,_CYAN);

hidecur ();

 // чтение типа устройства и его использование в качестве титула окна

fgets (string+1,LEN,f);

string [0] =' ';

for (i=2; i<=6; ++i)

if (string [i] =='\r' || string [i] =='\n') string [i] =' ';

wtitle (string,TCENTER,_LGREY);

 // вывод результатов запроса из файла в окно

startpos= (70-maxlen) /2;

for (i=2; fgets (string,LEN,f) ! =NULL; ++i)

{

wgotoxy (i,startpos);

wprintf ("%s",string);

}

 // окно находится на экране пока не будет нажато ESC

while (getxch () ! =ESC);

fclose (f);

wcloseall ();

}


Список литературы

1.         Глушков В.М. “Основы безбумажной информатики", М. Наука, 1987 г.;

2.         “Человек и вычислительная техника" под ред. Глушкова В.М., М. Наука, 1971 г.;

3.         “Организационные вопросы автоматизации управления” (перевод с английского) Глушкова В.М., М. Экономика, 1972 г.;

4.         Мартин Дж. “Организация баз данных в вычислительных системах", М. Мир, 1980 г.;

5.         Бойко В.В., Савинков В.М. “Проектирование баз данных информационных систем”, М. Финансы и статистика, 1989 г.;

6.         Шураков В.В. “Надежность программного обеспечения систем обработки данных”, М. Финансы и статистика, 1987 г.;

7.         Уинер Р. “Язык Турбо СИ", М. Мир, 1991 г.;

8.         Paradox Engine. Документация: описание, список функций для создания и работы с БД.;

9.         “Турбо СИ. Описание редактора, стандартные и графические функции”, изд. Иститута проблем информатики, М. 1989 г.;

10.      Хьюз Дж., Мичтом Дж. “Структурный подход к программированию”. Изд. Мир, М., 1980 г.;

11.      “Выполнение организационно-экономической части дипломных проектов". Учебное пособие, изд. МИРЭА, 1994 г.;

12.      “Выполнение организационно-экономической части дипломных проектов". Учебное пособие, изд. МИРЭА, 1987 г.;

13.      “Сетевые графики в планировании". Разумов И.М., Белова Л.Д., и др., М. Высшая школа, 1981 г.;

14.      “Основы финансового менеджмента. Как управлять капиталом? ” Балабанов И.Т., М. “Финансы и статистика”, 1994 г.;

15.      Мотузко Ф.Я. “Охрана труда", М. Высшая школа, 1969 г.;

16.      Самгин Э.Б. “Освещение рабочих мест”, изд. МИРЭА, 1989 г.;

17.      Сибаров Ю.Б. “Охрана труда в вычислительных центрах" и др., М. Машиностроение, 1990 г.;

18.      Методические указания по дипломному проектированию раздела “Охрана труда и окружающей среды" под ред. Мотузко Ф.Я., МИРЭА, 1980 г.;

19.      “Основы инженерной психологии” под ред. Ломова Б.Ф., М. Высшая школа, 1986 г.;

20.      Демиденко и др. “Защита объектов народного хозяйства от оружия массового поражения" Справочник, Киев "Высшая школа" 1989 г.;

21.      Методические указания по безопасности жизнедеятельности. “Особенности ведения аварийно-спасательных работ на промышленном объекте в ЧС мирного времени”, изд. МИРЭА.;

22.      Атаманюк В.Г., Ширшев Л.Г. и др. “Гражданская оборона. Учебник для ВТУЗов”, М. Высшая школа. 1987г.;

23.      “Введение в практическую эргономику. Учебное пособие. ” под ред. Зинченко В.П., Моргунова Е.Б., изд. МИРЭА, 1990г.


Информация о работе «Автоматизированное рабочее место регистрации и документирования комплекса средств автоматизации»
Раздел: Информатика, программирование
Количество знаков с пробелами: 217024
Количество таблиц: 33
Количество изображений: 7

Похожие работы

Скачать
26006
0
7

... , или специальных навыков работы. С ней справился бы даже и ребенок. Заключение В ходе знакомства с моим приложением для учета рабочего времени сотрудников предприятия я во – первых установил, что совокупность всех подразделений предприятия дает нам проблемную область. Разработка бизнес – процесса, включающего в себя функциональную и информационную модели, заняла 5 Mb. База данных, ...

Скачать
21544
5
0

... экране монитора и тем самым сокращает работу оператора с бумагами (инструкциями). Основные разделы хозяйственного договора Последним разделом технико-экономического обоснования по теме: “Бизнес-план разработки” является формирование основных разделов хозяйственного договора. Хозяйственный договор – это двустороннее соглашение, заключаемое юридическими лицами (исполнителем и заказчиком) для ...

Скачать
127922
25
27

... данной предметной области и согласованные с заказчиком системы; ·          Структура процесса сбора, обработки и передачи данных в ИС должна соответствовать процессам, которые выполняются на рабочем месте мастера строительно-монтажных работ. Внутримашинная информационная база представляет собой физически реализованную базу данных. Носителем данных является жесткий диск, на котором находится СУБД ...

Скачать
129316
31
42

... задание на разработку ИС «Реклама» для компании «Деловая недвижимость» 2.2.7   Общие сведения Полное наименование разрабатываемой системы: «Автоматизированное рабочее место менеджера по рекламе агентства недвижимости». Краткое название: ИС «Реклама». АРМ разрабатывается студенткой 6 курса вечернего факультета специальности «Прикладная информатика в экономике» Алтайского Государственного ...

0 комментариев


Наверх