NetNado
  Найти на сайте:

Учащимся

Учителям



Институт ядерной физики со ран



ИНСТИТУТ ЯДЕРНОЙ ФИЗИКИ СО РАН

М.В. Коллегов
КРЕЙТ КОНТРОЛЛЕР СС-232.

Препринт 94-84


НОВОСИБИРСК

Крейт контроллер СС-232 предназначен для использования в

малых системах автоматизации, где не требуется высокая скорость

обмена с КАМАК крейтом. Предполагается, например, использовать

его в составе комплекса аппаратуры предназначенного для

управления промышленными ускорителями.

Крейт контроллер имеет интерфейс RS-232,что позволяет легко

подключить КАМАК крейт практически к любой ЭВМ.

При скорости передачи 57600 бод пропускная способность линии

связи позволяет выполнять до 400 камак циклов в секунду.

Крейт контроллер выполнен на базе микроконтроллера

1816ВЕ31 со встроенным последовательным интерфейсом.

Микроконтроллер обеспечивает прием и передачу данных в соответствии

с описанным ниже протоколом передачи данных, и рассылку данных

в регистры контроллера. КАМАК цикл формируется простейшим автоматом.

Поскольку стандарт ограничивает длительность КАМАК цикла только

с одной стороны ( не менее 1мкс), в контроллере, в целях увеличения

надежности, КАМАК цикл удлиннен и составляет 1.44мкс. Кроме того

заложена возможность увеличения длительности цикла еще в 2 или 4 раза.

Контроллер снабжен аппаратным генератором сигнала

сброса на случай зависания процессора. Кроме того,

процессор в процессе работы непрерывно контролирует собственное

состояние и корректирует его в случае сбоев. Эти два механизма

гарантируют восстановление работоспособности контроллера и выход

его в известное состояние при любых сбоях.

Последовательный порт контроллера работает в режиме:

8-бит, четность even , 2 стоповых бита.

Используются только линии передачи данных.

Приемник и передатчик интерфейса гальванически развязаны

по питанию двойной трансформаторной развязкой, по сигналам

оптронной развязкой.

Предельное напряжение изоляции до 1000в.
Скорость передачи 4800,9600,19200,57600 выбирается переключателем.
переключатель скорость передачи

No:5 4 (бод)
0 0 57600

0 1 19200

1 0 9600

1 1 4800

Номер переключателя соответствует номеру вывода процессора, напротив

которого он расположен.

На передней панели установлен разъем СНП101-9В

2 RXD вход данных. (потенциальный вход)

3 TXD выход данных. (Iвых не менее 10 ma.)

5 GND общий провод подвешенной части интерфейса.

(изолирован от корпуса крейта).

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

подключения к разъему последовательного порта IBM PC).

5 ------------------ 5

9 9

--4 4-¬

--8 ¦ ¦ 8-¬

¦ ¦ 3 ---------¬-------- 3 ¦ ¦

L-7 ¦ -+- ¦ 7--

¦ 2 ---------L-------- 2 ¦

6-+ +-6

L-1 1--
Перемычки на сигналах готовностей могут быть установлены

только со стороны IBM PC.

На передней панели блока расположены 4 светодиода

индицирующие прием, передачу данных по линии RS232, возникновение

LAM запроса в крейте и светодиод индицирующий ошибки (сбой процессора,

ошибки при приеме данных и т.п.).
Контроллер питается только напряжением +6v и потребляет

не более 2A.


Краткое описание протокола.

Вся информация передается последовательностью байтов.

При этом 6 младших бит в байте несут информацию, а два старших

бита являются управляющими.

Значение управляющих битов 6,7 в байте:
бит значение при передаче значение при передаче из

7,6 в контроллер контроллера
1 1 - первый байт посылки. не используется

0 0 - байт внутри посылки. байт внутри посылки

1 0 - последний байт в посылке. последний байт

0 1 - команда. LAM запрос
Для генерации КАМАК цикла управляющая ЭВМ должна передать

в контроллер номер станции с признаком первого байта в посылке,

субадрес, функцию и данные если необходимо. Последний переданный

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

контроллер выполняет КАМАК цикл и высылает ответ.

Если выполненная функция не предусматривает передачи

данных обратно, байт будет снабжен признаком последнего.

Для считывания данных ( при выполнении функций чтения)

необходимо выслать запрос на передачу

следующего байта. Контроллер в ответ на запрос вышлет

первый байт данных. Повторив запрос можно получить

следующий байт, и так далее. Высылая последний байт, контроллер

снабдит его признаком последнего, после чего высылать запрос

бессмысленно, контроллер никак не ответит на такое обращение.

Ниже приведены возможные последовательности байтов при выполнении

различных КАМАК функций.

Функции F0-F7. Чтение данных.
направление значение параметр
в контроллер 11NNNNNN N блока с признаком первого

в контроллер 00АААААА субадрес блока

в контроллер 10FFFFFF функция с признаком последнего

из контроллера 00000EQX ответ

в контроллер 01000000 запрос на передачу следующего

из контроллера 00DDDDDD данные R1-R6

