Разработка шлюза аппаратуры ВТК-12 для единой системы мониторинга и администрирования

Назначение, принципы построения и архитектура единой системы мониторинга и администрирования. Характеристика аппаратуры цифровой системы передачи данных ВТК-12. Принцип работы шлюза, создание его файлов конфигурации и реализация интерфейсных функций.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 28.10.2013
Размер файла 3,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Наиболее жесткие требования к монитору предъявляет ТСО 95. Он ограничивает параметры излучения монитора, потребления электроэнергии, визуальные параметры, так что делает монитор наиболее лояльным к здоровью пользователя. В части излучательных параметров ему соответствует и ТСО 92. Разработан стандарт Шведской конфедерацией профсоюзов.

Стандарт MPR II менее жесткий устанавливает предельные уровни электромагнитного поля примерно в 2,5 раза выше. Разработан Институтом защиты от излучений (Швеция) и рядом организаций, в том числе крупнейших производителей мониторов.

В части электромагнитных полей стандарту MPR II соответствует российские санитарные нормы СанПиН 2.2.2.542-96 Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работ.

6.3.2 Средства защиты пользователей от ЭМП

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

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

Российский стандарт ГОСТ 27954 - 88 [3] на видеомониторы персональных ЭВМ. Требования этого стандарта обязательны для любого монитора продаваемого в РФ. Основные требования приведены в табл. 6.2.

Таблица 6.2 Российский стандарт ГОСТ 27954 - 88 на видеомониторы персональных ЭВМ.

Характеристика монитора

Требования гост - 27954-88

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

Не менее 60 Гц

Частота кадров режиме обработки текста

Не менее 72 Гц

Дрожание элементов изображения

Не более 0,1 мм

Антибликовое покрытие

Обязательно

Допустимый уровень шума

Не более 50 дБА

Мощность дозы рентгеновского излучения на расстоянии 5 см от экрана при 40 - часовой недели

Не более 0,03 мкР/с

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

1. Параметры безопасности - электрическая, механическая, пожарная безопасность (ГОСТ Р 50377 - 92).

2. Санитарно-гигиенические требования - уровень звуковых шумов (ГОСТ 26329 - 84 или ГОСТ 2718 - 88), ультрафиолетовое, рентгеновское излучения и показатели качества изображения (ГОСТ 27954 - 88).

3. Электромагнитная совместимость - излучаемые радиопомехи (ГОСТ 29216 - 91).

Сертификат выдается только на весь комплекс вышеперечисленных ГОСТов.

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

6.3.3 Требование к видеодисплейным терминалам и ПЭВМ

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

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

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

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

Конструкция ВДТ и ПЭВМ должна обеспечивать мощность экспозиционной дозы рентгеновского излучения в любой точке на расстоянии 0,05 м. от экрана и корпуса ВДТ при любых положениях регулировочных устройств не должна превышать 7,74х10 А/кг, что соответствует эквивалентной дозе, равной 0,1 мбэр/час (100 мкР/час).

Конструкция клавиатуры должна предусматривать:

- исполнение в виде отдельного устройства с возможностью свободного перемещения;

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

- высоту среднего ряда клавиш не более 30 мм;

- расположение часто используемых клавиш в центре, внизу и справа, редко используемых - вверху и слева;

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

- минимальный размер клавиш - 13 мм, оптимальный - 15 мм;

- клавиши с углублением в центре и шагом 19 ±1 мм;

- расстояние между клавишами не менее 3 мм;

- одинаковый ход для всех клавиш с минимальным сопротивлением нажатию 0,25 Н и максимальным - не более 1,5 Н;

- звуковую обратную связь от включения клавиш с регулировкой уровня звукового сигнала и возможности ее отключения.

6.3.4 Требования к помещениям с ЭВМ

Согласно СН 512-78 [8] и СанПиН 2.2.2.542-96 здания ЭВМ следует помещать с наветренной стороны ветров преобладающего направления по отношению к соседним предприятиям, являющихся источниками выделений вредных веществ и пыли.

Площадь на одно рабочее место с ВДТ или ПЭВМ должна составлять на менее 6 м2, а объем - не менее 20 м3, а в учебных помещениях соответственно не менее 6 м2 и 24 м3. В залах ЭВМ должно предусматриваться автоматическое пожаротушение.

Применение для тушения пожара воды, порошковых огнетушителей недопустимо - выводится из строя ЭВМ.

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

6.3.5 Требования к микроклимату помещений эксплуатации мониторов и ПЭВМ

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

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

Таблица 6.3 Оптимальные и допустимые параметры температуры и относительной влажности воздуха.

Оптимальные параметры

Допустимые параметры

температура, Со

относительная влажность, %

температура, Со

относительная влажность, %

19

62

18

39

20

58

22

31

21

55

Примечание: скорость движения воздуха - не более 0,1 м/с

6.3.6 Требования к шуму

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

На рабочих местах в помещениях для размещения шумных агрегатов вычислительных машин (АЦПУ, принтеры, сканеры и др.) уровень шума не должен превышать 75 дБА.

Шумящее оборудование (АЦПУ, принтеры и др.), уровни шума которого превышают нормированные, должно находится вне помещения с монитором и ПЭВМ.

