Генератор переменного тока: устройство, принцип работы, назначение

История создания генератора .

В 1833 году русский ученный Э.Х.Ленц выдвинул теорию об обратимости эклектических машин. Он предположил, что если на одну и туже машину подать электричество, то она станет работать как электродвигатель, а если ее роутер с помощью другой машины привести в движение,то получиться генератор эклектического тока. А в 1987 году, бывшим членом комиссии испытывающей действие эклектического мотора Якоби доказал теорию обратимости эклектической машины.

Братья Пиксин, работающие техниками в Париже, основываясь на знаниях о явлении электромагнитной индукции, создали первый генератор электрического тока. Работа этого генератора основывалась на вращении тяжелого постоянного магнита, с помощью которого возникал переменный ток в двух неподвижно укрепленных вблизи полюсов проволочных катушек. Пользоваться этим генератором было крайне неудобно. В генератор было установлено устройство по выпрямлению тока. В дальнейшем для повышения мощности электрической машины братья увеличили число катушек и магнитов. В результате данного изобретения была в 1843 году построена машина , получившая название генератор Эмиля Штерера. Особенностью данной машины были шесть катушек, которые вращались вокруг вертикальной оси и три стальных подвижных магнита. До 1851 на первом этапе развития электрогенераторов магнитное поле получали при использовании постоянных магнитов.

Вторым этапом 1851-1867 гг. было создание генераторов, используемых электромагниты вместо постоянных магнитов. Что позволило увеличить мощность электрической машины.

Подобная машина была создана англичанином Генри Уальдом в 1863 г. В ходе эксплуатации данного вида генератора выяснилась уникальная возможность. Генераторы, вырабатывая электричество для потребителя, могли одновременно снабжать током и свои электромагниты. Как выяснилось, это возможно благодаря остаточному магнетизму, сохраняющемуся в сердечнике электромагнита даже после выключения тока. А значит, генератор с самовозбуждением может давать ток при запуске из состояния покоя. Основываясь на данном открытии, в 1866-1867гг изобретатели в разных уголках мира получили патенты на самовозбуждающиеся генераторы.

В 1870 году бельгийцем Зеноб Граммом был создан генератор, использовавший принцип самовозбуждения, а также был усовершенствован якорь, изобретенный Пачинотти в 1860 году. Данный генератор получил применение во многих областях промышленности.

В 1873 году на Венской международной выставке была произведена следующая демонстрация. Две одинаковые машины были соединены между собой километровыми проводами. Первая машина, служившая генератором электроэнергии , приводилась двигателем внутреннего сгорания в движение. Вторая являлась источником питания для насоса, получив по проводам электричество от первой. Это стало наглядной демонстрацией открытой Ленцем обратимости эклектических машин и легло в основу передачи энергии на расстояние.

Электрическая индукция или эффект трибоэлектрический, основанный на возникновении заряда, возникающий в следствии механического контакта двух диэлектриков, являются механизмом для выработки заряда.

Электрические генераторы, имеющие низкую мощность, имели низкую эффективность и проблемы с изоляцией так и никогда не получили масштабного использования в промышленности. Дожившие до нашего времени эклектические машины - это электрофорная машина, а также генератор Ваан де Графа.

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

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

Производство дешевой электроэнергии

Электрическая энергия нужна любому современному человеку. Ведь без многих бытовых устройств уже невозможно существовать, а все они практически работают от электричества. Желание сэкономить некоторых уже привело к приобретению ветряных генераторов, которые способны создавать ценный ресурс уже при воздушном движении в 8–9 м/сек. Причем такого генератора энергии из воздуха хватает на длительное время. Стоимость устройства отличается в зависимости от:

  • Накапливаемого объема электроэнергии
  • Материалов, из которых оно изготовлено
  • Способности реагировать на движения ветра
  • Есть умельцы, которые создают аналогичные генераторы из подручных материалов

Но большая часть людей еще раздумывает над тем, стоит ли приобретать генератор. Значит, им можно будет предлагать такой вид товара.

Технологические особенности ветряного генератора

Ветряной генератор может в качестве основы иметь лопасти или барабанные цилиндры. Работает по принципу вертикальной или горизонтальной оси. Чаще всего используют ветряной генератор с горизонтальной осью. Основными элементами устройства являются:

  • Коробка передач
  • Вал ротора
  • Система торможения
  • Генератор, преображающий энергию в электрическую.

