РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕРА ДЛЯ КОНТРОЛЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ НА АЭС - Студенческий научный форум

VII Международная студенческая научная конференция Студенческий научный форум - 2015

РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕРА ДЛЯ КОНТРОЛЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ НА АЭС

Разумова Т.А. 1
1Балаковский институт техники, технологии и управления
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

ВВЕДЕНИЕ

 

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

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

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

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

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

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

1 ЭТАПЫ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

 

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

  1. Ручной период - древность (до нашей эры);
  2.  

  3. Механический - с середины семнадцатого века нашей эры;
  4.  

  5. Электромеханический - с девяностых годов девятнадцатого века;
  6.  

  7. Электронный - с сороковых годов двадцатого века.
  8.  

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

 

1.1 Ручной этап развития вычислительной техники

 

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

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

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

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

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

 

1.2 Механический этап развития вычислительной техники

 

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

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

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

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

 

1.3 Электромеханический этап развития вычислительной техники

 

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

Первый счетно-аналитический комплекс был создан Холлеритом в 1887 году и состоял из ручного перфоратора сортировочной машины и табулятора. Основным назначением комплекса являлась статистическая обработка перфокарт.

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

 

1.4. Электронный этап развития вычислительной техники

 

Электронный этап можно разбить на пять поколений электронно-вычислительных машин.

«Первое» поколение - 1940-1960 года.

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

«Второе» поколение - 1960-1964 года.

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

«Третье» поколение - 1964-1971 года.

Этот период характеризуется тем, что вместо транзисторов стали использоваться интегральные схемы, а вместо памяти на магнитных сердечниках стала применяться полупроводниковая память. Для повышения эффективности использования центрального процессора возникла необходимость в системной программе, управляющей центральным процессором. Так была создана операционная система. Вычислительные машины третьего поколения, как правило, образуют серии машин, совместимых программно. Такая серия состоит из электронно-вычислительных машин, производительность и объем памяти которых возрастают от одной машины серии к другой. Но программа, отлаженная на одной из машин, может быть сразу запущена на другой машине этой серии. Первым таким семейством машин третьего поколения была выпущенная в 1965 году IBM/360. Она имеет свыше семи моделей. В Советском Союзе такую серию составляли машины семейства ЕС ЭВМ (Единая Система ЭВМ).

«Четвертое» поколение - с 1971 года по настоящее время.

Электронно-вычислительные машины этого поколения выполняют десятки и сотни миллионов операций в секунду. Появляются микропроцессоры, способные обрабатывать числа длиной в 16 и 32 разряда, емкость статической памяти у которых от 256 Кбайт и динамическая память от 1 Мбайт. ЭВМ по своим характеристикам так разнообразны, что их начинают классифицировать на: сверхбольшие, большие (универсальные), мини-ЭВМ и микро-ЭВМ (персональные компьютеры - ПК).

«Пятое» поколение - настоящее время.

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

2 КЛАССИЧЕСКАЯ АРХИТЕКТУРА ЭВМ

 

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

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

Фон Нейман не только выдвинул основополагающие принципы логического устройства ЭВМ, но и предложил ее структуру, которая воспроизводилась в течение первых двух поколений ЭВМ. Основными блоками по Нейману являются устройство управления (УУ) и арифметико-логическое устройство (АЛУ) (обычно объединяемые в центральный процессор), память, внешняя память, устройства ввода и вывода. Схема устройства такой ЭВМ представлена на рисунке 1.

 

Рисунок 1 - Архитектура ЭВМ, построенной на принципах фон Неймана

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

Память (ЗУ) хранит информацию и программы. Запоминающее устройство у современных компьютеров «многоярусно» и включает оперативное запоминающее устройство (ОЗУ), хранящее ту информацию, с которой компьютер работает непосредственно в данное время, и внешние запоминающие устройства (ВЗУ) гораздо большей емкости, но с существенно более медленным доступом. Например, операционная система (ОС) хранится на жестком диске, но при запуске компьютера резидентная часть ОС загружается в ОЗУ и находится там до завершения сеанса работы ПК. ПЗУ и ППЗУ (перепрограммируемые постоянные запоминающие устройства) предназначены для постоянного хранения информации, которая записывается туда при ее изготовлении, например, ППЗУ для BIOS.

В качестве устройства ввода информации служит, например, клавиатура. В качестве устройства вывода - дисплей, принтер и т.д.

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

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

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

3 КЛАССИФИКАЦИЯ ЭВМ

 

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

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

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

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

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

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

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

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

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