Снизить уровень шума в помещениях с мониторами и ПЭВМ можно использованием звукопоглощающих материалов с максимальными коэффициентами звукопоглощения в области частот 63 - 8000 Гц для отделки помещений (разрешенных органами и учреждениями Госсанэпиднадзора России), подтвержденных специальными акустическими расчетами.

Дополнительным звукопоглощением служат однотонные занавеси из плотной ткани, гармонирующие с окраской стен и подвешенные в складку на расстоянии 15 - 20 см от ограждения. Ширина занавеси должна быть в 2 раза больше ширины окна.

6.3.7 Требования к освещению помещений и рабочих мест с мониторами и ПЭВМ

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

Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 - 500 лк. Допускается установка светильников местного освещения для подсветки документов. Местное освещение не должно создавать бликов на поверхности экрана и увеличивать освещенность экрана более 300 лк.

Для освещения помещений с мониторами и ПЭВМ следует применять светильники серии ЛПО36 с зеркализованными решетками, укомплектованные высокочастотными пускорегулирующими аппаратами (ВЧ ПРА). Допускается применять светильники серии ЛПО36 без ВЧ ПРА только в модификации "Кососвет", а также светильники прямого света - П, преимущественного света - Н, отраженного света - В. Применение светильников без рассеивателей и экранирующих решеток не допускается.

Яркость светильников общего освещения в зоне углов излучения от 50 до 90 градусов с вертикалью в продольной и поперечной плоскостях должна составлять не более 200 кд/кв.м., защитный угол светильников должен быть не менее 40 градусов.

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

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

6.4 Расчет системы искусственного освещения

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

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

6.4.1 Описание помещения, в котором располагается рабочее место

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

площадь помещения 112 кв.м (8х14);

высота 4 м;

число окон 8;

количество рабочих мест 10;

окраска интерьера: белый потолок, бежевые стены, пол покрыт линолеумом серого цвета.

6.4.2 Расчет освещения рабочего места

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

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

Расчет его осуществляется по методу светового потока с учетом потока, отраженного от стен и потолка [10].

Нормами для данных работ установлена необходимая освещенность рабочего места Ен = 250 лк (средняя точность работы по различению деталей размером от 1 до 10 мм). [ ]

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

, (6.1)

где Ен - нормированная освещенность (Ен= 250 лк);

S - площадь помещения (S = 112 кв.м);

z1 - коэффициент, учитывающий старение ламп и загрязнение светильников (z1 = 1,5);

z2 - коэффициент, учитывающий неравномерность освещения помещения (z2 = 1,1);

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

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

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

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

коэффициент отражения от пола, покрытого линолеумом светлого цвета Rp = 30%;

индекс помещения

; (6.2)

Найденный коэффициент V=0,39.

По формуле (6.1) определяем общий световой поток

= 118460 лм;

Для организации общего искусственного освещения выберем лампы типа ЛБ40.

Люминесцентные лампы имеют ряд преимуществ перед лампами накаливания: их спектр ближе к естественному; они имеют большую экономичность (больше светоотдача) и срок службы (в 10-12 раз). Наряду с этим имеются и недостатки: их работа сопровождается иногда шумом; хуже работают при низких температурах; их нельзя применять во взрывоопасных помещениях; имеют малую инерционность.

Для нашего помещения люминесцентные лампы подходят. Световой поток одной лампы ЛБ40 составляет не менее Fл = 2810 лм. Число N ламп, необходимых для организации общего освещения, определяется по формуле:

= 42, (6.3)

В качестве светильников выбираем ПВЛ-1, 2х40 Вт. Таким образом, чтобы обеспечить световой поток Fобщ=118460 лм надо использовать 21 светильник по 2 лампы ЛБ40 в каждом.

Электрическая мощность одной лампы ЛБ40 Wл=40 Вт.

Мощность всей осветительной системы:

Wобщ = Wл N = 40 42 = 1680 Вт.

Выводы

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

Проведённый анализ рабочего места инженера-программиста ОАО "Морион" по перечисленным выше параметрам показал, что в большинстве случаев они соблюдаются. Однако работающие компьютеры, модемы и другая аппаратура в совокупности вызывают большой уровень шума. По площади и объёму помещение соответствует нормам. Предусмотрена система дымоуловителей, однако системы автоматического пожаротушения не существует. Климатические параметры, такие как температура и влажность, запылённость, на мой взгляд, находятся в норме. Конструкция стульев позволяет регулировать их высоту и наклон спинки. Так же небольшое влияние оказывают электромагнитные поля, т.к. оборудования сконцентрировано в просторных залах.

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

Заключение

В ходе проектирования были достигнуты цели, поставленные в техническом задании. А именно, разработан шлюз для аппаратуры ВТК-12, который в дальнейшем планируется внедрить в единую систему мониторинга и администрирования, разрабатываемую в настоящее время на ОАО «Морион».

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

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

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

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

СПИСОК ЛИТЕРАТУРЫ

1. Архангельский А.Я. Object Pascal в Delphi 5 - М.: “ЗАО Издательство БИНОМ”, 1999.-234с.: ил. (Все о Delphi)

2. Архангельский А.Я. Программирование в Delphi 5 - 2-е изд., переработ. и дополн. - М.: ЗАО «Издательство БИНОМ», 2000 г. - 1072 с.: ил.

