Библиотека подпрограмм для работы с системой КАМАК на персональных компьютерах

Автор: Отливанчик М.А.

Журнал: Компьютерная оптика @computer-optics

Статья в выпуске: 2, 1987 года.

Бесплатный доступ

Описывается библиотека подпрограмм, предназначенная для обращения к модулям КАМАК из программ, написанных на языке UCSD Pascal в операционной системе Apple Pascal System, работающих на персональных компьютерах Apple Н/Правец-8. Библиотека является реализацией рекомендаций документа SR/01 комитета ESONE с обоснованными в работе изменениями и дополнениями. Приводится краткое описание библиотечных подпрограмм и используемых типов данных, а также описываются процедуры использования и настройки библиотеки.

Короткий адрес: https://sciup.org/14058134

IDR: 14058134

Текст научной статьи Библиотека подпрограмм для работы с системой КАМАК на персональных компьютерах

Предлагаемая библиотека предназначена для использования в программах автоматизации управления и сбора данных на языке UCSD Pascal в операционной системе Apple Pascal System (версия ОС UCSD p-System), работающих на персональных измерительно-вычислительных комплексах (ПИВК) на основе компьютеров Apple П/Правец-8 и системы КАМАК.

Библиотека является реализацией рекомендаций документа SR/O1 комитета ESDNE* со следующими изменениями и дополнениями, обусловленными типом используемого компьютера и операционной системы:

  • —    поскольку данная операционная система не использует прерываний, процедура CCLNK. явно предполагающая использование прерываний, не реализована;

  • —    поскольку использование драйвера ветви с персональными компьютерами не предполагается, параметр В (номер ветви) не используется. В форматах вызовов он, однако, сохранен из соображений совместимости. При этом, будучи входным параметром, он игнорируется, а будучи выходным — выдает значение 0;

  • —    при блочной передаче в режиме адресного сканирования в случае переполнения номера станции не происходит перехода на другой крейт, так как использование нескольких крейтов в одной такой системе представляется маловероятным;

  • —    поскольку компьютер и крейт-контроллер имеют 8-битовую архитектуру, то, кроме процедур, передающих 24-битовое слово КАМАК, в качестве системно-зависимых добавлены процедуры, передающие 16 бит (слово) и 8 бит (байт) данных. Использование этих процедур позволяет во многих случаях уменьшить время выполнения программы и объем занимаемой ею памяти;

  • —    добавлена процедура CTLS, проверяющая статус LAM. аналогично тому, как CTLM проверяет запрос

LAM.

СОСТАВ БИБЛИОТЕКИ

Подробно все процедуры описаны в документе SR/01. поэтому здесь даются только имена процедур библиотеки вместе с их назначением.

DREG Объявить регистр КАМАК

CFSA   Выполнить одиночное действие КАМАК с 24 битами данных

CSSA   Выполнить одиночное действие КАМАК с 16 битами данных

CBSA Выполнить одиночное действие КАМАК с 8 битами данных

CCCZ   Выдать сигнал Z

СССС   Выдать сигнал С

CCCI    Установить или сбросить сигнал 1

CTCI    Проверить сигнал I

CCCD   Разрешить или запретить запрос от крейта

‘Subroutines for САМ AC. ESONE/SR/01.

CTCD Проверить, разрешен ли запрос от крейта

CTGL Проверить, есть ли запрос от крейта

CDLAM Объявить LAM

CCLM   Разрешить или запретить LAM

CCLC   Очистить LAM

CTLM   Проверить LAM

CTLS   Проверить статус LAM

CTSTAT Проверить статус предыдущей операции

С ЕСА Блочная операция общего вида с 24-битовыми данными

CSC А   То же с 16-битовыми данными

CBGA То же с 8-битовыми данными

CFMAD Адресное сканирование с 24-битовыми данными

CSM AD То же с 16-битовыми данными

CBMAD То же с 8-битовыми данными

CFUBC Блочная передача, синхронизованная контроллером с 24-битовыми данными

CSUBC То же с 16-битовыми данными

CBUBC То же с 8-битовыми данными

CFUBL Блочная передача, синхронизованная LAM с 24-битовыми данными

CSUBL То же с 16-битовыми данными

CBUBL То же с 8-битовыми данными

CFUBR Блочная передача в режиме повторения с 24-битовыми данными

CSUBR То же с 16-битовыми данными

CSUBR То же с 8-битовыми данными

CGREG Анализировать описание регистра КАМАК

CGLAM Анализировать идентификатор LAM

Библиотека определяет и использует следующие типы данных:

CRATE=1 ..6;

Номер крейта, то есть номер слота, к которому подключен интерфейс КК

STATIONS.. 23:

Номер станции

SUBADDRESS=0..15;

Номер субадреса

CAMACFUNCTION=0..31;

Номер функции КАМАК

LAMSPEC=—16..15;

Спецификатор LAM

BYTE=1..256;

Целая величина, занимающая 1 байт

CAMACWORD=PACKED RECORD

24-битовое слово КАМАК, где;

LOWINTEGER;

16 младших бит

HIGH BYTE

8 старших бит

END;

Кроме того, определены типы CAMACREG и LAM1D для задания регистра КАМАК и идентификатора LAM соответственно. Конкретный смысл этих определений скрыт от пользователя. Для задания управляющих блоков в процедурах блочной передачи определен тип CBLOCK - запись, содержащая поля: RCOUNT: INTEGER;                 - заданное количество повторений

TALLY: INTEGER;                   - реально выполненное количество повторений

ИСПОЛЬЗОВАНИЕ БИБЛИОТЕКИ

Библиотека КАМАК состоит из двух частей: программного модуля САМАС типа INTRINSIC UNIT и собственно библиотеки, находящейся в файле С АМАС.LIBRARY.

Модуль САМАС содержит в себе описания всех типов данных, используемых в процедурах библиотеки, а также процедуры CDREG. CDLAM, CGREG и CGLAM. Для того чтобы использовать эти описания, необходимо, во-первых, иметь на системном диске библиотеку SYSTEM.LIBRARY с включенным в нее модулем САМАС, а во-вторых, в начале своей программы поставить оператор USES САМАС. При этом данные описания становятся глобальными, поэтому никаких дополнительных описаний не требуют и могут быть использованы наравне со стандартными типами и процедурами.

Все остальные процедуры должны быть описаны в использующей их программе внешними (EXTERNAL) в соответствии с правилами языка UCSD Pascal, а библиотека С АМАС.LIBRARY должна быть связана с откомпилированной программой посредством программы LINKER.

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

По правилам языка Apple Pascal при запуске программы, использующей программный модуль типа UNIT, автоматически выполняется содержащаяся в этом модуле процедура инициализации. Такая процедура обычно необходима для задания начальных значений используемым в модуле переменным и для инициализации внешних устройств, если это необходимо. В нашем случае процедура инициализации производит начальную установку регистров крейт-контроллера, необходимую для его дальнейшей работы. Поскольку процедура инициализации выполняется автоматически, то есть без явного обращения к ней из программы, то нет возможности передать ей номер крейт-контроллера, который надо инициализировать.

Для этих целей служит программа CAMACGEN. Программа в диалоговом режиме запрашивает номера крейт-контроллеров, которые надо инициализировать, и создает соответствующую программу инициализации на ассемблере. Затем последовательно запускаются ассемблер, редактор связей и библиотекарь, которые и производят все необходимые действия по встраиванию новой программы инициализации в модуль САМАС библиотечного файла SYSTEM.LIBRARY.

Статья научная