Смекни!
smekni.com

Разработка системы управления роботом (стр. 4 из 5)

Разработанное устройство может использовать в тех областях промышленности, где требуется точное перемещение и точность позиционирования. Корпус блока обладает достаточной прочностью. Существует возможность применения спроектированного блока в паре с двигателем в довольно сложных и ответственных устройствах. Обладает большим ресурсом и сроком службы.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Семенов Б.Ю. Силовая электроника для любителей и профессионалов/ Б. Ю. Семенов. М.: Солон-Р, 2001. 126 с.

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, которая пропорциональна скважности, изменение которой, в свою очередь, позволяет управлять частотой оборотов двигателя постоянного тока.