6.3. Использование экспертных систем для управления процессами
Хотелось бы надеяться, что примеры предыдущего раздела дадут читателям хотя бы смутное представление о том, какие операции используются в процессе производства печатных плат. На рис. 6.2 изображена схема, показывающая не только этапы производства печатных плат, но также и типы проверок, применяемых на каждом этапе. На самом деле схема должна быть более сложной и включать еще ряд этапов, но для иллюстрации основной идеи автором были выбраны только несколько операций. Важно, что эта схема является прототипом для широкого класса схем, описывающих любые строго последовательные процессы, в которых каждая операция может быть начата только после того, как все предшествующие этапы выполнены, и правильность их выполнения подтверждена. Что касается рис. 6.2, то на нем не нашел отражения ряд этапов: среди них этап подготовки к отправке, который включает хранение, упаковку и подготовку счетов, а также такой не всегда обязательный этап, как нанесение золотого покрытия. Ниже приведена программа 6.7, которая является, по существу, маршрутной картой работ по изготовлению печатных плат. Эта программа выполняет следующие функции:
инициирует новые работы по указанию отдела сбыта;
хранит последовательность выполненных операций и процедур контроля, проведенных для каждой отдельной работы;
управляет ходом работ, разрешая переход к следующей стадии только в том случае, если все необходимые проверки выполнены;
готовит отчеты, содержащие данные о ходе выполнения данной работы или всех работ в целом.
Отношение new-job используется для того, чтобы дополнить список работ еще одной работой, и для того, чтобы включить предложение
X stage in
показывающее, что новая работа уже прошла через ряд операций предварительного этапа in. К этим операциям относятся объявление стандартов, которые должны соблюдаться, подготовка и проверка фотошаблонов, подготовка и проверка программ станков с ЧПУ, предназначенных для сверления отверстий, и, возможно, подготовка и тестирование прототипов. Для того чтобы все это реализовать на микроЭВМ, нужна программа, аналогичная только что приведенной; для большой ЭВМ отдельной программы может и не понадобиться - только что описанные процедуры можно включить в текст выше приведенной программы. Для того чтобы иметь дело с короткой программой, допустим, что операции предварительного этапа in были выполнены, а заключительный процесс cut* просто не рассматривается. В этом случае удается сконцентрировать внимание непосредственно на процессе управления производством печатных плат.
* (К этому процессу относятся процедуры, связанные с подготовкой к отправке (хранение, упаковка и т. д.).- Прим. ред.)
Программа 6.7
(XY) match ((XjZ)(Y х))
(XY) match ((Z|x)(y|z))if
(XY) match (xz) new-job if
(job y) delete and
(job number X) is-told and
APPEND (Y (X) Z) and
(job) Z add and
(X stage in) add and
/
job (1 2 3)
process (cut-blanks tooling-holes drill electroless primary-image
standard (in opl op2 op3 op4 op5 орб QA1 QA2 QA3 op7 op8 QA4
QA5 out)
X awaits Y if
process Z and
X stage x and
APPEND (y(x|Y)Z)
X awaits (cut-blanks | Y) if
X stage in and
/
X next Y if
(job X operation Y inspection Z) is told and
X awaits (Y | x) and
standard у and
process z and
(Y Z) match (x y) and
(Z stage X1) delete and
(X stage Y) add and
/
1 stage cut-blanks
2 stage electroplate
3 stage tooling-holes
Отношение standard содержит список стандартных тестов, соответствующих каждой стадии производства. На некоторых стадиях можно использовать несколько тестов; например, стадия травления требует проверки первого образца, проверок со стороны оператора и проверок по обеспечению качества. Проверка первого образца означает, что одна плата или небольшое число плат подвергается обработке только для того, чтобы путем проверок определить, являются ли изменения, внесенные в механизм данного процесса обработки и в используемые материалы, необходимыми. Эта предосторожность позволяет устранить дорогостоящие ошибки при серийном производстве плат. Под операторной проверкой подразумевается визуальный контроль некоторых или всех плат, который позволяет обнаружить и устранить очевидные дефекты того или иного процесса - например, травления или нанесения покрытия. Наиболее жесткий тип проверки - это обеспечение качества (QA). Этот тип включает операции, которые в некоторых случаях могут даже разрушать образцы. К ним относятся проверка глубины покрытия, сцепления соединений с подложкой, толщины покрытия отверстий и многое другое. Кроме того, обеспечение качества предусматривает использование различных установленных стандартов и может включать подготовку, кодирование и охранение информации о микроучастках платы, которую необходимо сделать доступной для контроля со стороны пользователей или института стандартов.
Традиционно различные этапы производства указываются в маршрутной карте, и по мере их прохождения оператор или инспектор по обеспечению качества, в случае если не все в порядке, делает пометку. Это дает возможность запретить переход к очередному этапу, если не все предыдущие этапы выполнены правильно. К несчастью, никто не может гарантировать, что все будет идти точно по плану. Платы, не удовлетворяющие стандартам, могут миновать некоторые этапы из-за невнимательности персонала. Но вероятность того, что дефектные платы покинут пределы завода, достаточно мала, поскольку они обязательно будут подвергнуты заключительному глобальному контролю. Тем не менее допущенные ошибки могут привести к задержкам выпуска продукции.
Перед тем, как разобраться, в чем может быть полезна программа, рассмотрим, как он работает. Сначала определим последний этап, выполненный в ходе работы 1.
all (x: 1 stage x)
[определить вве (х: 1 этап х)]
cut-blanks
[вырезание заготовок]
No (more) answers
[Ответов (больше) нет]
Полученный ответ свидетельствует о том, что этап, связанный с подготовкой заготовок для плат, выполнен, т. е. в результате из листа базового материала вырезаны заготовки нужного размера. Для определения процессов, которые необходимо выполнить для завершения работы 3, используем следующий запрос:
all (x: 3 awaits)
[определить все (х: 3 ожидает х)]
(drill electroless primary-image ...)
[сверление химическая-активация-поверхности нанесение-рисунка-межсоединений-на-плату и т.д.]
No (more) answers
[Ответов (больше) нет]
Предположим теперь, что оператор хочет выполнить следующий этап работы 2. Анализ показывает, что последним в ходе работы 2 был этап, связанный с гальванопокрытием, а следующим по порядку является этап снятия резиста. Но для того, чтобы эта операция могла быть проведена, выполненная к этому моменту работа должна быть проверена с помощью контролирующей процедуры ор6. То, что именно процедура ор6 должна быть проведена перед выполнением этапа strip-resist, можно установить с помощью отношения next, ставящего в соответствие последнему выполненному этапу элемент из списка standard. Для того чтобы перейти к выполнению очередного этапа, оператору необходимо правильно идентифицировать, во-первых, этот этап и, во-вторых, процедуру контроля, соответствующую этапу, который был выполнен последним. Следующий протокол демонстрирует две неудачные и одну удачную попытки продолжить работу 2:
all (x: 2 next x)
[определить все (х: 2 следующий этап х)]
job 2 operation X inspection Y ? ans etch ор6
[работа 2 этап X проверка Y ? Ответ травление оп6]
job 2 operation X inspection Y ? ans strip-resist op5
[работа 2 этап X проверка Y ? Ответ снятие-резиста оп5]
job 2 operation X inspection Y ? ans stip-resist ор6
[работа 2 этап X проверка Y ? Ответ снятие-резиста оп6]
strip-resi st
[снятие резиста]
No (more) answers
[Ответов (больше) нет]
Первая попытка привела к неудаче, поскольку платы не должны подвергаться травлению до тех пор, пока процедура снятия резиста не проведена и не подтверждена правильность ее выполнения. Вторая попытка неудачна из-за того, что в своем ответе о последней процедуре контроля оператор указал оп5, в то время как необходимо проверять правильность нанесения гальванопокрытия с помощью процедуры оп6.
На практике названия (или коды), содержащиеся в отношении standard, могут быть значительно более сложными. В этом случае они могут использоваться в качестве указателей к тестам, которые должны быть проведены на данном этапе. Этот вариант достаточно легко реализовать. Коды op1, QA1 и т. д. были сознательно упрощены для того, чтобы сделать работу программы понятной практически каждому. Важнее обеспечить программе возможность печатать коды на маршрутной карте или на магнитной полосе, прикрепленной к карте. Это позволит с помощью специальной аппаратуры анализировать их и предотвращать переход к очередному этапу до тех пор, пока все предыдущие этапы не прошли проверки. Такая аппаратура действует так же, как денежные автоматы в банках, или другие устройства подобного рода.
В целом экспертная система будет не только помогать следить за ходом каждой работы, но и контролировать ее, предотвращая переход к тем этапам, которые по тем или иным причинам выполнять преждевременно.
Отметим, что предназначенные для эксплуатации в промышленности системы должны быть значительно сложнее той системы, которая была только что описана. Дело в том, что в ней подробно рассматривался только один тип печатных плат - платы со сквозными металлизированными отверстиями; кроме того, многие этапы процесса производства таких плат были опущены. На самом же деле существует довольно много различных типов печатных плат и в производстве плат каждого типа используются характерные для этого типа дополнительные операции. Также для разных типов плат существуют разные стандарты, которые часто определяются условиями эксплуатации плат. Все это можно учесть, введя несколько предложений, каждое из которых описывает определенный процесс обработки. Кроме того, с каждым таким предложением необходимо связать предложения, содержащие информацию о стандартах. В принципе реальные системы, кроме масштабов, мало чем отличаются от описанной в этой книге. Правда, их можно реализовать только на более мощных ЭВМ, чем домашние.
В заключение покажем, как еще можно использовать экспертную систему:
all (x: new-job x)
[определить все (х: новая-работа х)]
job number x ? ans 43
[номер работы х ? ответ 43]
No (more) answers
[Ответов (больше) нет]
После этого предложение job будет иметь следующий вид:
(1 2 3 43)
и, кроме того, появится новое предложение
43 stage in
Теперь новая работа с номером 43 готова для выполнения этапа вырезания заготовок:
all (x у: х next у)
[определить все (х у: х следующий этап у) ]
job X operation Y inspection Z ? ans 43 cut-blanks in
[работа X этап Y проверка Z ? ответ 43 вырезание-заготовок предварительный контроль ]
43 cut-blanks
[43 вырезание-заготовок ]
No (more) answers
[Ответов (больше) нет]
Ответ 43 cut-blanks показывает, что работа 43 подготовлена для выполнения этапа вырезания заготовок. В более сложных системах, о которых было упомянуто выше, очередной этап будет реализован на машине только в случае, если ранее будет получен правильный код от оператора. Естественно, что работа машины, выполняющей операцию, должна быть согласована с работой устройства, которое, проверяя коды, принимает решение о допуске данной работы к операции. В нашем примере этот код должен представлять собой комбинацию номера работы и контрольного кода in. Таким образом, в общем случае с работой связывается код, соответствующий номеру работы и коду последней контрольной проверки.
Упражнение 6.5
Используйте текст программы 6.7 для определения:
а) текущего этапа каждой работы;
б) этапов, которые будут проведены для завершения работы 2;
в) процедур контроля, необходимых для каждого этапа обработки;
г) условий перехода работы 3 к следующему этапу.
Упражнение 6.6
Как уже было отмечено, программа 6.7 может быть взята за основу при построении систем, контролирующих ход последовательных процессов. Возьмите любой такой процесс и попробуйте построить для него аналогичную систему.