Контрольные ЭВМ применяются при построении контрольно-измерительной аппаратуры.

По совокупности технических характеристик различают высокопроизводительные, сверхвысокопроизводительные, средние, малые, мини- и микроЭВМ.

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

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

Средние ЭВМ имеют производительность ниже 1 млн. оп/с, развитую конфигурацию ввода-вывода и служат для применения в системах обработки информации коллективного пользования, отраслевых системах автоматизированного проектирования и системах управления.

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

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

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

4 РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕРА

 

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

 

4.1 Постановка задачи и разработка алгоритма

 

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

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

Исходя из поставленной задачи, следует, что входные и выходные данные имеют целочисленный тип.

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

  1. Заполнение двух исходных массивов случайными числами (блок random);
  2.  

  3. Формирование третьего массива на основе двух исходных с учетом поставленной задачи (блок arr3);
  4.  

  5. Сортировка третьего массива по возрастанию (блок sort_arr3_up);
  6.  

  7. Перемножение всех элементов третьего массива (блок mul_arr3).
  8.  

 

Рисунок 2 - Блок-схема алгоритма реализации программы

 

4.2 Формализация алгоритма

 

Ниже приведен код программы, составленный по индивидуальному заданию:

#include "iostream"

#include <time.h>

#include <conio.h>

#include <stdio.h>

 

void main()

{

setlocale(0, "rus");

int a[3]; //

int b[3]; // массив

int c[6]; //

int summ=0;

srand(time(NULL));

for(int i=0; i<3; i++)

{

a[i] = 1 + rand()%10;

b[i] = 1 + rand()%10;

}

_asm

{

lea EBX, a

lea EDI, b

lea ESI, c

mov ECX, 3

lab:

mov EAX, [EBX]

mov [ESI], EAX

add ESI, 4

mov EDX, [EDI]

mov [ESI], EDX

add ESI, 4

add EBX, 4

add EDI, 4

loop lab

}

printf("Массив 1: ");

for(int i=0; i<3; i++)

{

printf("%i\t", a[i]);

}

printf("\n\nМассив 2: ");

for(int i=0; i<3; i++)

{

printf("%i\t", b[i]);

}

printf("\n\nМассив 3: ");

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

{

printf("%i\t", c[i]);

}

_asm {

lea ebx, c

 

mov ecx, 6

for1:

push ecx

mov esi, 0

mov edx, 4

mov ecx, 5

for2:

mov ah, [ebx+edx]

mov al, [ebx+esi]

cmp ah, al

jc lable

jmp fnl

lable:

mov [ebx+edx], al

mov [ebx+esi], ah

fnl:

add esi, 4

add edx, 4

loop for2

pop ecx

loop for1

}

printf("\n\nМассив 3 отсортированный: ");

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

{

printf("%i\t", c[i]);

}

_asm

{

lea ebx, c

mov eax, [ebx]

mov ecx, 5

lab2:

add ebx, 4

mov edx, [ebx]

mul edx

loop lab2

mov summ, eax

}

printf("\n\nПроизведение элементов 3 массива: %i", summ);

printf("\n\n");

system("pause");\

}

 

Рисунок 3 - Результат работы программы

 

4.3 Таблица использования памяти и регистров

 

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

Таблица 1. Использование памяти и регистров

Регистр

Значение до итерации

Значение после итерации

c

{4, 5, 6, 8, 9, 10}

1 итерация

ecx

292010071

5

ebx

4389188

4389192

edx

1786004616

5

eax

6

4

2 итерация

ecx

5

4

ebx

4389192

4389196

edx

0

6

eax

4

20

3 итерация

ecx

4

3

ebx

4389196

4389200

edx

0

8

eax

20

120

4 итерация

ecx

3

2

ebx

4389200

4389204

edx

0

9

eax

120

960

5 итерация

ecx

2

1

ebx

4389204

4389208

edx

0

10

eax

960

8640

eax

86400

 

 

5 РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕРА ДЛЯ КОНТРОЛЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ НА АЭС

 

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

 

5.1 Постановка задачи и разработка алгоритма

 

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

Автоматизированная система должна контролировать не менее трёх параметров (три датчика), именно поэтому, в качестве исходных данных для программного обеспечения будут служить три параметра (переменные: value1, value2, value3, объединенные в массив), значение которых будет генерироваться случайным образом в диапазоне соответствующего датчика.

