Все, что нужно знать о генераторе строительной техники
Все, что нужно знать о генераторе строительной техники
Из этой статьи вы узнаете:
- Устройство генератора и принципы его работы
- Причины и признаки выхода генератора из строя
- О возможности добраться до СТО при вышедшем из строя генераторе
Время прочтения: 6 мин.
Эксперт: Сергей Кузьмичев
Технический тренер HCMR
Генератор — устройство, преобразующее механическую энергию в виде крутящего момента, передаваемого от двигателя на ротор генератора, в электрическую энергию, впоследствии подаваемую в электросистему машины.
Основными функциями генератора на современной технике является формирование стабильных параметров зарядного напряжения аккумуляторной батареи, которая является основным источником тока в электросистеме, и подачи тока на иные потребители для обеспечения их функционирования.
Общая конструкция
Практически все генераторы, устанавливаемые на современной спец. технике, являются генераторами переменного тока. В корпусе генератора на опорных подшипниках устанавливается ротор, который располагается внутри статора. Для формирования электромагнитного поля с требуемыми параметрами, ротор (рис.2) генератора переменного тока имеет в своей конструкции катушку возбуждения 4, на которую во время работы генератора подается ток через контактные кольца 2.
В процессе вращения ротор формирует переменное магнитное поле, которое в свою очередь приводит к образованию переменного электрического тока в катушках статора.
В связи с тем, что электросистема и все потребители рассчитаны на работу от постоянного тока, в конструкции генератора предусмотрено устройство, преобразующее переменный ток в постоянный. Данную функцию выполняет так называемый диодный мост. Диодный мост обеспечивает протекание тока только в одном направлении, формируя после себя протекание постоянного тока, подаваемого в электросистему.
Параметры напряжения, вырабатываемого генератором, зависят в основном от двух условий: силы магнитного поля ротора и его оборотов. Как мы уже выясняли, одна из основных задач генератора — формирование стабильного напряжения на выходе. Так как обороты ДВС могут периодически изменяться, а вместе с ними и обороты ротора генератора, причем в достаточно широких пределах, существует необходимость в устройстве, которое могло бы поддерживать напряжение на выходе в независимости от оборотов ротора. Для этого предназначен регулятор напряжения. Его функция заключается в том, чтобы, подавая ток на катушку возбуждения ротора через щетки и контактные кольца или прекращая подачу тока, изменять силу создаваемого ротором магнитного поля, которое, в свою очередь, будет влиять на выходное напряжение со статора. Таким образом, независимо от скорости вращения, регулятор напряжения обеспечивает его стабильное значение.
При каких условиях генератор дорожно-строительной техники может выйти из строя?
Генератор дорожно-строительной техники может прийти в негодность по нескольким причинам:
1. При несвоевременном или неправильном проведении технического обслуживания, а также установке на машину нештатного электрооборудования (магнитолы, системы слежения/автоматизации вождения, дополнительного освещения). Помимо этого, несоблюдение требований производителя по степени натяжения приводного ремня генератора может стать причиной преждевременного выхода из строя опорных подшипников ротора.
2. При накоплении пыли и грязи на корпусе генератора и их попадание внутрь между статором и ротором способно спровоцировать короткое замыкание или механический износ изоляции обмоток, однако это случается крайне редко.
3. Из-за использования пуско-зарядного устройства в режиме «пуск». Это связано с тем, что очень часто, особенно в зимний период эксплуатации, возникает необходимость применения внешних источников питания во время запуска ДВС в связи с разрядкой аккумуляторных батарей. Иногда этот процесс также связан со спешкой.
В результате, вместо установки заряженных аккумуляторов или проведения цикла заряда разряженных батарей, используют пуско-зарядные устройства в режиме «пуск», что крайне нежелательно, ибо во время стартерной прокрутки сила тока в цепи стартера может достигать нескольких сотен ампер.
После запуска ДВС начинается процесс зарядки АКБ. Так как их емкость заметно ниже нормального значения, то в начальный период работы двигателя после запуска им требуются максимально возможные значения зарядного тока по напряжению и силе для восполнения утраченного заряда. Пуско-зарядное устройство, оставаясь в режиме «пуск» на работающем ДВС, следуя «потребностям» аккумуляторных батарей, продолжает подавать в сеть машины повышенные значения напряжения и силы тока, что может быть причиной выхода из строя регулятора напряжения, диодного моста генератора, а так же электронных блоков управления, широко применяемых в электросистеме современных дорожно-строительных машин и оборудования.
Как оператор может точно определить, что причина неисправности в генераторе?
Оператор может контролировать показатели напряжения, вырабатываемого генератором, благодаря монитору в кабине. В случае отклонений от нормы как при низком зарядном напряжении, так и при высоком выдается соответствующий код ошибки. Причиной данной неисправности могут выступать и другие неполадки, не связанные с работой генератора. Поэтому компетенции на дальнейшую проверку у операторов, как правило, нет. Эксплуатирующая организация должна обратиться к лицензированному дилеру для проведения диагностики согласно коду ошибки и последующего ремонта.
Способна ли техника добраться до СТО при нерабочем генераторе?
В большинстве случаев при неисправностях, связанных с низким зарядным напряжением, машина может добраться до места стоянки своим ходом. Прекратить движение и заглушить двигатель необходимо при завышенном уровне напряжения или выходе из строя опорных подшипников ротора генератора. Продолжить движение можно будет только после устранения неисправности. Если необходимо добраться до стоянки в аварийном режиме, то перед запуском ДВС нужно демонтировать ремень привода генератора.
Если генератор нужно менять, то можно ли подобрать аналог заводского?
На современных строительных машинах рекомендуется использовать только оригинальные или рекомендованные производителем техники генераторы.
Материал был подготовлен для журнала Грейдер.
Остались вопросы? Задайте их нам или официальному дилеру.
0 Сравнить модели
Функция генератора в Python.
Генератор — это функция, которая возвращает объект итератора. Она выглядит как обычная функция, за исключением того, что она содержит выражение yield
для создания серии значений, которые можно использовать в цикле for ... in
или которые можно извлечь по одному с помощью функции next()
.
Когда вызывается обычная функция, то она получает личное пространство имен, в котором создаются ее локальные переменные. Когда функция достигает оператора return
, локальные переменные уничтожаются и значение возвращается вызывающей стороне. Последующий вызов той же функции создает новое локальное пространство имен и новый набор локальных переменных. Но что, если локальные переменные не были возвращены при выходе из функции? Что если позже можно возобновить функцию с того места, где она остановилась? Это то, что обеспечивают генераторы. О них можно думать как о возобновляемых функциях.
Вот самый простой пример функции генератора:
def generate_ints(N): for i in range(N): yield i
Любая функция, содержащая ключевое слово yield
, является функцией генератора. Ключевое слово yield
обнаруживается компилятором байт-кода Python, который компилирует функцию в результате.
Когда вызывается функция генератора, то она не возвращает единственное значение, как это делает оператор return
. Вместо этого она возвращает объект генератора, который поддерживает протокол итератора.
При выполнении выражения yield
генератор выводит значение i
, аналогичное оператору return
. Разница между yield
и оператором return
заключается в том, что при достижении выхода, состояние выполнения генератора приостанавливается и локальные переменные сохраняются. При следующем вызове метода генератора
функция возобновит свое выполнение.
Вот пример использования генератора generate_ints()
:
>>> gen = generate_ints(3) >>> gen # <generator object generate_ints at ...> >>> next(gen) # 0 >>> next(gen) # 1 >>> next(gen) # 2 >>> next(gen) # Traceback (most recent call last): # File "stdin", line 1, in <module> # File "stdin", line 2, in generate_ints # StopIteration
Также можно написать для i
в generate_ints(5)
или a, b, c = generate_ints(3)
.
Внутри функции генератора возвращаемое значение вызывает [исключение StopIteration(value)
из метода __next__()
. Как только это происходит или достигается нижняя часть функции, обработка значений завершается и генератор не может выдавать дальнейшие значения.
Можно достичь эффекта генераторов вручную, написав свой собственный класс и сохранив все локальные переменные генератора в качестве переменных экземпляра. Например вернуть список целых чисел можно, установив self.count
в 0, а метод __next__()
увеличит self.count
и вернет его. Однако для умеренно сложного генератора написание соответствующего класса может быть намного сложнее.
Набор тестов, включенный в библиотеку Python Lib/test/test_generators.py
содержит ряд более интересных примеров. Вот один генератор, который реализует обход дерева по порядку, используя генераторы рекурсивно.
# A recursive generator that generates Tree leaves in in-order. def inorder(t): if t: for x in inorder(t.left): yield x yield t.label for x in inorder(t.right): yield x
Два других примера в test_generators. py
дают решения для проблемы N-Queens
(размещение N
ферзей на шахматной доске NxN
, чтобы ни одна королева не угрожала другому) и «Королевский тур» — поиск маршрута, по которому король ведет к каждому квадрату шахматной доски NxN
не посещая ни одного квадрата дважды.
Ограничения выражений-генераторов.
- Нельзя получить длину генератора функцией
len()
; - Нельзя распечатать элементы генератора функцией
print()
; - У генератора нельзя получить элемент по индексу;
- К выражению-генератору нельзя применить обычные операции среза или функцию
slice()
, хотя, для этих целей, можно воспользоваться функциейitertools.islice()
модуляitertools
. - После использования/итерации по генератору, он остается пустым;
Функции генератора Python
Python предоставляет генератор для создания собственной функции итератора. Генератор — это особый тип функции, которая не возвращает ни одного значения, а возвращает объект-итератор с последовательностью значений.
В функции-генераторе вместо оператора return используется оператор yield
.
Ниже приведена простая функция генератора.
определение моего генератора(): print('Первый элемент') выход 10 print('Второй элемент') выход 20 print('Последний элемент') выход 30
В приведенном выше примере функция mygenerator()
является функцией-генератором. Он использует yield
вместо ключевого слова return.
Таким образом, это будет возвращать значение для ключевого слова yield
каждый раз, когда оно вызывается. Однако вам необходимо создать итератор для этой функции, как показано ниже.
>>> ген = мой генератор () >>> следующий(ген) Первый элемент 10 >>> следующий(ген) Второй элемент 20 >>> следующий(ген) Последний элемент 30
Функция генератора не может включать ключевое слово return
. Если вы включите его, то он завершит функцию.
Разница между yield
и return
заключается в том, что yield
возвращает значение и приостанавливает выполнение с сохранением внутренних состояний, тогда как оператор return
возвращает значение и завершает выполнение функции.
Следующая функция-генератор включает ключевое слово return.
определение моего генератора(): print('Первый элемент') выход 10 возвращаться print('Второй элемент') выход 20 print('Последний элемент') выход 30
Теперь выполните указанную выше функцию, как показано ниже.
>>> ген = мой генератор () >>> следующий(ген) Первый элемент 10 >>> следующий(ген) Traceback (последний последний вызов): Файл "", строка 1, в это.__далее__() Остановить итерацию
Как видите, приведенный выше генератор перестает выполняться после получения первого элемента, поскольку ключевое слово return используется после того, как выдает
первый элемент.
Использование цикла for с функцией генератора
Функция генератора также может использовать цикл for.
определение get_sequence_upto(x): для я в диапазоне (x): выход я
Как вы можете видеть выше, Функция get_sequence_upto
использует ключевое слово yield
.
Генератор вызывается как обычная функция.
Однако его выполнение приостанавливается при обнаружении ключевого слова yield
. Это отправляет первое значение потока итератора в вызывающую среду. Однако локальные переменные и их состояния сохраняются внутри.
Вышеупомянутая функция генератора get_sequence_upto()
может быть вызвана, как показано ниже.
>>> seq = get_sequence_upto(5) >>> следующий(след) 0 >>> следующий(след) 1 >>> следующий(след) 2 >>> следующий(след) 3 >>> следующий(след) 4 >>> следующий(след) Traceback (последний последний вызов): Файл "", строка 1, в это. __далее__() Остановить итерацию
Функция возобновляется, когда метод next() вызывается для объекта итератора. Функция завершается, когда next()
обнаруживает ошибку StopIteration
.
В следующем примере функция Square_of_Sequence()
действует как генератор. Он последовательно возвращает квадрат числа при каждом вызове next().
по определению Square_of_Sequence(x): для я в диапазоне (x): выход я * я
В следующем сценарии показано, как вызвать указанную выше функцию генератора.
gen=square_of_sequence(5) пока верно: пытаться: print ("Получено на следующий(): ", следующий(ген)) кроме StopIteration: перерыв
Приведенный выше сценарий использует блок try..except
для обработки ошибки StopIteration
. Он прервет цикл while, как только обнаружит ошибку StopIteration
.
Получено в следующем(): 0 Получено на следующем(): 1 Получено на следующем(): 4 Получено на следующий(): 9 Получено на следующий(): 16
Мы можем использовать цикл for для обхода элементов по генератору. В этом случае функция next()
вызывается неявно, а также автоматически обрабатывается StopIteration
.
квадратов = квадрат_последовательности (5) для sqr в sqres: печать (кв.м.)
0 1 4 9 16
Одним из преимуществ генератора перед итератором является то, что элементы генерируются динамически. Поскольку следующий элемент создается только после того, как первый израсходован, он более эффективен с точки зрения памяти, чем итератор.
Выражение генератора
Python также предоставляет выражение генератора, которое является более коротким способом определения простых функций генератора.
Генераторное выражение является анонимной генераторной функцией. Ниже приведено генераторное выражение для функция Square_of_sequence()
.
>>> квадраты = (x*x для x в диапазоне (5)) >>> напечатать (следующий (квадрат)) 0 >>> напечатать (следующий (квадрат)) 1 >>> напечатать (следующий (квадрат)) 4 >>> напечатать (следующий (квадрат)) 9 >>> напечатать (следующий (квадрат)) 16
В приведенном выше примере (x*x для x в диапазоне (5))
является выражением генератора. Первая часть выражения — это значение yield
, а вторая часть — это цикл for с коллекцией.
Выражение генератора также может быть передано в функцию. Его следует передавать без круглых скобок, как показано ниже.
>>> импортировать математику >>> sum(x*x для x в диапазоне (5)) 30
В приведенном выше примере выражение генератора передается без круглых скобок во встроенную функцию сумма
.
Основы функций генератора Python
Функции генератора Python позволяют объявить функцию, которая ведет себя как итератор, что делает его более быстрым, чистым и простым способом создания итератора. Итератор — это объект, который можно повторять или зацикливать. Он используется для абстрагирования контейнера данных, чтобы он вел себя как итерируемый объект. Примеры итерируемых объектов, которые используются чаще, включают списки, словари и строки.
Что такое функция генератора Python?
Функция генератора Python позволяет объявить функцию, которая ведет себя как итератор, обеспечивая более быстрый и простой способ создания итераторов. Их можно использовать в абстрактном контейнере данных, чтобы превратить его в повторяемый объект, такой как списки, словари и строки.
В этой статье мы научимся создавать и использовать генераторы в Python с помощью нескольких примеров.
Реализация итератора класса Python
Давайте сначала рассмотрим простой код итератора на основе классов для получения нечетных чисел:
класс get_odds: def __init__(я, макс): селф.n=3 селф.макс=макс защита __iter__(я): вернуть себя деф __следующий__(сам): если self. n <= self.max: результат = self.n самоп += 2 вернуть результат еще: поднять StopIteration числа = получить_коэффициенты (10) распечатать (следующий (числа)) распечатать (следующий (числа)) распечатать (следующий (числа)) # Выход 3 5 7
Как видите, генерируется последовательность нечетных чисел. Чтобы сгенерировать это, мы создали собственный итератор внутри класс get_odds
. Чтобы объект был итератором, он должен реализовать метод __iter__
, который вернет объект итератора. Затем метод __next__
вернет следующее значение в последовательности и может вызвать исключение StopIteration
, если нет возвращаемых значений. Как видите, процесс создания итераторов длительный, поэтому переходим к генераторам. Опять же, генераторы Python — это простой способ реализации итераторов.
Еще о Python: 13 фрагментов кода Python, которые необходимо знать
Реализация генератора Python
Давайте воспользуемся предыдущим кодом и реализуем тот же итератор, но с использованием генератора Python.
деф get_odds_generator(): п=1 п+=2 выход n п+=2 выход n п+=2 выход n числа = get_odds_generator () распечатать (следующий (числа)) распечатать (следующий (числа)) распечатать (следующий (числа)) # Выход 3 5 7
Сначала я создал функцию генератора, которая имеет три оператора yield, и когда мы вызываем эту функцию, она возвращает генератор, который является объектом итератора. Затем мы позвонили в метод next()
для извлечения элементов из этого объекта. Первый оператор печати дает нам значение первого выхода, которое равно трем; второй оператор печати дает нам значение второго оператора yield, равное пяти; и последний оператор печати дает нам значение третьего оператора yield, которое равно семи. Как видите, функция генератора намного проще по сравнению с нашим итератором на основе классов.
Теперь давайте попробуем реализовать цикл, чтобы этот генератор Python возвращал нечетные числа до определенного максимального числа.
по определению get_odds_generator(max): п=1 в то время как n<=max: выход n п+=2 числа = get_odds_generator (3) распечатать (следующий (числа)) распечатать (следующий (числа)) print(next(numbers))Вывод генератора Python. | Изображение: Мюриэль Косака
Как видно из вывода, были сгенерированы один и третий, а после этого возникло исключение StopIteration
. Условие цикла ( n<=max
) равно False
, так как max равно трем, а n равно пяти, поэтому Возникло исключение StopIteration
.
При сравнении этого кода с нашим классом get_odds
видно, что в нашем генераторе мы никогда явно не определяли метод __iter__
, метод __next__
и не вызывали исключение StopIteration
. Они неявно обрабатываются генераторами, что делает программирование намного проще и проще для понимания.
Итераторы и генераторы обычно используются для обработки больших потоков данных и теоретически даже бесконечных потоков данных. Эти большие потоки данных не могут храниться в памяти сразу. Чтобы справиться с этим, мы можем использовать генераторы для обработки только одного элемента за раз. Далее мы создадим генератор для создания бесконечного потока чисел Фибоначчи. Числа Фибоначчи — это последовательность чисел, в которой следующий элемент является суммой двух предыдущих элементов.
определение fibonacci_generator(): n1=0 п2=1 пока верно: выход n1 п1, п2 = п2, п1 + п2 последовательность = fibonacci_generator() печать (следующая (последовательность)) печать (следующая (последовательность)) печать (следующая (последовательность)) печать (следующая (последовательность)) печать (следующая (последовательность)) # Выход 0 1 1 2 3
При определении функции fibonacci_generator
я сначала создал первые два элемента ряда Фибоначчи, затем использовал бесконечный цикл while и внутри него получил значение n1, а затем обновил значения, чтобы следующий член будет суммой двух предыдущих членов со строкой n1,n2=n2,n1+n2. Наши операторы печати дали нам последовательность чисел в последовательности Фибоначчи. Если бы мы использовали цикл for и список для хранения этой бесконечной последовательности, нам бы не хватило памяти. Однако с помощью генераторов мы можем обращаться к этим терминам столько, сколько захотим, поскольку мы имеем дело с одним элементом за раз.
Подробнее о Python: введение в очереди приоритетов в Python
Разница между функциями генератора Python и обычными функциями
Основное различие между обычной функцией и функциями генератора заключается в том, что состояние функций генератора сохраняется за счет использования ключевого слова yield и работает так же, как использование return. Но есть и другие важные отличия.
Во-первых, yield сохраняет состояние функции.