Реферат: Разработка программы- тренажера Управление электросетями

/>/>/>/> 

/>Содержание

ВВЕДЕНИЕ… 7

Глава1. Анализ предметной области… 8

1.1. Существующие программные комплексы… 8

1.2. Постановка задач на проектирование. 12

Глава2. Проектирование программного комплекса. 15

2.1. Разработка структурной схемы… 16

2.2. Разработка функциональной схемы… 16

2.2. 1. Блок управления схемой… 20

2.2. 2. Блок анализа текущих переключений… 21

2.2. 3. Интерпретатор сценариев. 22

2.2. 4. Блок результатов. 23

Глава3. Программная реализация проекта. 24

3.1. Операционная система. 24

3.2. Выбор среды программирования. 24

3.3. Функционирование программы… 28

3.4. Входная информация. 31

3.5. Постоянная  информация. 31

3.6. Выходная информация. 32

3.7. Инструкция для пользователя. 33

ЗАКЛЮЧЕНИЕ… 35

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

ПриложениеА. Сценарии решения задач. 37

ПриложениеБ. Листинг основного модуля программы… 43


ВВЕДЕНИЕ

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

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

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


/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Глава 1. Анализ предметной области и постановка задач на проектирование

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

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

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

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

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

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

1.1. />/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Существующие программные комплексы

Тренажер оперативных переключений ОПТИМЭС" –Оперативно-Переключательный Тренажер с Интеллектуальной Моделью ЭлектрическойСети

Тренажер ОПТИМЭС работает в операционных средахWINDOWS 3.1, WINDOWS 95 и WINDOWS 98 и может эксплуатироваться на любомкомпьютере, на котором установлена какая-либо из них. Программный комплекстренажера включает 3 функциональные компоненты:

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

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

Компонента Тренировка реализует выполнениетренируемым операций по схеме с контролем их правилами переключений. Практикапоказывает, что освоение специалистом по переключениям программы Тренировкатребует не более 15 — 20 минут, если он знаком с общими приемами работы подWINDOWS.

2. Тренажер оперативных переключений  КОРВИН

(КОммутационно-Режимный тренажер для WINdows),включающая расчет установившегося режима с автоматическим преобразованиемрасчетной схемы при любых коммутациях [2]. Расчет установившегося режимапроизводится модулем КУРС разработки ЦДУ. Результаты расчета — перетокиактивной и реактивной мощности и ток, а также напряжения в узлах, — контролируются на нарушения заданных режимных пределов по ветвям и узлам иотображаются непосредственно на схеме и в форме таблиц. Поддерживаетсяразделение схемы на любое число изолированных районов. Подготовка исходныхданных расчетной схемы максимально автоматизирована. Функциональная компонентаСервер потокораспределений, входящая в состав тренажера КОРВИН, содержит:

— функции автоматического построения графа узлов иветвей расчетной схемы путем стягивания графа коммутационной модели;

— редактор исходных значений электрическихпараметров для расчета и режимных пределов по узлам и ветвям;

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

2. Тренажер оперативных переключений  КОРВИН 3 – трехуровневый тренажер оперативных переключений с расчетом потокораспределения и расширенноймоделью РЗА. Верхний уровень модели в тренажере «КОРВИН-3» включаетсхему энергообъектов и соединяющих их ВЛ. Число энергообъектов в модели однойэлектросети — до 150. Средний уровень модели реализует схему соединенийпервичных цепей и логические ограничения на коммутации в них. На этом уровнекаждый энергообъект имеет свою схему, которая посредством линий электропередачина верхнем уровне модели соединяется со схемами других энергообъектов. Схемаодного энергообъекта может входить одновременно в несколько схем электросетей,охватывающих большую или меньшую территорию. Промежуточное положение междуверхним и средним уровнями занимает схема замещения для расчета установившегосярежима. Нижний уровень воспроизводит состояния устройств РЗА и правила ихпереключения с учетом положения коммутационных аппаратов. С каждым устройствомпервичных цепей связывается набор устройств РЗА.

Однако,все рассмотренные системы имеют общие недостатки:

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

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

  Достаточновысокие требования к системе (объем оперативной памяти и размер жесткогодиска).

   Оченьвысокая цена (как правило, она составляет несколько тысяч долларов).

  Несовместимость версий одной и той же программы и форматов данных.


/>1. 2. Постановка задач напроектирование

Главное направление деятельности ЦЭС – обеспечениеэлектроэнергией производств и цехов ОАО «Северсталь». Получая электрическуюэнергию от системы по воздушным линиям напряжением 110, 220 кВ и преобразуя наглавных понизительных подстанциях (ГПП) до уровня 35, 10 и 6 кВ, цех электроснабженияпо воздушным и кабельным линиям  распределяет ее потребителям. В настоящеевремя девять ГПП обеспечивают ОАО «Северсталь» и одна (ГПП-9) – город. От ТЭЦ-1и ТЭЦ-2 ОАО «Северсталь» электроэнергия непосредственно передается напряжением10 кВ по кабельным линиям.

Для управления схемой электроснабжения ОАО «Северсталь»в ЦЭС организовано круглосуточное дежурство оперативного персонала, действия которого подчинены диспетчеру цеха.

Система оперативного управления выполняет следующиезадачи:

ведение требуемого режима работы, в том числезаданного энергосистемой;

производство переключений в электроустановках;

— ликвидация аварийных нарушений и восстановлениетребуемого режима энергопотребления;

— подготовка к производству ремонтных работ в электроустановках.

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

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

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

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

Проведение тренировок в самих системахэлектроснабжения нежелательно по ряду причин:

·    перебои в подаче электроэнергии

·    возможность создания аварийных ситуаций

·    повышенная опасность поражения электрическим током и др.

Компьютерный тренажер устраняет эти сложности.

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

