Приложение А. Перечень используемой научно-технической документации.

Обозначение Наименование Раздел
1 ГОСТ 16019-2001 Требования по стойкости к воздействию механических и климатических факторов и методы испытаний 1.1.5, 1.2.6
2 ГОСТ 12.2.007.0-75 Система стандартов безопасности труда. Изделия электротехнические. Общие требования безопасности. 1.2.4
3 ГОСТ 15150-69 Машины, приборы и другие технические изделия. Исполнения для различных климатических районов. Категории, условия эксплуатации, хранения и транспортирования в части воздействия климатических факторов внешней среды 1.2.6
4 ГОСТ 25686-85 Манипуляторы, автооператоры и промышленные роботы. Термины и определения 2.1.4
5 ГОСТ 9563-60 Основные нормы взаимозаменяемости. Колеса зубчатые. Модули. 4.1
6 ГОСТ 16530-83 Передачи зубчатые. Общие термины, определения и обозначения. 4.1


 

Приложение Б. Описание работы автоматизированного технологического комплекса для получения металлических покрытий.

Схема строения комплекса приведена на рисунке 1.

 

Рисунок 1 – Схема расположения технологических зон в комплексе

 

Оператор помещает подложки в кассете в зону обмена подложек, параметры обработки подложек будут задаваться при помощи приборной панели. Обработка подложек должна происходить в зонах отжига, очистки и обработки подложек в рабочих растворах. Для помещения подложек в зону отжига используется специальное отдельное устройство, так как необходимо перемещать подложки в области с высокими температурами.

Устройство захвата и перемещения подложек должно передвигаться в области обмена подложек и зоне обработки подложек в рабочих растворах. Захват и установка подложек должны происходить из кассеты с подложками загруженными оператором, подложкодержателя, в месте загрузки подложек для зоны очистки и для зоны отжига. Устройство должно быть способно захватывать подложкодержатель с размещенной в нем подложкой и производить обработку подложки в растворах, опуская в них подложкодержатель.

Приложение В. Тестовая программа переноса подложек.

 

int Xin1 = 2;

int Xin2 = 3;

int Xin3 = 4;

int Xin4 = 5;

int Zin1 = 6; // контакты двигателей

int Zin2 = 7;

int Zin3 = 8;

int Zin4 = 9;

int Yin1 = 10;

int Yin2 = 11;

int Yin3 = 12;

int Yin4 = 13;

const int dl = 5; //величина задержки между тактами в мс

const int dl2 = 500; //величина задержки между углами поворота

int a1 = 490; // количество оборотов двигателя для первого промежутка

int a2 = 600; // количество оборотов двигателя для второго промежутка

int a3 = 250; // количество оборотов двигателя для подъёма

int b1 = 60; // угол захвата

int b2 = 90; // угол разжима

int c1 = 30; // количество оборотов для поправки

int homedist=50; //расстояние от концевика при остановки звена

#include <Servo.h> // Подклоючаем библиотеку Servo

Servo Servo1; // Создаем объект Servo

void setup() {

Serial.begin(9600);

pinMode(Xin1, OUTPUT);

pinMode(Xin2, OUTPUT);

pinMode(Xin3, OUTPUT);

pinMode(Xin4, OUTPUT);

pinMode(Zin1, OUTPUT);

pinMode(Zin2, OUTPUT);

pinMode(Zin3, OUTPUT);

pinMode(Zin4, OUTPUT);

pinMode(Yin1, OUTPUT);

pinMode(Yin2, OUTPUT);

pinMode(Yin3, OUTPUT);

pinMode(Yin4, OUTPUT);

pinMode(A1, INPUT_PULLUP); // концевик OY ( кнопка с внутренним подтянутым питанием через резистор )

pinMode(A2, INPUT_PULLUP); // концевик OX

pinMode(A3, INPUT_PULLUP); // концевик OZ

}

void takt1(int in1, int in2, int in3, int in4) { // функции для более легкого задания тактов

digitalWrite( in1, HIGH );

digitalWrite( in2, HIGH );

digitalWrite( in3, LOW );

digitalWrite( in4, LOW );

}

void takt2(int in1, int in2, int in3, int in4) {

digitalWrite( in1, LOW );

digitalWrite( in2, HIGH );

digitalWrite( in3, HIGH );

digitalWrite( in4, LOW );

}

void takt3(int in1, int in2, int in3, int in4) {

digitalWrite( in1, LOW );

digitalWrite( in2, LOW );

digitalWrite( in3, HIGH );

digitalWrite( in4, HIGH );

}

void takt4(int in1, int in2, int in3, int in4) {

digitalWrite( in1, HIGH );

digitalWrite( in2, LOW );

digitalWrite( in3, LOW );

digitalWrite( in4, HIGH );

}