3. ГОСТ 27954 - 88 Видеомониторы персональных электронных вычислительных машины. Типы, основные параметры, общие технические требования.

4. Методическое указание по диплом. проектированию для студентов спец. 200900 «Сети связи и системы коммуникации», 210100 «Управление и информатика в технических системах» / Сост. М.С. Волковой, О.В. Гончаровский, Т.С. Леготкина, В.И. Фрейман; Перм. гос. техн. ун-т. Пермь, 2002. 45 с.

5. Олифер В.Г., Олифер Н.А.: Компьютерные сети. Принципы, технологии, протоколы. -СПб.: Питер, 2001.-672 с.: ил.

6. СанПиН 2.2.2.542 - 96. Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работ / Госкомсанэпиднадзор России МОСКВА 1996.

7. Сибаров Ю. Б. “Охрана труда в вычислительных центрах” и др., М. Машиностроение, 1990 г.;

8. СН 512-78. Инструкции по проектированию зданий и помещений для электронно-вычислительных машин. Госстрой СССР. М.: Стройиздат, 1979. 14 с.

9. СНиП П-4-79. Естественное и искусственное освещение. Нормы проектирования/ Госстрой СССР. М.: Стройиздат, 1980. 48 с.

10. Справочная книга по светотехнике/ Под ред. Айзенберга Ю.Б. М.: Энергоатомиздат, 1983. 472 с.

11. Трофимов С.А. Case-технологии: практическая работа в Rational Rose - М.: ЗАО «Издательство БИНОМ», 2001 г. - 272 с.: ил.

12. Экономическое обоснование дипломных проектов: Метод. пособие для студентов электротехнического факультета (дневного и заочного отделения)/ Сост. Ю.В. Старков; Перм. гос. техн. ун-т, Пермь, 1997 34с.

Приложение 1

Описание классов

unit shlusobj;

interface

const cNE = 1;

cCPack = 2;

cAG = 3;

cTTPBid = 4;

cTTPSource = 5;

cTTPSink = 6;

cLinkEndSource = 7;

cLinkEndSink = 8;

cCTPSource = 9;

cCTPSink = 10;

type

EQUIP_TYPE = String[63];

EQUIP_NAME = ShortString;

TTP_NAME = String[15];

OID = int64;

Signal_ID = (e0CI,e1CI);

OperationalStateType = (disabled,enabled);

UsageStateType = (idle,busy);

DirType = (sink, source);

TTop = class

public

ID : OID;

TypeObj : Word;

end;

TNE = class (TTop)

public

TypeNE : EQUIP_Type;

Name : EQUIP_Name;

numCPacks : Word;

numAGs : Word;

numLinkEnds : Word;

operationalState : operationalStateType;

end;

TCPack = class (TTop)

public

TypecPack : EQUIP_TYPE;

operationalState :operationalStateType;

end;

TAG = class (TTop)

public

numTTPs : Word;

end;

TTTP = class (TTop)

public

Name : TTP_Name;

linkend_id : OID;

tp_id : OID;

cPack_id : OID;

SignalID : Signal_ID;

operationalState :operationalStateType;

end;

TTTPSink = class (TTTP)

end;

TTTPSource = class (TTTP)

end;

TTTPBid = class (TTop)

public

Name : TTP_Name;

TTPSink_ID : OID;

TTPSource_ID: OID;

end;

TLinkEnd = class (TTop)

public

TTP_ID : OID;

numCTPs : Word;

end;

TLinkEndSink = class (TLinkEnd)

end;

TLinkEndSource = class (TLinkEnd)

end;

TCTP = class (TTop)

public

cPack_ID : OID;

tp_ID : OID;

SignalID : Signal_ID;

operationalState :operationalStateType;

usageState : UsageStateType;

end;

TCTPSink = class (TCTP)

end;

TCTPSource = class (TCTP)

end;

TTrail = class (TTop)

public

aEnd : OID;

zEnd : OID;

SignalID : Signal_ID;

end;

implementation

end.

Приложение 2

Блок-схема процедуры GateInit

Приложение 3

Структура ответов

ПРИЛОЖЕНИЕ 4

Листинг шлюза

library gate;

uses

Classes,

Windows,

shlusobj,

SysUtils;

const PackType:array [1..3] of EQUIP_Type = ('OK','VD','VDN');

E1name:array [1..6] of char = ('A','B','C','D','E','F');

var NEList:TList;

CPackList:TList;

OKList:TList;

AGList:TList;

E1List:TList;

LinkEndList:TList;

CTPList:TList;

VTKList:TStringList;

GateID:word;

IPID:OID;

InitPath:string;

{$R *.RES}

//-------------------------------------------------------------------------

Function LoadVTK(pathip: string):byte; export; stdcall;

//загружает и декомпилирует конфигурация

var GPEnabled:boolean;

i,j,z:integer;

tmpid:OID;

tmpfile:TMemoryStream;

t1,t2,k,buf1,buf11:byte;

VDNEn,b1,b2:boolean;

SlotNumb,ChanelNumb:byte;

s:string;

Sink,Source: set of byte;

boardType:array[1..9] of byte;

TableSink:array [0..255] of integer;

TableSource:array [0..255] of integer;

