- •Оглавление
- •1.2. Постановка задачи
- •1.2.1. Цель и назначение проекта
- •1.2.2. Требования к разрабатываемой программе
- •1.2.3. Выбор языка программирования.
- •1.2.4.Программное обеспечение, необходимое для работы программы.
- •1.2.5. Используемые технические средства
- •1.3. Общие сведения
- •1.3.1. Использование ёмкостной связи для бесконтактного контроля параметров полупроводниковых пластин большого диаметра
- •1.3.2. Структура автоматизированной установки
- •1.3.3.Принципы взаимодействия эвм и приборов посредством адаптера
- •1.3.3.1 Программирование интерфейса
- •1.3.3.2 Аппаратные процедуры коп
- •1.4.Структура программы. Функции ее составных частей
- •1.4.1.Общая структура программы
- •Модуль 1
- •1.4.2. Краткое описание назначений процедур и функций
- •1.4.3. Взаимодействие процедур и функций
- •1.4.4. Внутренняя структура процедур и функций. Описание их работы.
- •1.5 Руководство пользователя
- •2. Технологическая часть
- •2.1 Введение
- •2.2 Этапы решения задачи на эвм
- •2.3.Необходимость отладки разработанного программного продукта
- •2.4 Методы и средства отладки
- •2.4.1 Контроль программы
- •2.4.2 Контроль результатов
- •2.4.3 Классификация методов контроля
- •2.5 Локализация ошибок
- •2.5.1 Способы локализации
- •2.5.2 Классификация средств локализации ошибок
- •2.6 Технология отладки программы сопряжения ibm_pCс автоматизированной установкой
- •2.7 Заключение
- •3.Организационно - экономическая часть
- •3.1 Введение
- •3.2 Составляющие затрат на разработку программ Kр
- •3.2.1 Затраты на непосредственную разработку кп
- •3.2.1.1 Факторы кп как объекта проектирования, влияющие на непосредственные затраты при разработке программ.
- •3.2.1.2 Применение современных методов разработки кп.
- •3.2.1.3 Факторы оснащенности процесса разработки кп аппаратурными средствами, влияющими на непосредственные затраты при разработке программ.
- •3.2.1.4 Факторы организации процесса разработки кп, влияющие на непосредственные затраты при создании программ.
- •3.2.2 Затраты на изготовление опытного образца как продукции производственно-технического назначения.
- •3.2.3 Затраты на технологию и программные средства автоматизации разработки кп.
- •3.3.3 Расчет непосредственных затрат на разработку
- •3.3.3.1 Затраты на эвм
- •3.4 Выводы
- •4. Производственная и экологическая безопасность
- •4.1 Введение
- •4.2 Рабочее место программиста
- •4.3 Вредные производственные факторы и их нейтрализация для создания комфортных условий труда
- •4.3.1 Микроклимат
- •4.3.2 Электрическая опасность.
- •4.3.3 Пожароопасность
- •4.3.4 Электромагнитное излучение.
- •4.3.5 Нерациональное освещение.
- •4.3.6 Шумы.
- •4.3.7 Психофизиологические факторы.
- •4.3.8 Расчет заземления персонального компьютера.
- •4.4 Выводы.
- •Используемая литература
1.4.3. Взаимодействие процедур и функций
Для наглядности процесса смотрите рисунок 1_4.
Файл Measure.pas запускает на выполнение основной блок нашей программы.
С помощью функции my_menu осуществляется вывод меню на экран и выбор пользователем необходимой задачи. Результатом выполнения функции является номер меню, выбранный пользователем. В дальнейшем, этот номер анализируется и осуществляется вызов “главной” процедуры из модуля Work.pas. Функция my_menu, в свою очередь, вызывает “вспомогательную” функцию sel, результат которой виден на экране ввиде выделенной строки в меню.
Далее опишем работу программы при выборе пользователем определённых пунктов меню:
“Измерение температуры в данный момент”
Если выбран этот пункт меню, то основной программе из функции my_menu передаётся значение равное единице. По этому значению основная программа начинает выполнение первого пункта путём вызова процедуры vv. Она же в свою очередь вызывает и последовательно выполняет процедуры p1, wn, V, cl_w, w3. Функция V в свою очередь вызывает вспомогательную функцию Transf. Выполнение пункта завершается возвращением в основную программу.
“Полный процесс”
При выборе этого пункта, основной программе соответственно передаётся значение два из функции my_menu. Выполнение этого процесса обеспечивает процедура mp, которая использует для этого ПФ: p1, dan, val, wn, meas, cl_w. Завершается пункт выходом в основное меню.
“Съём данных с осциллографа ”
В этом случае , аналогично предыдущим, по переданному значению 3 начинаем выполнять третий пункт. “Главная” процедура основной программы mp1. Она вызывает: p1, dan, val, meas, wn, и после выполнения возвращается в меню.
“Команда на Г5-75”, то есть управление подачей импульсов генератором
За пункт номер 4 отвечает процедура generator. Её “вспомогательными” являются: p1, dan, val, wn,cl_w. Далее следует возвращение в основную программу.
“Выход” При выборе последнего пятого пункта заканчивается выполнение нашей основной программы и, следовательно, мы выходим в MS-DOS.
1.4.4. Внутренняя структура процедур и функций. Описание их работы.
В этом разделе мы рассмотрим все процедуры и функции нашей программы. Знакомясь с ними будем следовать следующему шаблону: логическая блок-схема, листинг, описание. Подробная блок схема приведена в приложении. Очерёдность описания процедур и функций проведена от простого к сложному, то есть описание главных процедур следует за описанием второстепенных.
Функция sel
Формирование номера
нового выделяемого
пункта меню начало Удаление выделения
пункта меню Удаление подсказки Выделение нового пункта меню Подсказка для нового
пункта Стандартные значения
цветов Результат функции выход
Листинг функции:
function sel(i:integer{выделенный в данный момент элемент};
priz:integer{куда идти вверх или вниз}):integer;
var p:integer;
begin
textbackground(black);
textcolor(lightgray);
gotoxy(xm,ym+i-1);
write(mas[i]);
textbackground(blue);
gotoxy(1,hl_y);
clreol;
if (i=mm) and (priz=1){вниз}
then p:=1
else if (i=1) and (priz=-1){вверх}
then p:=mm
else p:=i+priz;
textbackground(red);
textcolor(yellow);
gotoxy(xm,ym+per-1);
writeln(mas[p]);
textbackground(blue);
textcolor(15);
gotoxy(1,hl_y);
write(hlp[p]);
textbackground(black);
textcolor(lightgray);
sel:=p;
end;
Раздел описанийimplementation модуляmenu.pas начинает функция sel.Главным отличием этой функции от других является то, что она доступна лишь внутри этого модуля. Поскольку она является вспомогательной по отношению к функцииmy_menu, которая будет описана ниже, то её внешний вызов не имеет смысла. Главной задачей этой функции является выделение соответствующего пункта меню. Номер этого пункта определяется из данных, передаваемых функции в качестве параметров:
i: integer – параметр-переменная, содержащий выделенный в данный момент пункт меню. Так как у нас пункты меню пронумерованы от 1 до 5, то и значение параметра возможны из этого интервала
priz: integer – данный параметр определяет куда движется курсор: вверх, вниз или остаётся на месте
Возвращает функция число целого типа integer, определяющее новый выделенный пункт меню. В процессе её выполнения, удаляется выделение пункта меню, путём вывода на том же месте текста стандартного цвета, осуществляется вычисление номера нового пункта меню и выделение вычисленного пункта меню.
. Функция my_menu
Выделение начального
пункта
Опрос клавиатуры и
реакция на нажатие клавиши
Листинг функции:
function my_menu(i:integer{номер выделенного пункта}):integer;
var ii:integer;
nom:integer;{номер текущего меню}
c:char;
begin
textmode(CO80);
textbackground(black);
clrscr;
HighVideo;
textcolor(15);
textbackground(blue);
gotoxy(1,1);write(' 1999 МИЭТ Дипломный проект. Автор - Маслова М.А. ');
LowVideo;
textcolor(lightgray);
textbackground(black);
for ii:=0 to mm-1 do
begin
gotoxy(xm,ym+ii);
write(mas[ii+1]);
end;
nom:=sel(i,0);
c:=#30;
while not (c=#13) do
begin
c:=readkey;
if (c=#0) then
begin c:=readkey;
case c of
#72{курсор вверх}:nom:=sel(nom,-1);
#80{курсор вниз }:nom:=sel(nom,1);
end;
end
end;
my_menu:=nom;
end;
Эта функция отвечает за формирование на экране меню пользователя и выбор пункта меню. Она используется основной программой для выбора решаемой задачи. В качестве единственного параметра функции используется числовое значение, определяющее номер выделенного пункта меню, а в качестве результата функции – номер выбранного пункта меню.
В процессе выполнения функции формируется на экране меню и отслеживается нажатие кнопок пользователем. Работа функции начинается с установки начальных значений экрана и выделения, переданного нам в качестве начального пункта меню. Далее программа зацикливается и единственным условием выхода из цикла является нажатие клавиши Enter. Внутри цикла опрашивается клавиатура и при нажатии управляющих клавиш курсор вверх, курсор вниз осуществляется вызов процедурыsel с соответствующими параметрами.
Процедура р1
Начальные установки экрана
Формирование синей строки вверху экрана
Вывод надписи
Стандартные значения
Листинг процедуры:
procedure p1(str:string);
begin
textcolor(lightgray);
textbackground(black);
clrscr;
textcolor(15);
textbackground(blue);
clreol;
gotoxy((80-length(str)) div 2,1);write(str);
textcolor(lightgray);
textbackground(black);
end;
Это процедура оформления программы. Она формирует в верхней строке экрана надпись. Параметром процедуры является строка текста.
Ф
начало
Начальные установки цветов Ввод значения
Вывод строки серым
цветом
Листинг функции:
function dan(y:integer;str:string):string;
var st:string;
begin
textcolor(green);
textbackground(black);
gotoxy(3,y);write(str);readln(st);
textcolor(lightgray);
gotoxy(3,y);write(str,st);
dan:=st;
end;
Функция ввода данных пользователя. Она имеет два параметра:
y: integer – номер строки экрана, в которой будет осуществляться ввод данных;
str: string - строка-подсказка.
В качестве результата функция возвращает значение типа string. В ходе работы функции выводится строка-подсказка зеленым цветом. После чего ожидается ввод данных с клавиатуры. Нажатие клавишиEnter вызывает изменение цвета строки на серый.
Процедура wn
начало
Установка цветов
Расчет длины и положения рамки
Вывод рамки
Вывод текста в рамке
Стандартные установки
цветов
Листинг процедуры:
procedure wn(color:integer;str:string;s:integer);
var h,v,v1,i:integer;
begin
textcolor(15);
textbackground(blue);
if length(str)<18 then h:=24
else h:=length(str)+2;
v:=(80-h-2) div 2;
v1:=(80-length(str)) div 2;
gotoxy(v,yr+s);write('+');
for i:=1 to h do write('-');
write('+');
gotoxy(v,yr+s+1);write('¦');write(' ':h);write('¦');
gotoxy(v,yr+s+2);write('¦');write(' ':h);write('¦');
gotoxy(v,yr+s+3);write('¦');write(' ':h);write('¦');
gotoxy(v,yr+s+4);write('+');
for i:=1 to h do write('-');
write('+');
textcolor(color);
textbackground(blue);
gotoxy(v1,yr+s+2);write(str);
textcolor(lightgray);
textbackground(black);
end;
Данная процедура предназначена для вывода надписи в рамке. В качестве параметров используются:
color: integer – цвет надписи внутри рамки;
str: string - надпись внутри рамки;
s: integer - сдвиг по оси У относительно глобальной константыyr;
В ходе работы процедуры определяется длина надписи, и если она меньше 18, то размер рамки устанавливается стандартным и равным 26 символам. В противном случае размер рамки вычисляется так, чтобы между рамкой и надписью было по одному пробелу с обеих сторон.
Процедура cl_w
Установка стандартных цветов Расчет длины и положения рамки
Листинг процедуры:
procedure cl_w(s:integer);
begin
textcolor(lightgray);
textbackground(black);
gotoxy(1,yr+s);clreol;
gotoxy(1,yr+1+s);clreol;
gotoxy(1,yr+2+s);clreol;
gotoxy(1,yr+3+s);clreol;
gotoxy(1,yr+4+s);clreol;
end;
Процедура служит для удаления с экрана рамки, созданной процедурой wn,путём очистки строк экрана. Параметром процедуры является число, определяющее сдвиг по оси У относительно константыyr.
Процедура w3
Установка стандартных цветов Вывод рамки со значениями начало
Установка стандартных цветов
Листинг процедуры:
procedure w3(s,t:real);
begin
textcolor(15);
textbackground(blue);
gotoxy(xr,7);write('+----------------------------+');
gotoxy(xr,8);write('¦ ¦');
gotoxy(xr,9);write('¦ Результат : ¦');
gotoxy(xr,10);write('¦ ¦');
gotoxy(xr,11);write('¦ Сопротивление,Ом :',s:7:3,' ¦');
gotoxy(xr,12);write('¦ Температура,К :',t:4:0,' ¦');
gotoxy(xr,13);write('¦ ¦');
gotoxy(xr,14);write('+----------------------------+');
textcolor(lightgray);
textbackground(black);
end;
Формирование рамки результата для пункта меню «Измерение температуры в данный момент». Параметры процедуры:
s: real - измеренное сопротивление;
t: real – вычисленная температура.
Процедуры и функции модуля Work.pas.
Функция transf
Функция арифметических преобразований данных, снятых с вольтметра
Листинг функции:
Function Transf: real;
Begin
if A[9]=$2b then
Transf:= ((A[2]-48)*exp(5*ln(10))+(A[3]-48)*exp(4*ln(10))
+(A[4]-48)*exp(3*ln(10))+(A[5]-48)*exp(2*ln(10))
+(A[6]-48)*10+(A[7]-48))*exp((A[10]-48)*ln(10))
else
Transf:= ((A[2]-48)*exp(5*ln(10))+(A[3]-48)*exp(4*ln(10))
+(A[4]-48)*exp(3*ln(10))+(A[5]-48)*exp(2*ln(10))
+(A[6]-48)*10+(A[7]-48))*exp(-(A[10]-48)*ln(10))
end;
Функция V
начало
Предустановка
вольтметра
Съем данных с вольтметра
выход
Листинг функции:
function V:real;
begin
{Предустановка V7-34}
InterfaceClear;
Listener(20);
SendIt(FV); {Програмный идентификатор рода работ}
SendIt(ResV); {Программирование R}
SendIt(RV); {Прог.идент.предела и номера теста}
SendIt(AvpV); {автоматический выбор предела}
SendIt(TV); {програмный идентификатор "запуск"}
SendIt(ToV); {Периодический запуск}
SendIt(MV); {Програм.идент.выдачи информации}
SendIt(SinV); {Однократное измерение с выводом данных}
SendIt(EV); {идентификатор конца программы}
Unlisten;
Talker(20);
for i:=1 to 10 do A[i]:= Getbyte;
Untalk;
v:= Transf*1e3;
InterfaceClear;
end;
Функция однократного измерения данных вольтметром. В качестве результата возвращается числовое значение типа real, определяющее сопротивление.
Процедура vv
Листинг процедуры:
procedure vv;
var sop1,tem1:real;
F:text;
begin
p1(mas[1]);
wn(yellow+128,'ВНИМАНИЕ !!! ИДЕТ ПРОЦЕСС',0);
sop1:=v; tem1:=sop1*17.073+46.76;
cl_w(0);
w3(sop1,tem1);
assign(F,'c:\tp7\workpas\dat\temp.dat');
rewrite(f);
Writeln(F,'Температура (К): ',tem1);
Writeln(F,'Сопротивление (Ом): ',sop1);
close(F);
readkey;
end;
end .
Процедура измерения сопротивления, вычисления температуры и записи этих данных в файл с параллельным выводом на экран. Эта процедура вызывает процедуру оформления экрана P1, вывода рамки wn, опрашивает вольтметр посредством процедуры v и запоминает результат, вычисляет температуру, используя полученный результат, выводит данные на экран с помощью процедуры w3 и в файл, используя стандартные ПФTurbo Pascal.
Процедура generator
начало
Ввод количества
импульсов
Посылка одиночного
импульса Посылка непрерывного
импульса Ввод интервала между импульсами
выход
Листинг процедуры:
procedure generator;
var n,code,i,k:integer;
p:string;
Begin
p1(mas[4]);
p:=dan(4,'Сколько импульсов необходимо послать?:');
val(p,n,code);
if n=1 then begin
wn(YELLOW,'ОДИНОЧНЫЙ ИМПУЛЬС',0);
wn(15+128,'ДЛЯ ПОСЫЛКИ ИМПУЛЬСА НАЖМИТЕ НА ЛЮБУЮ КЛАВИШУ',6);
readkey;
cl_w(6);
InterfaceClear;
Listener(10);
{ SendIt(ResG);}
if g_p=false then SendIt(rpG);
SendIt(rpG);
g_p:=true;
Unlisten;
interfaceClear;
cl_w(0);
wn(yellow,'ИМПУЛЬС ПОСЛАН',0);
readkey;
end
else begin
p:=dan(5,'Задайте интервал между импульсами(ms):');
val(p,i,code);
if i=0 then begin
wn(YELLOW,'НЕПРЕРЫВНЫЙ ИМПУЛЬС',0);
wn(15+128,'ДЛЯ НАЧАЛА ПРОЦЕССА НАЖМИТЕ НА ЛЮБУЮ КЛАВИШУ',6);
readkey;
cl_w(6);
InterfaceClear;
Listener(10);
SendIt(npG);
g_p:=true;
Unlisten;
interfaceClear;
wn(15,'ДЛЯ ОКОНЧАНИЯ ПРОЦЕССА НАЖМИТЕ НА ЛЮБУЮ КЛАВИШУ',6);
readkey;
InterfaceClear;
Listener(10);
SendIt(RpG);
Unlisten;
interfaceClear;
end
else begin
wn(YELLOW,'СЕРИЯ ИМПУЛЬСОВ',0);
wn(15+128,'ДЛЯ НАЧАЛА ПРОЦЕССА НАЖМИТЕ НА ЛЮБУЮ КЛАВИШУ',6);
readkey;
cl_w(6);
InterfaceClear;
Listener(10);
if g_p=false then SendIt(rpG);
for k:=1 to n do
begin
SendIt(rpG);
delay(i);
end;
Unlisten;
interfaceClear;
cl_w(0);
wn(yellow,'ИМПУЛЬСЫ ПОСЛАНЫ',0);
readkey;
end;
end;
end;
Как и все главные процедуры несёт на себе функции управления решением поставленной задачи. При вызове процедуры передача параметров не требуется. Процедура делится на три части: одиночный импульс, непрерывный импульс, серия импульсов. Выбор необходимого режима работы генератора осуществляется полуинтеллектуальным методом, то есть путём анализа данных, введённых с клавиатуры на запросы компьютера. Для оформления экрана процедура использует функции p1, wn, cl_w. На различных этапах работы выводятся рамки с надписями-подсказками.
Процедура Meas
начало
Предустановка
осциллографа
Предустановка
генератора
Съём данных
управления с осциллографа
Преобразование снятых
данных
Создание
файла и запись туда полученных
результатов
выход
Procedure Meas;
Begin
{предустановка осциллографа}
Listener(30); {адресуем на прием}
Command(ZpOs); {запрещаем последовательный опрос}
sendIt(MOs); {начало передачи}
sendIt(COs); {в цикле}
sendIt(ScOs); {запомнить однократный цикл}
sendIt(SmOs); {однокр. режим с запретом выдачи запроса на}
{обслуживание}
sendIt(ScOs); {запомнить однократный цикл}
sendIt(EtOs); {конец передачи}
unlisten; {запрещаем прием данных осциллогафом}
{Генератора}
Listener(10); {адресуем на прием}
sendIt(Resg); {сброс}
sendIt(RpG); {ручной запуск}
sendIt(RpG); {}
sendIt(ZpG); {Внешний запуск}
unlisten;
{съем данных управления с осциллографа}
Listener(30); {адресуем на прием}
Command(ZpOs); {запрет последовательного опроса}
sendIt(MOs); {начало передачи}
sendIt($34); {}
sendIt($42);
sendIt(EtOs);
unlisten;
Talker(30);
for i:=1 to 31 do Up[i]:= GetByte;
Untalk;
{Съем данных с осциллографа}
Listener(30);
Command(ZpOs);
sendIt(MOs);
sendIt($32);
sendIt($42);
sendIt(EtOs);
unlisten;
Talker(30);
ss;
Untalk;
Listener(30);
Command(ZpOs);
sendIt(MOs);
sendIt(COs);
sendIt(ScOs);
sendIt(EtOs);
unlisten;
for i:=1 to 2047 do T[i]:= T[i]-128;
{Преобразование данных}
for i:=1 to 31 do
begin
if up[i]= $43 then
begin
case up[i+1] of
$30: Ku :=0.05;
$31: Ku :=0.1;
$32: Ku :=0.2;
$33: Ku :=0.5;
$34: Ku :=1;
$35: Ku :=2;
$36: Ku :=5;
$37: Ku :=10;
$38: Ku :=20;
$39: Ku :=50
else begin write ('Беда') end;
end;
end;
end;
for i:=1 to 31 do
begin
if up[i]= $45 then
begin
h:= up[i+1] and $0f*20;
h1:= up[i+2] and $0f;
h2:= h+h1;
case h2 of
0: Td := 50e-9; 1: Td := 100e-9; 2: Td := 200e-9;
3: Td := 500e-9; 4: Td := 1e-6; 5: Td := 2e-6;
6: Td := 5e-6; 7: Td := 10e-6; 8: Td := 20e-6;
9: Td := 50e-6; 10: Td := 100e-6; 11: Td := 200e-6;
12: Td := 500e-6; 13: Td := 1e-3; 14: Td := 2e-3;
15: Td := 5e-3; 20: Td := 10e-3; 21: Td := 20e-3;
22: Td := 50e-3; 23: Td := 100e-3; 24: Td := 200e-3;
25: Td := 500e-3; 26: Td := 1; 27: Td := 2;
28: Td := 5; 29: Td := 10; 30: Td := 20
else begin writeln('Беда с дискретизацией') end;
end
end
end;
i:= st;
k:=0;
Repeat
k:=k+1;
U1[i]:= T[i]*Ku/255;
Td1[i]:= (i-1)* Td;
i:=i+st
Until i>2047;
{Создание файла данных}
if (Rez=-1) then S:='.txt' else
begin
Tk:= 17.07*Rez+46.78;
Tk1:= Round(Tk);
Str(Tk1,S);
S:= S+ '.txt';
end;
f1:= f0 + S;
Assign(Fal,'c:\TP7\WORKPAS\DAT\' +f1);
Rewrite(fal);
i:=st;
Repeat
Writeln(Fal,Td1[i],' ',U1[i]);
i:=i+st
Until i>2047;
if (Rez=-1) then begin
gotoxy(xr-6,yr+7);
TextColor(15);
textbackground(blue);
Writeln(' Файл ',f1,' создан.')
end
else Writeln('Файл ',f1,' для температуры ',Tk1,' K создан.');
Close(Fal);
g_p:=false;
end;
Эта процедура является основной рабочей процедурой нашей программы. Её задачами являются: предустановки устройств (очистка линии КОП, программирование каждого прибора), съём данных, преобразование данных и создание выходных файлов, являющихся основным результатом выполнения пунктов «Полный процесс» и «Съём данных с осциллографа» основного меню. Очистка линий, сброс устройств в начальное состояние, программирование устройств, съем данных осуществляется использованием стандартных процедур и функций поставляемых с контроллером канала общего пользования (их описание см. в прилагаемой к адаптеру документации).
Перед созданием файла данных на жёстком диске внутри процедуры формируется его имя. Оно состоит из четырёх частей:
путь к каталогу с файлом (эта часть имени, для упрощения работы с программой, является стандартной и имеет вид С:\ТР7\WorkPas\Dat\);
индивидуальная часть имени (строка не более пяти символов, запрашиваемая у пользователя);
температура на момент съёма данных, записываемых в файл (строка из трёх символов);
расширение файла в виде .TXT.
В процессе работы процедуры факт создания файла отображается на экране в виде надписи.
Параметров процедура не имеет, поскольку использует переменные, определённые как глобальные.
Процедура mp
начало
Ввод пользователем
установочных значений параметров
процесса
Пересчёт введённых
значений температуры в сопротивление
Предустановка
генератора
Предустановка
вольтметра
Опрос вольтметра
выход Съём результатов Запись результатов
в файл
Листинг процедуры:
procedure mp;
begin
p1(mas[2]);
p:=dan(4,'Задайте начальную температуру (K):');
val(p,T1,code);
p:=dan(5,'Задайте конечную температуру (K):');
val(p,T2,code);
p:=dan(6,'Задайте шаг измерения температуры (K):');
val(p,T3,code);
p:=dan(7,'Задайте шаг съема данных с осциллографа:');
val(p,st,code);
f0:=dan(8,'Введите имя файла (не более пяти символов):');
textbackground(black);
textcolor(15+blink);
gotoxy(20,11);write('Охладите пластину до начальной температуры');
gotoxy(20,12);write(' и нажмите "ENTER" для продолжения');
textcolor(lightgray);
readkey;
gotoxy(1,11);clreol;
gotoxy(1,12);clreol;
wn(yellow+128,'ВНИМАНИЕ !!! ИДЕТ ПРОЦЕСС',0);
window(xr-6,yr+7,80,20);
textcolor(15);
r1:=(t1-46.76)/17.073;r2:=(t2-46.76)/17.073;r3:=t3/17.073;
InterfaceClear;
{Предустановка генератора Г5-75}
Listener(10);
SendIt(ResG); {сброс}
SendIt(ZpG); {внешний запуск}
Unlisten;
{Предустановка V7-34}
Listener(20);
SendIt(FV); {Програмный идентификатор рода работ}
SendIt(ResV); {Программирование R}
SendIt(RV); {Прог.идент.предела и номера теста}
SendIt(AvpV); {автоматический выбор предела}
SendIt(TV); {програмный идентификатор "запуск"}
SendIt(ToV); {Периодический запуск}
SendIt(EV); {идентификатор конца программы}
Unlisten;
{Опрос В7-34}
Rn:= R1;
Repeat
tempr;
Meas;
Rn:= Rn+R3;
LocalMode;
Until Rn>R2;
Localmode;
cl_w(0);
window(1,1,80,20);
wn(15,' ПРОЦЕСС ЗАВЕРШЕН ',0);
readkey;
end;
Это главная процедура, отвечающая за пункт меню «Полный процесс». В начале процедуры организован диалог с пользователем. Ввод параметров осуществляется последовательно с клавиатуры. Значения температур и шага изменения должны быть целыми числами (температура в Кельвинах). Далее процедура выполняет программирование генератора и вольтметра и начинает циклический опрос вольтметра до тех пор пока температура пластины не станет равной температуре начала процесса. После того как будет достигнута эта температура, начинается периодический съём данных с осциллографа. Период определяется параметром «шаг измерения температуры». За съем данных с осциллографа и запись результатов в файл отвечает процедура Meas, описанная выше. Процесс заканчивается после того,как будет достигнута конечная температура.
П
начало
Ввод
пользователем начальных установок
процесса
Съём
данных с осциллографа и запись их в
файл
выход
procedure mp1;
begin
Rez:=-1;
p1(mas[3]);
p:=dan(7,'Задайте шаг съема данных с осциллографа:');
val(p,st,code);
f0:=dan(8,'Введите имя файла (не более пяти символов):');
wn(15,' ',6);
meas;
wn(15,'ПРОЦЕСС ЗАВЕРШЕН',0);
readkey;
end;
Эта процедура осуществляет одноразовый съём данных с осциллографа. Основной её частью является процедура Meas.