в контроллер 01000000 запрос на передачу следующего

из контроллера 00DDDDDD данные R7-R12

в контроллер 01000000 запрос на передачу следующего

из контроллера 00DDDDDD данные R13-R18

в контроллер 01000000 запрос на передачу следующего

из контроллера 10DDDDDD данные R19-R24 с признаком последнего

Функции F8-F15, F24-F31 выполняются без передачи данных.
направление значение параметр
в контроллер 11NNNNNN N блока с признаком первого

в контроллер 00АААААА субадрес блока

в контроллер 10FFFFFF функция с признаком последнего

из контроллера 01000EQX ответ с признаком последнего


функции F16-F23 запись данных.
направление значение параметр
в контроллер 11NNNNNN N блока с признаком первого

в контроллер 00АААААА субадрес блока

в контроллер 00FFFFFF функция

в контроллер 00DDDDDD данные W1-W6

в контроллер 00DDDDDD данные W7-W12

в контроллер 00DDDDDD данные W13-W18

в контроллер 10DDDDDD данные W19-W24 с признаком последнего

из контроллера 10000EQX ответ с признаком последнего

Для обслуживания LAM запросов предусмотрен следующий механизм.

Процессор контроллера непрерывно проверяет состояние всех шин L

не маскированных регистром маски L. Обнаружив переход шины L в

активное состояние контроллер высылает байт 0х40

зажигая светодиод L на передней панели, светодиод гасится при

чтении регистра LAM запросов. Такой байт может быть выслан

контроллером в любой произвольный момент времени (т.е. в

момент возникновения LAM запроса) и должен распознаваться

принимающей стороной.


Внутренние регистры контроллера.
При обращении с N=0 происходит обращение к внутренним регистрам

контроллера.
N0 A0 F0,F16 регистр маски L (1 -разрешает

прохождение LAM запроса ).

Доступен на чтение и запись

Рекомендуется использовать этот регистр

для проверки наличия контроллера и

его работоспособности(частичной)

N0 A1 F0 Регистр LAM запросов.

Доступен только на чтение.

Читается 24-разрядное слово состояния сигналов

L всех позиций (не маскированное).


N0 A2 F0,F16 регистр CZI I - 0 бит

C - 1

Z - 2

При записи в этот регистр изменяется состояние

шины I и(или) генерируются циклы Z или C.

Доступен только на запись.
N0 A3,F0,F16 Счетчик RESET'ов.

Доступен как на запись, так и на чтение.

Содержит 8 значащих разрядов.

При инициализации программы рекомендуется

записать в счетчик 0. В процессе работы

можно контролировать состояние счетчика.

Краткие пояснения к пакету EASYLIB.
Пакет ориентирован на работу на машинах класса IBM PC AT в

среде Turbo C или Borland С.

Пакет реализует минимум необходимый для работы с контроллером.

В данной версии пакета работа ведется по готовностям, система

прерываний не используется.

Все функции библиотеки кроме restoreport() возвращают

код завершения (defined in easylib.h):
CC_OK 0 - нормальное завершение

OVERRUN 1 - ошибка при приеме данных детектированная

портом IBM PC

PARITY 2 -----------##--------------

FRAME 3 -----------##--------------

TIMEOUT 4 - нет ответа от контроллера

PRTCL 5 - нарушение протокола обмена между машиной и

контроллером.

int portinit(int com,long baudrate);
Если com=2, то инициализируется порт COM2, при любых других значениях

инициализируется COM1.

baudrate может принимать значения 57600l , 19200l , 9600l , 4800l

число должно соответствовать скорости передачи в контроллере

установленной переключателями.

Процедура portinit запоминает старые значения регистров порта и

инициализирует его новыми значениями, кроме того, сбрасывается

в ноль счетчик рестартов контроллера и запрещаются LAM запросы

от всех станций.

Пример:

portinit(2,57600l);


int naf (int n, int a, int f, long *data, int *xq);

int naf16(int n, int a, int f, unsigned int *data, int *xq);

Выполняет КАМАК цикл.
n - номер позиции 0..24

a - субадрес 0..15

f - функция 0..31

*data - указатель на переменную содержащую данные.

*xq - указатель на переменную в которую укладывается ответ.

формат ответа 0000 0000 0000 0еqx.

x - состояние шины X при выполнении камак цикла

q - состояние шины Q при выполнении камак цикла

e - наличие 1 в этом разряде говорит о том, что

NAF был забракован контроллером по каким либо

соображениям и не был выполнен.

Функция возвращает одно из перечисленных выше значений.

void restoreport(void);
Восстанавливает старые значения регистров порта запомненные

процедурой portinit.

Литература:

1.Единая система стандартов приборостроения.

СИСТЕМА КАМАК. КРЕЙТ И СМЕННЫЕ БЛОКИ.

Требования к конструкции и интерфейсу.

ГОСТ 26.201-80

Издательство стандартов.1980.

2.EUR 4100 ( ).

3.EUR 6500 (1982). Multiple controllers in CAMAC crate.

страница 1


скачать

Другие похожие работы: