Автор работы: Пользователь скрыл имя, 04 Ноября 2012 в 15:50, курсовая работа
Дополнительные требования к МПС: 1) управление Приводом Y должно осуществляться в симметричном режиме; 2) при температуре радиатора силового модуля более чем 65 ºС необходимо отключить установку и оповестить обслуживающий персонал о неисправности.
Техническое задание…………………………………………………………3
Введение…………………………………………………………………..3
Основание для разработки……………………………………………….3
Назначение разработки…………………………………………………..4
Требования к программе или программному изделию ..……………....4
Требования к функциональным характеристикам……………..4
Требования к условиям эксплуатации…………………………..5
Требования к составу и параметрам технических средств….....5
1.5. Требования к ОМК………………………………………………………5
Структурная схема…………………………………………………………...8
Принципиальные электрические схемы...............................................11
Принципиальная электрическая схема привода X …………………..11
Принципиальная электрическая схема привода Y ………………..…13
Принципиальная электрическая схема привода Z ………………...….15
Список литературы……………………………………………………….…17
Приложение1. Текст программы…………………………………………....18
call LCD_DO
movlw 0x21
call LCD_DO
movlw 0x21
call LCD_DO
return
LCD_Write_Danger ; выводит DANDER!!!
movlw b'10000000' ; переход в начало
movwf temp_wr ; первой строки
call i_write
movlw 0x44
call LCD_DO
movlw 0x41
call LCD_DO
movlw 0x4E
call LCD_DO
movlw 0x47
call LCD_DO
movlw 0x45
call LCD_DO
movlw 0x52
call LCD_DO
movlw 0x21
call LCD_DO
movlw 0x21
call LCD_DO
movlw 0x21
call LCD_DO
return
;*****************************
BigDelay_1c_N ;Задержка на регулируемое время
movwf Cnt4
Loop4
movlw 0x04
movwf Cnt3
Loop3
movlw 0xFF
movwf Cnt2
Loop2
movlw 0xF4
movwf Cnt1
Loop1
nop
decfsz Cnt1,1
goto Loop1
decfsz Cnt2,1
goto Loop2
decfsz Cnt3,1
goto Loop3
decfsz Cnt4,1
goto Loop4,1
return
InitDrv ; Инициализация приводов
Bank1
movlw b'00011000'
movwf TRISC
Bank0
movlw b'00000010' ; Включаем контактор "Х - Назад"
movwf PORTC
btfsc InitX
goto $-1
movlw b'00100000' ; Включаем ключи "Y - влево"
movwf PORTC
btfsc InitY
goto $-1
clrf PORTC
movlw b'10000000' ; Включаем контактор "Z - вниз"
movwf PORTC
btfsc InitZ
goto $-1
clrf PORTC
Bank1
movlw b'11011011'
movwf TRISC
Bank0
return
XDrv_F ; Привод X вперед
Bank1
movlw b'11011100'
movwf TRISC
Bank0
bsf FLAGS, 1
movlw b'00000001' ; Включаем контактор "Вперед"
movwf PORTC
movlw XTime
call BigDelay_1c_N
clrf PORTC
bcf FLAGS, 1
Bank1
movlw b'11011011'
movwf TRISC
Bank0
return
XDrv_B ; Привод X назад
Bank1
movlw b'11011100'
movwf TRISC
Bank0
bsf FLAGS, 2
movlw b'00000010' ; Включаем контактор "Назад"
movwf PORTC
movlw XTime
call BigDelay_1c_N
clrf PORTC
bcf FLAGS, 2
Bank1
movlw b'11011011'
movwf TRISC
Bank0
return
YDrv_L
; Привод Y влево
Bank1
movlw b'11011011'
movwf TRISC
Bank0
bsf FLAGS, 3
clrf PORTC
call Raising
movlw b'00100000'
movwf PORTC
btfsc T2CON, TMR2ON
goto $-1
movlw YTime
movwf Count
movlw .1
call BigDelay_1c_N
call CnpTemp
decfsz Count,f
goto $-4
call Falling
btfsc T2CON, TMR2ON
goto $-1
movlw b'11011111'
movwf TRISC
clrf PORTC
bcf FLAGS, 3
return
YDrv_R ; Привод Y вправо
Bank1
movlw b'11011011'
movwf TRISC
Bank0
bsf FLAGS, 4
clrf PORTC
call Raising
movlw b'00100100'
movwf PORTC
btfsc T2CON, TMR2ON
goto $-1
movlw YTime
movwf Count
movlw .1
call BigDelay_1c_N
call CnpTemp
decfsz Count,f
goto $-4
call Falling
btfsc T2CON, TMR2ON
goto $-1
movlw b'11011111'
movwf TRISC
clrf PORTC
bcf FLAGS, 4
return
ZDrv_Up ; Привод Z вверх
Bank1
movlw b'00011111'
movwf TRISC
Bank0
bsf FLAGS, 5
movlw b'01000000'
movwf PORTC
movlw ZTime
call BigDelay_1c_N
clrf PORTC
bcf FLAGS, 5
Bank1
movlw b'11011111'
movwf TRISC
Bank0
return
ZDrv_Dwn ; Привод Z вниз
Bank1
movlw b'00011111'
movwf TRISC
Bank0
bsf FLAGS, 6
movlw b'10000000'
movwf PORTC
movlw ZTime
call BigDelay_1c_N
clrf PORTC
bcf FLAGS, 6
Bank1
movlw b'11011111'
movwf TRISC
Bank0
return
Raising
Bank1
movlw 0xC5
movwf PR2 ; Загрузка в TMR2 периода ШИМ
Bank0
bsf FLAGS,7 ; Признак фронта
movlw b'10000000'
movwf CCPR1L
movlw b'01111101'
movwf T2CON ; Включаем TMR2, коэффициент предделителя 1:4,
; коэффициент выходного делителя 1:16
movlw b'00001100'
movwf CCP1CON ; Настраиваем модуль CCP1 на режим ШИМ
movlw b'11010000'
movwf INTCON ; Настраиваем прерывания: от периферийных мод.
; и RB0
clrf CntStep ; Обнуляем счетчик
Bank1
movlw b'00000010'
movwf PIE1 ; Разрешаем прерывание от TMR2
Bank0
return
Falling
Bank1
movlw 0xC5
movwf PR2 ; Загрузка в TMR2 периода ШИМ
Bank0
bcf FLAGS,7 ; Признак среза
movlw b'11111111'
btfsc FLAGS,4
movwf CCPR1L
movlw b'00000000'
btfsc FLAGS,3
movwf CCPR1L
movlw b'01111101'
movwf T2CON ; Включаем TMR2, коэффициент предделителя 1:4,
; коэффициент выходного делителя 1:16
movlw b'00001100'
movwf CCP1CON ; Настраиваем модуль CCP1 на режим ШИМ
movlw b'11010000'
movwf INTCON ; Настраиваем прерывания: от периферийных мо- ; дулей и RB0
clrf CntStep ; Обнуляем счетчик
Bank1
movlw b'00000010'
movwf PIE1 ; Разрешаем прерывание от TMR2
Bank0
return
;*****************************
ssprw ;check for idle SSP module
banksel SSPSTAT
btfsc SSPSTAT,R_W
goto $-1
return
CnpTemp
banksel TRISC ;initialize MSSP module
bsf TRISC,3
bsf TRISC,4
clrf TRISB
movlw B'00101000'
banksel SSPCON
movwf SSPCON
banksel SSPSTAT
bsf SSPSTAT,SMP
movlw .9
movwf SSPADD
get_temp
banksel cmd_byte
movlw 0x01 ;config register command byte
movwf cmd_byte
temp_now
banksel SSPCON2 ;write to TC74
bsf SSPCON2,SEN
btfsc SSPCON2,SEN
goto $-1
movlw B'10011010' ;send TC74 ADDRESS (write)
banksel SSPBUF
movwf SSPBUF
call ssprw
banksel SSPCON2
btfsc SSPCON2,ACKSTAT ;ack?
goto $-1
banksel cmd_byte
movf cmd_byte,w ;send COMMAND byte (config)
banksel SSPBUF
movwf SSPBUF
call ssprw
banksel SSPCON2
btfsc SSPCON2,ACKSTAT ;ack?
goto $-1
bsf SSPCON2,RSEN ;send repeated start
btfsc SSPCON2,RSEN
goto $-1
movlw B'10011011' ;send TC74 ADDRESS (read)
banksel SSPBUF
movwf SSPBUF
call ssprw ;module idle?
banksel SSPCON2
btfsc SSPCON2,ACKSTAT ;ack?
goto $-1
bsf SSPCON2,RCEN ;enable receive mode
btfsc SSPCON2,RCEN
goto $-1
banksel SSPBUF ;retrieve config reg or temp reg
movf SSPBUF,w
banksel SSPCON2 ;send NOT-ACK
bsf SSPCON2,ACKDT
bsf SSPCON2,ACKEN
btfsc SSPCON2,ACKEN
goto $-1
bsf SSPCON2,PEN ;stop
btfsc SSPCON2,PEN
goto $-1
banksel cmd_byte ;config command OR temp command
btfss cmd_byte,0
goto convert_temp ;get temperature ready for display
andlw 0x40
sublw 0x40
btfss STATUS,Z ;is temp ready ??
goto get_temp ;NO, try again
movlw 0x00 ;YES, send temp command
banksel cmd_byte ;send temp register command
movwf cmd_byte
goto temp_now
convert_temp
movwf temperature
movlw .65
subwf temperature, f
btfss STATUS,C
call Instruction
return
Instruction
bcf INTCON, GIE ; Запрещаем все прерывания
call LCD_Write_Danger
clrf PORTC
goto $-1
return
;************* Конец блока подпрограмм *************
START
;************** Подготовака к работе ***************
Bank1
clrf OPTION_REG
movlw b'10010000'
movwf INTCON ; Разрешаем прерывания от RB0
movlw 0xFF
movwf TRISA
movwf TRISB
movwf TRISD ; порты A, B, D на входы
movlw b'11011011'
movwf TRISC
Bank0
call LCD_Init ; инициализация ЖКИ
call LCD_Write_Init ; вывод 'Init'
call InitDrv ; инициализация приводов
call LCD_Write_Init_finish ; вывод 'Init finish'
;****************** Рабочий цикл *******************
Begin
btfsс PORTB,Run
goto Begin ; Ожидание нажатия кнопки пуск
call LCD_Write_Run ; Вывод на ЖКИ 'Run'
call ZDrv_Up
call YDrv_R
call XDrv_F
call ZDrv_Dwn
movlw .10
call BigDelay_1c_N
call ZDrv_Up
call XDrv_B
call YDrv_L
call ZDrv_Dwn
call LCD_Write_finish ; Вывод на ЖКИ 'Finish!!!'
End
;********************** Конец **********************