Учебное пособие 2060
.pdfИзмерение амплитудных и временных параметров сигнала производится при помощи 2-х маркеров. Разность значений между позициями маркеров по вертикали, умноженная на коэффициент сжатия - амплитудное значение разности напряжений, а по горизонтали - времени.
Приведенная ниже часть программы поясняет, как производится вывод
сигнала на экран модели МЦО при различной разрядности АЦП, а так же методику осуществления дельта-измерений.
Procedure TDisplay.Draw;
Var R1,R2,R3,R4,R5,R6,R7,R8:Real;
I,J,K:Integer;
Begin
HideMouse;
SetColor(LightGreen);
PutImage(30,30,ObjView[CleanDisp].Img^,0);
R1:=(1/HD)/(1/SigFreq); |
{Периодов На Дисплей} |
|
R2:=R1/300; |
{Частей периода на точку} |
|
R3:=0; |
|
|
R4:=VD/20; |
|
|
K:=0; |
|
|
R5:=(1/HD)/(1/ModFreq)/300; |
|
|
R6:=0; |
|
|
R7:=(1/HD)/300; |
|
|
SetViewPort(30,30,329,229,True); |
{задается окно, в} |
|
For I:=1 To 299 |
{котором ,будет выводится} |
|
Do |
{сигнал (300х200 точек)} |
Begin R8:=SigFunc^.GetValue(R3)*SigAmp;
{пересчитывается амплитуда} {и частота сигнала с учетом}
{коэффициента растяжения} Modulate(R3,R6,R8); {пересчитывается амплитуда}
{и частота сигнала с учетом} {модуляции}
If SigAmp>0 Then
R7:=Int((R8/SigAmp)*DACRes)/DACRes {распределение сигнала}
Else {по уровням квантования} {DACRes+1 - разрядность АЦП}
R7:=0;
J:=Round(R7*SigAmp/R4);
Line(I-1,100-K,I,100-J); {непосредственный вывод} {сигнала на экран ЦО}
R3:=R3+R2; |
|
|
R6:=R6+R5; |
|
|
K:=J; |
|
|
End; |
|
|
Markers[1].Draw; |
|
{вызов маркеров} |
Markers[2].Draw; |
|
|
SetViewPort(0,0,GetMaxX,GetMaxY,True); |
||
J:=Markers[1].XL-Markers[2].XL; |
{определение расстояния} |
|
J:=Abs(J); |
{между маркерами} |
|
K:=Markers[1].YL-Markers[2].YL; |
|
|
K:=Abs(K); |
|
|
Time.Value:=Round(J*R7*10000); |
{пересчет расстояния } |
|
|
{между маркерами} |
|
|
{с учетом коэффициента} |
|
|
{растяжения по частоте} |
|
Time.Draw; |
{вывод результатов} |
|
|
{дельта-измерений} |
|
|
{в секундах} |
|
Amp.Value:=Round(K*R4*100); |
{пересчет расстояния } |
|
|
{между маркерами} |
|
|
{с учетом коэффициента} |
|
|
{растяжения по амплитуде} |
|
AMP.Draw; |
{вывод результатов} |
Рис. 5.5. Эмулятор передней панели виртуального цифрового осциллографа Задано чачстотно – модулированное колебание с помощью управляющих клавиш справа вверху
и численной фиксацией результата. Вид осциллограммы устанавливается с помощью кнопок и клавиш внизу под осциллограммой (коэффициент отклонения и коэффициент развѐртки). Включѐн режим дельта – измерений (два белых маркера на осциллограмме). Результат этих измерений представлен двумя цифровыми индикаторами справа внизу, они фиксируют амплитудные и временные параметры осциллограммы, ограниченные маркерами.
Рис. 5.8. Импульсный и гармонический амплитудно – модулированные колебания на эмуляторе ЦОС.
5.2.2. Виртуальные модели аналоговых осциллографов
Рассмотрим две модели аналоговых осциллографов, имеющих весьма близкий интерфейс с их реальными прототипами. Из –за ограниченного объѐма учебного пособия работоспособность моделей покажем с помощью соответствующих эмуляторов, работающих совместно с дополнительными средствами, необходимых для иллюстрации выбранного режима. Программные средства в силу их большого объѐма мы рассматривать не будем.
Осциллограф С1 – 75
Рис. 5.9. Эмулятор осциллографа С1 – 75
Осциллограф работает в режиме поочерѐдных подключений сигналов на входе каналов А и Б с дополнительным ЭСВ, показывающим среднеквадратическое значение сигнала канала А. Программа работы содержит встроенный генератор для подачи заданного вида сигнала на вход каналов А и Б. Органы управления работой генератора расположены слева внизу. Органы управления осциллографа расположены справа. Вместо ЭСВ можно подключить ЭСЧ, для этого достаточно нажать кнопку «Частотомер» в строке «Меню» вверху панели. Пример вспомогательной программы представлен ниже.
Программа 1
unit Convu2;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, StdCtrls, ExtCtrls, Forms, Common;
type
TFAbor = class(TForm) Panel1: TPanel; Label1: TLabel; Timer1: TTimer;
procedure Timer1Timer(Sender: TObject); end;
var
FAbor: TFAbor;
implementation
{$R *.DFM}
procedure TFAbor.Timer1Timer(Sender: TObject); begin
Close;
end;
end.
В заключение представим краткое описание работы эмулятора аналогового осциллографа С1 – 75. Данная программа является электронным аналогом осциллографа С1-75, которая реализует основные режимы работы:
1.Непрерывный режим ( полностью соответствует режиму работы осциллографа, при этом на экране всегда существует развертка. Возможны все режимы работы регистрации сигналов.
2.Ждущий режим ( при работе в этом режиме развертка появляется только при наличии сигнала от задающего генератора. В данной модели невозможна реализация каналов Y как таковых, поэтому вместо них используются виртуальные генераторы для каждого канала соответственно. Такой генератор может формировать гармонический, амплитудно-модулированный (АМ) сигналы,
атак же сигнал последовательности прямоугольных импульсов. Соответственно выбор сигнала выставляется нажатием соответствующей клавише. Кроме того, генераторы позволяют выставлять все параметры сигналов. Частоту (f), ам-
плитуду (Um), для прямоугольного сигнала скважность (q), для АМ-сигнала коэффициент модуляции (К), частоту модулирующего сигнала (F). Причем, значения могут принимать непрерывные значения в полосе от 20 Гц до 200 кГц ( для частот, от 0.1В до 9.9В( для амплитуды, скважности от 1.1 до 9.9, а так же для коэффициента модуляции от 0.1 до 0.9. Сигналы от каналов могут выводиться отдельно (режим А и Б), поочерѐдно, когда развертка происходит одновременно для обоих каналов (режим "поочередно"), прерывисто, когда развертка происходит последовательно по каждому каналу ( режим " прерывисто").
Канал горизонтальной развертки (Х) полностью соответствует самому устройству, за исключением регулятора уровень, и вывода сигнала на экран (невозможно засечь начало развертки, поэтому необходимо принять за начало левый край сигнала).
Канал синхронизации выполнен не полностью, так как отсутствует внешняя синхронизация , внутренняя осуществляется с приоритетом канала А, синхронизируется регулятором "стабильность".
Z-канал сделан не в соответствии с осциллографом. Сам Z-канал представляет собой генератор прямоугольных сигналов с заданным периодом в соответствии с положительной частью «прорисовывается» луч на экране и при отрицательной половине луча нет.
Калибратор выполнен не в соответствии с осциллографом, в данной модели он представляет собой генератор сигнала типа "меандр" с заданной частотой и амплитудой. Так как в реальном устройстве выход с калибровочного генератора может подключаться к любому из каналов, то в программе он прерывает работу каналов и становится недоступным для вертикальной развертке.
Работа виртуальной модели позволяет одновременно в реальном времени задавать параметры сигналов обоих каналов, менять развертку по вертикали, переключая переключатель "Вольт/дел"; менять размер по горизонтали, дискретным переключателем "Время/дел"; синхронизировать сигнал по приоритету, смещать по горизонтали и по вертикали (для каждого канала своѐ смещение), реализовывать метод временных меток (работой "Z-канала"). При работе калибратора все режимы и переключатели с регуляторами блокируются, кроме переключателя "Время/дел".
Осциллограф С1 – 93
Виртуальная модель аналогового осциллографа С1 – 93 выполнен по аналогии с моделью С1 – 75. Приведѐм программу структуры модели осциллографа.
Структура.
#[Переменные]#
TsA - тип сигнала для канала A
TsA: byte;
TsB - тип сигнала для канала B
TsB: byte;
1 - Гармоничный сигнал
2 - Прямоугольный сигнал
3 - АМ сигнал
fA, fB - частота для канала А и Б fA, fB: longint;
UmA, UmB - амплитуда для канала А и Б
UmA, UmB: Extended;
taA, taB - скважность для канала А и Б taA, taB: Extended;
F1A, F1B - частота модулирующего сигнала для канала А и Б
F1A, F1B: longint;
K1A, K1B - коэффициент модуляции для канала А и Б
K1A, K1B: Extended;
VsmA, VsmB - Вольт для канала А и Б
VsmA, VsmB: Extended;
VsmAP, VsmBP - Предыдущие значение "Вольт" для канала А и Б
VsmAP, VsmBP: Extended;
VsmAN, VsmBN - Следующие значение "Вольт" для канала А и Б
VsmAN, VsmBN: Extended;
TsmP - Предыдущие значение "Время" для каналов
Tsm: Extended;
TsmN - Следующие значение "Время" для каналов
Tsm: Extended;
Q - Смещение по горизонтали
Q: Extended; P - Уровень
P: Extended; d - Стабильность
d: integer;
bA - рисовать/не рисовать канал А bA: boolean;
bB - рисовать/не рисовать канал Б bB: boolean;
br - прерывистое/не прерывистое рисование каналов br: boolean;
bZ - включен/выключен Z канал bZ: boolean;
bK - включен/выключен Калибратор bK: boolean;
leng - Растяжка leng: byte;
brr - ждущий/непрерывный сигнал brr: boolean;
kvA - Смещение по вертикали для канала А
kvA: integer;
kvB - Смещение по вертикали для Канала Б kvB: integer;
KA - случайное число {-3, -2, -1, 0, 1, 2, 3} для канала A
KA: integer;
KB - случайное число {-3, -2, -1, 0, 1, 2, 3} для канала B
KB: integer;
ta - переменная цикла t для Канала А ta: Extended;
tb - переменная цикла t для Канала Б tb: Extended;
Zp - значение переключателей Z канала
Zp: Extended;
bkTsm - предыдущее значение "Время/Дел" для "Калибратора" bkTsm: Extended;
arA - служебный массив для канала A arA: Tar;
arB - служебный массив для канала B arB: Tar;
bcA - Задействован или нет служебный массив канала A bcA: boolean;
bcB - Задействован или нет служебный массив канала A bcB: boolean;
bfb - Задействован или нет служебные массив определяется на низ-
ком
уровне bfb: boolean;
bbbk - На предыдущем этапе был ли задействован "Калибратор" bbbk: boolean;
bbbA - вспомогательная переменная при прорисовки канала A отве-
чающая
рисовать или не рисовать bbbA: boolean;
bbbB - вспомогательная переменная при прорисовки канала B отве-
чающая
рисовать или не рисовать bbbB: boolean;
U0A, U0B - Uo для каналов A и B
U0A, U0B: Extended;
bU0A, bU0B - Работает/не работает прорисовка с Uo для каналов A
и B
bU0A, bU0B: tb;
Рис. 5.10. Пример работы виртуального осциллографа С1 – 93
Осциллограф работает в режиме «Поочерѐдно». На вход канала А подано гармоническое колебание, а на вход канала Б – импульсное со скважностью 5. Дополнительно с основной программой работает частотомер и вольтметр для измерения переменного и постоянного напряжений. Для выделения сигналов поданы постоянные напряжения (открытые входы каналов А и Б).
Программа работы встроенного вольтметра представлена ниже. Программа 2
unit Volt; interface uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TFVolt = class(TForm) SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton; Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn; Panel1: TPanel; Lab: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton6: TSpeedButton;
procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton6Click(Sender: TObject);
private
Vsmm: double; br: boolean;
public
Um, U0, U: double; end;
var
FVolt: TFVolt; implementation {$R *.DFM}
procedure TFVolt.SpeedButton2Click(Sender: TObject); begin
Vsmm:=0.01;
end;
procedure TFVolt.SpeedButton3Click(Sender: TObject); begin
Vsmm:=0.1;
end;
procedure TFVolt.SpeedButton4Click(Sender: TObject); begin
Vsmm:=1;
end;
procedure TFVolt.SpeedButton5Click(Sender: TObject); begin