Тренажер должен обладать следующими функциями:

-     тpениpовка;

-     проведение экзамена;

-     формирование протокола переключений;

-     создание сценария тренировки;

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

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

По завершении выполнения поставленных условийзадачи должна выставляться оценка и составляться пpотокол переключений.

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

         — имя и фоpмулиpовку задачи длятpениpовки;

         — исходное состояние объекта

         — эталонный путь pешения задачи;

         — конечное состояние схемы сети по даннойзадаче.

/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Таким образом, разрабатываемая система должна отвечатьследующим требованиям:

Обеспечитьинтуитивно-понятный графический интерфейс, как для инструктора, так и длятренируемого;

Внедритьмеханизм производства оперативных переключений

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

Обеспечитьпроведение тренировок и сдачу экзамена с протоколированием оценок;

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


Глава2. Проектирование />/>/>/>/>/>/>/>/>программногокомплекса

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

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

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

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

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


/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>2.1.Разработка структурной схемы

/>

Рис. 2.1. Структурная схема программы-тренажера

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

Блок,обеспечивающий работу пользователя со схемой;

Блокработы с файлами сценариев.

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

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

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

“Сценарий” – блок,предназначенный для формирования задач инструктором эталоннойпоследовательности оперативных переключений инструктором.


2.2. Разработка функциональной схемы

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

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

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

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

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

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

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

Блок управления схемой;

Блок анализа текущих переключений;

Блок результатов;

Интерпретатор сценариев;

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

2.   Блок анализатекущих переключений  предназначен для определения правильности производстватекущих переключений и формирования протокола переключений.

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

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



/>/>/>/>/>/>/>/>/> 

/>2. 2. 1. Блок управления схемой

Для реализации функций блока управления схемойнеобходимо:

-     установить коммутационные аппараты в положение соответствующеевыбранному режиму;

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

Алгоритм, реализующий функции блока управлениясхемой, представлен на рис. 3.3.1.

/>

Рис. 3.3.1.Алгоритм обработки оперативных переключений

/>/>/>/>/> 
/>/>/>/>2. 2. 2. Блок анализа текущихпереключений

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

/>

Рис 2.2.2Алгоритм анализа текущих переключений/>/>


/>/>/>/>/>/>/>2. 2. 3. Интерпретатор сценариев

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

/>

Рис. 2.2.3.Алгоритм загрузки сценариев.


/>/>/>/>/>/>/>/>/>2.2. 4. Блок результатов

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

/>

Рис 2.2.4.  Алгоритм определения оценки

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

/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Глава 3. Программная реализация проекта/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>3. 1. Операционная система

Программа  разрабатывалась под управлениемоперационной системы Windows 95. Операционная система(ОС) является неотъемлемой частью ПЭВМ. ОС обеспечивает управление всеми аппаратнымикомпонентами и поддержку работы программ пользователя, предоставляя ему возможностьобщего управления машиной. Можно выделить ряд преимуществ для разработки программного обеспечения под управлением ОС Windows 95:

·    Графический пользовательский интерфейс;

·    Независимость от внешних устройств;

·    Доступность всего объема оперативной памяти;

·    Поддержка масштабируемых шрифтов.

Среди недостатков можно отметить:

·    Высокие требования к аппаратному обеспечению;

·    Менее эффективная работа в приложениях, где критический параметр– время по сравнению с ОС MS-DOS.

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

/>/>/>/>/>/>/>/>3. 2. Выборсреды программирования

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

Быстраяразработка приложений (RAD — Rapid Application Development) характерна длянового поколения систем программирования. Первым языком в мире более простого инаглядного интерфейса была среда Visual Basic (VB). Новый стиль взаимодействияс компьютером позволяет разработчику программы наглядно конструироватьпользовательский интерфейс с помощью мыши. Но VB сам по себе не способствуетхорошему проектированию. Этот язык испытывает недостаток в механизмах,обеспечивающих хорошее структурирование, компактность и прозрачность программ.В нем отсутствует строгость объектно ориентированного языка. Delphi — этоследующий шаг в развитии среды RAD, это мощное и удобное средство создания32-битных приложений для Windows 95 и Windows NT.

КонцепцияDelphi была реализована в конце 1994 года, когда вышла первая версия средыразработки. В основу этого программного продукта легли концепцииобъектно-ориентированного программирования на базе языка Object Pascal ивизуального подхода к построению приложений.

Delphiобъединил несколько важнейших технологий:

1. Высокопроизводительный компилятор вмашинный код.

Компилятор,встроенный в Delphi, обеспечивает высокую производительность, необходимую дляпостроения приложений в архитектуре “клиент-сервер”.  Этот компилятор внастоящее время является самым быстрым в мире, его скорость компиляциисоставляет свыше 120 тысяч строк в минуту на компьютере 486DX33. Он предлагаетлегкость разработки и быстрое время проверки готового программного блока. Крометого, Delphi обеспечивает быструю разработку, без необходимости писать вставкина Си или ручного написания кода (хотя это возможно).

2. Объектно-ориентированная модель компонент.

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

3.Визуальное (а, следовательно, и скоростное) построение приложений изпрограммных прототипов.

СредаDelphi включает в себя полный набор визуальных инструментов для скоростнойразработки приложений (RAD — rapid application development), поддерживающейразработку пользовательского интерфейса и подключение к корпоративным базамданных. VCL — библиотека визуальных компонент, включает в себя стандартныеобъекты построения пользовательского интерфейса, объекты управления данными,графические объекты, объекты мультимедиа, диалоги и объекты управления файлами.Delphi 5, в отличие от предыдущих версий,позволяет создавать динамические массивы, длина которых определяется во времявыполнения программы.

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


/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>3. 3.Функционирование программы

1. Программа switchman.exe:

Объем, занимаемый на жестком диске            874кб

