Приложение А. Перечень используемой научно-технической документации.
№ | Обозначение | Наименование | Раздел |
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();
}