Выбрать главу

Но и потом пошли всяческие уточнения. Например, некоторые устройства могли работать, не дожидаясь окончания работы предыдущих устройств — скажем, откачка воздуха и предварительный прогрев подложки могли идти параллельно. А вот нагрев исходного материала мог начинаться только после откачки воздуха. Хотя, подумав, мы пришли к мнению, что он мог начинаться и до полной откачки — надо только не доводить температуру до высоких значений, чтобы материал не стал окисляться или испаряться. Так что система управления была перестроена — в регистр устройства подавалось значение, которое оно должно было достичь после включения, а в регистр ожидания — позиция устройства, которого ему надо было дождаться.

Тоже оказалось плохо — таких устройств могло быть много — для того же испарения требовалось и прогреть подложку, и откачать воздух — то есть испаритель должен был ожидать окончания работы двух устройств. А схема регистра была рассчитана только на одно устройство. Тут вылез положительный побочный эффект отказа от кодирования номера устройства — мы просто ввели маску устройств, которых надо было дождаться — она так же записывалась в регистр, но схема сравнения с сигналами на шине готовности теперь просто сравнивала сигналы один-к-одному, без шифраторов — еще и тут сэкономили на логических элементах. А на перфоленте появилась еще одна позиция — маска ожидания.

И вот теперь все становилось на свои места. Первой группой цифр на перфоленте шли команды для насоса высокого давления, который откачивал основной объем воздуха — создавал форвакуум. Точнее, шли не команды, а параметры работы — номер-позиция устройства, нужное давление, значение таймера ожидания — сколько вообще нужно ждать (выставили чуть больше среднего времени, которое обычно затрачивалось на предварительную откачку), маска ожидания других устройств (так как форвакуум начинал работу первым, ждать ему никого было не надо, поэтому маска была не заполнена, хотя потом добавили ожидание защелки, а то как-то раз просто забыли закрыть дверцу и насос начал шустро прогонять воздух помещения через вакуумную камеру).

Соответственно, схема управления сначала считывала позицию "номер устройства" и открывала входные цепи регистров соответствующего устройства, и значения из трех последующих позиций попадали с шины считывания в его регистры — переключением между регистрами также занимался счетчик позиций управляющей схемы.

То есть регистр формакуумного насоса получал величину давления, которое надо достичь, таймаут и маску ожидания, и начинал работать, как только сигналы на шине готовности устройств совпадали с маской ожидания — его же манометр измерял давление, а аналоговый компаратор на операционнике постоянно сравнивал значение манометра и значение регистра, преобразованное ЦАП. Как только эти величины становились равны — он выдавал в шину готовности устройств сигнал "закончил".

Второй группой шли команды для насоса высокого давления — управляющее устройство считывало его параметры сразу после параметров для форвакуумного, но, так как в маске ожидания находился номер насоса низкого давления, он запускался только когда тот выдавал на шину готовности сигнал "готов". И, так как для насоса высокого давления продолжалось поддержание своего давления, он периодически включался, чтобы откачать из своего входного патрубка избыток воздуха, что создал насос низкого давления — для работы насосов пришлось ввести еще и дорожку "постоянная работа" — просто начали пробивать на одной из еще свободных дорожек, чтобы не переделывать управляющую схему под еще одну последовательную позицию, хотя чего там переделывать? — просто увеличить количество позиций для счетчика — перепаять проволочки константы позиций, по которой счетчик обнулялся и выдавал управляющему устройству сигнал "начало параметров для следующего устройства". Но вот пошли почему-то по такому пути — "широкое командное слово". Ну и ладно — потом переделают, если потребуется.

Третьей командой была команда на подогрев подложки. Она не начинала работать, пока не начинал работать насос высокого давления, то есть вторая команда блокировала продолжение программы, так как для нее еще не наступили условия выполнения. Можно было бы поставить нагрев подложки второй командой, до команды ННД, и тогда она начала бы нагрев раньше начала полной откачки. Но смысла не было — предварительная откачка шла более получаса, и все это время поддерживать температуру подложки смысла не было. Вот когда начинал работу насос высокого давления, нагрев подложки позволял частично ее дегазировать. По этой причине она не имела инструкций по ожиданию полной откачки. Как и четвертая команда — предварительный нагрев исходного материала — ему дополнительная дегазация тоже не помешает. А вот пятая команда — постепенный нагрев до высокой температуры — уже должен был дождаться достижения нужного вакуума — и только тогда нагреватель включался на более высокую температуру. Причем первые четыре команды имели признак "продолжать действие", то есть по достижении заданного значения они не прекращали свою работу, поддерживая нужные давление и температуру, хотя и снимали сигнал "готов" — он блокировал только последующие команды, а раз они уже были в работе, то и блокировать их не должны.

Так система и продолжала работать — насосы периодически увеличивали или уменьшали интенсивность откачки, по мере того, как давление в камере то росло из-за выхода газов из материалов и стенок, то снова падало, нагреватель подложки тоже периодически то включался то отключался, поддерживая ее температуру, а нагреватель материала отрабатывал свой график температур — там уже основным фактором для ожидания стало время поддержания температуры.