Объем оперативной памяти                               3440кб

2. Условия выполнения программы

Операционная среда                                            Windows 95 или выше

Разрешение экрана(рекомендуется)               800X600 pixels

Свободное место надиске (минимум)             895 кБ для запуска и не менее 1 мБ для созданияфайлов сценариев.

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

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

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

/>

Рис 3. 3.Пользовательский интерфейс программы.

Пользовательский интерфейс программы делится на триобласти:

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

Область, на которой отображается схема.

Область управления задачами./>/>/>/>/>/>/>/>/>/>/>/>/>

Алгоритм функционирования основного модуляпрограммы    приведен на рис 3. 4.

/>

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


/>/>/>/>3. 4. Входная информация

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

Таблица1

Формулировка задачи Вывод в ремонт ВЛ 220 кВ «Агломерат 1» Начальное положение коммутационных аппаратов Нормальный режим Конечное положение коммутационных аппаратов Режим № 2 № операции Объект схемы Состояние переключателя Комментарий 01 ABR1 Вывести АВР 1,2 02 CMB1 1 Включить СМВ1 яч.9 03 MBB1 Отключить МВ ввода В1 яч. 5 04 TRZ1 Отключить ТР1 яч. 5 05 SRZ1 Отключить ШР1 яч. 5 06 ABR1 Вывести АВР 3,4 07 CMB1 1 Включить СМВ2 яч.20 08 MBB3 Отключить МВ ввода В3 яч. 25 09 TRZ3 Отключить ТР3 яч. 25 10 SRZ3 Отключить ШР3 яч. 25 11 PBB2 Отключить ВВ 220 кВ яч 12 12 ODT3 Отключить ОД 220 кВ Т3 />/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>3. 5.Постоянная  информация/> <td/> />
            В качестве постоянной информации используется принципиальная схемаучастка электроснабжения, изображенная на рис. 3.5.

Рис.3.5. Однолинейная схема электроснабжения

/>/>/>/>/>/>/>/>3. 6.Выходная информация

Выходные данные — протокол тренировки либо протоколэкзамена.

               

                                   П Р О Т О К О Л   Э К З А М Е Н А

                        -------------------------------------

        Фамилия:Егоров

       Имя: Павел

       Отчество: Николаевич.

        Дата сдачиэкзамена: 27.06.2001 г.

        ЗАДАЧА : Вывод в ремонт ВЛ «Агломерат 1».

       -------------------------------------------------------

           АВР 1,2выведено.

           Ошибка,Включить СМВ 1 яч. 9

                        .           .           .

Оценка:Удовлетворительно


/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>3. 7.Инструкция для пользователя

1. Вхождение в курс и регистрация обучаемого.

1.1.    Запуститефайл Switchman.exe.

1.2.    Послезапуска файла Switchman.exe введите с клавиатурыВаши Фамилию, Имя, Отчество и нажмите кнопку «ОК».

1.3.    Выберитережим работы и задачу согласно п. 2.2. и нажмите кнопку «Начать».

2. Решение задачи.

Решение задачи начинается спредъявления обучаемому схемы п/станции. Опираясь на помощь тренажера,пользователь должен перевести коммутационное оборудование в состояние,сформулированное в названии задачи. Правила работы на компьютере при решениизадач даны в п.п. 2.1. – 2.3.

2.1. Общее правило по работе с коммутационнымоборудованием:

Курсор «мыши» — «стрелка» при подводе к коммутационному аппарату, который можнопереключить должен перейти в мишень — «пальчик».

2.2. Выбор задач из списка.

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

2.3. Производство оперативных переключений

Выберите согласно п. 2.1.выберите нужный объект и нажмите левую клавишу «мыши».

3. Результаты.

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

Протокол переключенийхранится в каталоге Info в файле Report.txt


ЗАКЛЮЧЕНИЕ

В результате можно сделатьследующие выводы:

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

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


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

1. Головинский И.А. Диагностика квалификацииперсонала на тренажере оперативных переключений. — =Вестник ВНИИЭ-99°, М.,«ЭНАС», 1999.

2. Головинский И.А. КОРВИН — тренажер оперативныхпереключений с расчетом потокораспределения. — «Вестник ВНИИЭ-98»,М., «ЭНАС», 1998, с. 127-132.

3. Головинский И.А. Понимание электрических схемкомпьютером. — «Вестник ВНИИЭ-99», М., «ЭНАС», 1999.

4. Коммутационные узлы энергосистем/Под ред. А.В.Шунтова. М.: Энерготомиздат,1997.

5. Культин Н. Delphi 4. Программированиена Object Pascal.BHV, Санкт-Петербург, 1999. – 480 с., ил.

6. Дэн Оузьер и др. Delphi3. Освой самостоятельно. М.: “Издательство БИНОМ”, 1998 г. – 560 с.: ил.

7. Бондарев В. М., Рублинецкий В. И., Качко Е. Г.Основы программирования. Харьков: Фолио; Ростов н/Д: Феникс, 1998  – 368 с.

8. Справочная система Delphi

9. Фаронов В. В. Delphi 4. Учебный курс. М.:«Нолидж», 1999 – 464 с.: ил.

10. Дарахвелидзе П. Г., Марков Е. П., Котенок О. А.Программирование в Delphi 5. – СПб.: БХВ –Санкт-Петербург, 2000. – 784 с.: ил.


ПриложениеА. Сценарии решения задач

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

·    Режим№1. Нормальный режим.

·    Режим№2. Выведена в ремонт ВЛ «Агломерат 2».

·    Режим№3. Выведена в ремонт ВЛ «Агломерат 1».

·    Режим№4. Выведен в ремонт Т1 63 мВа.

·    Режим№5. Выведен в ремонт Т2 63 мВа.

·    Режим№6. Выведен в ремонт Т3 100 мВа.

