Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаб5АСУ

.docx
Скачиваний:
1
Добавлен:
29.03.2026
Размер:
193.74 Кб
Скачать

МИНОБРНАУКИ РОССИИ

«Челябинский государственный университет»

(ФГБОУ ВО «ЧелГУ»)

Физический факультет

Кафедра радиофизики и электроники

ЛАБОРАТОРНАЯ РАБОТА № 5

ТЕМА: Измерение параметров частотно-импульсного сигнала с использованием средств стандарта КАМАК

Выполнил: Агеев А.А.

Группа: ФФ-404

Принял: Михайлов С.Н.

Челябинск

2026

Цель работы: Необходимо измерить частоту следования прямоугольных импульсов с помощью счетчика ФК 5299 стандарта КАМАК

Общие сведения

Предлагается к рассмотрению автоматизированная система:

Задача: Необходимо разработать программный модуль, обеспечивающий измерение частоты следования прямоугольных импульсов. В качестве источника сигнала использовать генератор типа ГЗ-112\1. Вывод измеренной частоты должен осуществляться на экран терминала, а результаты счета импульсов – на регистр ФК449 КАМАК.

Блок-схема алгоритма:

Для автоматизации эксперимента используется крейт КАМАК – стандартизированная система сбора данных и управления, широко применяемая в измерительных комплексах АСУ. В состав экспериментальной установки входят:

  • Счётчик ФК‑5299 – модуль, выполняющий функции измерительного преобразователя: запуск счёта импульсов (F26), остановка (F24) и чтение результата (F2). Номер станции (адрес) модуля – 14, субадрес – 2.

  • Регистр ФК‑449 – модуль индикации, отображающий текущее значение счёта на светодиодной панели (бинарная индикация). Используется для визуального контроля. Номер станции – 20, субадрес – 0, функция записи – F16.

  • Крейт КАМАК – магистрально-модульная конструкция, обеспечивающая питание, обмен данными и управление модулями по стандартизированной шине.

  • Контроллер крейта на базе микропроцессора AT89C5131 и модуля USB‑UART DLP‑USB245M (FTDI), который организует связь с персональным компьютером через виртуальный COM-порт.

Управление модулями осуществляется посредством записи кода команды NAF (номер станции N, субадрес A, функция F) в COM-порт. Для упрощения разработки программного обеспечения используется библиотека libcamac.dll, предоставляющая функции высокого уровня для формирования команд и обмена данными.

В рамках данной работы предполагается, что объект управления (звено), включённое в контур АСУ, обладает инерционностью первого порядка. Тогда его передаточная функция имеет вид:

где:

  • k – коэффициент усиления (отношение выходной частоты к входной в установившемся режиме);

  • T – постоянная времени (характеризует инерционность объекта).

Экспериментальное определение k и T производится по результатам серии измерений частоты выходных импульсов при различных частотах входного сигнала. Полученные значения позволяют построить модель объекта, необходимую для синтеза регуляторов и анализа устойчивости замкнутой системы.

Программа:

unit MainUnit;

interface

uses

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

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Memo1: TMemo;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormDestroy(Sender: TObject);

private

hPort: THandle;

end;

var

Form1: TForm1;

implementation

// Импорт функций из libcamac.dll

function openCOMPort(const Name: PChar; var ComPort: THandle): integer; stdcall; external 'libcamac.dll';

function closeCOMPort(ComPort: THandle): integer; stdcall; external 'libcamac.dll';

function searchCOMPorts(Numbers: pointer; const Size: integer): integer; stdcall; external 'libcamac.dll';

procedure setCamacPort(Port: THandle); stdcall; external 'libcamac.dll';

procedure clearBuffer(); stdcall; external 'libcamac.dll';

procedure ActCam(); stdcall; external 'libcamac.dll';

procedure ActNAF(N, A, F: byte); stdcall; external 'libcamac.dll';

function ActR(): longword; stdcall; external 'libcamac.dll';

procedure ActW(Word: longword); stdcall; external 'libcamac.dll';

{$R *.dfm}

const

ST_COUNTER = 14; // Счетчик ФК-5299

ST_REG = 20; // Регистр ФК449

A_CNT = 2; // Субадрес счетчика

A_REG = 0; // Субадрес регистра

procedure TForm1.FormCreate(Sender: TObject);

var

ports: array[0..9] of Integer;

i, cnt: Integer;

begin

hPort := THandle(-1); // Вместо INVALID_HANDLE_VALUE

Edit1.Text := '10';

Memo1.Clear;

cnt := searchCOMPorts(@ports, SizeOf(ports));

for i := 0 to cnt-1 do

if openCOMPort(PChar('COM'+IntToStr(ports[i])), hPort) = 0 then

begin

setCamacPort(hPort);

Break;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

n, i: Integer;

val: Longword;

begin

if hPort = THandle(-1) then Exit;

n := StrToIntDef(Edit1.Text, 10);

if n <= 0 then Exit;

Memo1.Lines.Add('Частота (Гц):');

for i := 1 to n do

begin

clearBuffer;

ActNAF(ST_COUNTER, A_CNT, 26); ActCam; // Запуск

Sleep(1000);

clearBuffer;

ActNAF(ST_COUNTER, A_CNT, 24); ActCam; // Останов

clearBuffer;

ActNAF(ST_COUNTER, A_CNT, 2); ActCam; // Чтение

val := ActR;

clearBuffer;

ActW(val); // Данные для регистра

ActNAF(ST_REG, A_REG, 16); ActCam; // Запись в регистр

Memo1.Lines.Add(Format('%d: %d Гц', [i, val]));

Sleep(100);

end;

clearBuffer;

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

if hPort <> THandle(-1) then

closeCOMPort(hPort);

end;

end.

Вывод: лабораторная работа позволяет практически ознакомиться с методами идентификации динамических звеньев АСУ с использованием стандартных средств автоматизации (система КАМАК), а также закрепить навыки разработки управляющих программ на языке высокого уровня (Delphi) для взаимодействия с измерительным оборудованием.

5