tmpNE:TNE;

tmpCPack:TCPack;

tmpAG:TAG;

tmpOK:TTTP;

tmpOKLIst:TList;

tmpTTPBid:TTTPBid;

tmpTTPSink:TTTPSink;

tmpTTPSource:TTTPSource;

tmpLinkEndSource:TLinkEndSource;

tmpLinkEndSink:TLinkEndSink;

tmpCTPSource:TCTPSource;

tmpCTPSink:TCTPSink;

TTPindex,LinkEndindex,CTPindex:integer;

Function PortNormalise(Port:byte):byte;

//приведение значения к стандартному для удобства

begin

case Port of

$0B: Result:=0; //Cor

$0A: Result:=1; //First

$0F: Result:=2; //Second or F

$06: Result:=2; //Second or F

$0E: Result:=3; //E

$0D: Result:=4; //D

$09: Result:=5; //C

$05: Result:=6; //B

$01: Result:=7; //A

else Result:=0; //вообще-то это не допустимо

end;

end;

unction GetID(i1,i2,i3:byte):int64;

begin

GetID:=(i1 mod 16)*4096+(i2 mod 16)*256+i3+Int64(GateID)*65536* 65536*65536

+IPID*65536;

end;

Function GetSink(oldID:OID):OID;

begin

case oldID of

224..255: Result:=GetID(10,0,oldID-224);

192..223: Result:=GetID(10,1,oldID-192);

160..191: Result:=GetID(10,2,oldID-160);

128..159: Result:=GetID(10,3,oldID-128);

96..127: Result:=GetID(10,4,oldID-96);

64..95 : if GPEnabled then

Result:=GetID(5,0,oldID-64)

else

Result:=GetID(10,5,oldID-64);

32..63 : Result:=GetID(5,0,oldID-32);

else Result:=0;

end;

end;

Function GetSource(oldID:OID):OID;

begin

case oldID of

224..255: Result:=GetID(9,0,oldID-224);

192..223: Result:=GetID(9,1,oldID-192);

160..191: Result:=GetID(9,2,oldID-160);

128..159: Result:=GetID(9,3,oldID-128);

96..127: Result:=GetID(9,4,oldID-96);

64..95 : if GPEnabled then

Result:=GetID(6,0,oldID-64)

else

Result:=GetID(9,5,oldID-64);

32..63 : Result:=GetID(6,0,oldID-32);

else Result:=0;

end;

end;

begin

NEList.Clear;

AGList.Clear;

CPackList.Clear;

OKList.Clear;

LinkEndList.Clear;

E1List.Clear;

CTPList.Clear;

i:=0;

if (FileExists(InitPath+PathIP+'\vtk.cfg')=false) or

(FileExists(InitPath+PathIP+'\switch.cfg')=false) then i:=2;

if i <> 0 then //если нет хотя бы одного файла, то ошибка

begin

Result:=i;

exit;

end;

//------- начало загрузки -----------------

IPID:=0;

for i:=0 to 3 do

IPID:=IPID*256+StrToInt(copy(PathIP,i*4+1,3));

GPEnabled:=False;

tmpNE:=TNE.Create;

tmpNE.ID:=GetID(1,0,0);

tmpNE.TypeNE:='VTK-12';

tmpNE.Name:=PathIP;

tmpNE.operationalState:=enabled;

tmpNE.TypeOBJ:=1;

tmpFile:=TMemoryStream.Create;

tmpFile.LoadFromFile(InitPath+PathIP+'\vtk.cfg');

tmpFile.Position:=$02;

for i:=1 to 9 do //опознаем типы плат

begin

tmpFile.Read(buf1,1);

boardtype[i]:=buf1;

if buf1<>0 then

begin

tmpCPack:=TCPack.Create;

tmpCPack.TypecPack:=PackType[buf1];

tmpCPack.ID:=GetID(2,0,i-1);

tmpCPack.TypeObj:=2;

tmpCPack.operationalState:=enabled;

CPackList.Add(tmpCPack);

end;

end;

tmpNE.numCPacks:=CPackList.Count;

tmpNE.numAGs:=2;

VDNEn:=false;

t1:=0;

t2:=0;

tmpOKList:=TList.Create;

for k:=0 to 1 do

begin

tmpFile.Position:=$0B+$20*k;

for i:=0 to 31 do // читаем шины G и GP

begin

tmpFile.Read(Buf1,1);

if Buf1<>0 then

begin

tmpOK:=TTTP.Create;

if k=1 then GPEnabled:=true;

SlotNumb:=1+(buf1-1) div 4;

ChanelNumb:=buf1-4*((buf1-1) div 4);

case BoardType[SlotNumb] of

1: s:='OK';

2: s:='VD';

3: s:='VDN';

end;

s:=s+IntToStr(SlotNumb)+'['+IntToStr(ChanelNumb)+']';

tmpOK.Id:=(i+k*32+32);

tmpOK.CPack_id:=GetID(2,0,SlotNumb-1);

if not ((SlotNumb=t1) and (ChanelNumb=t2))

then

begin

buf11:=1;

case BoardType[SlotNumb] of

2: s:=s+'.1';

3: begin s:=s+'.1'; VDNEn:=true; end;

end;

end

else

begin

inc(buf11);

