Разработка шлюза аппаратуры ВТК-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