Программный комплекс моделирования релейно-контактных схем

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

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

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

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

6.1 Алгоритмы программы-имитатора

Функция painter(event). Работает следующим образом. В первую очередь происходит объявление переменной dc - теперь она будет давать доступ к отрисовке линий, фигур, текста и тому подобного из этой функции. Осуществляется с помощью библиотеки wxWidgets. Далее, если переменная textdef не является пустой (nil), а изначально она именно такой и является, так как нигде не объявлена, то программа выводит на экран по необходимым координатам сообщение «Сработала защита: Название защиты». Если же никакая защита не сработала, то есть переменная до сих пор пустая, то выводится лишь сообщение «Сработала защита:». Эта переменная переназначается в одной из последующих функций. Далее идут конструкторы линий dc:DrawLine(x, y, x1, y1) - рисуются две главные питающие шины схемы. Так как они необходимы всегда и находятся на одном и том же месте, то им можно задать точные координаты, как в моем примере.

Следующий блок кода отвечает за проверку катушек реле, то есть активированы они или нет. Сначала проверяется, не пуста ли таблица relays. Делается это для того, чтобы избежать ошибок в последующих вычислениях. Если таблица не пуста, то сравниваются id контактов и реле в своих таблицах. Если реле не активны, то и контакты находятся в нормальном состоянии. После этого отображаются сами реле на схеме с помощью нескольких конструкторов dc:DrawLine(x, y, x1, y1). Изначальные координаты берутся из таблицы relays, остальные отсчитываются от них. Название реле также берется из таблицы и положение его отсчитывается от первоначальных координат. Для отображения названий контактов и реле используется конструктор dc:DrawText(“string”, x, y).

Подобные действия проделываются и для контактов. Сначала проверяется таблица contacts на то, что она не пустая. Затем в самой таблице проверяется каким является контакт: нормально открытым или закрытым (значение берется из таблицы). Так же из таблицы берется значение проводит ли контакт ток в данный момент или не проводит и, в зависимости от этих состояний рисуется контакт тем же способом, что и реле, включая название контакта. Все координаты отсчитываются от изначальных, указанных в таблице. Такие же действия проводятся с таблицей wires. То есть, данная функция отвечает только за отрисовку элементов. При этом, она будет вызываться из других функций командой panel:Refresh() и перерисовывать схему в соответсвии с новыми данными в таблицах contacts и relays.

Следующая функция onDown(event) производит обработку события нажатия правой кнопки мыши. Сначала происходит проверка контакта на нормальное состояние, а затем сравниваются координаты указателя мыши и контакта. Если найденный контакт является нормально открытым, то теперь он может проводить ток (active=true в таблице этого контакта изменяется состояние active с false на true), для нормально закрытого контакта наоборот - active становится false, то есть он не проводит теперь ток. Назначается переменная line, значение которой берется из таблицы contacts для данного контакта. И переназначается переменная textdef, которая описывалась в предыдущей функции. После этого вызывается repaint() - функция, необходимая для переназначения данных в таблицах contacts и relays и вызова перерисовки самой схемы.

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

Сравниваются значения состояний контактов (active), находящихся в одной «линии» и, если они все активны, то выполняется оставшийся код функции. При совпадении id контакта с id реле в своих таблица, состояние этого контакта инвертируется, так как на реле подано напряжение и сердечник притягивает движущуюся часть реле, которая перемещает группы контактов. Контакты, находящиеся на этом реле находятся в своих «линиях», поэтому в таблицу linescon записываются уже значения line этих инвертированных контактов. Необходимо это для того, чтобы активировать реле, находящиеся в «линиях» с этими контактами. За что и отвечает оставшийся код, в котором происходит все то же самое, что и для первых контактов-реле. Затем происходит перерисовка схемы командой panel:Refresh().

Функция onUp(event). Как можно догадаться, эта функция обрабатывает событие «отпускания» правой кнопки мыши. Работает аналогично функциям onDown(event) и repaint() одновременно, только все значения инвертируются к исходному состоянию.

Функция table.load(filename) необходима для десериализации таблицы, находящейся в файле-сохранении. Необходимо уточнить, что в Lua невозможно выводить таблицы в файл напрямую, поэтому их нужно переводить в строки, то есть сериализовать. Соответственно обратное действие - десериализация, необходима для того, чтобы из строки получить таблицу в изначальном ее состоянии, которая назначается переменной tables[1]. Далее происходит вызов функции setValues(newTable) с передаваемым параметром tables[1]. Происходит это так: setValues(tables[1]).