case BoardType[SlotNumb] of

2: s:=s+'.2';

3: begin

VDNEn:=false;

s:=s+'.'+IntToStr(buf11);

end;

end;

end;

tmpOK.Name:=s;

tmpOK.SignalId:=e0CI;

tmpOKList.Add(tmpOK);

t1:=SlotNumb;

t2:=ChanelNumb;

end

else //если плата VDN

if VDNEn then

begin

tmpOK:=TTTP.Create;

inc(Buf11);

tmpOK.Id:=i+k*32+32;

tmpOK.CPack_id:=GetID(2,0,t1);

s:='VDN'+IntToStr(t1)+'['+IntToStr(t2)+'].'+IntToStr(buf11);

tmpOK.Name:=s;

tmpOK.SignalId:=e0CI;

tmpOKList.Add(tmpOK);

end;

end;

end;

//-----коммутация-------------

tmpFile.LoadFromFile(InitPath+PathIP+'\switch.cfg');

tmpFile.Position:=$16; //метка на адрес первой конфигурации

tmpFile.Read(buf1,1); //читаем адрес первой конфигурации

tmpFile.Read(buf11,1);

tmpFile.Position:=buf1*256+buf11;

for i:=0 to 255 do //загрузка таблицы коммутации

begin

tmpFile.Read(buf1,1);

if buf1=$10 then //в таблице недопустимое значение - возникает, когда участник в конференции

begin

TableSink[i]:=0; //заводим его на 0

tmpFile.Position:=tmpFile.Position+1;

end

else

begin

tmpFile.Read(buf11,1);

TableSink[i]:=PortNormalise(buf1)*32+buf11;

end;

if (TableSink[i]=31) or (TableSink[i]=i) then TableSink[i]:=0; //если нет связи или заведен на себя

end;

tmpFile.Destroy;

for i:=32 to 255 do //избавляемся от ЦОРов

if (TableSink[i]>0) and (TableSink[i]<32)

then TableSink[i]:=TableSink[TableSink[i]];

Sink:='';

Source:='';

for i:=32 to 255 do

if TableSink[i]<>0 then

begin

Include(Sink,i);

Include(Source,TableSink[i]);

TableSource[TableSink[i]]:=i;

end;

TTPindex:=0;

for i:=0 to tmpOKList.Count-1 do

begin

tmpID:=TTTP(tmpOKList[i]).ID;

if (tmpID in Sink) and (tmpID in Source) then

begin

dec(TTPindex);

tmpTTPBid:=TTTPBid.Create;

with tmpTTPBid do begin

TypeObj:=4;

Name:=TTTP(tmpOKList[i]).Name+'_bid';

ID:=GetID(4,0,tmpID-32);

TTPSource_ID:=GetID(5,0,tmpID-32);

TTPSink_ID:=GetID(6,0,tmpID-32);

end;

OKList.Add(tmpTTPBid);

end;

if (tmpID in Source) then

begin

inc(TTPindex);

tmpTTPSource:=TTTPSource.Create;

with tmpTTPSource do begin

TypeObj:=5;

ID:=GetID(5,0,tmpID-32);

Name:=TTTP(tmpOKList[i]).Name;

tp_id:=GetSource(TableSource[tmpID]);

CPack_id:=TTTP(tmpOKList[i]).CPack_id;

SignalID:=TTTP(tmpOKList[i]).SignalID;

end;

OKList.Add(tmpTTPSource);

end;

if (tmpID in Sink) then

begin

inc(TTPindex);

tmpTTPSink:=TTTPSink.Create;

with tmpTTPSink do begin

TypeObj:=6;

ID:=GetID(6,0,tmpID-32);

Name:=TTTP(tmpOKList[i]).Name;

tp_id:=GetSink(TableSink[tmpID]);

CPack_id:=TTTP(tmpOKList[i]).CPack_id;

SignalID:=TTTP(tmpOKList[i]).SignalID;

end;

OKList.Add(tmpTTPSink);

end;

end;

tmpAG:=TAG.Create;

tmpAG.ID:=GetID(3,0,0);

tmpAG.TypeObj:=3;

tmpAG.numTTPs:=TTPindex;

AGList.Add(tmpAG);

if GPEnabled then //если задействована шина GP

k:=5

else

k:=6;

TTPindex:=0;

LinkEndindex:=0;

//---------------------------------

for i:=1 to k do

begin

b1:=false;

b2:=false;

for j:=0 to 31 do

begin

tmpID:=256-i*32+j;

if (tmpID in Source) then b2:=true;

if (tmpID in Sink) then b1:=true;

end;

if b1 and b2 then //если порт двунаправленный

begin

inc(TTPindex);

tmpTTPBid:=TTTPBid.Create;

with tmpTTPBid do begin

Name:=E1Name[i]+'_bid';

ID:=GetID(4,1,i-1);

TypeObj:=4;

TTPSource_ID:=GetID(5,1,i-1);

TTPSink_ID:=GetID(6,1,i-1);

end;

E1List.Add(tmpTTPBid);

end;

if b1 then

begin

if b1<>b2 then inc(TTPindex);

tmpTTPSource:=TTTPSource.Create;

with tmpTTPSource do begin

TypeObj:=5;

ID:=GetID(5,1,i-1);