/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Нормальныйрежим.

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

/> <td/> />
Рис. 6.1. Нормальный режимработы электроустановки
/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Режим№2. Выведена в ремонт ВЛ 220 кВ «Агломерат 1»

          Для перевода электроустановки врежим №2 и, обратно, в нормальный режим работы, пользователь должен выполнитьоперации согласно последовательности, указанной в таблице 3.

Таблица 3

Порядок перехода

с режима №1 на режим №2

Порядок перехода

с режима №2 на режим №1

1 Вывести АВР 1,2 Включить ОД3 220 кВ Т3 2 Включить СМВ1 яч.9 Включить ВВ 220 кВ яч 12 3 Отключить МВ ввода В1 яч. 5 Включить ШР1 яч 5 4 Отключить ТР1 яч. 5 Включить ТР1 яч 5 5 Отключить ШР1 яч. 5 Включить МВ ввода В1 яч 5 6 Вывести АВР 3,4 Отключить СМВ1 яч.9 7 Включить СМВ2 яч.20 Ввести АВР 1,2 8 Отключить МВ ввода В3 яч. 25 Включить ШР3 яч 25 9 Отключить ТР3 яч. 25 Включить ТР3 яч 25 10 Отключить ШР3 яч. 25 Включить МВ ввода В3 яч 25 11 Отключить ВВ 220 кВ яч 12 Отключить СМВ2 яч.20 12 Отключить ОД 220 кВ Т3 Ввести АВР 3,4 /> <td/> />
          Состояниекоммутационных аппаратов должно соответствовать схеме, приведенной на рис.6.2.

Рис. 6.2.Выведена в ремонт ВЛ 220 кВ «Агломерат 1»


/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Режим№3. Выведена в ремонт ВЛ 220 кВ «Агломерат 2»

          Для перевода электроустановки врежим №3 и, обратно, в нормальный режим работы, пользователь должен выполнитьоперации, согласно последовательности, указанной в таблице 4.

Таблица 4

Порядок перехода

с режима №1 на режим №3

Порядок перехода

с режима №3 на режим №1

1 Вывести АВР 1,2 Включить ОД1 220 кВ 2 Включить СМВ1 яч.9 Включить ОД2 220 кВ 3 Отключить МВ ввода В2 яч.14 Включить ВВ 220 кВ яч 10 4 Отключить ТР2 яч.14 Включить ТР2 яч.14 5 Отключить ШР2 яч.14 Включить ШР2 яч.14 6 Вывести АВР 3,4 Включить МВ ввода В2 яч.14 7 Включить СМВ2 яч.20 Отключить СМВ1 яч.9 8 Отключить МВ ввода В4 яч.31 Ввести АВР 1,2 9 Отключить ТР4 яч.31 Включить ТР4 яч.31 10 Отключить ШР4 яч.31 Включить ШР4 яч.31 11 Отключить. ВВ 220 кВ яч 10 Включить МВ ввода В4 яч.31 12 Отключить ОД1 220 кВ Отключить СМВ2 яч.20 13 Отключить ОД2 220 кВ Ввести АВР 3,4 /> <td/> />
          Состояниекоммутационных аппаратов должно соответствовать схеме, приведенной на рис.6.3.

Рис. 6.3.Выведена в ремонт ВЛ 220 кВ «Агломерат 2»


/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Режим№4. Выведен в ремонт Т1 63 мВа

          Для перевода электроустановки врежим №4 и, обратно, в нормальный режим работы, пользователь должен выполнитьоперации, согласно последовательности, указанной в таблице 5.

Таблица 5

Порядок перехода

с режима №1 на режим №4

Порядок перехода

с режима №4 на режим №1

1 Вывести АВР 3,4 Вывести АВР 1,2 2 Включить СМВ2 яч. 20 Включить СМВ1 яч. 9 3 Отключить МВ ввода В4 яч. 31 Отключить МВ ввода В2 яч. 14 4 Отключить ТР4 яч. 31 Отключить ВВ 220 кВ яч 10 5 Отключить ШР4 яч. 31 Включить ОД1 220 кВ 6 Вывести АВР 1,2 Включить ВВ 220 кВ яч 10 7 Включить СМВ1 яч. 9 Включить ШР4 яч. 31 8 Отключить МВ ввода В2 яч. 14 Включить ТР4 яч. 31 9 Отключить. ВВ 220 кВ яч 10 Включить МВ ввода В4 яч. 31 10 Отключить ОД1 220 кВ Отключить СМВ2 яч. 20 11 Включить. ВВ 220 кВ яч 10 Ввести АВР 3,4 12 Включить МВ ввода В2 яч. 14 Включить МВ ввода В2 яч. 14 13 Отключить СМВ1 яч. 9 Отключить СМВ1 яч. 9 14 Ввести АВР 1,2 Ввести АВР 1,2 /> <td/> />
          Состояниекоммутационных аппаратов должно соответствовать схеме, приведенной на рис.6.4.

Рис.6.4. Выведен в ремонт Т1 63 мВа


/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Режим№5. Выведен в ремонт Т2 63 мВа

          Для перевода электроустановки врежим №5 и, обратно, в нормальный режим работы, пользователь должен выполнитьоперации, согласно последовательности, указанной в таблице 6.

Таблица 6

Порядок перехода

с режима №1 на режим №5

Порядок перехода

с режима №5 на режим №1

1 Вывести АВР 1,2 Вывести АВР 3,4 2 Включить СМВ1 яч. 9 Включить СМВ2 яч. 20 3 Отключить МВ ввода В2 яч. 14 Отключить МВ ввода В4 яч. 31 4 Отключить ТР2 яч. 14 Отключить ВВ 220 кВ яч 10 5 Отключить ШР2 яч. 14 Включить ОД2 220 кВ 6 Вывести АВР 3,4 Включить ВВ 220 кВ яч 10 7 Включить СМВ2 яч. 20 Включить ШР2 яч. 14 8 Отключить МВ ввода В4 яч. 31 Включить ТР2 яч. 14 9 Отключить. ВВ 220 кВ яч 10 Включить МВ ввода В2 яч. 14 10 Отключить ОД2 220 кВ Отключить СМВ1 яч. 9 11 Включить. ВВ 220 кВ яч 10 Ввести АВР С1,2 12 Включить МВ ввода В4 яч. 31 Включить МВ ввода В4 яч. 31 13 Отключить СМВ2 яч. 20 Отключить СМВ2 яч. 20 14 Ввести АВР 3,4 Ввести АВР 3,4 /> <td/> />
          Состояниекоммутационных аппаратов должно соответствовать схеме, приведенной на рис.6.5.

Рис. 6.5.Выведен в ремонт Т2 63 мВа

/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Режим№6. Выведен в ремонт Т3 100 мВа

            Для перевода электроустановки в режим№6 и, обратно, в нормальный режим работы, пользователь должен выполнитьоперации, согласно последовательности, указанной в таблице 7.

Таблица 7

Порядок перехода

с режима №1 на режим №6

Порядок перехода

С режима №6 на режим №1

1 Вывести АВР 1,2 Отключить ВВ 220 кВ яч 12 РПП 2 2 Включить СМВ1 яч. 9 Включить ОД3 220 кВ 3 Отключить МВ ввода В1 яч. 5 Включить ВВ 220 кВ яч 12 РПП 2 4 Вывести АВР 3,4 Включить ШР1 яч 5 5 Включить СМВ2 яч. 20 Включить ТР1 яч 5 6 Отключить МВ ввода В3 яч. 25 Включить МВ ввода В1 яч. 5 7 Отключить. ВВ 220 кВ яч 12 РПП2 Отключить СМВ1 яч. 9 8 Отключить ОД3 220 Кв Ввести АВР 1,2 9 Отключить ТР1 яч 5 Включить ШР3 яч 25 10 Отключить ШР1 яч 5 Включить ТР3 яч 2 11 Отключить ТР3 яч 25 Включить МВ ввода В3 яч. 25 12 Отключить ШР3 яч 25 Отключить СМВ2 яч. 20 13 Включить ВВ-220 кВ яч. 12 РПП2 Ввести АВР 3,4 /> <td/> />
            Состояниекоммутационных аппаратов должно соответствовать схеме, приведенной на рис.6. 6.

Рис. 5.6.Выведен в ремонт Т3 100 мВа

ПриложениеБ. Листинг основного модуля программы

unitMainMenu;

interface

uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

 StdCtrls, ExtCtrls, Gauges, Menus, ComCtrls, User1, Report,

 NewScen, ImgList,Report1;

type

 TForm1 = class(TForm)

   TaskList: TListBox;

   RunBtn: TButton;

   ExtBtn: TButton;

   MainMenu1: TMainMenu;

   Menu1: TMenuItem;

   Menu4: TMenuItem;

   Menu41: TMenuItem;

   Menu5: TMenuItem;

   Bevel1: TBevel;

   StatusBar1: TStatusBar;

   Image1: TImage;

   ODT2: TImage;

   ODT1: TImage;

   BB50: TImage;

   ODT3: TImage;

   PBB2: TImage;

   MBB2: TImage;

   CMB1: TImage;

   MBB1: TImage;

   ABR1: TImage;

   TRZ2: TImage;

   TRZ1: TImage;

   TRZ4: TImage;

   TRZ3: TImage;

   MBB4: TImage;

   CMB2: TImage;

   MBB3: TImage;

   SRZ2: TImage;

   SRZ9: TImage;

   SR10: TImage;

   SRZ1: TImage;

   SRZ4: TImage;

   SR37: TImage;

   SR20: TImage;

   SRZ3: TImage;

   ABR2: TImage;

   ResultBtn: TButton;

   Label1: TLabel;

   HelpBtn: TButton;

   New: TMenuItem;

   N2: TMenuItem;

   Exit: TMenuItem;

   Image2: TImage;

   StaticText1: TStaticText;

   Menu52: TMenuItem;

   Label2: TLabel;

   Menu2: TMenuItem;

   Menu21: TMenuItem;

   Menu22: TMenuItem;

   procedure ExtBtnClick(Sender: TObject);

   procedure TaskListMouseUp(Sender: TObject; Button: TMouseButton;

     Shift: TShiftState; X, Y: Integer);

   procedure FormActivate(Sender: TObject);

   procedure RunBtnClick(Sender: TObject);

   procedure Menu41Click(Sender: TObject);

   procedure MBB1Click(Sender: TObject);

   procedure MBB2Click(Sender: TObject);

   procedure MBB3Click(Sender: TObject);

   procedure MBB4Click(Sender: TObject);

   procedure CMB1Click(Sender: TObject);

   procedure CMB2Click(Sender: TObject);

   procedure BB50Click(Sender: TObject);

   procedure PBB2Click(Sender: TObject);

   procedure TRZ1Click(Sender: TObject);

   procedure TRZ2Click(Sender: TObject);

   procedure TRZ3Click(Sender: TObject);

   procedure TRZ4Click(Sender: TObject);

   procedure SRZ1Click(Sender: TObject);

   procedure SRZ2Click(Sender: TObject);

   procedure SRZ3Click(Sender: TObject);

   procedure SRZ4Click(Sender: TObject);

   procedure SRZ9Click(Sender: TObject);

   procedure SR10Click(Sender: TObject);

   procedure SR20Click(Sender: TObject);

   procedure SR37Click(Sender: TObject);

   procedure ODT1Click(Sender: TObject);

   procedure ODT2Click(Sender: TObject);

   procedure ODT3Click(Sender: TObject);

   procedure ABR1Click(Sender: TObject);

   procedure ABR2Click(Sender: TObject);

   procedure ResultBtnClick(Sender: TObject);

   procedure HelpBtnClick(Sender: TObject);

   procedure NewClick(Sender: TObject);

   procedure Menu52Click(Sender: TObject);

   procedure Menu21Click(Sender: TObject);

   procedure Menu22Click(Sender: TObject);

 private

