Лекция №11 Разработка интерфейсно-ориентированной библиотеки процедур для управления крейтом КАМАК.


Анализ статусных сигналов.

Архитектура АС на основе внешней ЭВМ.

Управляющая часть КК.

Генератор цикла КАМАК задает временный цикл сигналов на магистрали крейта. Генератор вырабатывает на магистрали сигналы B, S1, S2 в соответствии с временным диапазоном операций.

Рис. 10.9 Общая функциональная схема КК КАМАК.

Сигналы L-запросов распределены по приоритетам: L1 – самый высокий приоритет, L23 – самый низкий.

На основе внешней ЭВМ может включать от 1 до 4 крейтов КАМАК.

Рис. 10.10 Архитектура АС на основе внешней ЭВМ.

Общая длина может достигать 10м. КК транслирует сигналы магистрали ЭВМ в сигналы магистрали крейта. Архитектура не определена стандартом, для каждого типа ЭВМ требуется специально разработанный КК.

Недостаток контроллеров – ограниченная длина линий связи. Для адресации какого-либо модуля в крейте необходимо указать помимо субадреса номер станции и номер крейта.

10.3 Программная модель КК типа ККП3 для ЭВМ семейства IBM PC.

КК типа ККП3 предназначен для управления магистралью крейта КАМАК с помощью ЭВМ семейства IBM и в программном режиме, и в режиме прямого доступа к памяти (ПДП). Он обеспечивает обмен данными между модулями КАМАК и магистралью ввода-вывода ЭВМ словами длиной 8, 16 или 24 двоичных разряда. Занимает 25 управляющую станцию и 24 нормальную станцию.

Все КК занимают 16 последовательных адресов на магистрали ввода-вывода ЭВМ (базовый адрес КК 240h).

Регистры КК обеспечивают контроль работы и управление функциональными модулями крейта. КК содержит 13 внутренних 8-разрядных регистров, девять из которых (адреса 0h-7h, Fh) доступны процессору для записи данных, остальные четыре (адреса 8h, 9h, Ah, Bh) для чтения.

Генератор цикла КАМАК используется для выполнения адресной или безадресной операции КАМАК (длительность 1 мкс). Запись в регистр с адресом 7 (регистр запуска) запускает цикл адресной или безадресной операции.

Схема формирования адресных сигналов включает регистр номера станции N(5) и регистр субадреса. Процессору указанные регистры доступны для записи. В регистр с адресом 5 записывается номер станции. В регистр субадреса до начала выполнения адресной операции необходимо записать субадрес устройства – число в диапазоне 0-15.

При выполнении адресной операции N дешифрируется КК и устанавливается Ni=1 на одну из линий. Такой способ называется географическая адресация.

Схема формирования управляющих сигналоввключает регистр кода операции и позволяет выполнять операции с кодом F(0)-F(31) – 32 различных операции.

Регистр общего управления крейтом (адрес 6) используется при начальной инициализации регистров КК или генерации на магистраль крейта безадресных операций управления Z, C, I. Запись 1 в разряд AX4 (AX4=1) выполняет установку элементов КК в исходное состояние - начальная инициализация КК. По окончании инициализации содержимое регистра сбрасывается в 0. Безадресные операции Z, C, I могут быть сгенерированы посредством записи 1 в соответствующие разряды регистра и запуска цикла КАМАК на магистрали. Чтобы выполнить операцию Z, необходимо Z=1 и I=1 - запуск, для выполнения операции C необходимо, чтобы C=1. После выполнения операций C=0, Z=0 сбрасываются автоматически, I сбрасывать вручную.

Регистры данных – используется 6 регистров данных: 3 регистра для чтения и 3 регистра для записи данных.

Регистры данных записи (адреса 0, 1, 2) исполняют роль буферных регистров. Для записи данных вначале необходимо записать 24-разрядное слово данных. Процессор имеет возможность записи данных в указанные регистры. Если модуль КАМАК требует слово меньшей разрядности (16 или 8), то можно использовать только часть регистров записи.

Регистры данных чтения (адреса 9, Ah, Bh) исполняют роль буферных регистров 24-разрядного слова данных, поступающего из ФМ КАМАК по шине данных чтения R1-R24. При выполнении адресной операции чтения данные шины данных R записываются в указанный регистр. Если ФМ КАМАК передает данные словами меньшей разрядности (16 или 8), то процессор может читать только часть указанных регистров.

Схема хранения и обработки статусных сигналов.

Регистр состояния КАМАК (адрес 8). Старший бит обозначен *L, он показывает наличие запроса от модулей крейта. Если *L=1, то информация в регистрах не имеет смысла. Линия *L переходит в нулевое состояние, если имеется L-запрос от какого-либо модуля в регистре состояния КАМАК. В разряде 2 находится номер станции с наивысшим приоритетом: L1 – самый высокий приоритет, L23 – самый низкий. Сигналы X и Q фиксируются во время адресных операций: X – всегда, Q – иногда, по усмотрению разработчика.