void taktStop(int in1, int in2, int in3, int in4) {

digitalWrite( in1, LOW );

digitalWrite( in2, LOW );

digitalWrite( in3, LOW );

digitalWrite( in4, LOW );

}

void OXUP(int kolvo) { //Функция для движения вперед по OX

int i=0;

while (i<kolvo){

takt1(Xin1, Xin2, Xin3, Xin4);

delay(dl);

takt2(Xin1, Xin2, Xin3, Xin4);

delay(dl);

takt3(Xin1, Xin2, Xin3, Xin4);

delay(dl);

takt4(Xin1, Xin2, Xin3, Xin4);

delay(dl);

i++;

}

taktStop(Xin1, Xin2, Xin3, Xin4);

}

void OXDN(int kolvo) { //Функция для движения назад по OX

int i=0;

while (i<kolvo){

takt4(Xin1, Xin2, Xin3, Xin4);

delay(dl);

takt3(Xin1, Xin2, Xin3, Xin4);

delay(dl);

takt2(Xin1, Xin2, Xin3, Xin4);

delay(dl);

takt1(Xin1, Xin2, Xin3, Xin4);

delay(dl);

i++;

}

taktStop(Xin1, Xin2, Xin3, Xin4);

}

void OYUP(int kolvo) { //Функция для движения вперед по OY

int i=0;

while (i<kolvo){

takt1(Yin1, Yin2, Yin3, Yin4);

delay(dl);

takt2(Yin1, Yin2, Yin3, Yin4);

delay(dl);

takt3(Yin1, Yin2, Yin3, Yin4);

delay(dl);

takt4(Yin1, Yin2, Yin3, Yin4);

delay(dl);

i++;

}

taktStop(Yin1, Yin2, Yin3, Yin4);

}

void OYDN(int kolvo) { //Функция для движения назад по OY

int i=0;

while (i<kolvo){

takt4(Yin1, Yin2, Yin3, Yin4);

delay(dl);

takt3(Yin1, Yin2, Yin3, Yin4);

delay(dl);

takt2(Yin1, Yin2, Yin3, Yin4);

delay(dl);

takt1(Yin1, Yin2, Yin3, Yin4);

delay(dl);

i++;

}

taktStop(Yin1, Yin2, Yin3, Yin4);

}

void OZUP(int kolvo) { //Функция для движения вверх

int i=0;

while (i<kolvo){

takt1(Zin1, Zin2, Zin3, Zin4);

delay(dl);

takt2(Zin1, Zin2, Zin3, Zin4);

delay(dl);

takt3(Zin1, Zin2, Zin3, Zin4);

delay(dl);

takt4(Zin1, Zin2, Zin3, Zin4);

delay(dl);

i++;

}

taktStop(Zin1, Zin2, Zin3, Zin4);

}

void OZDN(int kolvo) { //Функция для движения вниз

int i=0;

while (i<kolvo){

takt4(Zin1, Zin2, Zin3, Zin4);

delay(dl);

takt3(Zin1, Zin2, Zin3, Zin4);

delay(dl);

takt2(Zin1, Zin2, Zin3, Zin4);

delay(dl);

takt1(Zin1, Zin2, Zin3, Zin4);

delay(dl);

i++;

}

taktStop(Zin1, Zin2, Zin3, Zin4);

}

void HOMEOX() { //движение до концевика по OX

int kon=0;

while (kon==0){

OXDN(10);

kon=digitalRead(A2);

}

OXUP(homedist);

}

void HOMEOY() { //движение до концевика по OY

int kon=0;

while (kon==0){

OYDN(10);

kon=digitalRead(A1);

}

OYUP(homedist);

}

void HOMEOZ() { //движение до концевика по OZ

int kon=0;

while (kon==0){

OZUP(10);

kon=digitalRead(A3);

}

OZDN(homedist);

}

void HOMEALL() { //движение до концевика по всем осям

HOMEOX();

HOMEOY();

HOMEOZ();

}

void HVAT(int kolvo) { //Функция для поворота сервопривода

Servo1.attach(A0); // пин для управления сервоприводом (включение питания)

Servo1.write(kolvo);

delay(dl2);

Servo1.detach();

}

void loop(){

HVAT(b1); // тестовый алгоритм

OZUP(a3);

OXUP(a1);

OZDN(a3);

HVAT(b2);

OZUP(a3);

OXUP(a2);

OXUP(c1);

OZDN(a3);

OXDN(c1);

HVAT(b1);

OZUP(a3);

OXDN(a2);

OXDN(a1);

OZDN(a3);

HVAT(b2);

OZUP(a3);

OXUP(a1);

OXUP(c1);

OZDN(a3);

OXDN(c1);

HVAT(b1);

OZUP(a3);

OXUP(a2);

OZDN(a3);

HVAT(b2);

OZUP(a3);

OXDN(a2);

OXDN(a1-c1);

OZDN(a3);

OXDN(c1);

HOMEALL();

}