Датчики - это группа автономных, законченных изделий, предназначенных для преобразования измеряемой информации в дискретные данные для последующей передачи в измерительные, или исполнительные устройства (микроконтроллеры). В соответствии с задачей, для моделирования технологических процессов на АЭС были выбраны три датчика: датчик температуры, датчик газа и датчик давления. Каждый из них используется в модернизированном серийном ядерном реакторе ВВЭР-1000, в котором находится вода под определенным давлением, предназначение - выработка тепловой энергии за счёт цепной реакции деления атомных ядер.

Остановимся более подробно на датчиках, которые берутся в рассмотрение. Для моделирования работы системы значение имеет количественный параметр, который датчик отдает микропроцессору на выходе. Для удобства оценивания входных параметров определены оптимальные значения для датчиков, так для температуры это 286-320°C, для концентрации водорода - 20-50 см3/, номинальное давление равно 16 МПа. Все значения являются параметрами реактора, указанными в его технических характеристиках.

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

Датчик температуры необходим для контроля температуры внутренней части энергоблока. Применение данного контроллера крайне важно. Существуют такие понятия, как «горячий» и «холодный» останов (температура теплоносителя выше или ниже оптимальной). Трагичные последствия может иметь некорректная работа данного датчика, например, в Японии на первом реакторе АЭС «Фукусима-1» из-за повышения температуры внутренней части энергоблока, произошло возгорание, повлекшее за собой взрыв. Чтобы свести риск некорректной работы контроллера «на нет», при считывании нулевого значения генерируется сообщение об ошибке.

Датчик газа необходим для контроля концентрации определенного газа (в данном случае - водорода). Как показала авария на АЭС «Фукусима-1», сопровождавшаяся взрывами водорода с последующим выбросом радионуклидов в атмосферу, проблема водородной безопасности АЭС является более чем актуальной. Образование водорода в реакторах на тепловых нейтронах с водным теплоносителем в режиме нормальной эксплуатации обусловлено разложением воды или пара под действием облучения в активной зоне реактора. При этом без водорода работа реактора также теряет эффективность, так как под действием того же ионизирующего излучения происходит радиолиз воды, вследствие чего образуются вещества с окислительными или восстановительными свойствами, что ставит под угрозу герметичность конструкции, водород же используется для уменьшения радиолиза.

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

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

Исходя из вышесказанного, программа, моделирующая технологические работы на АЭС, будет состоять из следующих блоков:

  1. Функция программного прерывания (dot());
  2.  

  3. Функция для генерации случайного выходного параметра для датчика температуры (value1());
  4.  

  5. Функция для генерации случайного выходного параметра для датчика газа (value2());
  6.  

  7. Функция для генерации случайного выходного параметра для датчика давления (value3());
  8.  

  9. Функция считывания и обработки полученных значений (main());
  10.  

  11. Анализ обработанных данных (main()).
  12.  

5.2 Формализация алгоритма

 

Ниже приведен код программы для контроля технологических процессов на АЭС:

#include "iostream"

#include "time.h"

#include "windows.h"

 

void dot()

{

Sleep(1000);

printf(".");

Sleep(1000);

printf(".");

Sleep(1000);

printf(".");

}

int value1()

{

printf("|-----------------СЧИТЫВАНИЕ ДАННЫХ------------------|\n");

printf("| |\n");

printf("| Считывание данных с датчика температуры");

dot();

printf(" OK |\n");

srand(time(NULL));

return rand()%400;

}

int value2()

{

printf("| Считывание данных с датчика газа");

dot();

printf(" OK |\n");

srand(time(NULL));

return rand()%70;

}

int value3()

{

printf("| Считывание данных с датчика давления");

dot();

printf(" OK |\n");

printf("| |\n");

printf("|----------------------------------------------------|\n\n");

srand(time(NULL));

return rand()%30;

}

void main()

