/*************************************************************
*
* 16Б25ПСп. Управляющая программа.
*
*************************************************************
*
*
*************************************************************
*
* Процессор PIC16f876, Fosc = 4,9152 МГц.
*
***********************************************************/
#include <pic.h>
#include <math.h>
CONFIG(DEBUGDIS & UNPROTECT & LVPDIS & BORDIS & PWRTEN & WDTDIS & HS & DUNPROT);
#define BITNUM(adr,bit)((unsigned)(&adr)*8+(bit)) //Адреса входов-выходов.
#define ON 1 //Включено - высокий уровень.
#define OFF 0 //Выключено - низкий уровень.
#define PAUSE 2 //Константа выдержки времени.
// В Ы Х О Д А :bit INC @ BITNUM(PORTA,1); //Загрузка индикатора скоростей.
static bit REZET @ BITNUM(PORTA,2); //Сброс ---- ----.bit TIME_ENDED @ BITNUM(PORTA,3); //Отключение главного привода.bit RUN @ BITNUM(PORTA,4); //Ход программы.bit SUP_BLOCK @ BITNUM(PORTA,5); //Отключение суппорта.bit EM1 @ BITNUM(PORTB,7); // ЭМ1 гидропривода.bit EM2 @ BITNUM(PORTB,6); // ЭМ2 ----.bit EM3 @ BITNUM(PORTB,5); // ЭМ3 ----.bit EM4 @ BITNUM(PORTB,4); // ЭМ4 ----.bit EM5 @ BITNUM(PORTB,3); // ЭМ5 ----.bit EM6 @ BITNUM(PORTB,2); // ЭМ6 ----.bit EM7 @ BITNUM(PORTB,1); // ЭМ7 ----.
// В Х О Д А :bit SP_ON @ BITNUM(PORTC,0); //Включение шпинделя.
static bit PUCH @ BITNUM(PORTC,1); //Режим "Толчок".bit S_S_BLOCK @ BITNUM(PORTC,2); //Блокировка шпинделя и суппорта.bit DIR_MOVE @ BITNUM(PORTC,3); //Прямой ход.bit INV_MOVE @ BITNUM(PORTC,7); //Обратный ход.bit GEN_BLOCK @ BITNUM(PORTC,5); //Общая блокировка.bit INP_AN @ BITNUM(PORTA,0); //Вход переключения скоростей. FLAG_GEN; //Флаг главной блокировки.FLAG_S_S; // -- блокировки суппорта и шпинделя.FLAG_PUCH; // -- включения режима "Толчок".FLAG_SPEED; // -- переключения скоростей.FLAG_NEITR; // -- перехода на нейтраль.FLAG_SP; // -- включения шпинделя.
bit FLAG_DIR_MOVE; // -- --- прямого хода.
bit FLAG_INV_MOVE; // -- --- обратного хода.
unsigned char SPEED=0; //Скорость шпинделя.int DELAY=0; //Выдержка времени.
/*************************************************************
*
* Универсальный стоп
*
*************************************************************/stop(void)
{(EM1||EM2||EM3||EM4||EM6||EM7) //Если какой - либо из электромаг-
{ //нитов включен,=EM2=EM3=EM4=EM5=EM6=EM7=OFF; //отключаем все ЭМ гидропривода,=PAUSE*15000; //время на выключение(DELAY--!=0); //примерно 0,1 сек.=EM6=ON; //Включение тормоза,=PAUSE*25000; //время на торможение(DELAY--!=0); //примерно 2 сек.=EM6=OFF; //Отключение тормоза.
}
}
/*************************************************************
*
* Переключение скоростей
*
*************************************************************/char speed_switch(void)
{char _SPEED; //Временное значение скорости.char COUNT; //Счет импульсов для индикации.=ON; //Измерение напряжения с(ADGO); //переключателя скоростей.=ON; //Сброс индикатора скоростей.
if((ADRESH>=213)&&(ADRESH<240))_SPEED=1; //Выбор скорости((ADRESH>=187)&&(ADRESH<213))_SPEED=2; //в зависимости((ADRESH>=164)&&(ADRESH<187))_SPEED=3; //от напряжения((ADRESH>=140)&&(ADRESH<164))_SPEED=4; //с переключателя((ADRESH>=117)&&(ADRESH<140))_SPEED=5; //скоростей.((ADRESH>=96)&&(ADRESH<117))_SPEED=6; //((ADRESH>=75)&&(ADRESH<96))_SPEED=7; //((ADRESH>=53)&&(ADRESH<75))_SPEED=8; //((ADRESH>=19)&&(ADRESH<53))_SPEED=9; //
if(SPEED==_SPEED); //Скорость изменилась?//если - да,
{=_SPEED; //тогда устанавливаем выбранную_SPEED=ON; //скорость и флаг переключения.
}=INC=OFF; //Снимаем сброс с индикатора скоростей=SPEED*2; //и загружаем(COUNT--!=0) //в индикатор
{=PAUSE; //полученное(DELAY--!=0); //значение=!INC; //скорости.
}SPEED; //Возвращаем выбранную скорость.
}
/*************************************************************
*
* Прямой ход.
*
*************************************************************/direct(SPEED)
{(SPEED)
{1:EM1=EM2=ON; //Включить скорость 1,;2:EM1=EM6=ON; // 2,;3:EM1=EM5=ON; // 3,;4:EM3=EM7=ON; // 4,;5:EM4=EM7=ON; // 5,;6:EM3=EM6=ON; // 6,;7:EM4=EM6=ON; // 7,;8:EM3=EM5=ON; // 8,;9:EM4=EM5=ON; // 9.
}
}
/*************************************************************
*
* Обратный ход.
*
*************************************************************/inverse(SPEED)
Читайте также
Проект цифровой радиорелейной линии г. Волгоград – г. Астрахань
Связь всегда имела большое значение в жизни людей. Особенную
важность связь приобрела в последние годы, поскольку многие сферы деятельности
человека, например бизнес, напрямую зависят от ...
Разработка комплекта электрических схем маршрутной релейной централизации блочного типа
Целью дипломного проектирование являлась разработка комплекта
электрических схем маршрутной релейной централизации блочного типа (БМРЦ) для
использования их студентами техникума в качест ...
Оптоэлектронные технологии
Оптоэлектроника
- бурно развивающаяся область науки и техники. Многие ее достижения вошли в
быт: индикаторы, дисплеи, лазерные видеопроигрыватели. Разрабатывается
твердоте ...