Разработанное устройство может использовать в тех областях промышленности, где требуется точное перемещение и точность позиционирования. Корпус блока обладает достаточной прочностью. Существует возможность применения спроектированного блока в паре с двигателем в довольно сложных и ответственных устройствах. Обладает большим ресурсом и сроком службы.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
2. Хорвиц П. Искусство схемотехники. Пер. с англ. М.: Мир, 1993.
3. Лавриненко В.Ю. Справочник по полупроводниковым приборам. К.: Техника, 1984. 424 с.
4. Касаткин А.С. Электротехника. Учеб. пособие для вузов. 4-е изд. М.: Энергоатомиздат,1983. 440 с.
5. Брускин Д.Э. Электрические машины: В2-х ч. Ч1: Учеб. пособие для вузов. М.: Высшая школа,1987. 319 с.
6. Романычева Э.Т. Разработка и оформление конструкторской документации радиоэлектронной аппаратуры. М.: Радио и связь, 1989. 448 с.
7. Вольдек А.И. Электрические машины. Л.: Энергия, 1974. 840 с.
8. Сентурия С., Уэдлок Б. Электронные схемы и их применение. М.: Мир, 1977. 600 с.
ПРИЛОЖЕНИЕ А
(Обязательное)
Настройка и конфигурирование ПЛК в среде программирования CoDeSys
После инсталляции среды CoDeSys следует выполнить инсталляцию Target-файлов. В Target-файлах содержится информация о ресурсах программируемых контроллеров, с которыми работает CoDeSys.
Инсталляция Target-файлов производится при помощи утилиты InstallTarget, устанавливающейся вместе со средой программирования.
Выбор требуемого Target-файла показан на рисунке А.1.
Рисунок А.1. Выбор требуемого Target-файла.
Настраиваем входы и выходы ОВЕН ПЛК-150 в PLC Configurator.
Цифровой вход 0 будет подключен к фотоимпульсному датчику (энкодеру). На аналоговые выходы будет поступать высокий или низкий уровень сигнала, характеризующий увеличение или уменьшение вращения двигателя постоянного тока.
Настройка конфигуратора изображена на рисунке А.2.
Рисунок А.2. Настройка конфигуратора.
ПРИЛОЖЕНИЕ Б
(Обязательное)
Разработка программы
Для программирования ОВЕН ПЛК-150 воспользуемся языками SFC, FBDи ST среды программирования CoDeSys.
Текст программы представлен на рисунках Б.1-Б.3.
Рисунок Б.1. Текст программы на языке SCF
Рисунок Б.2. Текст программы на языке FBD
Рисунок Б.3. Текст программы на языке ST.
На рисунке Б.4 изображена визуализация проекта.
Рисунок Б.4. Визуализация проекта.
Текст программы для микроконтроллеров PIC16F628Aпредставлен на рисунках Б.5-Б.6.
LIST P=16F628A, R=hex ; Use the PIC16F628 and decimal system
#include "P16F628A.INC" ; Include header file
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF
TEMP EQU 070h
TEMP1 EQU 072h
COUNT EQU 074h
COUNT1 EQU 076h
ORG 0x000 ; Program starts at 0x000
begin
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
movf PORTA,F
movf PORTB,F
bsf STATUS,RP0
movlw B'00000000'
movwf TRISA
movlw B'00001001'
movwf TRISB
movlw B'10000000'
movwf OPTION_REG
bcf STATUS,RP0
movlw B'00000000'
movwf PORTA
movlw B'00000000'
movwf PORTB
;
; ---------
; MAIN LOOP
; ---------
;
movlw 00h
movwf TEMP
movlw 00h
movwf TEMP1
movlw 04h
movwf COUNT
Рисунок Б.5. Текст программы для PIC16F628A.
movlw 04h
movwf COUNT1
loop
movf PORTB,W
btfsc PORTB,3
goto new
goto loop
new
iorwf TEMP1
movlw 01h
andwf TEMP1,0
iorwf TEMP
rlf TEMP,1
movlw 00h
movwf TEMP1
decfsz COUNT,1
goto again
goto loop1
again
btfsc PORTB,3
goto again
loop1
decfsz COUNT1,1
goto loop
rrf TEMP,1
movf TEMP,W
movwf PORTA
cycle
btfsc PORTB,3
goto cycle
movlw 00h
movwf TEMP
movlw 00h
movwf TEMP1
movlw 04h
movwf COUNT
movlw 04h
movwf COUNT1
clrf PORTA
clrf PORTB
goto loop
END
РисунокБ.5. Продолжение.
LISTP=16F628A, R=DEC ; Использовать десятичную систему счисления
#include "P16F628A.INC" ; Подключение библиотеки
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON
ORG 0x000 ; Program starts at 0x000
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
movlw b'00000000' ; Установка portA
movwf PORTA
movlwb'00000100' ; RB2(TX)=1 остальные 0
movwf PORTB
bsf STATUS,RP0 ; Банкпамяти 1
movlw 0xFF
movwf TRISA ; ВсеразрядыportA входы
movlw b'11110010' ; RB7-RB4 and RB1(RX)=входы, остальныевыходы
movwf TRISB
; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Скорость = 9600 бод, без паритета, 1 стоповый бит
;
movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps)
movwf SPBRG
movlw b'00100100' ;
movwf TXSTA ; включениеасинхроннойпередачи
bcf STATUS,RP0 ; Банкпамяти 0
movlw b'10010000' ; включение асинхронного приема
movwf RCSTA
;
; ---------
; MAIN LOOP
; ---------
;
call message ; послатьстроку
loop call receive ; ожиданиесимвола
call send ; посылкасимвола
goto loop
;
; -------------------------------------------
; Принятие символа через RS-232 и сохранение его в регистре W
; -------------------------------------------
Рисунок Б.6. Текст программы для PIC16F628A.
; Этот цикл не заканчивается пока символ не принят
;
receivebtfssPIR1,RCIF ; (5) проверка на наличие поступающих данных
goto receive
movfRCREG,W ; сохранение поступивших данных в W
return
;
; -------------------------------------------------------------
; Отправка символа через RS-232 и ожидание окончания отправки
; -------------------------------------------------------------
;
sendmovwfTXREG ; скопировать в регистр Wпосылаемый символ
TransWt bsf STATUS,RP0 ; Банкпамяти 1
WtHerebtfssTXSTA,TRMT ; (1) если 1 то передача завершена
goto WtHere
bcf STATUS,RP0 ; Банкпамяти 0
return
;
; -------
; Сообщение
; -------
;
message movlw 'B'
call send
movlw 'a'
call send
movlw 'k'
call send
movlw 'a'
call send
movlw 'l'
call send
movlw 'a'
call send
movlw 'v'
call send
movlw 'r'
call send
movlw 's'
call send
movlw 'k'
call send
movlw 'a'
call send
movlw 'i'
call send
movlw 'a'
РисунокБ.6. Продолжение.
call send
movlw ' '
call send
movlw 'r'
call send
movlw 'a'
call send
movlw 'b'
call send
movlw 'o'
call send
movlw 't'
call send
movlw 'a'
call send
movlw ' '
call send
movlw 'P'
call send
movlw 'o'
call send
movlw 'd'
call send
movlw 'g'
call send
movlw 'u'
call send
movlw 'z'
call send
movlw 'o'
call send
movlw 'v'
call send
movlw ' '
call send
movlw 'A'
call send
movlw '.'
call send
movlw 'V'
call send
movlw '.'
call send
movlw 0x0D ; CR
call send
movlw 0x0A ; LF
call send
return
END
Рисунок Б.6. Продолжение.
Текст программы для микроконтроллера MSP430C1101 представлен на рисунке Б.7.
#include "msp430x11x1.h" ; Standard Equations
NAME DCmotorspeedcontroller
#define Duty_cycle R6
;******************************************************************************
;Константы
;******************************************************************************
PWM_OUT equ 004h ; bit2 of Port1 / TA1
Period equ 0ffh ; Counts for D/A, 8bits = 256
;******************************************************************************
RSEG CSTACK
DS 0
;******************************************************************************
RSEG CODE
;******************************************************************************
RESET mov #SFE(CSTACK),SP ; Инициализациястека
call #Init_Sys ; Процедура инициализации
Mainloopbit.b #BIT0,&P2IN ; проверка был ли подан сигнал уменьшения скважности ШИМ
jz Next1
bit.b #BIT1,&P2IN ; проверка был ли подан сигнал уменьшения скважности ШИМ
jzNext2
jmpMainloop ; ожидание подачи управляющего сигнала
Next1 cmp #0,Duty_cycle ; если значение скважности ШИМ минимально
jzMainloop ; то переход на ожидание нажатия
decDuty_cycle ; увеличение скважности ШИМ
jmp SendPWM
Next2 cmp #0ffh,Duty_cycle ; если значение скважности ШИМ максимально
jzMainloop ; то переход на ожидание нажатия
incDuty_cycle ; уменьшение скважности ШИМ
SendPWMmovDuty_cycle,&CCR1 ; Вывод ШИМ сигнала на выход
call #Delay ; Вызов процедуры задержки
jmpMainloop ; ожидание подачи управляющего сигнала
;******************************************************************************
Init_Sys; Инициализация
;******************************************************************************
StopWDT mov #WDTPW+WDTHOLD,&WDTCTL ; Остановсторожевоготаймера
SetupBC mov.b #XTOFF+RSEL2+RSEL1+RSEL0,&BCSCTL1
; RSEL=7
mov.b #0ffh,&DCOCTL ; Режим максимальной частоты.
SetupP1 mov.b #0,&P1OUT ; P1OUT сброс
bis.b #PWM_OUT,&P1SEL ; P1.2/TA1 настраиваем на ШИМ выход
bis.b #0ffh,P1DIR ; остальные выводы P1 не используем
SetupP2 mov.b #03ch,&P2DIR ; P2.0,P2.1 входы,P2.2 toP2.5 не используются
mov #Period,&CCR0 ; Установка периода длительности ШИМ
mov #0,&CCR1 ;
mov #OUTMOD_7,&CCTL1 ; Настройка режима таймера
SetupTAmov #TASSEL1+MC0,&TACTL ; Установка внутреннего генератора частоты
mov #0,Duty_cycle ; Сброс переменной Duty_cycle
ret ; Возврат из процедуры
;******************************************************************************
Delay; Software delay
;******************************************************************************
push #03FFFh ; Задержка
L1 dec 0(SP) ;
jnz L1 ;
incd SP ;
ret ;
Рисунок Б.7. Текст программы для MSP430C1101.
;******************************************************************************
COMMON INTVEC ; MSP430F1xx Векторы прерывания
;******************************************************************************
ORG RESET_VECTOR
RESET_VEC DW RESET ; Сброссторожевоготаймера
END
Рисунок Б.7. Продолжение.
ПРИЛОЖЕНИЕ В
(Обязательное)
Руководство программиста
Спроектированный блок управления двигателем постоянного тока спроектирован на основе микроконтроллера MSP430C1101 и программируемого логического контроллера ОВЕН ПЛК-150.
Для того чтобы задать другие значения длительностей управляющего сигнала с ПЛК, необходимо в среде программирования CoDeSysизменить значение PTтаймеров TON1-TON10 на требуемое.
Для того чтобы задать другие значения скважности ШИМ сигнала, необходимо в программном коде для микроконтроллера MSP430C1101 изменить значение переменной Duty_cycle, которая пропорциональна скважности, изменение которой, в свою очередь, позволяет управлять частотой оборотов двигателя постоянного тока.