/*************************************************************
*
* 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)
Читайте также
Проектирование РЭА
При конструкторском проектировании РЭА (радиоэлектронной
аппаратуры) решаются задачи, связанные с поиском наилучшего варианта
конструкции, удовлетворяющего требованиям технического задан ...
Проектирование сетевого оборудования NGN
В настоящее время всё чаще встречаются публикации, посвящённые коренному
преобразованию ТфОП и переходу к сети следующего поколения (NGN). Она позиционируется как
универсальная сеть, спо ...
Проектирование корпоративной сети
Информационная сеть - сеть, предназначенная для обработки, хранения и
передачи данных. Информационная сеть состоит из:
· абонентских и административных систем;
· связы ...