М. А. Отливанчик
БИБЛИОТЕКА ПОДПРОГРАММ ДЛЯ РАБОТЫ С СИСТЕМОЙ КАМАК НА ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРАХ
ОСОБЕННОСТИ БИБЛИОТЕКИ КАМАК
Предлагаемая библиотека предназначена для использования в программах автоматизации управления и сбора данных на языке UCSD Pascal в операционной системе Apple Pascal System (версия ОС UCSD p-System), работающих на персональных измерительно-вычислительных комплексах (ПИВК) на основе компьютеров Apple ІІ/Правец-8 и системы КАМАК.
Библиотека является реализацией рекомендаций документа SR/01 комитета ESDNE* со следующими изменениями и дополнениями, обусловленными типом используемого компьютера и операционной системы:
— поскольку данная операционная система не использует прерываний, процедура CCLNK. явно предполагающая использование прерываний, не реализована;
— поскольку использование драйвера ветви с персональными компьютерами не предполагается, параметр В (номер ветви) не используется. В форматах вызовов он, однако, сохранен из соображений совместимости. При этом, будучи входным параметром, он игнорируется, а будучи выходным — выдает значение 0;
— при блочной передаче в режиме адресного сканирования в случае переполнения номера станции не происходит перехода на другой крейт, так как использование нескольких крейтов в одной такой системе представляется маловероятным;
— поскольку компьютер и крейт-контроллер имеют 8-битовую архитектуру, то, кроме процедур, передающих 24-битовое слово КАМАК. в качестве системно-зависимых добавлены процедуры, передающие 16 бит (слово) и 8 бит (байт) данных. Использование этих процедур позволяет во многих случаях уменьшить время выполнения программы и объем занимаемой ею памяти;
— добавлена процедура CTLS, проверяющая статус LAM, аналогично тому, как CTLM проверяет запрос
LAM.
СОСТАВ БИБЛИОТЕКИ
Подробно все процедуры описаны в документе SR/01, поэтому здесь даются только имена процедур библиотеки вместе с их назначением.
DREG Объявить регистр КАМАК
CFSA Выполнить одиночное действие КАМАК с 24 битами данных
CSSA Выполнить одиночное действие КАМАК с 16 битами данных
CBS А Выполнить одиночное действие КАМАК с 8 битами данных
CCCZ Выдать сигнал Z
сссс Выдать сигнал С
CCCI Установить или сбросить сигнал I
CTCI Проверить сигнал 1
CCCD Разрешить или запретить запрос от крейта
* Subrommes for САМ AC. ESONE/SR/01.
CTCD Проверить, разрешен ли запрос от крейта
CTGL Проверить, есть ли запрос от крейта
CDLAM Объявить LAM
CCLM Разрешить или запретить LAM
CCLC Очистить LAM
CTLM Проверить LAM
CTLS Проверить статус LAM
CTSTAT Проверить статус предыдущей операции
CFGA Блочная операция общего вида с 24-битовыми данными
CSGA То же с 16-битовыми данными
CBGA То же с 8-битовыми данными
CFMAD Адресное сканирование с 24-битовыми данными
CSMAD То же с 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: Номер крейта, то есть номер слота, к которому подключен
интерфейс КК
STATION=l ..23: Номер станции
SUBADDRESS=0.. 15: Номер субадреса
CAMACFUNCTION=0..31; Номер функции КАМАК
LAMSPEC=-16.. 15; Спецификатор LAM
BYTE=1..256; Целая величина, занимающая 1 байт
CAMACWORD=PACKED RECORD 24-битовое слово КАМАК, где:
LOW:INTEGER; 16 младших бит
HIGH:BYTE 8 старших бит
END:
Кроме того, определены типы CAMACREG и LAM1D для задания регистра КАМАК и идентификатора LAM соответственно. Конкретный смысл этих определений скрыт от пользователя. Для задания управляющих блоков в процедурах блочной передачи определен тип CBLOCK - запись, содержащая поля:
RCOUNT: INTEGER; - заданное количество повторений
TALLY: INTEGER; - реально выполненное количество повторений
LAM : LA.MID и L.AMVALUE: INTEGER - различные представления одного и того же поля, задающего иден-
тификатор синхронизующего LAM.
ИСПОЛЬЗОВАНИЕ БИБЛИОТЕКИ
Библиотека КАМАК состоит из двух частей: программного модуля САМАС типа INTRINSIC UNIT и собственно библиотеки, находящейся в файле САМАС.LIBRARY.
Модуль САМАС содержит в себе описания всех типов данных, используемых в процедурах библиотеки, а также процедуры CDREG. CDLAM. CGREG и CGLAM. Для того чтобы использовать эти описания, необходимо, во-первых, иметь на системном диске библиотеку SYSTEM.LIBRARY с включенным в нее модулем САМАС, а во-вторых, в начале своей программы поставить оператор USES САМАС. При этом данные описания становятся глобальными, поэтому никаких дополнительных описаний не требуют и могут быть использованы наравне со стандартными типами и процедурами.
Все остальные процедуры должны быть описаны в использующей их программе внешними (EXTERNAL) в соответствии с правилами языка UCSD Pascal, а библиотека САМАС.LIBRARY должна быть связана с откомпилированной программой посредством программы LINKER.
НАСТРОЙКА БИБЛИОТЕКИ
По правилам языка Apple Pascal при запуске программы, использующей программный модуль типа UNIT, автоматически выполняется содержащаяся в этом модуле процедура инициализации. Такая процедура обычно необходима для задания начальных значений используемым в модуле переменным и для инициализации внешних устройств, если это необходимо. В нашем случае процедура инициализации производит начальную установку регистров крейт-контроллера, необходимую для его дальнейшей работы. Поскольку процедура инициализации выполняется автоматически, то есть без явного обращения к ней из программы, то нет возможности передать ей номер крейт-контроллера, который надо инициализировать.
Дія этих целей служит программа CAMACGEN. Программа в диалоговом режиме запрашивает номера крейт-контроллеров, которые надо инициализировать, и создает соответствующую программу инициализации на ассемблере. Затем последовательно запускаются ассемблер, редактор связей и библиотекарь, которые и производят все необходимые действия по встраиванию новой программы инициализации в модуль САМАС библиотечного файла SYSTEM.LIBRARY.