{Private declarations }

 public

   { Public declarations }

 end;

   TStringList1 = class (TStringList);

   TMyZap=class(TObject)

   FNo:Integer;

   FImage:ShortString;

   FState:Integer;

   FComment:ShortString;

   constructor Create(No:Integer;Image:ShortString;State:Integer;Comment:ShortString);

  end;

var

 Form1: TForm1;

  TaskNumber:Integer;

   WorkMode:Integer;

    List1:TStringList1;

     ActList:TList;

      Prot:TStringList;

       Zap:TMyZap;

        Switch:TImage;

         TaskName:string;

          Error:integer;

           Help:integer;

            Count:Integer;

          F: array [0..24] of boolean;

          E: array [0..24] of boolean;

    implementation

usesResults;

{$R*.DFM}

constructorTMyZap.Create(No:Integer;Image:ShortString;State:Integer;Comment:ShortString);

begin

inheritedCreate;

FNo:=No;

FImage:=Image;

FState:=State;

FComment:=Comment;

end;

procedureSWState(AOwner:TImage;i:integer);

begin

ifF[i]=false then begin

       with AOwner.Canvas do begin

               Pen.Color:=clWhite;

               MoveTo(6,1);

               LineTo(6,17);

               Pen.Width:=2;

               Pen.Color:=clBlack;

               Rectangle(1,1,17,17);

               MoveTo(6,17);

               LineTo(15,1);

               end;

       F[i]:=true;

       end

       else begin

       with AOwner.Canvas do begin

               Pen.Color:=clWhite;

               MoveTo(6,17);

               LineTo(15,1);

               Pen.Width:=2;

               Pen.Color:=clBlack;

               Rectangle(1,1,17,17);

               MoveTo(6,1);

               LineTo(6,17);

               end;

       F[i]:=false;

  end;

end;

procedureABRState(AOwner:TImage;i:integer);

begin

ifF[i]=False then begin

       with AOwner.Canvas do begin

               Brush.Color:=clWhite;

               FloodFill(8,8,clBlack,fsSurface);

               Pen.Width:=2;

               Pen.Color:=clBlack;

               MoveTo(1,15);

               LineTo(8,1);

               MoveTo(8,1);

               LineTo(17,15);

               MoveTo(17,15);

               LineTo(1,15);

       end;

       F[i]:=True;

       end

  else begin

       with AOwner.Canvas do begin

            FloodFill(8,8,clWhite,fsSurface);

            Pen.Width:=2;

            Pen.Color:=clBlack;

               MoveTo(1,15);

               LineTo(8,1);

               MoveTo(8,1);

               LineTo(17,15);

               MoveTo(17,15);

               LineTo(1,15);

            Brush.Color:=clBlack;

            FloodFill(8,8,clBlack,fsBorder);

       end;

       F[i]:=False;

       end;

end;

procedureMVState(AOwner:TImage;i:integer);

begin

ifF[i]=false then begin

       with AOwner.Canvas do begin

               Pen.Color:=clWhite;

               MoveTo(9,6);

               LineTo(9,11);

               Pen.Width:=2;

               Pen.Color:=clBlack;

               Rectangle(1,1,17,17);

               MoveTo(6,8);

               LineTo(11,8);

               end;

       F[i]:=true;

       end

       else begin

       with AOwner.Canvas do begin

               Pen.Color:=clWhite;

               MoveTo(6,8);

               LineTo(11,8);

               Pen.Width:=2;

               Pen.Color:=clBlack;

               Rectangle(1,1,17,17);

               MoveTo(9,6);

               LineTo(9,11);

               end;

       F[i]:=false;

  end;

end;

functionAnalyze(AOwner:TComponent):boolean;

begin

 Zap:=ActList.First;

 if WorkMode=0 then

 if (Zap.FImage=AOwner.Name)

       then begin

       if Zap.FImage<>'0' then ActList.Delete(ActList.IndexOf(ActList.First));

       Result:=true;

       Form1.Label1.Caption:='';

       Prot.Append(Zap.FComment);

       end

         else begin

         Form1.Label1.Caption:='        Ошибка';

         Prot.Append('Ошибка, '+Zap.FComment);

         Error:=Error+1;

         Result:=false;

         end

 else Count:=Count+1;

 Form1.ResultBtn.Visible:=True;

end;

{Считываниеинформации дла решения задач}

procedureRead;

varFil:textfile;

   s:string;

   j:integer;

begin

 for j:=1 to 10 do begin

 s:='Info\'+IntToStr(j)+'.str';

 assign(fil,s);

 reset(fil);

 readln(fil,s);

 Form1.TaskList.Items.Insert(j-1,s);

 end;

end;

procedureReadInfo(Num:integer);

varFil:textfile;

   s,s1:string;

   i,j:integer;

begin

 ActList:=TList.Create;

 s:='Info\'+IntToStr(Num)+'.str';

 assign(fil,s);

 reset(fil);

 readln(fil,s);

 readln(fil,s);

 for i:=0 to 24 do

 if s[i+1]='1' then F[i]:=true

               else F[i]:=false;

 readln(fil,s);

 for i:=0 to 24 do

 if s[i+1]='1' then E[i]:=true

               else E[i]:=false;

 for i:=1 to 15 do begin

 readln(fil,s);

 s1:=s;

 for j:=1 to 7 do s1[j]:=' ';

 ActList.Add(TMyZap.Create(StrToInt(s[1]+s[2]),s[3]+s[4]+s[5]+s[6],StrToInt(s[7]),s1));

 end;

 closefile(fil);

