Файл TOCO (DY 51; Шатилов)  06.03.02
(в
последующем в файле могут быть сделаны изменения).
Этот
файл содержит директивы для #COCO, которые исполняются при запус-
ке
программы с 22-й ячейки - "пакетная" коррекция без ввода директив
с  
терминала.  При этом нужно предварительно занести  "имя процедуры кор-  
рекции"
в 182-ю (ВЭПП-3) или 28-ю (ВЭПП-4) ячейку 
STAP.  Процедура  с  
этим
именем должна быть описана  в данном
файле. Все директивы  в теле  
процедуры
должны иметь следующий вид:   
    
KEYW:SPEC:OPTN     COMMENTS 
    
Первое
слово (KEYW) - название директивы. Второе слово (SPEC) - специ-   
фикация.
Третье слово (OPTN) - дополнительная опция, она требуется  не 
для
всех директив. После  пробела(ов)
можно  писать любые  комментарии  
(это
означает, в частности, что внутри KEYW:SPEC:OPTN пробелов быть не 
должно).
Кроме того, можно вставлять комментарии 
(в т.ч. пустые стро-  
ки)
между строками директив.  Строки  с 
директивами  распознаются  по   
двоеточию
в 5-й позиции (названия всех директив  состоят
из 4-х букв).  
Далее
описаны все доступные на настоящий момент директивы.  
    
1.
PROC:NAME:MATR - Первая директива  в
любой процедуре (ее заглавие).   
                    NAME - имя процедуры, MATR
- имя матрицы откликов. 
                    Все имена должны быть
4-буквенные. Если имя матри-   
                    цы не указано, то
используется матрица  по умолча-  
                    нию (на ВЭПП-3 ее имя
зависит от текущей энергии).
    
Следующие
директивы могут следовать в любом порядке. Они являются ана-  
логами
директив  (пока не  всех), вводимых  с терминала 
при работе  с   
интерактивной
версией #COCO.  
    
2.
DIRE:D         - Смена  направления 
коррекции. "D" может принимать 
                    значения X, Z, T.  При инициализации (в начале ра-   
                    боты программы) направление
будет T(otal) -  одно- 
                    временная коррекция по X и
Z.   
    
3.
GOAL:NAME      - Выбор орбиты цели.  NAME может принимать значения:
                      NULL - нулевая
орбита  
                      ORBI - последняя
измеренная орбита 
                    Во всех остальных случаях
NAME - это название фай-   
                    ла с орбитой цели.  При инициализации  в 
качестве  
                    цели берется нулевая
орбита. 
    
4.
WGHT:NAME      - Выбор "весов"
для пикапов. NAME - название файла с 
                    весами,  за 
исключением  слова  EQVL, означающего  
                    равные единичные веса  для всех пикапов.  При ини- 
                    циализации устанавливаются
равные веса.  
    
5.
CORR:SPEC:OPTN - Работа  с  корректорами (в т.ч. собственно коррек-  
                    ция орбиты). SPEC может
принимать следующие значе-   
                    ния: 
                      IMAX - Ограничение
максимальн. тока корректоров   
                      BANK - Скопировать
уставки из #BANK 
                      CLEA - Задать нулевые
уставки всем корректорам 
                      LOAD - Прочесть уставки
из файла  
                      HOLD - "Залипание"
корректоров 
                      BUSY - "Занять"
корректора (для перебора)  
                      FREE -
"Освободить" корректора - убрать 
пометки   
                             HOLD и BUSY  
                      GLOB - Глобальная
коррекция всеми корректорами 
                      FIND - Поиск коррекции:
перебор всех комбинаций
                      NEAR - Поиск коррекции:
рядом стоящие корректора  
                      MICA - Поиск варианта
коррекции методом MICADO  
                      SEND - Посылка
"текущих" уставок в #BANK   
                    При загрузке программы (в
самом начале работы) все  
                    уставки копируются  из 
#BANK. Некоторые директивы 
                    требуют указания
дополнительного параметра OPTN:  
                      IMAX:VAL  - Величина ограничения в единицах мак- 
                                  симального