Хотя и их самих скоро пришлось кодировать. Исследователям, а за ними и производственникам потребовалось не просто выдерживать графики, а изменять температуру по нужному закону, причем на разных отрезках законы могли быть разными — то требовалась обычная прямая линия, то это должна быть сначала плавно, а потом все резче возрастающая кривая, или наоборот — чем ближе к конечной точке, тем плавнее должна была возрастать температура. Да, сами графики мы могли поддерживать, вот только для каждого требовался операционник, а то и не один. Поэтому вслед за номером устройства мы добавили еще позицию для алгоритма работы этого устройства, а так как они пока отрабатывали отдельными устройствами, то эту позицию в команде стали называть еще и номером субустройства. Ведь, скажем, для разных кривых требовались разные операционники, а то и их группы, если график был слишком сложный и его требовалось апроксимировать более простыми линиями. Поэтому номер субустройства, он же — алгоритм работы — и включал в работу нужный операционник, и уже тот управлял нагревом, а сама позиция устройства, получается, говорила теперь только о том, с какого входа надо брать показания для сравнения. Ну и еще — в какой регистр записать номер субустройства и значение для сравнения. Сама схема, естественно, была еще жесткой, и если требовались графики изменения температуры с другими кривыми, то переставлялись и перекоммутировались блоки управляющего устройства, соответственно, программы для одной конфигурации не подходили для другой. Так что ручной работы тоже требовалось немеряно, но это все-таки было проще, чем вручную отрабатывать каждый эксперимент, к тому же схема управляющего устройства и отлаженная для него рабочая программа становились своеобразным "опытом", который отторгался от человека и становился доступен другим людям — только поменяй конфигурацию на нужную да поставь на запуск программу. Мы нарабатывали библиотеку "программ", пусть они пока частично и кодировались коммутацией блоков.

А сама программа и управляющая схема продолжали усложняться о мере усложнения техпроцесса. Так, для графика нагрева ввели обратную связь по характеристикам осаждаемой пленки — ее сопротивлению, пропусканию света, и вообще реакции на свет — ведь нагревали не просто так, а чтобы получить пленки нужных характеристик. Соответственно, было разумным по этим характеристикам и вести контроль, а не просто по времени работы. То есть добавились процедуры контроля. Сначала все пытались запихать их на ту же перфоленту, что и основная программа — добавить туда позиции для значений сопротивления, фототока, степени прозрачности. То есть предполагалось, что эти значения будут измеряться в процессе работы очередной команды или после ее окончания с тем, чтобы либо продолжить ее работу до достижения нужных показателей, либо перейти к следующей команде, если эти значения уже достигнуты. То есть уже в саму команду для устройства добавлялись новые номера устройств для измерения нужных значений, которые должны были выдавать сигнал готовности, достижения показателей, прежде чем будет переход к следующей команде. Для этого добавили еще одну служебную дорожку, которая указывала, что цифра на этой позиции — это маска устройства, которое должно будет выдать сигнал готовности, а следующая цифра — значение для этого устройства, которое оно будет сравнивать с измеренным сигналом. Скажем, команда нагрева состоит из номера самой операции — то есть "нагреватель", значения температуры, которое заносилось в его регистр для ЦАП, номера операционника, который реализовывал нужный график изменения температуры — этот же операционник получал значение с выхода термометра и ЦАП и выполнял их преобразования, чтобы выдержать заложенный в него график, затем в команде следовала позиция с номером омметра, измеряющего сопротивление напыляемого слоя, позиция для его значения, позиция с номером вольтметра для измерительного фотоэлемента, позиция с его значением — вот такая была длинная команда, причем количество субустройств в общем случае было различным, что заставляло подумать над тем, а как вообще отделить команды одну от другой. В конце концов просто ввели отдельную дорожку с признаком окончания команды — все действия были последовательны, устройства — те же омметр и вольтметр — были взаимосвязаны, то есть использовались только при нагреве согласно схеме их включения, поэтому управляющая схема, обнаружив окончание старой команды, прокручивало перфоленту на следующую позицию, откуда брала номер устройства и заносила его в регистр очередной команды, и уже потом последующие позиции с номерами субустройств относились к этому устройству и соответственно схемой выбирались регистры именно этих субустройств. Следующая позиция после номера субустройства — маска ожидания запуска устройства данной команды, затем — целевое значение — это было прошито жестко в схеме считывания. А затем шел дополнительный набор отслеживаемых параметров — номер параметра — те же вольтметр или омметр — и значение для него. И уже внутренняя схема нагревателя отслеживала выдачу сигнала "готов" с этих четырех выводов — температуры, времени, омметра и вольтметра — сколько позиций было установлено масками ожидания — и только после этого выдавала сигнал "работу закончил". Ну а уж управляющая схема определяла, что если в ее маске ожидания была единица в этом устройстве, то есть она ждала окончания этой команды — тогда уж оно запускало следующую команду, которая и выставила эту единицу.