end;

procedureTForm1.FormActivate(Sender: TObject);

begin

       Form1.ResultBtn.Visible:=False;

       Form1.HelpBtn.Visible:=False;

       Form1.Label2.Visible:=false;

       Image1.Visible:=False;

       Image2.Visible:=False;

       StaticText1.Visible:=False;

       Label2.Visible:=False;

       StatusBar1.Panels[2].Text:='Выберитережим работы и задачу.';

        StatusBar1.Panels[3].Text:='Режим работы: ';

       TaskList.ItemIndex:=0;

       TaskNumber:=0;

       Read;

       User1.User.ShowModal;

end;

procedureTForm1.ExtBtnClick(Sender: TObject);

begin

 ifProt<>nil then Prot.Clear;

 ifActList<>nil then ActList.Clear;

 ifProt<>nil then Prot.Clear;

 Application.Terminate;

end;

procedureTForm1.TaskListMouseUp(Sender: TObject; Button: TMouseButton;

 Shift: TShiftState; X, Y: Integer);

varPoint:TPoint;

begin

       Point.X:=Y;Point.Y:=Y;

       TaskNumber:=TaskList.ItemAtPos(Point,true);

       StatusBar1.Panels[2].Text:=Form1.TaskList.Items.Strings[TaskNumber];

       StatusBar1.Panels[1].Text:='№'+IntToStr(1+TaskList.ItemAtPos(Point,true));

   end;

procedureTForm1.RunBtnClick(Sender: TObject);

vars:string;

begin

       TaskList.Visible:=False;

       if WorkMode=0 then begin

       StatusBar1.Panels[3].Text:='Режим работы: Тренировка';

       Form1.HelpBtn.Visible:=true;

       Form1.Label1.Visible:=true;

       Form1.Label2.Visible:=true;

       ResultBtn.Caption:='Результаты';

       end;

       Image1.Visible:=true;

       Image2.Visible:=true;

       StaticText1.Visible:=true;

       ReadInfo(TaskNumber+1);

       Error:=0;

       Help:=0;

       Form1.Caption:=TaskList.Items[TaskNumber];

       {Начальные условия}

       SWState(ODT2,0);

        SWState(ODT1,1);

       SWState(ODT3,3);

       MVState(MBB1,10);

       MVState(MBB2,7);

       MVState(MBB3,19);

       MVState(MBB4,17);

       MVState(CMB1,8);

       MVState(CMB2,18);

       MVState(PBB2,4);

       MVState(BB50,2);

       SWState(TRZ1,6);

       SWState(TRZ2,5);

       SWState(TRZ3,16);

       SWState(TRZ4,15);

       SWState(SRZ1,14);

       SWState(SRZ2,11);

       SWState(SRZ3,24);

       SWState(SRZ4,20);

       SWState(SRZ9,12);

       SWState(SR10,13);

       SWState(SR20,23);

       SWState(SR37,21);

       ABRState(ABR1,9);

       ABRState(ABR2,22);

       Prot:=TStringList.Create;

       if WorkMode=0 then s:=(' тренировки')

                     else s:=(' экзамена');

       Prot.Append('                                           Протокол'+s);

       Prot.Append('                                    ---------------------------');

       Prot.Append('Фамилия: '+User1.N1);

       Prot.Append('Имя: '+User1.N2);

       Prot.Append('Отчество: '+User1.N3);

       Prot.Append('                    ЗАДАЧА:'+TaskList.Items[TaskNumber]);

       Prot.Append('                 --------------------------------------------');

       if WorkMode=0 then s:=('прохождения тренировки: ')

                     else s:=(' сдачи экзамена: ');

        Prot.Append('Дата '+s+DateToStr(Date));

end;

procedureTForm1.Menu41Click(Sender: TObject);

begin

User.ShowModal;

end;

procedureTForm1.MBB1Click(Sender: TObject);

begin

ifAnalyze(MBB1)=True then MVState(MBB1,10)

                     else MVState(MBB1,10);

ifF[10]=true then

end;

procedureTForm1.MBB2Click(Sender: TObject);

begin

ifAnalyze(MBB2)=True then MVState(MBB2,7)

                     else MVState(MBB2,7);

end;

procedureTForm1.MBB3Click(Sender: TObject);

begin

ifAnalyze(MBB3)=True then MVState(MBB3,19)

                     else MVState(MBB3,19);

end;

procedureTForm1.MBB4Click(Sender: TObject);

begin

ifAnalyze(MBB4)=True then MVState(MBB4,17)

                     else MVState(MBB4,17);

end;

procedureTForm1.CMB1Click(Sender: TObject);

begin

ifAnalyze(CMB1)=True then MVState(CMB1,8)

                     else MVState(CMB1,8);

end;

procedureTForm1.CMB2Click(Sender: TObject);

begin

ifAnalyze(CMB2)=True then MVState(CMB2,18)

                     else MVState(CMB2,18);

end;

procedureTForm1.BB50Click(Sender: TObject);

begin

ifAnalyze(BB50)=True then MVState(BB50,2)

                     else MVState(BB50,2);

end;

procedureTForm1.PBB2Click(Sender: TObject);

begin

ifAnalyze(PBB2)=True then MVState(PBB2,4)

                     else MVState(PBB2,4);

end;

procedureTForm1.TRZ1Click(Sender: TObject);

begin

ifAnalyze(TRZ1)=True then SWState(TRZ1,6)

                     else SWState(TRZ1,6);

end;

procedureTForm1.TRZ2Click(Sender: TObject);

begin

ifAnalyze(TRZ2)=True then SWState(TRZ2,5)

                     else SWState(TRZ2,5);

end;