Дополнительно система может содержать мотор для получения энергии от лопастей при чрезвычайных обстоятельствах. Коробка передач позволяет контролировать вращение в зависимости от потока и плотности ветра, а также основных потребностей. Если генератор имеет лопасти, то делают их из прочного металлического сплава. Это позволяет не деформироваться элементам конструкции из-за факторов внешней среды.

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

Как сделать ветряной генератор самостоятельно

Если есть желание попробовать сделать генератор своими руками, то лучше выбрать тот, что основан на барабане. Лопасти создаются из фанеры или железа, используемого при строительстве крыш. Подойдет также пластик. Толщина не должна быть слишком большой. Ротор подобрать максимально легкий, т. к. это будет уменьшать трение в подшипниках. Это будет способствовать тому, чтобы барабан легко мог раскручиваться под воздействием ветра. Подобная конструкция спокойно справиться с обслуживанием нужд небольшой дачи.

В случае создания лопастей из кровельного железа, его нужно хорошо обработать. Края же лопастей требуют дополнительного утяжеления. Обычно прикрепляют к лопастям металлические прутья. Диаметр прутьев подобрать в 5–6 мм.

Лопасти из фанеры покрываются олифой. Это защитит ее от разрушений. Толщина фанеры должна быть не менее 5 мм.

Иногда на лопасти крепят неодимовые магниты. Это не влияет принципиально на работу генератора, но позволяет уменьшить потери энергии при передаче.

Элементы барабана следует тщательно промазывать места стыков. Делать это лучше масляной краской.

В качестве оси вертушки подойдет любая стальная труба. Нужно обратить внимание на параметры. Диаметр трубы должен составлять 30 мм и выше, а длина быть не менее двух метров.

Соединяющие лопасти крестовины лучше заказать сварщикам. Их делают из стальных полосок размером 5 на 60 мм. Можно использовать древесину, но такой вариант менее долговечен и надежен.

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

Ювелирная работа требуется при проведении подгонки трубы к подшипникам.

Нужно замерять расстояние между лопастями и осью. Оно должно быть:

  • Одинаковым
  • Не менее 140 мм

После этого уже создается основание, на котором устанавливаются шариковые подшипники. В качестве подставки может подойти:

  • Металлический угол
  • Металлическая пластина
  • Старая шестеренка

Основание должно быть подвергнуто сверлению. Число отверстий рассчитывается как два на лопасть. Лопасти крепятся с помощью специальных болтов.

Созданный таким образом генератор позволяет создать передаваемую мощность примерно 800 Вт, если скорость ветра достигает в среднем 9–11 м/с.

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

Производство или перепродажа

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

Можно также привлечь другого мастера для создания генераторов. В случае выбора посреднической схемы есть свои недостатки:

  1. Высокая степень риска, что конкуренты выйдут на такого же поставщика или специалиста.
  2. Вознаграждение за посредничество обычно меньше, чем надбавка за созданный продукт.
  3. Эмоциональные затраты на работу с посредниками выше. Могут срываться сроки, качество не соответствовать ожиданиям и так далее.

Если человек сам создает ветряные генераторы, то он и ценовую политику регулирует так, как ему удобно. Безусловно, что все затраты на материалы должны быть включены в стоимость продукта.

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

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

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

Ведь чем больше заказов, тем и объемы приобретаемых материалов больше, поэтому у поставщиков можно просить скидки или бонусы. Это позволит удержать цену на ветряные генераторы на прежнем уровне.


Дополнительные сведения по работе с генераторами

Примеры

Синтаксис

SET TERM string ;

Следующий пример показывает текстовый файл, который использует SET TERM при создании процедуры. Первый SET TERM определяет ##, как завершающие символы; соответствующий SET TERM восстанавливает точку с запятой (;), как завершающий символ.

CREATE PROCEDURE ADD_EMP_PROJ (EMP_NO SMALLINT, PROJ_ID CHAR(5))

INSERT INTO employee_project (emp_no, proj_id)

VALUES (:emp_no, :proj_id);

WHEN SQLCODE -530 DO

EXCEPTION unknown_emp_id;

Генератор - ϶ᴛᴏ специальный объект базы данных, который генерирует уникальные последовательные числа. Эти числа бывают использованы в качестве идентификаторов (к примеру код клиента͵ номер счета и т. п.). Важно заметить, что для создания генератора крайне важно использовать оператор DDL

CREATE GENERATOR generatorname;

При выполнении такой команды происходит 2 действия:

На специальной странице БД отводится 4 байта для хранения значения генератора