тока.  При  инициализации   
                                  (по
умолчанию) равна 1.0. 
                      LOAD:NAME - Имя
файла  
                      HOLD:NAME - Имя корректора
(или маска) 
                      BUSY:NAME - Имя
корректора (или маска) 
                      FREE:NAME - Имя
корректора (или маска) 
                      GLOB:VADD - Добавка  к 
диагонали матрицы (можно   
                                  не указывать,
по умолчанию 0.05)  
                      FIND:NUMB - Число
корректоров для перебора (>=0)  
                      NEAR:NUMB - Число
корректоров для перебора (>=2)  
                      MICA:NUMB - Число корректоров
для перебора (>=2)  
                      SEND:VAL  - Коэффициент передачи в #BANK  (можно  
                                  не указывать,
по умолчанию 1.0)   
    
Следующие
директивы позволяют реализовать более сложные алгоритмы кор-  
рекции:
с циклами, проверками и переходами.  
    
6.  CYCL:NUMB    
- Начало цикла. NUMB - число итераций; 
если эта оп-  
                    ция опущена, то будет
бесконечный цикл  (можно ис- 
                    пользовать  для 
постоянной  стабилизации орбиты).   
                    Вложенные циклы не
допускаются!  
    
7.  ENDC:        
- Конец цикла (счетчик увеличивается на 1 и  начина-  
                    ется следующая итерация,
либо выход из цикла).  
    
8.  TISU:NUMB    
- Пауза. NUMB - аргумент подпрограммы TISU  (сколько  
                    секунд). 
    
9.  LABL:NAME    
- Метка для перехода (используется в директивах GOTO
                    и CURR).  NAME - имя метки  (должно быть 4 буквы). 
                    Имена STOP, EXIT и WAIT не
допускаются!  
    
10.
GOTO:DEST:VAL - Проверка невязки орбиты. 
Опция VAL должна присут- 
                    ствовать обязятельно.  Действие, указанное в DEST,
                    выполняется если  невязка орбиты  меньше или равна   
                    VAL. DEST может принимать следующие
значения:  
                      STOP - Завершение работы
программы.
                      EXIT - Выход из цикла. 
                    В остальных случаях DEST -
это  имя метки  (должна  
                    быть описана директивой
LABL).
    
11.
CURR:DEST:VAL - Проверка тока пучка. Опция VAL должна  присутство-
                    вать обязятельно.  Действие, указанное в DEST, вы- 
                    полняется  если 
ток  пучка  (MA) меньше или равен
                    VAL. DEST может принимать те же
значения,  что и в 
                    директиве GOTO, плюс еще
одна возможность:
                      WAIT - Ожидание  указанного 
тока  (имеет  смысл  
                             при коррекции
орбиты на инжекции). По за-   
                             вершении
ожидания  (если оно имело место)   
                             будет сделан заказ
на измерение орбиты. 
    
12.
CNTR:OPTN     - Вкл./Выкл.
дополнительного контроля при выполнении  
                    процедуры.  OPTN может принимать значения ON и OFF   
                    (по умолчанию OFF).
Если  дополнительный  контроль
                    включен, то произойдет
переход, указанный в  183-й  
                    (ВЭПП-3)  или 
29-й (ВЭПП-4) ячейке STAP.  Слово
в  
                    этой ячейке может принимать
те же значения, что  и   
                    DEST в директиве GOTO.
    
13.
ORBI:         - Заказ измерения орбиты.
Может  потребоваться, если   
                    #COCO работает совместно с