Name:=E1Name[i];

LinkEnd_id:=GetID(7,0,i-1);

SignalID:=e1CI;

end;

E1List.Add(tmpTTPSource);

tmpLinkEndSource:=TLinkEndSource.Create;

with tmpLinkEndSource do begin

TypeOBJ:=7;

ID:=GetID(7,0,i-1);

TTP_ID:=GetID(5,1,i-1);

CTPIndex:=0;

for z:=0 to 1 do

for j:=1 to 15 do

begin

tmpCTPSource:=TCTPSource.Create;

with tmpCTPSource do begin

TypeOBJ:=9;

ID:=GetID(9,i-1,j+z*16);

tp_id:=GetSink(TableSink[256-i*32+j+z*16]);

SignalID:=e0CI;

end;

inc(CTPIndex);

CTPList.Add(tmpCTPSource);

end;

numCTPs:=CTPIndex;

end;

LinkEndList.Add(tmpLinkEndSource);

end;

if b2 then

begin

if b1<>b2 then inc(TTPindex);

tmpTTPSink:=TTTPSink.Create;

with tmpTTPSink do begin

TypeObj:=6;

ID:=GetID(6,1,i-1);

Name:=E1Name[i];

LinkEnd_id:=GetID(8,0,i-1);

SignalID:=e1CI;

end;

E1List.Add(tmpTTPSink);

tmpLinkEndSink:=TLinkEndSink.Create;

with tmpLinkEndSink do begin

TypeOBJ:=8;

ID:=GetID(8,0,i-1);

TTP_ID:=GetID(6,1,i-1);

CTPIndex:=0;

for z:=0 to 1 do

for j:=1 to 15 do

begin

tmpCTPSink:=TCTPSink.Create;

with tmpCTPSink do begin

TypeOBJ:=10;

ID:=GetID(10,i-1,j+z*16);

tp_id:=GetSource(TableSource[256-i*32+j+z*16]);

SignalID:=e0CI;

end;

inc(CTPIndex);

CTPList.Add(tmpCTPSink);

end;

numCTPs:=CTPIndex;

end;

LinkEndList.Add(tmpLinkEndSink);

end;

end;

tmpAG:=TAG.Create;

tmpAG.ID:=GetID(3,0,1);

tmpAG.TypeObj:=3;

tmpAG.numTTPs:=TTPindex;

AGList.Add(tmpAG);

tmpNE.numLinkEnds:=LinkEndList.Count;

NEList.Add(tmpNE);

//-------конец загрузки-----------------

tmpOKList.Clear;

tmpOKList.Free;

LoadVTK:=0;

end;

//-------------------------------------------------------------------------

Procedure GateInit(idGate:word; Path:PChar; var PathList:TStringList); export; stdcall;

//инициализация шлюза

var sr:TSearchRec;

ires:integer;

Function VTKExists(pathvtk: string):boolean;

//поиск конфигурации VTK

begin

if FileExists(Pathvtk+'\vtk.cfg') and FileExists(Pathvtk+'\switch.cfg') then

Result:=true

else

Result:=false;

end;

Аunction PathIsIP(pathvtk: string):boolean;

const digit = ['0'..'9'];

var i,j:byte;

begin

Result:=true;

if Length(pathvtk)<>15 then //если длина не соответствует IP-адресу

begin

Result:=false;

exit;

end;

for i:=1 to 3 do

if pathvtk[i*4]<>'.' then Result:=false; //если точки в нужном месте

for i:=0 to 3 do //цифры на нужных позициях

for j:=1 to 3 do

if (pathvtk[i*4+j] in digit) = false then

begin

Result:=false;

exit;

end;

for i:=0 to 3 do //числа не более 255

if StrToInt(copy(pathvtk,i*4+1,3))>255 then

Result:=false;

end;

begin

GateID:=idGate;

InitPath:=Path+'\';

PathList.Clear;

VTKList.Clear;

ires:=FindFirst(InitPath+'*',faDirectory,sr);

while ires=0 do

begin

if (sr.name<>'.') and (sr.name<>'..') and (sr.attr and $10 <>0) then

if VTKExists(InitPath+sr.name) and PathIsIP(sr.name) then

begin

VTKList.Add(sr.name);

PathList.Add(sr.name);

end;

ires:=FindNext(sr);

end;

FindClose(sr);

end;

//-------------------------------------------------------------------------

Function GetNEData(index: LongInt; var List: TList):byte; export; stdcall;

var i,j,CTPIndex:integer;

begin

if (index > VTKList.Count) or (index <= 0) then

begin

Result:=1;

Exit;

end;

List.Clear;

Result:=LoadVTK(VTKList.strings[index-1]);

List.Add(NEList[0]);

for i:=1 to CPackList.Count do

List.Add(CPackList[i-1]);

List.Add(AGList[0]);

for i:=0 to OKList.Count-1 do

List.Add(OKList[i]);

List.Add(AGList[1]);

for i:=0 to E1List.Count-1 do

List.Add(E1List[i]);

CTPIndex:=0;

for i:=0 to LinkEndList.Count-1 do

begin

List.Add(LinkEndList[i]);

for j:=1 to TLinkEnd(LinkEndList[i]).numCTPs do

begin

List.Add(CTPList[CTPIndex]);