В системной таблице RDB$GENERATORS заводится запись, куда помещается имя генератора и его номер (фактически смещение на странице генераторов).

После создания генератора его значения можно получать при помощи функции

GEN _ ID ( generatorname , inc _ value ), где inc_value – число, на ĸᴏᴛᴏᴩᴏᴇ крайне важно прирастить значение генератора.

Генераторы возвращают значения (и сохраняют свои значения на диске) вне контекста транзакции пользователя. Это означает, что если генератора было увеличено с 10 до 11 (инкремент 1), то даже при откате транзакции (ROLLBACK) значение генератора не вернется к предыдущему . Вместе с этим гарантируется, что каждому пользователю будет возвращено уникальное значение генератора.

При выборке значения генератора запросом вида select gen_id(genname, x) from ... следует учитывать буферизацию выборки на клиенте. Т. е. в многопользовательской среде при выполнении двух таких запросов значения генератора будут увеличиваться ʼʼпачкамиʼʼ, а не на величину x для каждой выбираемой записи.

Использование генераторов в триггерах и хранимых процедурах

Пример триггера, автоматически присваивающего уникальное значение ключевому полю таблицы:

Создадим генератор для уникальной идентификации клиентов:

CREATE GENERATOR NEWCLIENT;

Создадим триггер для таблицы CLIENTS:

CREATE TRIGGER TBI_CLIENTS FOR CLIENTS

ACTIVE BEFORE INSERT POSITION 0

AS BEGIN

В результате при создании новой записи полю CLIENT_ID будет автоматически присваиваться новое значение.

При этом при использовании генератора в триггере возникает проблема на клиентской стороне (к примеру в BDE, используемом в Delphi, C++Builder ...), когда клиентское приложение пытается перечитать только что вставленную запись. Поскольку триггер меняет значение первичного ключа вставляемой записи, BDE ʼʼтеряетʼʼ такую запись и чаще всœего выдает сообщение ʼʼRecord/Key deletedʼʼ. Поскольку SQL-сервер не может сообщить клиентскому приложению о новом значении ключевого поля, крайне важно сначала запросить уникальное значение с сервера, и только затем использовать его во вставляемой записи. Сделать это можно при помощи хранимой процедуры:

CREATE PROCEDURE GETNEWCLIENT

RETURNS ( NID INTEGER )

AS BEGIN

NID = GEN_ID(NEWCLIENT, 1);

В Delphi, вы можете поместить компонент TStoredProc на форму, подсоединить его к данной процедуре, и к примеру в методе таблицы BeforePost написать следующее

StoredProc1.ExecProc;

StoredProc1.Params.asInteger;

После этого вышеприведенный триггер TBI_CLIENTS можно либо удалить, либо переписать так, чтобы генератор использовался только когда поле первичного ключа случайно приобрело значение NULL (к примеру когда к таблице CLIENTS доступ осуществляется не через ваше приложение):

ALTER TRIGGER TBI_CLIENTS

IF (NEW.CLIENT_ID IS NULL) THEN

NEW.CLIENT_ID = GEN_ID(NEWCLIENT, 1);

При этом использование хранимой процедуры не всœегда удобно – BDE может решить, что процедура вероятно изменяет какие-то данные на сервере, и в режиме autocommit завершит текущую транзакцию, что вызовет перечитывание данных TTable и TQuery. Более простым способом является получение значения генератора при помощи запроса:

SELECT GEN_ID(NEWCLIENT, 1) FROM RDB$DATABASE;

При этом, в случае если запрос помещен к примеру в Query2, текст в BeforePost будет следующим:

begin if DataSource.State = dsInsert then

Query2.Open;

ClientTable.FieldByName("CLIENT_ID").asInteger:=

Query2.Fields.asInteger;

Query2.Close;

end ;

end ;

Такой способ более предпочтителœен, чем использование хранимой процедуры для получения значения генератора, особенно при большом количестве генераторов.

)
Источники: печатная документация и справочная информация по Borland InterBase, переписка листсервера esunix1.
последние изменения: 2 июля 1999.

Большинство SQL-серверов имеет специальные механизмы для создания уникальных идентификаторов. В Borland Interbase для этого существует механизм генераторов.
В данной статье будут рассмотрены следующие темы:
Создание генераторов

Получение текущего значения генератора
Удаление генераторов