Функция setValues(newTable) необходима для того, передать данные из таблицы tables[1] из файла-сохранения в рабочие таблицы contacts, relays, wires и lines. Не совсем правильно сохранять в файл каждую таблицу отдельно, так как это вызовет путаницу в сохранении и при загрузке может получиться не тот результат, который ожидался. Плюс, таким образом от сложного приходим к простому и порядок таблиц в файле-сохранении не меняется. Поэтому в редакторе эти четыре таблицы помещаются в одну общую. В имитаторе же эта таблица при загрузке схемы «распаковывается» и позволяет отрисовывать схему. Также строковые данные состояния active контактов переводятся в значения true или false. Сохраняется в стороковом формате из-за того, что переменные типа Boolean нельзя перевести в строку функцией сериализации. В итоге это поле просто пропадает и схема работает не правильно. Именно для этого и сделаны дополнительные переводы. Реле всегда находятся изначально в неактивированном состоянии, поэтому их значения active становятся false. Это назначение происходит только в программе-имитаторе, так как нет смысла производить дополнительные переводы в редакторе схем, потому что все реле всегда, до включения схемы находятся в нормально отключенном состоянии. Далее вызывается команда panel:Refresh() и схема обновляется, то есть перерисовывается. Работу этой программы можно изобразить блок-схемой, как на рисунке 6.1.

6.2 Алгоритмы редактора схем

Переменные таблиц имеют те же имена, что и в имитаторе. Также с ним совпадает функция painter(event), с единственным отличием - чтобы программа не выдавала ошибку, дополнительно проверяется, что переменная с именем контакта или реле не пустая в своей таблице.

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

Рисунок 6.1 - Блок-схема работы программы-имитатора

Эта функция обрабатывает событие нажатия левой кнопки мыши. В зависимости от значения переменной tool вызывается одна из следующих функций: drawOpenCont() - рисуется нормально открытый контакт и в таблицу contacts заносятся его значения (координаты, состояние, «проводимость», название, линия); drawCloseCont() - то же самое для закрытого контакта; drawRelay() - то же самое для катушки реле; clearSingle() вместо того, чтобы очистить всю область схемы, благодаря этой функции можно стирать по одному элементу. Когда находится совпадение в таблицах contacts или relays, тогда по индексу этого элемента из нужной таблицы удаляется значение командой table.remove(name, pos) (name - имя таблицы, pos - позиция в таблице). После выполнения действия функции происходит обновление схемы командой panel:Refresh().

Функции rightDown(event) и rightUp(event) работают совместно и необходимы для прокладки проводов на схеме, обрабатывают они события нажатия и отпускания правой кнопки мыши. Есть четыре шага: нажатие и отпускание правой кнопки мыши на первом из соединяемых элементов и нажатие и отпускание ее на втором из соединяемых элементов. Сначала переменная step = 1, когда происходит четвертое действие или шаг, то есть step = 4, то эта переменная вновь становится равна единице. Провод может быть нарисован от питающей шины до контакта, от одного контакта до другого, от контакта до реле, от реле или контакта до второй питающей шины. Если есть совпадение координат мыши с одним из элементов из таблиц contacts или relays, либо с координатами питающих шин, то провод отрисовывается. В ином случае - нет. Также, для того, чтобы проложить провод, необходимо, чтобы на схеме был хотя бы один контакт и одна катушка реле. В функции rightUp(event) при срабатывании события отпускания правой кнопки мыши, в зависимости от состояния переменной step, происходит следующее: переменная step изменяет свое значение на заданное и при значении ее, равном четырем, в таблицу wires заносятся координаты провода. После этого схема обновляется командой panel:Refresh(). Необходимо, также, добавить, что функции эти работают только тогда, когда на панели инструментов выбран инструмент «Провод», а значит установлено необходимое значение переменной tool.

Функция onDoubleClick(event) обрабатывает двойной клик левой кнопки мыши. Работает тогда, когда на панели инструментов выбран инструмент «Редактировать», а значит установлено необходимое значение переменной tool. При совпадении координат мыши с координатами контакта или реле в своих таблицах, вызывается функция dialogOfSettings(name, line), в которую передаются данные о названии элемента и его линии. Эти параметры берутся из таблицы элемента.

Функция dialogOfSettings(name, line) создает диалоговое окно с двумя полями для ввода текста «Название» и «Линия» и с кнопкой «Подтвердить». Изначально в этих полях указаны название редактируемого элемента и его линия. При изменении значений данных полей и нажатии кнопки «Подтвердить» происходит переназначение переменных name и line в таблице контакта или реле. Происходит это в функции setValues(nameVal, lineVal) (nameVal и lineVal - передаваемые значения).

