Пояснительная_записка (1211002), страница 9
Текст из файла (страница 9)
, (4.5)
где k0 – коэффициент определяющий соотношение между проводимостями относительно земли участков сети в комплексном виде.
УЗО выпускаются с номинальными значениями дифференциального тока 10, 30, 100, 300 мА. В учебной аудитории располагается один трансформатор нагрузка по току на который может доходить до 80 А при неисправном режиме работы стендов. В зоне защиты соответственно работает группа потребителей, следовательно, в соответствии с рекомендуемыми значениями отключающего дифференциального тока в правилах устройства электроустановок, будет выбрано УЗО с усадкой равной 300 мА.
Таким образом для обеспечения безопасности учащихся и сотрудников университета, в качестве устройства защитного отключения будет использован автоматический выключатель УЗО ТДМ SQ0203-0021, который по всем параметрам соответствует модернизируемой лаборатории.
Заключение
Применение распространённого интерфейса USB в совокупности с микроконтроллером AVR, позволяет использовать лабораторный комплекс без применения персональных компьютеров старой архитектуры, включающей в себя LPT порт, и необходимости обходить защищённый режим работы Windows благодаря использованию уже имеющего на ПК HID драйвера. Это даёт возможность дальнейшего развития системы «ПОЛИГОН» и соответственно позволяет проводить качественную подготовку дежурных по станции с использованием уже имеющихся стендов, что увеличивает объём получаемых практических знаний, обучающихся в ДВГУПС. Использование микроконтроллеров в создании УСО для лабораторных стендов не позволяет полностью отказаться от использования интегральных микросхем, так как для контроля или управления большого количества объектов требуется большое количество портов ввода/вывода информации. Перспективы применения микроконтроллеров в лабораторных установках очень широкие, в связи с их надёжностью, низкой стоимостью и возможностью использования с новейшими операционными системами.
Список используемых источников
-
Меркулов, А.В. Микропроцессорная система управления на базе интерфейсов персонального компьютера [Текст]: учеб. пособие / А.В. Меркулов. - Хабаровск: Изд-во ДВГУПС -2004. - 70 с.
-
AVR. Учебный курс [Электронный ресурс] / Easy Electronics – электроника для всех. — Режим доступа: www.easyelectronics.ru.
-
AVR микроконтроллер Atmega16 [Электронный ресурс]: Техническая документация / Официальный сайт Atmel. — Режим доступа: www.atmel.ru.
-
Программирование USB-устройств в Delphi [Электронный ресурс] / Delphi components. — Режим доступа: www.delphicomponent.ru.
-
Интерфейс USB [Электронный ресурс] / N-audio лаборатория. — Режим доступа: www.n-audio.com.
-
Тумали, Л. Е. Оценка экономической эффективности устройств железнодорожной автоматики и телемеханики [Текст]: методическое пособие по выполнению экономической части выпускной квалификационной работы специальности 190402.65 «Автоматика, телемеханика и связь на железнодорожном транспорте» / Л. Е. Тумали, - Хабаровск: Изд-во ДВГУПС – 2010. С. - 65.
-
Долин, П.А. Основы техники безопасности в электроустановках [Текст]: для студентов вузов / П.А. Долин. - М.: Высшая школа. - 1984. - 448 с.
-
Буканов, М. А. Справочник дежурного по станции [Текст]: справочник / М.А. Буканов, Л. И. Педь, А. А. Шрамов. – 3-е изд., перераб. и доп. – М.: Транспорт, 1987
-
Пельменёва, Н.А. Пособие по оформлению дипломного проекта [Текст]: метод. пособие / Н.А. Пельменёва. – Хабаровск: Изд-во ДВГУПС, - 2017. – 41 с.
-
Правила технической эксплуатации железных дорог Российской Федерации: утв. Приказом Минтранса России от 21 декабря 2010 № 286. – М., 2011.
-
Инструкция по сигнализации на железнодорожном транспорте Российской Федерации: утв. Приказом Минтранса России от 4 июня 2012 № 2162. – М., 2012.
-
ГОСТ 12.4.113-82 Работы учебные лабораторные. Общие требования безопасности. - М.: Издательство стандартов,1990.
-
Приборы и электронные компоненты [Электронный ресурс] / Интернет магазин Чип и Дип. — Режим доступа: www.chipdip.ru.
-
Об установлении цен (тарифов) на электрическую энергию для населения и потребителей, приравненных к категории население по Хабаровскому краю на 2017 год [Текст]: Постановление № 47/107: [Принято правительством Хабаровского края 19 декабря]. - 2016. – 16 с.
-
Магазин:HT-Sunshine technology co., LTD [Электронный ресурс] / Интернет магазин «AliExpress». — Режим доступа: www.aliexpress.com.
-
Программное обеспечение и оборудование для бизнеса [Электронный ресурс] / Интернет магазин «SoftLine». — Режим доступа: www.store.softline.ru.
Приложение А
Листинг программы управления контроллером
//Подключение библиотек//
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include "usbdrv/usbdrv.h"
#include <util/delay.h>
//Определение макросов//
#define true 1
#define false 0
#define sbi(reg,bit) reg |= (1<<bit)//установить бит
#define cbi(reg,bit) reg &= ~(1<<bit)//сбросить бит
#define ibi(reg,bit) reg ^= (1<<bit)//инвертировать бит
#define CheckBit(reg,bit) (reg&(1<<bit))//проверить бит
#define CheckBit0(reg,bit) (reg&(0<<bit))//проверить бит на 0
// Расчёт скорости обмена UBRR//
#define BAUD 9600
#define UBRR F_CPU/16/BAUD-1
//Функции программы//
void RunTasks(void)
{usbPoll();
wdt_reset();}
void timerDelayMs(unsigned int ms){
#define TIKS_1MS (F_CPU/64/1000)
while(ms--){
TCNT0 = 0;
while(TCNT0 < TIKS_1MS) RunTasks();}}
void usart_init( unsigned int ubrr ){
// Записываем бод скорость: 9600
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
// Разрешаем приём/передачу
UCSRB=(1<<TXEN)|(1<<RXEN)|(0<<UCSZ2);
// Устанавливаем 8-бит кадр и 1 стоп бит
UCSRC=(1<<URSEL)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);}
//Структура пакета управления/контроля//
struct status_t{
unsigned char port_a;//LPT S3-S7
unsigned char port_b;//LPT D0-D7
unsigned char port_c;//LPT С0-С2} ;
struct status_t DeviceStatus;
/* -------------------- USB interface -------------------- */
static unsigned char currentAddress;
static unsigned char bytesRemaining;
struct {
unsigned char rx_buffer[25]; // приемный буффер
} usb;
#define USB_MESSAGE_LENGTH sizeof(DeviceStatus)
PROGMEM const char usbHidReportDescriptor[22] = { // USB report descriptor // Дескриптор описывает структуру пакета данных для обмена
0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xa1, 0x01, // COLLECTION (Application)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) // max. значение
0x75, 0x08, // REPORT_SIZE (8)
0x95, USB_MESSAGE_LENGTH, // REPORT_COUNT
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0xc0 // END_COLLECTION
};
void usb_writedata(void){
unsigned char i;
for(i=0; i<sizeof(DeviceStatus); i++) ((unsigned char*)&DeviceStatus)[i] = usb.rx_buffer[i]; // копируем принятые данные в структуру}
uchar usbFunctionWrite(uchar *data, uchar len)
{ // вызывается, когда USB хочет записать часть данных
if(bytesRemaining == 0)
return 1; // конец передачи
if(len > bytesRemaining)
len = bytesRemaining;
unsigned char *buffer = usb.rx_buffer;
for(unsigned char i=0;i < len;i++)
buffer[i+currentAddress]=data[i];
currentAddress += len;
bytesRemaining -= len;
if(bytesRemaining == 0) // все данные получены{
usb_writedata();}
return bytesRemaining == 0; // 0 означает, что есть еще данные
}usbMsgLen_t usbFunctionSetup(uchar data[USB_MESSAGE_LENGTH])
{usbRequest_t *rq = (void *)data;
if((rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_CLASS){ // HID устройство
if(rq->bRequest == USBRQ_HID_GET_REPORT){ // если комп запрашивает данные
usbMsgPtr = (unsigned char*)&DeviceStatus; return USB_MESSAGE_LENGTH; // указываем на структуру
}else if(rq->bRequest == USBRQ_HID_SET_REPORT){ // если комп задаёт данные
bytesRemaining = USB_MESSAGE_LENGTH;
currentAddress = 0;
return USB_NO_MSG; //используем usbFunctionWrite() для получения данных от хоста
}}else{
// остальные запросы игнорируем
}return 0;}
/* -------------------------- */
int main (void)
{DDRC=0xff; PORTC=0x00;
DDRB=0xff; PORTB=0x00;
DDRA=0x00; PORTA=0xff;
TCCR0 = (1<<CS01) | (1<<CS00); // prescaler = 64
TCNT0 = 0;//счетный регистр таймера/счетчика T0
wdt_enable(WDTO_1S);
usbInit();
timerDelayMs(250);
usbDeviceConnect();
sei();
usart_init(UBRR);
while(1) {
RunTasks();
PORTC = DeviceStatus.port_c;
RunTasks();
PORTB = DeviceStatus.port_b;
RunTasks();
DeviceStatus.port_a = PINA; }}
Приложение Б
Листинг программы тестирования стенда
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, JvHidControllerClass, ExtCtrls, CheckLst, ComCtrls,
Buttons, AxCtrls, OleCtrls, VCF1, Grids;
Type {$Align Off}
status_t = record
ID:byte;
port_a: byte;
port_b: byte;
port_c: byte;
end; {$Align On}
Tfrm_main = class(TForm)
HidCtl: TJvHidDeviceController;
lbl_onoff: TLabel;
CheckListBox_tiny2: TCheckListBox;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
TrackBar1: TTrackBar;
Panel2: TPanel;
RadioButton1: TRadioButton;
PBTDV: TTimer;
Rep: TButton;
DataV: TListBox;
Panel5: TPanel;
CheckBox1: TCheckBox;
StringGrid1: TStringGrid;
octimer: TTimer;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Cicle: TButton;
outimer: TTimer;
global: TTimer;
Label1: TLabel;
Panel3: TPanel;
Splitter1: TSplitter;
Panel1: TPanel;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
Panel4: TPanel;
StaticText5: TStaticText;
Edit1: TEdit;
Edit2: TEdit;
procedure HidCtlArrival(HidDev: TJvHidDevice);
function HidCtlEnumerate(HidDev: TJvHidDevice; const Idx: Integer): Boolean;
procedure HidCtlRemoval(HidDev: TJvHidDevice);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TrackBar1Change(Sender: TObject);
procedure PBTDVTimer(Sender: TObject);
procedure RepClick(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure octimerTimer(Sender: TObject);
procedure outimerTimer(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure CicleClick(Sender: TObject);