inc(CTPIndex);

end;

end;

end;

//-------------------------------------------------------------------------

Procedure GateClose; export; stdcall;

begin

VTKList.Clear;

end;

//-------------------------------------------------------------------------

Function GetGateInfo:PChar; export; stdcall;

begin

Result:='Gate VTK-12 v1.1';

end;

//-------------------------------------------------------------------------

procedure DLLProcService(Reason: Integer);

begin

if Reason = DLL_PROCESS_DETACH then

begin

VTKList.Free;

NEList.Free;

CTPList.Free;

CPackList.Free;

LinkEndList.Free;

OKList.Free;

E1List.Free;

AGList.Free;

end;

end;

//-------------------------------------------------------------------------

exports

GetGateInfo,

GateInit,

GetNEData,

GateClose;

begin

DLLProc := @DLLProcService;

GateID:=0;

NEList:=TList.Create;

CPackList:=TList.Create;

AGList:=TList.Create;

OKList:=TList.Create;

E1List:=TList.Create;

LinkEndList:=TList.Create;

CTPList:=TList.Create;

VTKList:=TStringList.Create;

end.

Приложение 5

Листинг тестирующего приложения

unit unittest;

interface

uses

Windows, SysUtils, Classes, StdCtrls, Controls, Forms,

shlusobj, ExtCtrls, FileCtrl;

type

TFormMain = class(TForm)

Edit: TEdit;

DirectoryListBox1: TDirectoryListBox;

MemoCfg: TMemo;

ButtonScan: TButton;

DriveComboBox1: TDriveComboBox;

ListBoxIP: TListBox;

ButtonView: TButton;

MemoUnit: TMemo;

procedure ButtonScanClick(Sender: TObject);

procedure DriveComboBox1Change(Sender: TObject);

procedure ButtonViewClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormMain: TFormMain;

implementation

{$R *.DFM}

//описание интерфейсных функцию шлюза

Function GetGateInfo:PChar; stdcall; external 'gate.dll';

Function GetNEData(index: LongInt; var List: TList):Byte; stdcall; external 'gate.dll';

Procedure GateInit(idGate:word; Path:PChar; var NEList:TStringList); stdcall; external 'gate.dll';

Procedure GateClose; stdcall; external 'gate.dll';

//-------------------------------------------------------------------------

procedure TFormMain.FormCreate(Sender: TObject);

begin

MemoUnit.Lines.Add('Подключенные модули:');

MemoUnit.Lines.Add(' gate.dll - '+GetGateInfo);

end;

//-------------------------------------------------------------------------

procedure TFormMain.ButtonScanClick(Sender: TObject);

var i:longword;

s:string;

tmpList:TStringList;

begin

Edit.Text:='Ждите';

Edit.Update;

s:=DirectoryListBox1.Directory;

if s[length(s)]='\' then s:=copy(s,1,Length(s)-1);

tmpList:=TStringList.Create;

GateInit(1,PChar(s),tmpList);

Edit.Text:='Количество конфигураций: '+IntToStr(tmpList.Count);

ListBoxIP.Items.Clear;

for i:=1 to tmpList.Count do

ListBoxIP.Items.Add(tmpList.strings[i-1]);

end;

//-------------------------------------------------------------------------

procedure Encode(List:TList);

procedure AddMemo(s:string);

begin

FormMain.MemoCfg.Lines.Add(s);

end;

var i:integer;

s:string;

tmpNE:TNE;

tmpCPack:TCPack;

tmpAG: TAG;

tmpTTPBid:TTTPBid;

tmpTTPSink:TTTPSink;

tmpTTPSource:TTTPSource;

tmpLinkEndSource:TLinkEndSource;

tmpLinkEndSink:TLinkEndSink;

tmpCTPSource:TCTPSource;

tmpCTPSink:TCTPSink;

begin

if List.Count=0 then exit;

FormMain.MemoCfg.Visible:=false;

FormMain.MemoCfg.Lines.Clear;

for i:=0 to List.Count-1 do

begin

case TTop(List[i]).TypeOBJ of

cNE:

begin

tmpNE:=List[i];

AddMemo('NE ID:'+IntToStr(tmpNE.ID)+'; Type:'+tmpNE.TypeNE+'; Name:'+tmpNE.Name+'; Packs:'+IntToStr(tmpNE.numCPacks)+'; AG:'+IntToStr (tmpNE.numAGs)+'; LinkEnd:'+IntToStr(tmpNE.numLinkEnds));

end;

cCPack:

begin

tmpCPack:=List[i];

AddMemo(' CPack ID:'+IntToStr(tmpCPack.ID)+'; Type:'+tmpCPack. TypecPack);

end;

cAG:

begin

tmpAG:=List[i];

AddMemo(' AG ID:'+IntToStr(tmpAG.ID)+'; TTP Count:'+IntToStr (tmpAG.numTTPs));

end;

cTTPBid:

begin

tmpTTPBid:=List[i];

AddMemo(' TTPBid ID:'+IntToStr(tmpTTPBid.ID)+'; Name:'+tmpTTPBid. Name+'; TTPSource_ID:'+IntToStr(tmpTTPBid.TTPSource_ID)+'; TTPSink_ID:' +IntToStr(tmpTTPBid.TTPSink_ID));