другой управляющей про-  
                    граммой  (например #PREP)  и 
выполнение процедуры 
                    контролируется этой
программой через STAP.  
    
14.
OUTP:OPTN     - Вкл./Выкл. вывода
информационных сообщений на тер-  
                    минал  (сообщения 
об  ошибках  выводятся всегда).  
                    OPTN может принимать
следующие значения:   
                      OFF  - Не выводить информационные сообщения.  
                      ON   - Выводить сообщения  (действует по умолча- 
                             нию).   
                      DBG  - ON + дополнительно  на терминал выводится   
                             последняя
прочитанная из файла директива.  
                      MENU - Вызов меню SHOW
как в полной версии #COCO  
                             (для отладки
процедуры).
    
Меткой  конца процедуры  служит начало следующей процедуры, либо конец
файла.
Далее в этом файле  записаны имеющиеся на
настоящий момент про-
цедуры
(можете добавить свою).   
    
    
----------------------------------------------------------------------  
Коррекция орбиты ВЭПП-3
перед выпуском в ВЭПП-4. 
    
PROC:WYP3         Название процедуры коррекции: WYP3.
Это слово должно
                  быть в 182-й ячейке  STAP, заносится туда программой
                  #PREP.  Используется 
матрица откликов  по
умолчанию  
                  (зависит от энергии
ВЭПП-3).   
OUTP:OFF          Убрали вывод сообщений на
терминал.   
CURR:STOP:0.5     Завершение работы, если ток пучка меньше
0.5 МА.
CORR:IMAX:0.95    Ограничение на  максимальные токи корректоров.  Если  
                  какие-то корректора не могут
отработать максимальный   
                  ток указанный в базе данных,
то  эта директива может  
                  помочь.   
CORR:HOLD:2X**  
CNTR:ON           Включили дополнительный контроль
(183-я ячейка STAP)  
    
---------  Первая итерация - коррекция с равными
весами  
GOAL:A154         Прочли орбиту цели из файла
(COR3.A154, DY=51).  Тут
                  KW еще не введено!
CORR:HOLD:2Z3   
CORR:MICA:8
  CORR:GLOB         Глобальная коррекция всеми
корректорами (X и Z).
CORR:SEND         Посылка новых уставок в #BANK.  
    
---------  Вторая итерация - коррекция с разными весами
на 3-х пикапах   
WGHT:WWYP         Читаем веса пикапов из файла (COR3.WWYP,
DY=51).   
CYCL:2            Начало цикла (2 итерации).
GOAL:ORBI         Взяли измеренную орбиту как цель.  
GOAL:B154         Прочли орбиту  цели из файла 
(COR3.B154, DY=51).  В  
                  этом файле указаны не все
пикапы, а только в  районе  
                  выпуска (2Р3 и рядом), KW не
введено.  На  остальных 
                  пикапах орбита цели будет
совпадать с измеренной.  
CURR:STOP:0.5     Завершение работы, если ток пучка меньше
0.5 МА.
  CORR:NEAR:10      Локальная коррекция 10-ю рядом стоящими
корректорами
CORR:GLOB   
CORR:SEND         Посылка новых уставок в #BANK.  
ENDC:             Конец цикла.   
    
---------  Третья итерация - стабилизация орбиты на
выпуске  
CYCL:             Начало бесконечного цикла.   
CURR:STOP:0.5     Завершение работы, если ток пучка меньше
0.5 МА.
  CORR:NEAR:10      Локальная коррекция 10-ю рядом стоящими
корректорами
CORR:GLOB   
CORR:SEND:0.7     Посылка новых уставок в #BANK  с 
весом 0.7 (для ус- 
                  тойчивости стабилизации). 
CORR:BANK         Взяли уставки из  #BANK 
(они не совпадают с  #COCO,  
                  т.к. коэффициент передачи в
#BANK не равен 1). 
TISU:10           Задержка перед следующей итерацией
цикла. 
ENDC:             Конец цикла.   
    
---------  Ожидание ввода KW  
LABL:WTKW         Метка для перехода (должна быть
занесена в 183-ю яч.  
                  STAP, это делает #PREP перед
вводом KW). 
CORR:FREE:2Z3  
CORR:NEAR:3 
CYCL:             Начало бесконечного цикла.   
TISU:1            Ожидание слова LAST в 183-й ячейке
STAP. 
ENDC:             Конец цикла.   
    
---------  Последняя итерация - окончательная коррекция
перед выпуском  
LABL:LAST         Метка для перехода (должна быть
занесена в 183-ю яч.  
                  STAP, это делает #PREP после
ввода KW).  
TISU:1  
CORR:BANK         Взяли уставки из #BANK (после ввода
KW).  
ORBI:             Заказ измерения орбиты (после
ввода KW).
LABL:0001         Для работы в "ручном" режиме
(в 183-ю яч. STAP нужно   
                  занести "1" и
запустить #COCO с 22-го входа).
    
WGHT:WWYP         Читаем веса пикапов (могли не прочесть
в первый раз) 
CYCL:3            Начало цикла (3 итерации).
GOAL:ORBI         Взяли измеренную орбиту как цель.  
GOAL:C154         Прочли орбиту  цели из файла 
(COR3.C154, DY=51).  В  
                  этом файле указаны не все
пикапы, а только в  районе  
                  выпуска (2Р3 и рядом), KW
введено.  На остальных пи- 
                  капах орбита цели будет совпадать
с измеренной.
CURR:STOP:0.5     Завершение работы, если ток пучка меньше
0.5 МА.
GOTO:EXIT:0.08    Выход из цикла, если невязка орбиты меньше
0.08.   
  CORR:NEAR:10      Локальная коррекция 10-ю рядом стоящими
корректорами
CORR:GLOB   
CORR:SEND:0.8
    Посылка новых уставок в #BANK.  
ENDC:             Конец цикла.   
    
    
----------------------------------------------------------------------  
Коррекция орбиты на инжекции
ВЭПП-3.  
    
PROC:INJ3         Название процедуры коррекции: INJ3.
Это слово должно
                  быть в 182-й ячейке  STAP, заносится туда программой
                  #PREP. Матрица откликов  будет 
MIS3 (на энергии ин-
                  жекции).   
GOAL:INJ3         Прочли орбиту цели из файла
(COR3.INJ3, DY=51).
CORR:BUSY:4Z1     Выбрали корректора 
CORR:BUSY:4XMB                       для работы  
    
CURR:WAIT:0.3     Ожидание тока пучка 0.3 МА  (чтобы 
можно было изме- 
                  рить орбиту).  
GOTO:STOP:0.1     Выход, если невязка орбиты меньше 0.1. 
CORR:BANK         Скопировали уставки из #BANK  (они могут 
отличаться
                  от уставок  в 
момент старта программы, если вначале 
                  не было захвата и пришлось
вручную шевелить  орбиту,  
                  пока #COCO ожидала тока 0.3
МА).   
CORR:FIND:0       Коррекция только выбранными двумя
корректорами 
CORR:SEND:0.7     Посылка новых уставок в #BANK.  
CURR:WAIT:2.0     Ожидание тока пучка 2 МА.   
CORR:BANK         Скопировали уставки из #BANK.   
    
CYCL:2            Начало цикла (2 итерации).
GOTO:EXIT:0.2     Выход из цикла, если невязка орбиты меньше
0.2.
CORR:FIND:0       Коррекция только выбранными двумя
корректорами 
CORR:SEND         Посылка новых уставок в #BANK.  
ENDC:             Конец цикла.   
    
----------------------------------------------------------------------  
Коррекция орбиты для начала
стабилизации по СИ #V3SR, ВЭПП-3.  
    
PROC:ORS3         Название процедуры коррекции: ORS3.
Это слово должно
                  быть в 182-й ячейке  STAP, заносится туда программой
                  #PREP. Матрица откликов
будет  MES3 (на энергии 2000
                  МЭВ).   
CURR:STOP:10.     Завершение работы, если ток пучка меньше
10 МА. 
GOAL:ORSI         Прочли орбиту цели из файла  (COR3.ORSI, DY=51).   
WGHT:WORS         Прочли веса пмкапов из файла
(COR3.WORS, DY=51).   
CORR:HOLD:3X8     Запретили работать X-корректорами
CORR:HOLD:4X2               между пикапами 3P8 и 4P2
  CYCL:2            Начало цикла (2 итерации).  
CORR:GLOB         Глобальная коррекция всеми
корректорами
CORR:SEND         Посылка новых уставок в #BANK.  
GOTO:EXIT:0.4     Выход из цикла, если невязка орбиты меньше
0.4.
  ENDC:             Конец цикла. 
CORR:MICA:4
CORR:SEND   
----------------------------------------------------------------------