Функция setValues(nameVal, lineVal) работает следующим образом. Из диалога в нее передаются значения названия и линии контакта или реле. Также в функции onDoubleClick(event) назначались переменные с координатами контакта или реле (для того и другого свои), а так как эти переменные являются глобальными, то они доступны из любой функции. В setValues(nameVal, lineVal) ищется совпадение координат, полученных в функции onDoubleClick(event) и координат в таблицах contacts и relays и если оно находится, то данному элементу устанавливаются значения переменных name и line, полученные из диалога редактирования, в своих таблицах. Необходимо, также, учитывать, что id контакта и id реле должны быть одинаковыми, когда контакт расположен на этом реле, при этом, если контакт находится на реле, то он всегда имеет в своем названии часть названия реле. Поэтому для контакта ищется совпадение названия с названием реле и уже из этого совпадения контакту назначается id его реле. После всех этих операций происходит обновление схемы командой panel:Refresh().

Функция saveSchema() необходима для сохранения схемы в файл. Чтобы сохранить схему в файл необходимо таблицу сериализовать, то есть перевести в строку. Данная функция для этого и используется. Она вызывается из меню сохранения. В нее вносится общая таблица с таблицами contacts, relays, wires, lines и путь к файлу-сохранению.

Функция кнопки «Очистить» на панели инструментов работает следующим образом: при нажатии на эту кнопку таблицы contacts, relays и wires обнуляются, то есть становятся пустыми и схема обновляется командой panel:Refresh().

Необходимо также сказать, что в библиотеке wxWidgets есть зарезервированные id для некоторых функций. Например, для кнопок меню, таких как «Сохранить», «Новый», «Открыть» и так далее. Но может возникнуть ситуация, когда этих id может быть недостаточно или для них нужны иные функции. В моем случае - это, например, выбор инструментов на панели инструментов. Для них нет зарезервированных значений этого парметра, поэтому их id назначается с помощью функции newID(). В этом случае каждому названию этого параметра инструмента устанавливается свое значение, отсчитываемое от максимального зарезервированного id, увеличиваемого с каждым новым на единицу. Это позволяет сделать каждый инструмент индивидуальным и не вносить путаницу в пункты меню и кнопки панели инструментов. Изобразить работу этой программы можно следующей блок-схемой, как на рисунке 6.2.

Рисунок 6.2 - Общая блок-схема редактора схем РЗА

7. ОТЛАДКА И ЭКСПЕРИМЕНТАЛЬНОЕ ТЕСТИРОВАНИЕ

7.1 Отладка

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

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

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

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

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

1. Программирование -- внесение в программу новой функциональности, исправление ошибок в имеющейся.

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

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

4. Отладка -- обнаружение причины ошибки.

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

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

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

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

2. Модульное тестирование -- проверка поведения программы по частям.

3. Статический анализ кода -- проверка кода на стандартные ошибки «по недосмотру».

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

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

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

Reverse engineering (Обратная инженерия). Этот случай возникает, когда независимые исследователи ищут уязвимости и недокументированные возможности программы [11].

7.2 Ручное тестирование

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

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

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

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

Данные методы способствуют существенному увеличению производительности и повышению надежности программы. Во-первых, они обычно позволяют раньше обнаружить ошибки, уменьшить стоимость исправления последних и увеличить вероятность того, что корректировка произведена правильно. Во-вторых, психология программистов, по-видимому, изменяется, когда начинается тестирование перед релизом. Возрастает внутреннее напряжение и появляется тенденция «исправлять ошибки так быстро, как только это возможно». В итоге программисты допускают больше промахов при корректировке ошибок, уже найденных во время тестирования, чем при корректировке ошибок, найденных на более ранних этапах. Кроме того, скептицизм связан с тем, что это «первобытный метод». Сейчас стоимость машинного времени очень низка, а стоимость труда тестировщиков высока и ряд руководителей пойдут на все, чтобы сократить расходы. Однако, есть другая сторона ручного тестирования - при тестировании за компьютером причины ошибок выявляются только в программе, а самая глубокая их причина - мышление программиста, как правило, не претерпевает изменений, при ручном же тестировании, программист глубоко анализирует свой код, попутно выявляя возможные пути его оптимизации, и изменяет собственный стиль мышления, повышая квалификацию [12].

7.3 Модульное тестирование

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

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

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

Этот тип тестирования обычно выполняется программистами.

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

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

Модульные тесты можно рассматривать как «живой документ» для тестируемого класса. Клиенты, которые не знают, как использовать данный класс, могут использовать юнит-тест в качестве примера.

Поскольку некоторые классы могут использовать другие классы, тестирование отдельного класса часто распространяется на связанные с ним. Например, класс пользуется базой данных; в ходе написания теста программист обнаруживает, что тесту приходится взаимодействовать с базой. Это ошибка, поскольку тест не должен выходить за границу класса. В результате разработчик абстрагируется от соединения с базой данных и реализует этот интерфейс, используя свой собственный mock-объект. Это приводит к менее связанному коду, минимизируя зависимости в системе [13].

8. РАЗРАБОТКА ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ

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

Любая схема создается в программе-редакторе схем. Необходимо запустить файл с названием editor.lua. В открывшемся окне будет показана рабочая область, меню и панель инструментов. Рисунок 8.1.