end;

cTTPSource:

begin

tmpTTPSource:=List[i];

case tmpTTPSource.SignalID of

e0CI: s:='e0CI';

e1CI: s:='e1CI';

end;

AddMemo(' TTPSource ID:'+IntToStr(tmpTTPSource.ID)+'; Name:'+ tmpTTPSource.Name+'; TP_ID:'+IntToStr(tmpTTPSource.tp_id)+'; CPack_ID:'+ IntToStr(tmpTTPSource.cPack_id)+'; LE_ID:'+IntToStr(tmpTTPSource.linkend_id)+'; Signal:'+s);

end;

cTTPSink:

begin

tmpTTPSink:=List[i];

case tmpTTPSink.SignalID of

e0CI: s:='e0CI';

e1CI: s:='e1CI';

end;

AddMemo(' TTPSink ID:'+IntToStr(tmpTTPSink.ID)+'; Name:'+tmpTTPSink.Name+'; TP_ID:'+IntToStr(tmpTTPSink.tp_id)+'; CPack_ID:'+IntToStr(tmpTTPSink.cPack_id)+'; LE_ID:'+IntToStr(tmpTTPSink.linkend_id)+'; Signal:'+s);

end;

cLinkEndSource:

begin

tmpLinkEndSource:=List[i];

AddMemo(' LinkEndSource ID:'+IntToStr(tmpLinkEndSource.ID)+'; TP_ID:'+IntToStr(tmpLinkEndSource.TTP_id)+'; CTP Count:'+IntToStr (tmpLinkEndSource.numCTPs));

end;

cLinkEndSink:

begin

tmpLinkEndSink:=List[i];

AddMemo(' LinkEndSink ID:'+IntToStr(tmpLinkEndSink.ID)+'; TP_ID:'+IntToStr(tmpLinkEndSink.TTP_id)+'; CTP Count:'+IntToStr (tmpLinkEndSink.numCTPs));

end;

cCTPSource:

begin

tmpCTPSource:=List[i];

case tmpCTPSource.SignalID of

e0CI: s:='e0CI';

e1CI: s:='e1CI';

end;

AddMemo(' CTPSource ID:'+IntToStr(tmpCTPSource.ID)+'; TP_ID:'+IntToStr(tmpCTPSource.tp_id)+'; CPack_ID:'+IntToStr (tmpCTPSource.cPack_id)+'; Signal:'+s);

end;

cCTPSink:

begin

tmpCTPSink:=List[i];

case tmpCTPSink.SignalID of

e0CI: s:='e0CI';

e1CI: s:='e1CI';

end;

AddMemo(' CTPSink ID:'+IntToStr(tmpCTPSink.ID)+'; TP_ID:'+IntToStr (tmpCTPSink.tp_id)+';CPack_ID:'+IntToStr(tmpCTPSink.cPack_id)+'; Signal:'+s);

end;

end;

end;

FormMain.MemoCfg.Visible:=true;

end;

//-------------------------------------------------------------------------

procedure TFormMain.ButtonViewClick(Sender: TObject);

var List:TList;

i:integer;

begin

List:=TList.Create;

i:=GetNEData(ListBoxIP.ItemIndex+1,List);

if i=0 then

Encode(List);

Edit.Text:='Код ошибки: '+IntToStr(i);

List.Clear;

List.Free;

end;

end.

Размещено на Allbest.ru


Подобные документы

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

    дипломная работа [1,3 M], добавлен 28.01.2014

  • Интерфейс системы онлайн-мониторинга стационарного аппарата. Интерфейс автоматизированного рабочего места мониторинга АПБ Московского метрополитена. Архитектура системы ProView, основные сферы применения. Структура графического интерфейса пользователя.

    курсовая работа [1,8 M], добавлен 21.03.2016

  • Краткая история развития СУБД ORACLE, основные понятия и определения, архитектура. Принципы работы с СУБД ORACLE. Разработка баз данных, средства и технологии их реализации; возможности процедурного языка PL/SQL. Приемы администрирования СУБД ORACLE.

    презентация [609,2 K], добавлен 14.02.2014

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

    дипломная работа [1,9 M], добавлен 12.03.2013

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

    дипломная работа [1,9 M], добавлен 21.01.2015

  • Анализ и практическая реализация использования администрирования и мониторинга сети на предприятии. Процесс создания карты сети в программе LANState. Сетевые программы для сисадминов, программы мониторинга сети. Описание локальной вычислительной сети.

    курсовая работа [3,6 M], добавлен 15.02.2017

  • Способы мониторинга качества данных. Формирование функциональных требований к системе мониторинга консистентности данных. Документирование требований к системе мониторинга консистентности данных. Написание скриптов проверок для системы мониторинга.

    дипломная работа [387,3 K], добавлен 26.08.2017

  • Задачи администрирования автоматизированных систем. Характеристика автоматизированной системы "Следственный комитет". Проблемы администрирования подсистемы Public Relation. Варианты зеркалирования данных. Обеспечение защиты сервера и журнал регистрации.

    курсовая работа [2,3 M], добавлен 27.10.2012

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

    курсовая работа [3,5 M], добавлен 28.08.2012

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

    курсовая работа [1,1 M], добавлен 26.10.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.