{

setlocale(LC_ALL,"Rus");

printf("|-----------------ПАРАМЕТРЫ РЕАКТОРА-----------------|\n");

printf("| |\n");

printf("| Ядерный реактор ВВЭР-1000: |\n");

printf("| - температура - 286-320 °C |\n");

printf("| - концентрация водорода - 20-50 см3/кг |\n");

printf("| - номинальное давление - 16 МПа |\n");

printf("| |\n");

printf("|----------------------------------------------------|\n\n");

int arr[3] = {value1(), value2(), value3()};

int arr2[3]={0,0,0};

_asm

{

lea EBX, arr

lea EDX, arr2

mov EDI, [EBX]

cmp EDI, 0d

jz lab1

cmp EDI, 320d

jc lable

mov [EDX], 3d

jmp lab1

lable:

cmp EDI, 286d

jc labl

mov [EDX], 2d

jmp lab1

labl:

mov [EDX], 1d

lab1:

mov EDI, [EBX+4]

cmp EDI, 0d

jz lab2

cmp EDI, 50d

jc lable1

mov [EDX+4], 3d

jmp lab2

lable1

cmp EDI, 20d

jc labl1

mov [EDX+4], 2d

jmp lab2

labl1:

mov [EDX+4], 1d

lab2:

mov EDI, [EBX+8]

cmp EDI, 0d

jz end

cmp EDI, 16d

jc lable2

mov [EDX+8], 2d

jmp end

lable2:

mov [EDX+8], 1d

end:

}

printf("|--------------------------ОБРАБОТКА ДАННЫХ---------------------------|\n");

printf("| |\n");

printf("| Датчик температуры: %i°C", arr[0]);

switch (arr2[0])

{

case 0: printf("| - ERROR! |\n");

printf("| Попробуйте перезапустить программу, если ошибка не будет устранена, |\n");

printf("| обратитесь в техническую поддержку. |\n"); break;

case 1: printf(" - ниже среднего. |\n");

printf("| Необходимо увеличить нагрев энергоблока.\n"); break;

case 2: printf(" - в пределах нормального. |\n");

printf("| Оборудование работает в штатном режиме. \n"); break;

case 3: printf(" - выше среднего! |\n");

printf("| Необходимо запустить систему охлаждения! |\n"); break;

default: break;

}

printf("|---------------------------------------------------------------------|\n");

printf("| Датчик газа: %i см3/кг", arr[1]);

switch (arr2[1])

{

case 0: printf("| - ERROR! |\n");

printf("| Попробуйте перезапустить программу, если ошибка не будет устранена, |\n");

printf("| обратитесь в техническую поддержку. |\n"); break;

case 1: printf(" - ниже среднего. |\n");

printf("| Необходимо увеличить концентрацию водорода. |\n"); break;

case 2: printf(" - в пределах нормального. |\n");

printf("| Оборудование работает в штатном режиме. |\n"); break;

case 3: printf(" - выше среднего! |\n");

printf("| Запустите систему удаления водорода из герметичной оболочки! |\n"); break;

default: break;

}

printf("|---------------------------------------------------------------------|\n");

printf("| Датчик давления: %i МПа", arr[2]);

switch (arr2[2])

{

case 0: printf(" - ERROR! |\n");

printf("| Попробуйте перезапустить программу, если ошибка не будет устранена, |\n");

printf("| обратитесь в техническую поддержку. |\n"); break;

case 1: printf(" - в пределах нормального. |\n");

printf("| Оборудование работает в штатном режиме. |\n"); break;

case 2: printf(" - выше среднего! |\n");

printf("| Запустите компенсатор давления! |\n"); break;

default: break;

}

printf("| |\n");

printf("|---------------------------------------------------------------------|\n\n");

system("pause");

}

 

Рисунок 4 - Результат работы программы

 

ЗАКЛЮЧЕНИЕ

 

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

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

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

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

 

1. Оладьев В.З. Основы компьютерной информатики: учебное пособие / В.З. Оладьев - Таллинн: Российская Академия Ноосферы & TRG, 1997. - 396 с.

2. Финогенов К.Г. Основы языка Ассемблера / К.Г. Финогенов - М.: Радио и связь, 2000. - 288 с.

3. Шафрин Ю.А. Информационные технологии в 2-х ч. Часть 2. / Ю.А. Шафрин - М.: Лаборатория Базовых Знаний, 2000. - 356 с.

4. Юров В.И. Assembler. Специальный справочник. / В.И. Юров - СПб.: Питер, 2001. - 496 с.

5. Юров В.И. Assembler. Практикум. / В.И. Юров - СПб.: Питер, 2006. - 400 с.

6. Поколения вычислительных машин [Электронный ресурс] - Режим доступа. - URL: http://www.ist-comp.narod.ru/

7. Архитектура ЭВМ [Электронный ресурс] - Режим доступа. - URL: http://www.lessons-tva.info/

8. Классификация ЭВМ [Электронный ресурс] - Режим доступа. - URL: http://www.csom.ru/

9. Классификация ЭВМ по функциональным возможностям и размерам [Электронный ресурс] - Режим доступа. - URL: http://www.srinest.com

 

Просмотров работы: 1711