Создание генераторов
Генератор - это специальный объект базы данных, который генерирует уникальные последовательные числа. Эти числа могут быть использованы в качестве идентификаторов (например код клиента, номер счета и т.п.). Для создания генератора необходимо использовать оператор DDL

CREATE GENERATOR generatorname;

При выполнении такой команды происходит 2 действия:
1. На специальной странице БД отводится 4 байта для хранения значени генератора
2. В системной таблице RDB$GENERATORS заводится запись, куда помещаетс имя генератора иего номер (фактически смещение на странице генераторов).
После создания генератора его значения можно получать при помощи функции
GEN_ID(generatorname, inc_value)
где inc_value - число, на которое необходимо прирастить значение генератора.
Генераторы возвращают значения (и сохраняют свои значения на диске) вне контекста транзакции пользователя. Это означает, что если генератора было увеличено с 10 до 11 (инкремент 1), то даже при откате транзакции (ROLLBACK) значение генератора не вернется к предыдущему. Вместе с этим гарантируется что каждому пользователю будет возвращено уникальное значение генератора.
При выборке значения генератора запросом вида select gen_id(genname, x) from ... следует учитывать буферизацию выборки на клиенте. Т.е. в многопользовательской среде при выполнении двух таких запросов значения генератора будут увеличиваться "пачками", а не на величину x для каждой выбираемой записи.
Использование генераторов в триггерах и хранимых процедурах
Пример триггера, автоматически присваивающего уникальное значение ключевому полю таблицы:
создадим генератор для уникальной идентификации клиентов:

CREATE GENERATOR NEWCLIENT;

создадим триггер для таблицы CLIENTS:

CREATE TRIGGER TBI_CLIENTS FOR CLIENTS

ACTIVE BEFORE INSERT POSITION 0

BEGIN

В результате при создании новой записи полю CLIENT_ID будет автоматически присваиваться новое значение.
Однако при использовании генератора в триггере возникает проблема на клиентской стороне (например в BDE, используемом в Delphi, C++Builder ...), когда клиентское приложение пытается перечитать только-что вставленную запись. Поскольку триггер меняет значение первичного ключа вставляемой записи, BDE "теряет" такую запись и чаще всего выдает сообщение "Record/Key deleted". Поскольку SQL-сервер не может сообщить клиентскому приложению о новом значении ключевого поля, необходимо сначала запросить уникальное значение с сервера, и только затем использовать его во вставляемой записи. Сделать это можно при помощи хранимой процедуры

CREATE PROCEDURE GETNEWCLIENT

RETURNS (NID INTEGER )

BEGIN

NID = GEN_ID(NEWCLIENT, 1 ) ;

В Delphi, вы можете поместить компонент TStoredProc на форму, подсоединить его к данной процедуре, и например в методе таблицы BeforePost написать следующее

begin

begin

StoredProc1.ExecProc ;

StoredProc1.Params [ 0 ] .asInteger ;

end ;

end ;

После этого вышеприведенный триггер TBI_CLIENTS можно либо удалить, либо переписать так, чтобы генератор использовался только когда поле первичного ключа случайно приобрело значение NULL (например когда к таблице CLIENTS доступ осуществляется не через ваше приложение):

ALTER TRIGGER TBI_CLIENTS

BEGIN

IF (NEW .CLIENT_ID IS NULL) THEN

NEW .CLIENT_ID = GEN_ID(NEWCLIENT, 1 ) ;

Однако использование хранимой процедуры не всегда удобно - BDE может решить, что процедура вероятно изменяет какие-то данные на сервере, и в режиме autocommit завершит текущую транзакцию, что вызовет перечитывание данных TTable и TQuery. Более простым способом является получение значения генератора при помощи запроса:
SELECT GEN_ID(NEWCLIENT, 1) FROM RDB$DATABASE
При этом, если запрос помещен например в Query2, текст в BeforePost будет следующим:

begin

if DataSource.State = dsInsert then

begin

Query2.Open ;

ClientTable.FieldByName ("CLIENT_ID" ) .asInteger :=

Query2.Fields [ 0 ] .asInteger ;

Query2.Close ;

end ;

end ;

Такой способ более предпочтителен, чем использование хранимой процедуры для получения значения генератора, особенно при большом количестве генераторов.
Изменение значения генератора
Значение генератора можно переустановить при помощи оператора DDL

SET GENERATOR generatorname TO value;