Рисунок 8.1 - Изначальное состояние программы-имитатора

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

Рисунок 8.2 - Отображение выбранного инструмента

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

Рисунок 8.3 - Рабочая область окна программы

При использовании одного инструмента «Открытый контакт» на рабочей области, при левом клике мыши, отобразится данный элемент. Он будет иметь название “contact” и находиться по координатам, на которых в этот момент находился указатель мыши. Рисунок 8.4.

Рисунок 8.4 - Демонстрация работы инструмента «ОТКР»

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

Рисунок 8.5 - Работа инструмента «ПРОВОД»

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

Рисунок 8.6 - Диалоговое окно инструмента редактирования

После редактирования схема станет, например, такой, как на рисунке 8.7.

Рисунок 8.7 - Отредактированные элементы схемы

Значение параметра «Линия» в окне редактирования должно быть одинаковым для элементов, находящихся в одной цепи. В данном случае это значение равняется 1, для элементов с названием «РТО» и «РПЗ» и 2 - для элементов «РПЗ1» и «ПМО».

Идентификатор реле (id) назначается автоматически, идентификатор реле - от его названия и id реле, на котором он находится, только контакт обязательно должен содержать в своем названии название реле, на котором он находится.

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

Чтобы сохранить полученную схему нужно в меню “File” выбрать пункт меню “Save File”, как на рисунке 8.8.

Рисунок 8.8 - Меню сохранения схемы в файл

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

Рисунок 8.9 - Диалоговое окно сохранения схемы в файл

Этот файл можно открыть в программе-имитаторе работы схемы, либо в программе-редакторе, чтобы отредактировать при необходимости. Для этого нужно в меню “File” выбрать пункт меню “Open File”. Откроется такое же окно выбора файла и выбрать можно будет только файлы формата .sch.

Для того, чтобы продемонстрировать работу схемы РЗА необходимо запустить программу schema.wlua. Откроется такое окно, как на рисунке 8.10.

Чтобы открыть схему нужно в меню «Файл» выбрать пункт «Открыть», как показано на рисунке 8.11.

В этом случае откроется диалоговое окно, аналогичное окну загрузки в программе-редакторе. Рисунок 8.12.

Файлы в формате .sch являются файлами-сохранениями схем для данной программы. При открытии такого файла в программе-имитаторе отобразится схема, которая в этом файле сохранена. Рисунок 8.13.

Рисунок 8.10 - Изначальное состояние программы-имитатора

Рисунок 8.11 - Меню «Файл» программы-имитатора

Рисунок 8.12 - Диалоговое окно открытия файла с сохраненной схемой

Рисунок 8.13 - Схема, открытая в программе-имитаторе

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

Рисунок 8.14 - Демонстрация срабатывания схемы

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

При нажатии правой кнопкой мыши на реле подтянутся его контакты и схема сработает дальше. Рисунок 8.15.

Рисунок 8.15 - Срабатывание реле «РПЗ»

Здесь правой кнопкой мыши нажата реле «РПЗ» и сработал ее контакт «РПЗ1». Если бы было больше контактов, то сработали бы все контакты, которые на ней находились бы и так с каждым реле.

ЗАКЛЮЧЕНИЕ

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Горбунов, В. А. Интерфейсы информационных систем: учеб. пособие/ В. А. Горбунов. - Вологда: ВоГТУ, 2004. - 119 с.

Приложение

Схема для задания

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


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

  • Анализ методов и средств моделирования мультиагентных схем. Тестирование лабораторных работ "Climatechange", "ElFarol" и "Pagerank". Экспериментальное тестирование и отладка программного комплекса. Оценка качества разработанного программного продукта.

    дипломная работа [4,5 M], добавлен 12.08.2017

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

    курсовая работа [58,5 K], добавлен 25.02.2012

  • Этапы тестирования при испытаниях надежности программных средств. Комплексирование модулей и отладка автономных групп программ в статике без взаимодействия с другими компонентами. Испытания главного конструктора. Жизненный цикл программного средства.

    презентация [339,6 K], добавлен 22.03.2014

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

    курсовая работа [974,0 K], добавлен 21.12.2016

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

    дипломная работа [4,7 M], добавлен 19.01.2017

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

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

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

    дипломная работа [2,4 M], добавлен 12.08.2017

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

    отчет по практике [272,2 K], добавлен 29.12.2014

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

    курсовая работа [36,9 K], добавлен 21.07.2012

  • Компоновка роботизированного комплекса. Разработка циклограммы работы объектов. Построение релейно-контактной, логической бесконтактной схем по циклограмме и сети Петри. Выбор программируемого контроллера. Разработка и написание программы управления.

    курсовая работа [922,9 K], добавлен 26.01.2012

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