Регистр номера крейта КАМАК и управления ПДП (адрес Fh) служит для указания номера активного контроллера крейта, к которому поступают команды процессора и параметры режима ПДП интерфейса. Разряды регистра 5 и 4 (C2, C1) содержат номер крейта, с которым выполняется обмен данными: 00 – крейт 1, 01 – крейт 2, 10 – крейт 3, 11 – крейт 4.

10.4 Методика управления контроллером крейта и модулями КАМАК.

Управление КК и ФМ включает инициализацию электронных элементов контроллера, выполнение безадресных или адресных операций в модуле и анализ содержимого статусных сигналов.

Инициализация ККвыполняется после включения питания до начала работы системы следующей последовательностью команд ЦП:

1. Установка номера c(i) i=1..4 активного КК в регистре номера крейта;

2. Сброс в исходное состояние внутренних элементов КК установкой разряда AX4=1 в регистре общего управления крейтом. По окончании инициализации разряд AX4 сбрасывается.

Генерация на магистрали крейта безадресной или адресной операциивыполняется путем записи необходимой информации в регистры КК и запуска операции на магистрали.

Безадресная операция запрет I выполняется на магистрали крейта при записи кода 4 в регистр общего управления крейтом КАМАК. Сигнал I сохраняется на магистрали до его сброса в регистре общего управления крейтом.

Безадресные операции Z, C выполняются следующим образом:

1. Запись кода операции Z (код 5) с I или кода операции C (код 2) в регистр общего управления крейтом КАМАК (относительный адрес 6h);

2. Запуск операции на магистрали крейта посредством записи произвольного значения в регистр запуска операции КАМАК (относительный адрес 7h).

По окончании операции на магистрали, разряды Z или C регистра общего управления сбрасываются.

Адресные операции выполняются на магистрали крейта при участии двух устройств:

1. Управляющий модуль – КК, при выполнении любой адресной операции устанавливает на магистрали сигналы N, A, F.

Управляющий модуль при выполнении операций записи (F(10)-F(23)) устанавливает данные на ШД записи на линии W1-W24.

2. Исполнительный модуль – ФМ, реагирует на строб-сигналы S1, S2 и устанавливает на магистрали X – команда принята, Q – ответ модуля.

КК принимает статусные сигналы и данные (при операциях чтения) в момент сигнала S1. В момент сигнала S2 ФМ может изменить данные на ШД (если, например, предусмотрен сброс).

Последовательность действий процессора при выполнении адресных операция чтения.

Адресные операции чтения: F(0)-F(7). При выполнении этих операций ЦП до запуска операций в регистре КК должен установить:

1. Адрес крейта c(i) в регистр в регистр номера крейта (относительный адрес Fh);

2. Номер станции N(i) в регистр номера станции (относительный адрес 5h);

3. Код субадреса A(m) в регистр субадреса (относительный адрес 3h);

4. Код операции F(k) в регистр функции (относительный адрес 4h).

Запуск операции на магистрали – нужно в регистр запуска операции (относительный адрес 7h) записать произвольное значение. Выполнится адресная операция чтения, и 24-разрядное слово передастся из ФМ в регистр данных чтения.

После завершения операции на магистрали – чтение данных из регистров данных чтения КК в ОЗУ:

1. Младшего байта данных R8-R1 из регистра чтения с адресом Bh;

2. Среднего байта данных R16-R9 из регистра чтения с адресом Ah;

3. Старшего байта данных R24-R17 из регистра чтения с адресом 9h.

Последовательность действия процессора при выполнении адресных операций управления.

Операции управления F(8)-F(15), F(24)-F(31). При выполнении этих операций ЦП выполняет следующие действия:

1. До запуска операции на магистрали – запись N, A, F в соответствующие регистры КК. Коды операций F(k): k – 8-15, 24-31.

2. Запуск операции на магистрали. Выполняется без передачи данных.

В результате действия этих операций будет выполнена адресная операция управления без передачи данных.

Последовательность действий процессора при выполнении адресных операций записи.

Операции записи: F(16)-F(23).

1. До запуска: запись адреса устройства c(i), N(i), A(m) и кода операции записи F(k), k=16-32.

2. Запись 24-разрядного слова в регистр данных записи:

- Младший байт в регистр записи младшего байта (W8-W1) данных (относительный адрес 2h);

- Средний байт в регистр записи среднего байта (W16-W9) данных (относительный адрес 1h);

- Старший байт в регистр записи старшего байта (W24-W17) данных (относительный адрес 0h).

3. Запуск операций на магистрали крейта. 24-разрядное слово данных из регистра записи КК предается в адресованный модуль.

Статусные сигналы X, Q вырабатываются модулем в ответ на любую адресную команду. Проверять имеет смысл после какой-либо адресной операции.

Статусные сигналы L1-L23 вырабатываются модулями в произвольный момент времени. *L=0 – есть запрос на обслуживание. L16, L8, L4, L2, L1 – номер станции с наивысшим приоритетом.

10.5 Методика построения программного обеспечения в АС на основе унифицированных магистрально-модульных интерфейсных систем.

Программное обеспечение (ПО) разделяется на категории:

1. ПО для управления объектом, сбора данных в реальном времени.

2. Средства обработки, преставления, документирования информации, уровни:

- Аппаратно-ориентированное ПО должно содержать набор управления контроллером или адаптером.

Должно обеспечить прием и передачу данных по магистрали интерфейса в соответствии с протоколом обмена данными интерфейсной системы, также должно обеспечить установку в “1” или сброс в “0” данных линий управления интерфейсом, чтение статусных линий магистрали интерфейса.

Адаптеры:

· С преимущественно программной реализацией функции управления;

· С преимущественно аппаратной реализацией функции управления.

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

От разработчика требуется знание интерфейса системы. Международная электротехническая компания IEC выработала рекомендации для интерфейса КАМАК IEC-713.

- Приборно-ориентированное ПО должно содержать набор процедур для управления определенными типами интерфейсных приборов.

- Интегрированная среда разработчика.

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

Пример: LabVIEW, LabWindows CVI, LookOut, BridgeVIEW.

 

Библиотека разрабатывается в соответствии со стандартом IEC-713.

 

Unit KKP3;

 

Interface

{Инициализация КК}

Procedure CCInit (c: integer); {c – номер крейта в диапазоне 1-4}

{Безадресные операции в крейте}

Procedure CCCZ (c: integer); {Операция Z}

Procedure CCCC (c: integer); {Операция C}

Procedure CCCI (c: integer, I: boolean); {Установка (true) / Сброс (false) сигнала запрет I на магистрали}

{Адресные операции на магистрали}

Function CFSA (F, c, N, A: integer, var D: longint, var Q:integer): Boolean; {F(k), k=0÷31 – можно выполнить любую адресную операцию; c(i), i=1÷4; N(j), j=1÷23; A(m), m=0÷15; Q – 0/1, статусный сигнал; D – 24-разрядные данные; CFSA=true, если модуль возвратил X, иначе false}

Function CSSA (F, c, N, A: integer, var D:word, var Q:integer): Boolean; {Такая же функция, как и CFSA, но для 16-разрядных операций}

Procedure CTGL (c:integer, var L:integer); {Чтение регистра состояния, возвращение в L}

Function Hex (Date: longint); {Возвращает значение Date в шестнадцатеричный формат}

 

Implementation

Const BA=$240; {Базовый адрес КК}

Const K=? {Здесь нужно указать задержку на время выполнения операции на магистрали крейта}

{Аппаратно-ориентированное ПО}

Procedure CAMACcikl; {Запрещает КАМАК-цикл в выбранном крейте и организует задержку ≈1 мкс}

Var i: integer;

Begin

Port[BA+7]:=$FF;

For i=0 to K do; End;

Procedure crate(i: integer); {Выбор крейта}

Begin

Dec(c);

Port[BA+$F]:=(c and 3) shl 4; End;

{Вспомогательные процедуры}

Function Hex (Date: longint): string;

Const H: array [0..15] of char = ‘0 1 2 3 4 5 6 7 8 9 A B C D E F

var D:longint;

Begin

D:=Date;

Hex:=’$’ + H[(D shr 20) and $F] + H[(D shr 16) and $F] + H[(D shr 12) and $F] + H[(D shr 8) and $F] + H[(D shr 4) and $F] + H[D and $F]; {Переменную D сдвигаем на 20 разрядов, оставляем 4 старших}

 

Function CFSA(F, c, N, A: integer; var D:longint; var Q:integer): boolean;

Var WP: array [0..3] of byte absolute D;

{Переменные расположатся

D
Wp[3] Wp[2] Wp[1] Wp[0]
 
  Ah Bh

}

Begin

Crate(c);

Port[BA+3]:=A; Port[BA+7]:=F; Port[BA+5]:=N; {Можно выполнять в произвольном порядке}

If F in [16..23] then

Begin

Port[BA+2]:=Wp[2]; Port[BA+1]:=Wp[1]; Port[BA]:=Wp[0];

End;

{Запускаем КАМАК-цикл}

CAMACcikl;

Q:=Port[BA+$8] and 1;

CFSA:=(Port[BA+8] and 2)<>0;

If F in [0..7] then

Begin

Wp[0]:=port[BA+$B]; Wp[1]:=port[BA+$A]; Wp[2]:=port[BA+9]; Wp[3]:=0;

End;

Function CSSA(F, c, N, A: integer; var D:word; var Q:integer): boolean;

Var WP: array [0..3] of byte absolute D;

Begin

Crate(c);

Port[BA+3]:=A; Port[BA+7]:=F; Port[BA+5]:=N;

If F in [16..23] then

Begin

Port[BA+2]:=Wp[2]; Port[BA+1]:=Wp[1]; Port[BA]:=Wp[0];

End;

CAMACcikl;

Q:=Port[BA+$8] and 1;

CFSA:=(Port[BA+8] and 2)<>0;

If F in [0..7] then

Begin

Wp[0]:=port[BA+$B]; Wp[1]:=port[BA+$A]; Wp[2]:=port[BA+9]; Wp[3]:=0;

End;

Procedure CTGL(c: integer, var L: integer);

Begin

Crate(c);

L:=port[BA+8];

If (L and $80)=0 then L:=2 shr 2 else L:=0;

End;

End.