Однако вы не сможете использовать такое выражение в теле триггера или хранимой процедуры, т.к. там можно использовать только операторы DML (а не DDL).
Если вы хотите обнулить генератор, или присвоить ему определенное значение в теле хранимой процедуры, то вы можете это сделать используя функцию GEN_ID:
данном примере генератор NEWCLIENT увеличивается на свое-же значение с отрицательным знаком.)
...
TEMPVAR = GEN_ID(NEWCLIENT, -GEN_ID(NEWCLIENT, 0);
...
Будьте внимательны при выполнении таких операций в многопользовательских средах. Приложения, процедуры и триггеры, которые в данный момент используют этот генератор, могут предполагать что он не будет "обнулен". Обязательно проверяйте "обнуление" генератора на возникновение конфликтных ситуаций при работе 2-х и более пользователей.
Получение текущего значения генераторов
Текущее значение генератора можно получить, вызвав функцию GEN_ID с нулевым увеличением значения генератора. Это можно сделать не только в триггере или хранимой процедуре, но и оператором SELECT

SELECT GEN_ID(NEWCLIENT, 0 ) FROM RDB$DA TABASE

Результатом выполнения запроса будет одна запись с одним полем, содержащим текущее значение генератора. Таблица RDB$DATABASES выбрана как содержаща в большинстве случаев одну запись, хотя использовать можно и любую другую таблицу.
При работе в многопользовательских средах будьте внимательны - в то время как вы получили "текущее" значение генератора, другое приложение может его изменить, и таким образом "текущее" значение окажется устаревшим. Тем более не рекомендуется использовать "текущее" значение генератора для его последующего изменения.
Удаление генераторов
В языке DDL Borland Interbase нет оператора для удаления генератора. Неизвестно, чем это вызвано, но серьезной проблемы не представляет. В самом начале статьи было упомянуто, что запись о генераторе создается в таблице RDB$GENERATORS. Эту запись, безусловно, можно удалить. Однако место, распределенное на странице генераторов, освобождено не будет. Оно будет освобождено только после того, как вы сделаете вашей БД BACKUP/RESTORE.
Нестандартное применение генераторов
Вы уже видели, что функцию GEN_ID можно использовать в операторе SELECT.
Вот как можно получить количество записей, выбранных запросом:

SET GENERATOR MYGEN TO 0 ;

SELECT GEN_ID(MYGEN, 1 ) , FIELD1, FIELD2, FIELD3, ... FROM MYTABLE.

Такой запрос вернет в качестве первого поля порядковый номер записи, и после выполнения запроса генератор MYGEN будет содержать количество возвращенных записей. Кроме этого, во время выполнения этого запроса любой другой пользователь этой-же БД может получить текущее значение генератора MYGEN и узнать сколько записей уже выбрано запросом на текущий момент (нечто вроде ProgressBar, однако число записей все-равно неизвестно до окончания выполнения запроса).
Функцию GEN_ID можно также использовать и как "выключатель" длительных запросов. Пример приведен для БД EMPLOYEE.GDB.

Фактически такой запрос означает - "выбирать записи пока значение генератора = 0". Как только другой пользователь или ваше приложение в другом коннекте выполнит операцию

SET GENERATOR EMP_NO_GEN TO 1 ;

запрос прекратится, т.к. условие WHERE станет равным FALSE.
(то-же самое, и даже в более сложных вариантах, можно делать при помощи UDF в Borland InterBase 4.2. см "Особенности версии 4.2")
примечание: обязательно учтитывайте буферизацию записей клиентской частью (gds32.dll) или сервером при выполнении подобных запросов. Например, приведенный выше запрос с проверкой генератора в where "выключится" не сразу, а через некоторое время.
Безусловно, в многопользовательской среде невозможно использовать в таких целях один и тот-же генератор. Для решения этой проблемы можно завести глобальный генератор, который будет выдавать уникальные идентификаторы пользователям при коннекте, а клиентское приложение будет запоминать его номер и хранить на локальном компьютере для последующего использования. Логика работы может быть следующая:
Клиентское приложение при запуске определяет, есть-ли для него (например в Registry или INI-файле) "именной" генератор.
Если нет, то оно операцией SELECT GEN_ID(GlobalGen, 1) FROM RDB$DATABASE получает идентификатор (например 150), создает на сервере собственный генератор операцией CREATE GENERATOR USER_N; (например USER150). После чего сохраняет имя этого генератора на локальном диске.
Если да, то приложение обнуляет "именной" генератор операцией SET GENERATOR ... TO 0; (в нашем примере SET GENERATOR USER150 TO 0;), и выдает запросы с использованием данного генератора.