procedureTForm1.TRZ3Click(Sender: TObject);

begin

ifAnalyze(TRZ3)=True then SWState(TRZ3,16)

                     else SWState(TRZ3,16);

end;

procedureTForm1.TRZ4Click(Sender: TObject);

begin

ifAnalyze(TRZ4)=True then SWState(TRZ4,15)

                     else SWState(TRZ4,15);

end;

procedureTForm1.SRZ1Click(Sender: TObject);

begin

ifAnalyze(SRZ1)=True then SWState(SRZ1,14)

                     else SWState(SRZ1,14);

end;

procedureTForm1.SRZ2Click(Sender: TObject);

begin

ifAnalyze(SRZ2)=True then SWState(SRZ2,11)

                     else SWState(SRZ2,11);

end;

procedureTForm1.SRZ3Click(Sender: TObject);

begin

ifAnalyze(SRZ3)=True then SWState(SRZ3,24)

                     else SWState(SRZ3,24);

end;

procedureTForm1.SRZ4Click(Sender: TObject);

begin

ifAnalyze(SRZ4)=True then SWState(SRZ4,20)

                     else SWState(SRZ4,20);

end;

procedureTForm1.SRZ9Click(Sender: TObject);

begin

ifAnalyze(SRZ9)=True then SWState(SRZ9,12)

                     else SWState(SRZ9,12);

end;

procedureTForm1.SR10Click(Sender: TObject);

begin

ifAnalyze(SR10)=True then SWState(SR10,13)

                     else SWState(SR10,13);

end;

procedureTForm1.SR20Click(Sender: TObject);

begin

ifAnalyze(SR20)=True then SWState(SR20,23)

                     else SWState(SR20,23);

end;

procedureTForm1.SR37Click(Sender: TObject);

begin

ifAnalyze(SR37)=True then SWState(SR37,21)

                     else SWState(SR37,21);

end;

procedureTForm1.ODT1Click(Sender: TObject);

begin

ifAnalyze(ODT1)=True then SWState(ODT1,1)

                     else SWState(ODT1,1);

end;

procedureTForm1.ODT2Click(Sender: TObject);

begin

ifAnalyze(ODT2)=True then SWState(ODT2,0)

                     else SWState(ODT2,0);

end;

procedureTForm1.ODT3Click(Sender: TObject);

begin

ifAnalyze(ODT3)=True then SWState(ODT3,3)

                     else SWState(ODT3,3);

end;

procedureTForm1.ABR1Click(Sender: TObject);

begin

ifAnalyze(ABR1)=True then ABRState(ABR1,9)

                     else ABRState(ABR1,9);

end;

procedureTForm1.ABR2Click(Sender: TObject);

begin

ifAnalyze(ABR2)=True then ABRState(ABR2,22)

                     else ABRState(ABR2,22);

end;

procedureTForm1.ResultBtnClick(Sender: TObject);

vari:integer;

   s:string;

begin

 Error:=0;

 Count:=0;

 if WorkMode=1 then begin

 for i:=0 to 24 do if E[i]=F[i] then Error:=Error+1;

 if Error=0 then s:='Хорошо';

 if Error=1 then s:='Удовлетворительно';

 if Error>2 then s:='Неудовлетворительно';

 Results.Result.Label1.Caption:='Оценка: '+s;

 Prot.Append('Оценка: '+s);

 Results.Result.ShowModal;

 TaskList.Visible:=True;

 end;

 if (WorkMode=0)and(Zap.FNo=0)and(Zap.FImage='0000')and(Zap.FState=0) then begin

       Prot.Append('Количество ошибок: '+IntToStr(Error));

       Prot.Append('Количествообращений к подсказке: '+IntToStr(Help));

        Results.Result.Label1.Caption:='Количество ошибок: '+IntToStr(Error);

       Results.Result.Label2.Caption:='Количество обращений к подсказке: '+IntToStr(Help);

       Results.Result.ShowModal;

       Actlist.Clear;

       TaskList.Visible:=True;

       end;

end;

procedureTForm1.HelpBtnClick(Sender: TObject);

begin

ifStatusBar1.Panels[1].Text='№'

       then

       Label1.Caption:='        Выберите задачу'

       else

       begin

       Zap:=ActList.First;

       Label1.Caption:=Zap.FComment;

       Help:=Help+1;

       end;

end;

procedureTForm1.NewClick(Sender: TObject);

begin

FormScene.Position:=poScreenCenter;

FormScene.ShowModal;

end;

procedureTForm1.Menu52Click(Sender: TObject);

vars:string;

   i:integer;

begin

Report.ReportForm.ProtList.Clear;

ifProt<>nil then begin

fori:=0 to Prot.Count-1 do

Report.ReportForm.ProtList.Items.Append(Prot.Strings[i]);

s:=TimeToStr(Now);

ifFileExists('Info\Report.txt') then Prot.SaveToFile('Info\Report'+s[7]+'.txt')

                                else Prot.SaveToFile('Info\Report.txt');

ReportForm.ShowModal;

end;

end;

procedureTForm1.Menu21Click(Sender: TObject);

begin

       WorkMode:=0;

       StatusBar1.Panels[3].Text:='Режим работы: Тренировка';

       Form1.HelpBtn.Visible:=true;

       Form1.Label1.Visible:=true;

       Form1.Label2.Visible:=true;

       ResultBtn.Caption:='Результаты';

end;

procedureTForm1.Menu22Click(Sender: TObject);

begin

       WorkMode:=1;

       StatusBar1.Panels[3].Text:='Режим работы: Экзамен';

       Form1.HelpBtn.Visible:=false;

       Form1.Label1.Visible:=false;

       Form1.Label2.Visible:=false;

       ResultBtn.Caption:='Готово';

end;

end.

еще рефераты
Еще работы по информатике, программированию