Ошибка loss of mag pu

View and Download DSE 8610 MKII operator's manual online. 8610 MKII control unit pdf manual download. Protections Fault Description The module detected that the generator output frequency had not Gen Loading Frequency risen above the Generator Loading Frequency setting after the...

Fault

Gen Loading Frequency

Gen Loading Voltage

Gen Over Current

IEEE C37.2 – 51 IDMT Overcurrent

Relay

Gen Over Frequency

IEEE C37.2 – 81 Frequency Relay

Gen Over Frequency

Overshoot

IEEE C37.2 – 81 Frequency Relay

Gen Over Voltage

IEEE C37.2 – 59 AC Overvoltage

Relay

Gen Phase Seq Wrong

IEEE C37.2 – 47 Phase Sequence

Relay

Gen Reverse Power

IEEE C37.2 – 32 Directional Power

Relay

Gen Short Circuit

IEEE C37.2 – 51 IDMT Short Circuit

Relay

Gen Under Frequency

IEEE C37.2 – 81 Frequency Relay

Gen Under Voltage

IEEE C37.2 – 27 AC Undervoltage

Relay

Inlet Temperature

Insufficient Capacity

kW Overload

IEEE C37.2 – 32 Directional Power

Relay

Loss of Excitation

Loss of Mag-PU

Mag-PU Fault

Continued over page…

Protections

Description

The module detected that the generator output frequency had not

risen above the Generator Loading Frequency setting after the

Warming Up timer had expired.

The module detected that the generator output voltage had not risen

above the Generator Loading Voltage setting after the Warming Up

timer had expired.

NOTE: For more details, see section entitled Over Current

Alarm elsewhere in this document.

The module detected that the generator output current had risen

above the Generator Over Current Trip for the duration of the IDMT

function.

The module detected that the generator output frequency had risen

above the Over Frequency Alarm Trip level for the configured delay

timer.

The module detected that the generator output frequency had risen

above the Over Frequency Overshoot Trip during the configured

Overshoot Delay timer whilst starting.

The module detected that the generator output voltage had risen

above the Over Voltage Alarm Trip level for the configured delay

timer.

The module detected that the phase rotation of the generator was

different to the configured Generator Phase Rotation Alarm setting.

The module detected that the generator output kW had fallen below

the Reverse Power Trip for the configured delay timer.

NOTE: For more details, see section entitled Short Circuit

IDMT Alarm elsewhere in this document.

The module detected that the generator output current had risen

above the Short Circuit Trip for the duration of the IDMT function.

The module detected that the generator output frequency had fallen

below the Under Frequency Alarm Trip level for the configured delay

timer after the Safety On Delay timer had expired.

The module detected that the generator output voltage had fallen

below the Under Voltage Alarm Trip level for the configured delay

timer after the Safety On Delay timer had expired.

The module detected that the engine’s ECU measurement of inlet

temperature had risen above the Inlet Temperature Alarm Trip level.

The module’s governor output has reached its limit whilst attempting

to control the generator to produce more kWs whilst in parallel. This

indicates a fault with either the governor (including connection error),

setting of SW2, or that the engine has reached its maximum

capacity.

The module detected that the generator output kW had risen above

the Overload Protection Trip for the configured delay timer.

The module detected that the generator output kvar had fallen below

the Loss of Excitation Alarm Trip level for the configured delay.

The module detected that the magnetic pick up was not producing a

pulse output after the required Crank Disconnect criteria had been

met.

The module detected that circuit to the magnetic pick up sensor had

become open circuit.

Page 147 of 188

057-254 ISSUE: 2

Диагностика проблем с помощью журналов

Эта страница призвана показать вам , как диагностировать топ-5 наиболее распространненых проблем, влияющих на конфигурация APM:Copter в частности,
но в некой стемени на конфигурацию APM:Plane и APM:Rover так же. Если вы еще не знакомы с основами журналов телеметрии
и журналов APM то рекомендуется ознакомиться с этими страницами, что бы понять где хранятся эти данные и как
можно скачать и посмотреть эту информацию.


Механические повреждения

Общие механические повреждения включают повреждения моторов или регуляторов скорости ESC (включая сбой синхронизации ESC)
скольшение пропеллеров (проворачивание пропеллеров в следствии плохой затяжки) и тому подобное. Они появляются в журнале как внезапное расхождение в нужном угле
тангажа или крена против фактического угла аппарата (по крену и тангажу / Roll and Pitch). Эти расхождения наиболее ярко видны в журнале из бортовой памяи полетного контроллера APM
путем построения графика ATT сообщений: Roll-In против Roll и Pitch-In против Pitch и в меньшей степени NavYaw против Yaw

ardupilot damage

В приведеном выше примере фактическая Roll внимательно следует за нужным Roll-in для первой половины журнала, но потом расходиться.
Полетный контроллер apm хотел удерживать Roll на уровне (нулевой roll) но это было невозможно, скорее всего это означает механическое повреждение.
Это очень сильно отличается от программного сбоя в котором полетный контроллер ardupilot качался по Roll и по какой-то причине вдруг упал строго вниз , потому
что в таких случаях желаемый Roll будет так же сумащедшим как и текущий Roll и будет следовать за ним на графике.

Дополнительные замечания:

  • Журналы tlog как правило труднее использовать в этом случае потому, что у нас есть nav_roll и nav_pitch, которые удерживают нужный крен и тангаж,
    они обновляются только тогда , когда используется полетный режим RTL, Loiter или AUTO.
  • В прошивке ArduCopter 3.1 и выше Roll-In и Pitch-In удерживают только нужный крен и тангаж во время стабилизации.
    А в режиме автопилота вы должны смотреть на NTUN сообщения: DRol и DPit.

Вибрации

Сильная вибрация у конфигурации ArduCopter вызывают у акселерометра, базирующемуся на высоте и горизонтальной позиции , заставляют дрейфовать далеко от реальности,
что приводит к проблемам с удержанием высоты (обычно летит в небо) или режиме Loiter (дрейфует)

Вибрации лучше изучаь путем построение графиков из IMU сообщений с бортовой памяти APM по значениям AccX, AccY and AccZ.
Значения AccX, AccY (в первую очередь используются для горизонтального управления положением) должны быть между -3 и 3 м/с/с.
Значения акселерометра изменятся моментально, когда квадрокоптер движеся вверх или вниз, поэтому лучше достать данные порциями, когда полет
квадрокоптера был стационарным, хотя даже в движении можно увидеть уровень вибрации сравнивая разницу между верхней и нижней частью «травы».
иногда график прямолинеен, но когда «травинки» скачут, то скорее всего это проблема вибрации.

Ниже на графике указаны допустимые уровни вибрации.

ardupilot vibration вибрация

Журналы TLOG RAW_IMU xacc, yacc and zacc можно использоватль, но их обновление происходит значительно медленее (как правило менее 10Гц)
чем журнал из полетного контроллера ardupilot (50Гц) из-за этого становиться труднее понять являются ли изменения в акселерометре
квадрокоптера перемещением или вибрацией

Если вы используете tlog шкалу в milli-gs то приемлемый диапазон для xacc и yacc от -300 до +300 и для zacc от -500 до -1500.
Обратите внимание, что на рисунке значения ниже этого диапазона указывают на проблему вибрации , хотя этот пилот не жаловался
на режимы AltHold и Loiter — это более вероятно , что квадрокоптер был не в стабильном наведении и частота обновления была низкой.

ardupilot вибрация телеметрические логи TLOG


Вмешательства в работу компаса

Помехи от распределительной платы PDB, двигаелей, батареи , регуляторов моторов и других электрических устройств рядом с APM могут скинуть направление
по компасу, который может привести к кругу ( известно как «туалетный боулинг»)

Помехи от распределительной платы, двигателей, батареи, регуляторов скорости ESC и других электрических
устройств квадрокоптера рядом с полетным контроллером ArduPilot Mega могут влиять на головное
направление компаса, который может привести к «круговым полетам» ( так называемы туалетное смытие)
или даже полет в неправильном направлении.
Графическое значение mag_field в TLOG (находиться пот «CUSTOM») и дроссель (находиться под VFR_HUD)
является самым простым способом, что бы увидеть количество помех.

В графе ниже показано приемлимое количество помех. Вы можете увидеть как колеблится
mag_field когда дросель газа поднят, но только движение вокруг на 10-20%. Ниже 30%
движение является приемлемым. В диапазоне 30-60% находится серая зона,
где он может быть в порядке (у некоторых пилотов) и очень плохом диапазоне
магнитных помех будет отображаться скачками более 60%, когда дроссель поднят.

ardupilot компас compass

Примечания:

  • Длина mag_field может быть от 120 ~ 550 в зависимости от того,
    где и каком месте находиться квадрокоптер, но обычно оно составляет около 330 .
  • Магнитные помехи в виде процента от общего магнитного поля также отображаются в конце
    процедуры настройки compassmot.
  • Бортовой журнал полетного контроллера Ardupilot mega содержит «сырые» данные
    компаса x, y и z осей (называемые MagX, MagY, MagZ), которые эквивалентны
    RAW_IMU xmag, ymag и zmag полям в TLOG. Длину поля можно вычислить загрузив
    из бортового журнала данные в Excel фильтруя по сообщениям COMPASS,
    а затем расчитать магнитное поле по формуле mag_field =
    SQRT (MagX^2, MagY^2, MagZ^2). Обратите внимание, что журналирование
    сообщения сомпаса не включены по умолчанию, потому, что он работает
    на частоте 50Гц и влияет немного на производительность процессора.
  • Еще одни параметры которые нужно проверить, должны быть
    в пределах между — 150 и +150. Они находятся в TLOG группе SENSOR_OFFSET
    в качестве mag_ofs_x, mag_ofs_y, mag_ofs_z и в журнале полетного контроллера
    сообщения COMPASS в качестве OfsX, OfxY, OfxZ. Так же можно увидеть в параметрах как
    COMPASS_OFS_X, COMPASS_OFS_Y , COMPASS_OFS_Z.
  • Изображение выше показывает короткий пик в начале графика,
    но это может быть проигнорировано потому, что это перед поднятием
    дроссельной заслонки. Это вероятно просто подключение других электрических
    устройств.

GPS глюки

Находясь в режимах автопилота (Loiter, RTL, AUTO) ошибки позиционирования от GPS могут привести
ArduCopter к неправильному местоположению и спровоцировать к агресивному полету исправления позиции.
Эти «глюки» появляюстся в обоих журналах : TLOG и журнале полетного контроллера ardupilot mega apm
как уменьшение числа видимых спутников и увеличение HDOP.

Если с помощью графика TLOGs вы можете сделать это путем построения графика группы «GPS_RAW_IT»
значений «eph» и «satellites_visible». Значения HDOP 1,5 (отображаются на экране 150) или ниже
— это очень хорошо. Выше 2,0 (т.е. 200) указывает на плохое значение позиции. Количество спутников,
ниже 9 так же плохо. Существенное изменение этих двух значений часто сопровождает изменение позиции GPS.

ardupilot arducopter gps glitch tlog

В журнале полетного контроллера ardupilot mega apm сообщений GPS вы найдёте HDOP и столбцы NSats.
Примечание! Значения HDOP находятся в правельных единицах измерения в журнале полетного контроллера
(т.е. не 100 с лишним , как в tlogs).

arducopter dataflash logs hdop gps glitch nsats

В прошивке ArduCopter 3.1 и выже присуствует алгоритм обнаружения «GPS глюков»
для их игнорирования.

Проблемы системы питания (Угасание и прочие)

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

Используйте графики:

  • Журнал полетного контроллера, CTUN сообщения, значение Baro-Alt
  • Журнал полетного контроллера, GPS сообщения, значения RelAlt (комбинированое значение акселерометра + барометра)
  • Журнал TLOG значение VHR_HUD alt (комбинированое значение акселерометра + барометра)
  • Журнал TLOG значение GLOBAL_POSITION relative_alt

ardupilot power problem baro alt vcc

Изменения в напряжении на борту полетного контроллера может быть признаком проблемы питания.
Нормальные изменения в пределах от 0.10 до 0.15 вольт. Большие изменения могут быть признаком того,
что другие устройства питающиеся на общей фазе APM вызывают «рябь» в блоке питания,
что может привезти к «понижению» питания или другому странному поведению.
Бортовое напряжение платы полетного контроллера можно отобразить на графиках:

  • Журнале полетного контроллера в сообщениях CURRENT значение VCC
  • Журнале телеметрии (tlog) группы HWSTATUS’s значение Vcc

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

arducopter power problem vcc vs trottle


Неожиданные ошибки включая failsafes (защита отказа)

Когда происходит неожиданное поведение у полетного контроллера (особенно, когда пилот жалуется,
что квадрокоптер не ответил на команды с радиоаппаратуры) это часто является одной из причины
срабатывания failsafe (защита отказа). Есть 5 защит от отказов, которые могут быть активированны:
защита газа, gps защита, защита наземной станции, защита отказа батареи и «виртуальный забор».

Самый простой способ найти срабатывание защиты посмотреть журнал полетного контроллера фильтруя
по сообщениям ERR первый столбец.

arducopter failsafe log dataflash error filter

В Subsys (подсистеме) есть область, которая генерирует вызвающую ошибку и ECODE (известная как «код ошибки»)
— это говорит нам, что ошибка была специальная. Ограниченное количество подсистем и кодов ошибок
можно найти в исходных кодах конфигурации ArduCopter файла defines.h.

Sub Systems / Error Codes

  • 1: Main (never used)
  • 2: Radio
    • ECode 1: “Late Frame” which means the APM’s onboard ppm encoder did not provide an update for at least 2 seconds
    • ECode 0: error resolved which means the ppm encoder started providing data again
  • 3: Compass
    • ECode 1: the compass failed to initialise (likely a hardware issue)
    • ECode 2: failure while trying to read a single value from the compass (probably a hardware issue)
    • ECode 0: above errors resolved
  • 4: Optical flow
    • Ecode 1: failed to initialise (likely a hardware issue)
  • 5: Throttle failsafe
    • ECode 1: throttle dropped below FS_THR_VALUE meaning likely loss of contact between RX/TX
    • ECode 0: above error resolve meaning RX/TX contact likely restored
  • 6: Battery failsafe
    • ECode 1: battery voltage dropped below LOW_VOLT or total battery capacity used exceeded BATT_CAPACITY
  • 7: GPS failsafe
    • ECode 1: GPS lock lost for at least 5 seconds
    • ECode 0: GPS lock restored
  • 8: GCS (Ground station) failsafe
    • ECode 1: updates from ground station joystick lost for at least 5 seconds
    • ECode 0: updates from ground station restored
  • 9: Fence
    • ECode 1: altitude fence breached
    • ECode 2: circular fence breached
    • ECode 3: both altitude and circular fences breached
    • ECode 0: vehicle is back within the fences
  • 10: Flight Mode
    • ECode 0 ~ 10: the vehicle was unable to enter the desired flight mode
    • (0=Stabilize, 1=Acro, 2=AltHold, 3=Auto, 4=Guided, 5=Loiter, 6=RTL, 7=Circle, 8=Position, 9=Land, 10=OF_Loiter)
  • 11: GPS
    • ECode 2: GPS Glitch
    • ECode 0: GPS Glitch cleared
  • 12: Crash Check
    • ECode 1: Crash detected

каталог

  • каталог
  • резюме
  • Первое: введение в предпродажную подготовку
  • Второе: уведомление об ошибке перед включением
    • 1. Подготовка перед использованием
      • Причины невозможности разблокировки с помощью анализа информации Pre-Arm:
    • 2. Причины сбоя разблокировки
    • 3. Причина сбоя разблокировки (переведите ее на официальный сайт)
    • # 1 проверка безопасности перед разблокировкой
    • # 2 использовать GCS, чтобы определить причину ошибки предподключения
    • # 3 сообщение об ошибке
          • Отказ RC (то есть отказ передатчика / приемника):
          • (2) Отказ барометра:
          • (3) Отказ компаса:
          • (4) Ошибки, связанные с GPS:
          • (5) Инспекция INS (т.е. ускорение и гироскопическая проверка):
          • (6) Проверка источника питания:
          • (7) Проверка параметров:
  • Третье: анализ кода ошибки перед постановкой на охрану
    • Инициализация обнаружения 1.Pre-Arm
    • Обновление обнаружения 2.Pre-Arm
    • Анализ функции 3.Pre-Arm
        • 1. Проверка разблокировки барометра
        • Проверка дистанционного управления 2.Remote
        • 3. Проверка разблокировки компаса
        • Проверка разблокировки 4.GPS
        • Проверка разблокировки 5.Fence
        • Проверка разблокировки данных навигации 6.Inertia
        • 7. Проверка разблокировки напряжения
        • Проверка блокировки 8.Log
        • Проверка разблокировки 9.Parameter
        • 10.Моторная разблокировка
        • 11. Проверка разблокировки дроссельной заслонки
  • Четвертое: как Pre-Arm отображает наземную станцию ​​и выдает сообщения об ошибках

резюме

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



Первое: введение в предпродажную подготовку

Ardupilot: Многофункциональное встроенное программное обеспечение ArduCopter имеет очень полный набор напоминаний о проверке безопасности перед подготовкой. Он проверит ваш самолет на наличие большого количества проблем, включая различные ошибки калибровки, а также наличие повреждений датчика. Конечно, механизм проверки разблокировки На 100% надежно, вы можете отключить его с помощью Arming-check в полном списке параметров.


Обратите внимание, что:


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



Второе: уведомление об ошибке перед включением



1. Подготовка перед использованием

Используйте наземную станцию ​​GCS (Missionplanner) для просмотра сообщений об ошибках предподключения
вМигающий желтый свет, Пользователи не смогут разблокировать, а при разблокировкеЗуммер также будет звучать дважды, На этом этапе вы должны подключиться к наземной станции, чтобы исключить проблему, которую вы не можете разблокировать и летать.Датчик не откалиброван Или появилсяБеглая защитаНеверная настройка низкого напряженияИ так далее,Следующее подробно проанализирует каждую ошибку:


Причины невозможности разблокировки с помощью анализа информации Pre-Arm:


(1) Приемник дистанционного управления был подключен к плате управления полетом, иСнять винт и аккумулятор(Это очень важно !!! Безопасность прежде всего)
(2) Подключите к наземной станции через USB или цифровую передачу (Mission Planner
(3) Включите пульт дистанционного управления и попытайтесь разблокировать; каналы разблокировки: нижний газ (3 канала), крайний правый рычаг (4 канала) (Это метод разблокировки по умолчанию для apm
(4) В этот момент он должен быть виден в окне наземной станцииОшибка предплечья краснымЕсли подсказка отсутствует, канал разблокировки неправильный. В результате контроллер полета не может обнаружить вашу операцию разблокировки. Вы также можете щелкнуть операцию разблокировки в строке состояния интерфейса данных полета наземной станции.



2. Причины сбоя разблокировки


(1) Часто задаваемые вопросы
这里写图片描述


(2) Часто задаваемые вопросы электронного компаса
这里写图片描述


(3) общие неисправности GPS
这里写图片描述
这里写图片描述
这里写图片描述


(4) Инспекция INS (например, акселерометр и гироскоп)
这里写图片描述
这里写图片描述
这里写图片描述
Приведенные выше ссылки в основном принадлежат Lexun:Лей Сюнь анализ предплечья
Более важная информация — официальный сайт:Официальный сайт Ardupilot Pre-Arm анализ, Лей Сюнь чисто перевод



3. Причина сбоя разблокировки (переведите ее на официальный сайт)



# 1 проверка безопасности перед разблокировкой

(Pre-Arm Safety Check)


Микропрограммное обеспечение беспилотного летательного аппарата включает в себя полный набор процедур проверки разблокировки безопасности, чтобы предотвратить проблемы с безопасностью после того, как беспилотник разблокирован из-за некоторых сбоев, если возникнут какие-либо проблемы до того, как дрон взлетит, в том числе датчик не откалиброван , Условия ошибки, такие как неправильная конфигурация или данные датчика, не позволят дрону взлететь. Эти проверки помогают предотвратить сбой и полет дронов. Но при необходимости, конечно, мы можем отключить настройку проверки безопасности через настройки параметров, но я лично считаю, что она должна быть включена. (Личное понимание смешано в переводе)


# 2 использовать GCS, чтобы определить причину ошибки предподключения

(Recognising which Pre-Arm Check has failed using the GCS)


Пилот должен отметить, что если проверка безопасности не удалась во время разблокировки, пилот не сможет разблокировать дрон, и управление полетом будет сопровождаться мигающим желтым светодиодом. Следовательно, проверка безопасности должна выполняться точно:
1. Подключите данные контроллера полета к наземной станции с помощью USB-кабеля для передачи данных или модуля передачи данных.
2. Убедитесь, что GCS подключен к дрону (т. е. в плоскости полета нажмите кнопку «подключения» в правом верхнем углу).
3. Включите передатчик радиоуправления и попытайтесь разблокировать беспилотник (в обычных процедурах дроссель опускается вниз и поворачивается вправо).
4. Причина неудачной проверки разблокировки будет отображаться красным цветом в окне HUD. Мы можем проанализировать причину ошибки через причину ошибки.


# 3 сообщение об ошибке

(Failure messages)


Отказ RC (то есть отказ передатчика / приемника):

(1)RC not calibrated: Радио калибровка не была выполнена. RC3_MIN и RC3_MAX должны быть изменены со своих значений по умолчанию (1100 и 1900), а для каналов с 1 по 4 значение MIN должно быть 1300 или меньше, а значение MAX должно быть 1700 или выше.



(2) Отказ барометра:

Baro не здоров: BARO вреден для здоровья, а датчик барометра сообщает, что он вреден для здоровья, что обычно является признаком аппаратного сбоя.
Альтернативное расхождение: (разница высот), разница между высотой барометра и высотой инерциальной навигации (т. е. барометр + акселерометр) превышает 2 метра. Это сообщение обычно недолговечное и может появиться, когда контроллер полета впервые подключен или если он получает сильный удар (например, внезапное снижение). Если неясно, акселерометр может потребоваться откалибровать, или может быть аппаратная проблема с барометром.



(3) Отказ компаса:

Compass not healthy :Нездоровый компас: датчик компаса сообщает, что он вреден для здоровья, что является признаком аппаратного сбоя.
Compass not calibrated :Компас не был откалиброван. Параметры COMPASS_OFS_X, Y, Z равны нулю, или число или тип подключенных компасов изменились с момента последней калибровки компаса.
Compass offsets too high :Длина смещения основного компаса (т.е. SqRT (x ^ 2 + y ^ 2 + z ^ 2)) превышает 500. Это может быть вызвано тем, что металлические предметы находятся слишком близко к компасу. Если вы используете только внутренний компас (не рекомендуется), это может быть просто металл в пластине, который вызывает большие смещения, что может и не быть проблемой, и в этом случае вы можете отключить проверку компаса.
Check mag field : Чувствительное магнитное поле в этой области составляет 35% или меньше, чем ожидалось. Ожидаемая длина составляет 530, поэтому> 874 или <185. Напряженность магнитного поля варьируется по всему миру, но эти широкие ограничения означают, что калибровка компаса, скорее всего, не сможет рассчитать хорошее смещение и должна быть повторена.
Compasses inconsistent :Направление компаса противоречиво: внутренний компас и внешний компас указывают в разных направлениях (более 45 градусов). Обычно это вызвано неправильной настройкой внешнего направления компаса (т. Е. География, параметры направления компаса).



(4) Ошибки, связанные с GPS:

GPS Glitch :
Индикатор GPS мигает: индикатор GPS мигает, и дрон находится в режиме полета, в котором требуется режим GPS (т. е. режим ожидания, PosHold и т. д.) и / или включен круговой забор.
Need 3D Fix : У GPS нет трехмерного решения, и дрон находится в режиме GPS и / или режиме полета с включенным круговым забором.
Bad Velocity :Скорость беспилотника (по данным инерциальной навигационной системы) выше 50 см / с. Проблемы, которые могут вызвать это, включают фактическое движение транспортного средства или снижение, плохую калибровку акселерометра и обновления GPS ниже ожидаемых 5 Гц.
Высокая GPS HDOP: ** Значение HDPP (значение точности позиционирования) GPS превышает 2,0, и автомобиль находится в режиме позиционирования GPS и / или в режиме полета с круговым забором. Мы можем просто исправить это, подождав несколько минут, переместившись в место с лучшим обзором неба или проверив, что источник помех GPS (то есть устройство FPV) сместился дальше от GPS. Или вы можете добавить ** GPS_HDOP_GOOD, изменивПараметр равен 2,2 или 2,5, чтобы ослабить проверку. В худшем случае, пилоты могут отключить заборы и взлеты в режимах, которые не требуют GPS (то есть, Стабильный, AltHold) и переключиться на Loiter после разблокировки, но это не рекомендуется. (Это слишком опасно. Перед взлетом обязательно выполните GPS-позиционирование. В настоящее время можно выбрать три режима.)
** Примечание: ** GPS HDOP можно легко просмотреть с помощью быстрой вкладки планировщика миссии, как показано ниже.
这里写图片描述


(5) Инспекция INS (т.е. ускорение и гироскопическая проверка):

** INS не откалиброван: ** INS не откалиброван: смещение некоторых или всех акселерометров равно нулю. Акселерометр необходимо откалибровать.
Accels not healthy: ACCEL вреден для здоровья: отчет по акселерометру вреден для здоровья, что может быть связано с аппаратными проблемами. Это также может произойти сразу после обновления прошивки до перезапуска платы.
Accels inconsistent: Несогласованность ускорения: акселерометр сообщает, что текущее ускорение отличается не менее чем на 1 м / с / с. Акселерометр необходимо откалибровать, иначе возникла аппаратная проблема.
Gyros not healthy: Гироскоп вреден для здоровья: гироскоп сообщает, что он вреден для здоровья, что может быть аппаратной проблемой. Это также может произойти сразу после обновления прошивки до перезапуска платы.
Gyro cal failed: Ошибка калибровки гироскопа: калибровка гироскопа не смогла зафиксировать смещение. Это часто перемещается дронами во время калибровки гироскопа (Когда мигают красные и синие огни) В этом случае отсоедините аккумулятор и вставьте его снова, соблюдая осторожность, чтобы не сдвинуть дрон, что может решить проблему. Отказ оборудования датчика (например, пики) также может быть причиной этого сбоя.
Gyros inconsistent: Гироскопы несовместимы: скорости вращения транспортного средства, сообщаемые двумя гироскопами, отличаются более чем на 20 дг / с. Это может быть вызвано неисправностью оборудования или плохо откалиброванным гироскопом.


(6) Проверка источника питания:

Board Voltage checks:Проверьте напряжение платы источника питания: внутреннее напряжение печатной платы ниже 4,3 вольт или выше 5,8 вольт.
При питании от USB-кабеля (то есть на рабочем месте) это может быть связано с тем, что настольный компьютер не может обеспечить достаточный ток для контроллера полета, попробуйте заменить USB-кабель.
Если он питается от батареи, это серьезная проблема, и перед полетом необходимо тщательно проверить систему питания (например, модуль питания, батарею и т. д.).


(7) Проверка параметров:

Ch7&Ch8 Opt cannot be same:
Параметры Ch7 и Ch8 не могут быть одинаковыми: переключатель доступности установлен на одну и ту же опцию, которая недопустима, поскольку может вызвать путаницу.
Check FS_THR_VALUE: Отказоустойчивое значение ШИМ пульта дистанционного управления установлено слишком близко к минимальному значению канала дроссельной заслонки (например, CH3).
Check ANGLE_MAX:Параметр AGLE_MAX, управляющий максимальным наклоном дрона, устанавливается ниже 10 градусов (т.е. 1000) или выше 80 градусов (т.е. 8000).
** ACRO_BAL_ROLL / PITCH: ** Параметр ACRO_BAL_ROLL выше, чем стабильный бросок P, и / или параметр ACRO_BAL_PITCH выше значения P стабильного шага. Это может привести к тому, что оператор не сможет контролировать угол наклона в режиме ACRO, поскольку стабильность тренажера Acro будет превышать входные данные оператора.


Третье: анализ кода ошибки перед постановкой на охрану


Инициализация обнаружения 1.Pre-Arm


这里写图片描述

void Copter::init_ardupilot()
{
     arming.pre_arm_rc_checks(true);
    if (ap.pre_arm_rc_check) // Выход двигателя можно включить только в том случае, если пульт дистанционного управления проверил его.
    {
        enable_motor_output(); // Включить вывод двигателя
    }
}

(1)arming.pre_arm_rc_checks(true);
Выполняет предварительные проверки, связанные с GPS, и возвращает TRUE, если прошло

void AP_Arming_Copter::pre_arm_rc_checks(const bool display_failure)
{
    // exit immediately if we've already successfully performed the pre-arm rc check
    if (copter.ap.pre_arm_rc_check) {
        return;
    }

    // set rc-checks to success if RC checks are disabled
    if ((checks_to_perform != ARMING_CHECK_ALL) && !(checks_to_perform & ARMING_CHECK_RC)) {
        set_pre_arm_rc_check(true);
        return;
    }

    const RC_Channel *channels[] =
    {
        copter.channel_roll,
        copter.channel_pitch,
        copter.channel_throttle,
        copter.channel_yaw
    };
    const char *channel_names[] = { "Roll", "Pitch", "Throttle", "Yaw" };

    for (uint8_t i=0; i<ARRAY_SIZE(channels);i++)
    {
        const RC_Channel *channel = channels[i];
        const char *channel_name = channel_names[i];
        // check if radio has been calibrated
        if (!channel->min_max_configured()) {
            if (display_failure) {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: RC %s not configured", channel_name);
            }
            return;
        }
        if (channel->get_radio_min() > 1300) {
            if (display_failure) {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: %s radio min too high", channel_name);
            }
            return;
        }
        if (channel->get_radio_max() < 1700) {
            if (display_failure) {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: %s radio max too low", channel_name);
            }
            return;
        }
        if (i == 2) {
            // skip checking trim for throttle as older code did not check it
            continue;
        }
        if (channel->get_radio_trim() < channel->get_radio_min()) {
            if (display_failure) {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: %s radio trim below min", channel_name);
            }
            return;
        }
        if (channel->get_radio_trim() > channel->get_radio_max()) {
            if (display_failure) {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: %s radio trim above max", channel_name);
            }
            return;
        }
    }

    // if we've gotten this far rc is ok
    set_pre_arm_rc_check(true);
}


(2) enable_motor_output (); // Включить выход двигателя. Когда ap.pre_arm_rc_check = 1, включите его, в противном случае — нет.

void Copter::enable_motor_output()
{
    // enable motors
    motors->enable();
    motors->output_min();
}

Обновление обнаружения 2.Pre-Arm


(1) Функция первого шага


 SCHED_TASK(one_hz_loop,            1,    100), // Выполнить проверку разблокировки

(2) функция второго шага


void Copter::one_hz_loop()
{

   arming.update();
}

(3) функция третьего шага


Перед разблокировкой выполните проверку, рабочий цикл равен 1 с, а частота равна 1 Гц.

void AP_Arming_Copter::update(void)
{
    // Выполняем проверку постановки на охрану и отображаем сбои каждые 30 секунд ---- выполняем проверку перед постановкой на охрану и сбои индикации каждые 30 секунд
    static uint8_t pre_arm_display_counter = PREARM_DISPLAY_PERIOD/2; //# define PREARM_DISPLAY_PERIOD 30
    pre_arm_display_counter++;
    bool display_fail = false;
    if (pre_arm_display_counter >= PREARM_DISPLAY_PERIOD) // до 30 с
    {
        display_fail = true;
        pre_arm_display_counter = 0;
    }

    if (pre_arm_checks(display_fail)) // Ключевой анализ
    {
        set_pre_arm_check(true);
    }
}

Функция анализа pre_arm_checks (display_fail)


bool AP_Arming_Copter::pre_arm_checks(bool display_failure)
{
    // Выход немедленно, если рука разблокирована
    if (copter.motors->armed()) 
    {
        return true;
    }

    // check if motor interlock and Emergency Stop aux switches are used
    // at the same time.  This cannot be allowed.
    // Проверьте, используются ли блокировка двигателя и вспомогательный выключатель аварийного останова одновременно. Это не разрешено
    if (copter.check_if_auxsw_mode_used(AUXSW_MOTOR_INTERLOCK) && copter.check_if_auxsw_mode_used(AUXSW_MOTOR_ESTOP)){
        if (display_failure) {
            gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Interlock/E-Stop Conflict");
        }
        return false;
    }

    // Проверьте, используется ли переключатель блокировки двигателя ---- проверьте, используется ли вспомогательный переключатель блокировки двигателя
    // если это так, переключатель должен быть в отключенном положении, чтобы поставить
    // В противном случае выйдите немедленно. Эта проверка повторяется, потому что статус может измениться в любое время. в противном случае немедленно завершите работу. Эта проверка должна быть повторена, так как состояние может измениться в любое время.
    if (copter.ap.using_interlock && copter.ap.motor_interlock_switch) 
    {
        if (display_failure) 
        {
            gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Motor Interlock Enabled");
        }
        return false;
    }

    // Если мы успешно выполнили предварительную проверку, немедленно завершите работу - выйдите немедленно, если мы уже успешно выполнили проверку перед постановкой на охрану
    if (copter.ap.pre_arm_check) 
    {
        // Запускаем проверку GPS, потому что результаты могут измениться и повлиять на цвет светодиода. Дисплею не нужно отказывать, потому что, если пилот попробует ARMARCHECK, он выполнит операцию.
        // run gps checks because results may change and affect LED colour
        // no need to display failures because arm_checks will do that if the pilot tries to arm
        pre_arm_gps_checks(false);
        return true;
    }

    // Возвращаем 1, если проверка разблокировки не включена ----- успешно, если предварительная проверка отключена
    if (checks_to_perform == ARMING_CHECK_NONE) 
    {
        set_pre_arm_check(true);
        set_pre_arm_rc_check(true);
        return true;
    }

 return barometer_checks(display_failure)         // Функция проверки барометра
        & rc_calibration_checks(display_failure)  // Функция обнаружения дистанционного управления
        & compass_checks(display_failure)         // Проверяем компас
        & gps_checks(display_failure)             // проверяем gps
        & fence_checks(display_failure)           // проверить забор
        & ins_checks(display_failure)             // Проверка данных инерциальной навигации
        & board_voltage_checks(display_failure)   // Проверка платы напряжения
        & logging_checks(display_failure)         // проверка журнала
        & parameter_checks(display_failure)       // Проверка параметров
        & motor_checks(display_failure)           // Проверьте мотор
        & pilot_throttle_checks(display_failure); // Проверка дроссельной заслонки
}

Функция анализа set_pre_arm_check (true)


void AP_Arming_Copter::set_pre_arm_check(bool b)
{
    if(copter.ap.pre_arm_check != b) 
    {
        copter.ap.pre_arm_check = b;
        AP_Notify::flags.pre_arm_check = b;
    }
}

Анализ функции 3.Pre-Arm



1. Проверка разблокировки барометра



bool AP_Arming_Copter::barometer_checks(bool display_failure)
{
    // Проверка барометра ------ проверка Баро
    if ((checks_to_perform == ARMING_CHECK_ALL) || (checks_to_perform & ARMING_CHECK_BARO)) 
    {
        // Здоров ли барометр ------ проверка состояния барометра
        if(!barometer.healthy())
        { 
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Barometer not healthy"); // Барометр ненормальный
            }
            return false;
        }
        // Check baro & inav alt are within 1m if EKF is operating in an absolute position mode.
        // Do not check if intending to operate in a ground relative height mode as EKF will output a ground relative height
        // that may differ from the baro height due to baro drift.
        // Если EKF работает в режиме контроля абсолютного положения, проверьте, находится ли разница между BARO и IANV ALT в пределах 1M.
        // Не проверяйте, намереваетесь ли вы работать в режиме относительной высоты над землей, потому что выход EKF может быть на другой земле относительно высоты давления воздуха из-за дрейфа давления воздуха.
        nav_filter_status filt_status = _inav.get_filter_status();
        bool using_baro_ref = (!filt_status.flags.pred_horiz_pos_rel && filt_status.flags.pred_horiz_pos_abs);
        if (using_baro_ref) 
        {
            if (fabsf(_inav.get_altitude() - copter.baro_alt) > PREARM_MAX_ALT_DISPARITY_CM) // Получает ли инерциальная навигация высоту, превышающую высоту барометра на 1 м?
            {
                if (display_failure) 
                {
                    gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Altitude disparity"); // Ошибка слишком большой разницы
                }
                return false; // возвращаем 0, обнаружение ошибки
            }
        }
    }
    return true; // Успех здесь
}


Проверка дистанционного управления 2.Remote



bool AP_Arming_Copter::rc_calibration_checks(bool display_failure)
{
    // Перед разблокировкой pre-arm rc проверяет предварительное условие
    pre_arm_rc_checks(display_failure);
    return copter.ap.pre_arm_rc_check;// Возврат в разблокированное состояние
}

Проанализируйте функцию: pre_arm_rc_checks (display_failure)



void AP_Arming_Copter::pre_arm_rc_checks(const bool display_failure)
{
    // Выйти немедленно, если мы успешно выполнили проверку RC предплечья ------ выйти немедленно, если мы уже успешно выполнили проверку предплечья rc
    if (copter.ap.pre_arm_rc_check) //copter.ap.pre_arm_rc_check=1, проверка прошла успешно
    {
        return;
    }

    // Если проверка RC отключена, установите успешную проверку RC ------------ установите успешную проверку rc, если проверки RC отключены
    if ((checks_to_perform != ARMING_CHECK_ALL) && !(checks_to_perform & ARMING_CHECK_RC)) // ARMING_CHECK_ALL = 0x01, битовый флаг ARMING_CHECK_ALL
    {
        set_pre_arm_rc_check(true);
        return;
    }

    const RC_Channel *channels[] =   // Устанавливаем отображение канала дистанционного управления, обычно устанавливаем roll-1, pitch-2, throttle-3, yaw-4
    {
        copter.channel_roll,
        copter.channel_pitch,
        copter.channel_throttle,
        copter.channel_yaw
    };
    const char *channel_names[] = { "Roll", "Pitch", "Throttle", "Yaw" };// Строковая константа

    for (uint8_t i=0; i<ARRAY_SIZE(channels);i++)    // Рассчитать количество байтов
    {
        const RC_Channel *channel = channels[i];     // Получить канал
        const char *channel_name = channel_names[i]; // Получить имя
        // Проверить, откалиброван ли пульт ДУ ------------------ Проверить, откалибровано ли радио
        if (!channel->min_max_configured()) // Получить канал-> min_max_configured () = 1, уже настроен, не вводить if, иначе вводить if, будет выдана ошибка
        {
            if (display_failure) //display_failure=1
            {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: RC %s not configured", channel_name); // Отправить ошибку на наземную станцию
            }
            return;
        }
        if (channel->get_radio_min() > 1300) // Минимальное значение больше 1300, больше, чем сообщит об ошибке
        {
            if (display_failure) 
            {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: %s radio min too high", channel_name);
            }
            return;
        }
        if (channel->get_radio_max() < 1700) // Если максимальное значение меньше 1700, будет сообщено об ошибке, если оно меньше
        {
            if (display_failure) 
            {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: %s radio max too low", channel_name);
            }
            return;
        }
        if (i == 2) 
        {
            // Когда старый код не проверен, пропустите проверку газа. ---- пропустить проверку триммера газа, так как старый код не проверял
            continue;
        }
        if (channel->get_radio_trim() < channel->get_radio_min()) // Данные дистанционного управления, меньше минимального значения, приглашение слишком низкое
        {
            if (display_failure) 
            {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: %s radio trim below min", channel_name);
            }
            return;
        }
        if (channel->get_radio_trim() > channel->get_radio_max()) // Данные дистанционного управления, больше максимума, приглашение слишком большое
        {
            if (display_failure) 
            {
                copter.gcs_send_text_fmt(MAV_SEVERITY_CRITICAL,"PreArm: %s radio trim above max", channel_name);// Эта функция проанализирована позже
            }
            return;
        }
    }

    // Если код выполняется здесь, можно использовать RC. То есть, проверка качества пройдена, будьте уверены в использовании ------ если мы дошли до этого, то все в порядке
    set_pre_arm_rc_check(true);// Ключ должен быть установлен: copter.ap.pre_arm_rc_check = 1
}

Проанализируйте функцию: copter.gcs_send_text_fmt

При отправке отформатированных сообщений с низким приоритетом в GCS подходит только одно сообщение в очереди, поэтому, если несколько сообщений отправлено до того, как последнее поступит в последовательный буфер, старые сообщения будут потеряны. Эта функция находится в GCS_Mavlink.cpp. Эта функция сейчас не анализируется. Достаточно знать, что она отправляет ошибки на наземную станцию ​​через mavlink. Она продолжит анализировать эту функцию, когда у нее будет время.


void Copter::gcs_send_text_fmt(MAV_SEVERITY severity, const char *fmt, ...)
{
    char str[MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN] {};
    va_list arg_list;
    va_start(arg_list, fmt);
    va_end(arg_list);
    hal.util->vsnprintf((char *)str, sizeof(str), fmt, arg_list);
    gcs().send_statustext(severity, 0xFF, str);
    notify.send_text(str);// Уведомить об отправке информации
}


3. Проверка разблокировки компаса



bool AP_Arming_Copter::compass_checks(bool display_failure)
{
    bool ret = AP_Arming::compass_checks(display_failure);// Проверка компаса для разблокировки

    if ((checks_to_perform == ARMING_CHECK_ALL) || (checks_to_perform & ARMING_CHECK_COMPASS)) 
    {
        // check compass offsets have been set.  AP_Arming only checks
        // this if learning is off; Copter *always* checks.
        // Убедитесь, что смещение компаса установлено. Только когда обучение закончено, проверка разблокировки только проверяет это, COPTER всегда проверяет.
        if (!_compass.configured()) 
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Compass not calibrated"); // Отправить без калибровки
            }
            ret = false;
        }
    }

    return ret;
}

Функция анализа AP_Arming :: compass_checks (display_failure)


bool AP_Arming::compass_checks(bool report)
{
    if ((checks_to_perform) & ARMING_CHECK_ALL ||(checks_to_perform) & ARMING_CHECK_COMPASS) // начинать ли проверку компаса
    {

        if (!_compass.use_for_yaw())  // Если компас использует вычисление рыскания, возвращаем 1
        {
            // Если вы введете здесь, компас не включен ----- использование компаса отключено
            return true;
        }

        if (!_compass.healthy()) // Компас здоров? _Compass.healthy () = 1, он здоров, в противном случае он вреден для здоровья, он подскажет на наземной станции
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Compass not healthy");// Ошибка подсказки
            }
            return false;
        }
        // Проверяем, что компас обучается или смещение установлено -------- проверяем, что компас включен или смещения установлены
        if (!_compass.learn_offsets_enabled() && !_compass.configured()) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Compass not calibrated");
            }
            return false;
        }

        // проверка калибровки компаса ------ проверка калибровки компаса
        if (_compass.is_calibrating()) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "Arm: Compass calibration running");
            }
            return false;
        }

        // Сообщаем, что компас проверки наземной станции откалиброван и его необходимо сбросить -------- проверить, откалиброван ли компас и требуется ли перезагрузка
        if (_compass.compass_cal_requires_reboot()) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Compass calibrated requires reboot");
            }
            return false;
        }

        // проверка на необоснованные смещения компаса ------ проверка на необоснованные смещения компаса
        Vector3f offsets = _compass.get_offsets();
        if (offsets.length() > _compass.get_offsets_max()) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Compass offsets too high");
            }
            return false;
        }

        // проверка на необоснованную длину поля MAG ------ проверка на необоснованную длину магнитного поля
        float mag_field = _compass.get_field().length();
        if (mag_field > AP_ARMING_COMPASS_MAGFIELD_MAX || mag_field < AP_ARMING_COMPASS_MAGFIELD_MIN) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Check mag field");
            }
            return false;
        }

        // Проверяем все точки компаса примерно в одном направлении
        if (!_compass.consistent()) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL,"PreArm: Compasses inconsistent");
            }
            return false;
        }
    }

    return true;
}


Проверка разблокировки 4.GPS



bool AP_Arming_Copter::gps_checks(bool display_failure)
{
    // Проверка GPS ----- проверка GPS
    if (!pre_arm_gps_checks(display_failure)) 
    {
        return false;
    }
    return true;
}

Функция анализа pre_arm_gps_checks (display_failure)


bool AP_Arming_Copter::pre_arm_gps_checks(bool display_failure)
{
    //Всегда проверяйте, началась ли инерциальная навигация, и читайте данные ------ всегда проверяйте if inertial nav has started and is ready
    if (!ahrs.healthy()) //Данные не здоровы
    {
        if (display_failure) 
        {
            gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Waiting for Nav Checks"); //Ожидание инерционной проверки навигации
        }
        return false;
    }

    //Проверьте, требует ли режим полета GPS ----- if flight mode requires GPS
    bool mode_requires_gps = copter.mode_requires_GPS(copter.control_mode);

    //Проверьте, требует ли забор GPS ------- проверка if fence requires GPS
    bool fence_requires_gps = false;
    #if AC_FENCE == ENABLED
    //Если круговые или полигональные заборы включены, нам нужен GPS. ---- if circular or polygon fence is enabled we need GPS
    fence_requires_gps = (copter.fence.get_enabled_fences() & (AC_FENCE_TYPE_CIRCLE | AC_FENCE_TYPE_POLYGON)) > 0;
    #endif

    //Если вам не нужен GPS, верните true ----- return true if GPS is not required
    if (!mode_requires_gps && !fence_requires_gps) 
    {
        AP_Notify::flags.pre_arm_gps_check = true;
        return true;
    }

    //Убедитесь, что GPS хорошо ------- убедитесь, GPS is ok
    if (!copter.position_ok()) 
    {
        if (display_failure) 
        {
            const char *reason = ahrs.prearm_failure_reason();
            if (reason) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: %s", reason);
            } else 
            {
                if (!mode_requires_gps && fence_requires_gps) 
                {
                    //Уточните пользователю, зачем ему GPS в режиме полета без GPS in non-GPS flight mode
                    gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Fence enabled, need 3D Fix");
                } else 
                {
                    gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Need 3D Fix");
                }
            }
        }
        AP_Notify::flags.pre_arm_gps_check = false;
        return false;
    }

    //Проверить на сбой GPS (например, отчет EKF) ----- проверить for GPS glitch (as reported by EKF)
    nav_filter_status filt_status;
    if (_ahrs_navekf.get_filter_status(filt_status)) 
    {
        if (filt_status.flags.gps_glitching) {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: GPS glitching");
            }
            return false;
        }
    }

    //Убедитесь, что дисперсия компаса EKF ниже порогового значения безопасности ------ проверьте дисперсию компаса EKF is below failsafe threshold
    float vel_variance, pos_variance, hgt_variance, tas_variance;
    Vector3f mag_variance;
    Vector2f offset;
    _ahrs_navekf.get_variances(vel_variance, pos_variance, hgt_variance, mag_variance, tas_variance, offset);
    if (mag_variance.length() >= copter.g.fs_ekf_thresh) 
    {
        if (display_failure) 
        {
            gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: EKF compass variance");
        }
        return false;
    }

    //Проверьте дом и очки EKF не слишком далеко ----- проверьте дом and EKF origin are not too far
    if (copter.far_from_EKF_origin(ahrs.get_home())) 
    {
        if (display_failure) 
        {
            gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: EKF-home variance");
        }
        AP_Notify::flags.pre_arm_gps_check = false;
        return false;
    }

    //Если проверка GPS отключена, немедленно вернитесьtrue----- return true immediately if gps check is disabled
    if (!(checks_to_perform == ARMING_CHECK_ALL || checks_to_perform & ARMING_CHECK_GPS)) 
    {
        AP_Notify::flags.pre_arm_gps_check = true;
        return true;
    }

    //Предупреждение о разделении hdop --- для предотвращения путаницы пользователей без блокировки gps --- предупреждает о hdop отдельно - для предотвращения путаницы пользователей with no gps lock
    if (copter.gps.get_hdop() > copter.g.gps_hdop_good) 
    {
        if (display_failure) 
        {
            gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: High GPS HDOP"); //gкоэффициент точности ps
        }
        AP_Notify::flags.pre_arm_gps_check = false;
        return false;
    }

    //Вызов родительского чека gps
    if (!AP_Arming::gps_checks(display_failure)) 
    {
        return false;
    }

    //Если мы придем сюда, все готово ----- if we got here all must be ok
    AP_Notify::flags.pre_arm_gps_check = true;
    return true;
}


Проверка разблокировки 5.Fence



bool AP_Arming_Copter::fence_checks(bool display_failure)
{
    #if AC_FENCE == ENABLED
    // Проверяем, включен ли забор ------- проверка забора инициализирована
    const char *fail_msg = nullptr;
    if (!copter.fence.pre_arm_check(fail_msg)) 
    {
        if (display_failure && fail_msg != nullptr) 
        {
            GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: %s", fail_msg);
        }
        return false;
    }
    #endif
    return true;
}

Функция анализа copter.fence.pre_arm_check (fail_msg)


bool AC_Fence::pre_arm_check(const char* &fail_msg) const
{
    fail_msg = nullptr;

    //Если вы не включите или не установите забор, всегда возвращается true ------ if not enabled or not fence set-up always return true
    if (!_enabled || _enabled_fences == AC_FENCE_TYPE_NONE) 
    {
        return true;
    }

    // Проверить нет ограничений в настоящее время нарушено-проверить no limits are currently breached
    if (_breached_fences != AC_FENCE_TYPE_NONE) 
    {
        fail_msg =  "vehicle outside fence";
        return false;
    }

    //Если горизонтальный предел включен, проверьте, что положение блока инерциальной навигации является нормальным. ---- if we have horizontal limits enabled, check inertial nav position is ok
    if ((_enabled_fences & (AC_FENCE_TYPE_CIRCLE | AC_FENCE_TYPE_POLYGON))>0 && 
            !_inav.get_filter_status().flags.horiz_pos_abs && !_inav.get_filter_status().flags.pred_horiz_pos_abs) 
    {
        fail_msg = "fence requires position";
        return false;
    }

    //Здесь все хорошо --------if we got this far everything must be ok
    return true;
}


Проверка разблокировки данных навигации 6.Inertia



bool AP_Arming_Copter::ins_checks(bool display_failure)
{
    bool ret = AP_Arming::ins_checks(display_failure);// Проверка данных инерциальной навигации

    if ((checks_to_perform == ARMING_CHECK_ALL) || (checks_to_perform & ARMING_CHECK_INS)) // Включить флаг
    {
        // Получить отношение к EKF (если оно плохое, обычно это смещение гироскопа) ----- получить отношение к EKF (если оно плохое, обычно это смещение гироскопа)
        if (!pre_arm_ekf_attitude_check())  // Выполнить проверку осанки
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: gyros still settling");
            }
            ret = false;
        }
    }

    return ret;
}

Функция анализа AP_Arming :: ins_checks (display_failure)


bool AP_Arming::ins_checks(bool report)
{
    if ((checks_to_perform & ARMING_CHECK_ALL) ||
        (checks_to_perform & ARMING_CHECK_INS)) 
    {
        const AP_InertialSensor &ins = ahrs.get_ins();
        if (!ins.get_gyro_health_all()) // Гироскоп вреден для здоровья
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Gyros not healthy");
            }
            return false;
        }
        if (!ins.gyro_calibrated_ok_all()) // Гироскоп не откалиброван
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Gyros not calibrated");
            }
            return false;
        }
        if (!ins.get_accel_health_all()) // Ускоренное ускорение
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Accels not healthy");
            }
            return false;
        }
        if (!ins.accel_calibrated_ok_all()) // Ускорение требует 3D калибровки
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: 3D Accel calibration needed");
            }
            return false;
        }

        // Проверьте, откалиброван ли акселерометр и требуется ли его перезапуск ------- Проверьте, откалиброваны ли акселерометры и требуется ли перезагрузка
        if (ins.accel_cal_requires_reboot()) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Accels calibrated requires reboot");
            }
            return false;
        }

        // Проверяем все точки акселерометра примерно в одном направлении
        if (ins.get_accel_count() > 1) 
        {
            const Vector3f &prime_accel_vec = ins.get_accel();
            for(uint8_t i=0; i<ins.get_accel_count(); i++) 
            {
                if (!ins.use_accel(i)) 
                {
                    continue;
                }
                // Получить следующий вектор ACCEL-получить следующий вектор ускорения
                const Vector3f &accel_vec = ins.get_accel(i);
                Vector3f vec_diff = accel_vec - prime_accel_vec;
                // Разрешить определяемые пользователем различия, обычно 0,75 м / с / с, которые должны пройти в течение последних 10 секунд. --- допускает определяемую пользователем разницу, обычно 0,75 м / с / с. Должен пройти за последние 10 секунд
                float threshold = accel_error_threshold;
                if (i >= 2) 
                {
                    /*
                      we allow for a higher threshold for IMU3 as it
                      runs at a different temperature to IMU1/IMU2,
                      and is not used for accel data in the EKF
                     */
                    // Мы допускаем более высокий порог IMU3, потому что он работает на IMU1 / IMU2 при разных температурах и не используется для данных ACCEL в EKF.
                    threshold *= 3;
                }

                // EKF не чувствителен к ошибке оси Z ---- EKF менее чувствителен к ошибке оси Z
                vec_diff.z *= 0.5f;

                if (vec_diff.length() <= threshold) 
                {
                    last_accel_pass_ms[i] = AP_HAL::millis();
                }
                if (AP_HAL::millis() - last_accel_pass_ms[i] > 10000) 
                {
                    if (report) 
                    {
                        GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Accels inconsistent");
                    }
                    return false;
                }
            }
        }

        // Проверяем, все ли гироскопы дают одинаковые показания ---- проверяем, что все гироскопы дают одинаковые показания
        if (ins.get_gyro_count() > 1) 
        {
            const Vector3f &prime_gyro_vec = ins.get_gyro();
            for(uint8_t i=0; i<ins.get_gyro_count(); i++) 
            {
                if (!ins.use_gyro(i)) 
                {
                    continue;
                }
                // get next gyro vector
                const Vector3f &gyro_vec = ins.get_gyro(i);
                Vector3f vec_diff = gyro_vec - prime_gyro_vec;
                // allow for up to 5 degrees/s difference. Pass if it has
                // been OK in last 10 seconds
                if (vec_diff.length() <= radians(5)) 
                {
                    last_gyro_pass_ms[i] = AP_HAL::millis();
                }
                if (AP_HAL::millis() - last_gyro_pass_ms[i] > 10000) 
                {
                    if (report) 
                    {
                        GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Gyros inconsistent");
                    }
                    return false;
                }
            }
        }
    }

    return true;
}

Функция анализа pre_arm_ekf_attitude_check ()


bool AP_Arming_Copter::pre_arm_ekf_attitude_check()
{
    // Получить статус фильтра EKF ---- получить статус фильтра EKF
    nav_filter_status filt_status = _inav.get_filter_status();

    return filt_status.flags.attitude;
}


7. Проверка разблокировки напряжения



bool AP_Arming_Copter::board_voltage_checks(bool display_failure)
{
#if HAL_HAVE_BOARD_VOLTAGE
    // Проверить напряжение ------ проверить напряжение на плате
    if ((checks_to_perform == ARMING_CHECK_ALL) || (checks_to_perform & ARMING_CHECK_VOLTAGE)) 
    {
        if (hal.analogin->board_voltage() < BOARD_VOLTAGE_MIN || hal.analogin->board_voltage() > BOARD_VOLTAGE_MAX) 
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Check Board Voltage");
            }
            return false;
        }
    }
#endif

    Parameters &g = copter.g;

    // Проверить напряжение аккумулятора ---- проверить напряжение аккумулятора
    if ((checks_to_perform == ARMING_CHECK_ALL) || (checks_to_perform & ARMING_CHECK_VOLTAGE)) 
    {
        if (copter.failsafe.battery) 
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Battery failsafe");
            }
            return false;
        }

        // Если подключен USB, все следующие проверки пропускаются, если подключен USB
        if (copter.ap.usb_connected) 
        {
            return true;
        }

        // проверить, не разряжена ли батарея --- проверить, не разряжена ли батарея
        if (copter.battery.exhausted(g.fs_batt_voltage, g.fs_batt_mah)) 
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Check Battery");
            }
            return false;
        }

        // Вызов родительских проверок батареи ---- вызов родительских проверок батареи
        if (!AP_Arming::battery_checks(display_failure)) 
        {
            return false;
        }
    }

    return true;
}


Проверка блокировки 8.Log



bool AP_Arming::logging_checks(bool report)
{
    if ((checks_to_perform & ARMING_CHECK_ALL) ||(checks_to_perform & ARMING_CHECK_LOGGING)) 
    {
        if (DataFlash_Class::instance()->logging_failed()) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: Logging failed");
            }
            return false;
        }
        if (!DataFlash_Class::instance()->CardInserted()) 
        {
            if (report) 
            {
                GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: No SD card");
            }
            return false;
        }
    }
    return true;
}


Проверка разблокировки 9.Parameter




bool AP_Arming_Copter::parameter_checks(bool display_failure)
{
    // Проверка различных значений параметров ------ проверка различных значений параметров
    if ((checks_to_perform == ARMING_CHECK_ALL) || (checks_to_perform & ARMING_CHECK_PARAMETERS)) 
    {

        // Убедитесь, что CH7 и CH8 имеют разные функции ------- Убедитесь, что CH7 и CH8 имеют разные функции
        if (copter.check_duplicate_auxsw()) 
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Duplicate Aux Switch Options");
            }
            return false;
        }

        // Отказоустойчивые проверки параметров ----- отказоустойчивые проверки параметров
        if (copter.g.failsafe_throttle) 
        {
            // check throttle min is above throttle failsafe trigger and that the trigger is above ppm encoder's loss-of-signal value of 900
            // Проверяем, что минимальное значение дроссельной заслонки выше, чем значение триггера безотказной работы дроссельной заслонки, и триггер выше, чем значение потери сигнала датчика PPM на 900.
            if (copter.channel_throttle->get_radio_min() <= copter.g.failsafe_throttle_value+10 || copter.g.failsafe_throttle_value < 910) 
            {
                if (display_failure) 
                {
                    gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Check FS_THR_VALUE");
                }
                return false;
            }
        }

        // проверка параметра угла наклона ------- проверка параметра угла наклона
        if (copter.aparm.angle_max < 1000 || copter.aparm.angle_max > 8000) 
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Check ANGLE_MAX");
            }
            return false;
        }

        // проверка параметров динамического баланса ----- проверка параметров баланса acro
        if ((copter.g.acro_balance_roll > copter.attitude_control->get_angle_roll_p().kP()) || (copter.g.acro_balance_pitch > copter.attitude_control->get_angle_pitch_p().kP())) {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: ACRO_BAL_ROLL/PITCH");
            }
            return false;
        }

        #if RANGEFINDER_ENABLED == ENABLED && OPTFLOW == ENABLED
        // Проверка дальномера, если оптический поток включен -------- проверка дальномера, если включен optflow
        if (copter.optflow.enabled() && !copter.rangefinder.pre_arm_check()) 
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: check range finder");
            }
            return false;
        }
        #endif

        #if FRAME_CONFIG == HELI_FRAME
        // Проверка параметров вертолета ----- проверка параметров вертолета
        if (!copter.motors->parameter_check(display_failure)) 
        {
            return false;
        }
        #endif // HELI_FRAME

        // Проверка на отсутствие данных о местности ---- проверка на отсутствие данных о местности
        if (!pre_arm_terrain_check(display_failure)) 
        {
            return false;
        }

        // Проверка ADSB, чтобы избежать отказоустойчивости ---- проверка adsb предотвращение отказоустойчивости
        if (copter.failsafe.adsb) 
        {
            if (display_failure) 
            {
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: ADSB threat detected");
            }
            return false;
        }

        // Проверка датчика приближения ----- проверка на близость к автомобилю
        if (!pre_arm_proximity_check(display_failure)) 
        {
            return false;
        }
    }
    return true;
}


10.Моторная разблокировка



bool AP_Arming_Copter::motor_checks(bool display_failure)
{
    // Проверка правильности инициализации двигателя ------------- Проверка правильности инициализации двигателя
    if (!copter.motors->initialised_ok()) 
    {
        if (display_failure) 
        {
            gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: check firmware or FRAME_CLASS");
        }
        return false;
    }
    return true;
}


11. Проверка разблокировки дроссельной заслонки



bool AP_Arming_Copter::pilot_throttle_checks(bool display_failure)
{
    // check throttle is above failsafe throttle
    // this is near the bottom to allow other failures to be displayed before checking pilot throttle
    // Проверяем, превышает ли значение дроссельной заслонки значение неисправной дроссельной заслонки, когда оно близко к наименьшему значению дроссельной заслонки, чтобы разрешить отображение других неисправностей до проверки дроссельной заслонки
    if ((checks_to_perform == ARMING_CHECK_ALL) || (checks_to_perform & ARMING_CHECK_RC)) 
    {
        if (copter.g.failsafe_throttle != FS_THR_DISABLED && copter.channel_throttle->get_radio_in() < copter.g.failsafe_throttle_value) 
        {
            if (display_failure) 
            {
                #if FRAME_CONFIG == HELI_FRAME
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Collective below Failsafe");
                #else
                gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Throttle below Failsafe");
                #endif
            }
            return false;
        }
    }

    return true;
}


Четвертое: как Pre-Arm отображает наземную станцию ​​и выдает сообщения об ошибках



1.gcs_send_text () функция


void AP_Arming_Copter::gcs_send_text(MAV_SEVERITY severity, const char *str)
{
    copter.gcs_send_text(severity, str);
}
void Copter::gcs_send_text(MAV_SEVERITY severity, const char *str)
{
    gcs().send_statustext(severity, 0xFF, str);
    notify.send_text(str);
}

1) gcs().send_statustext(severity, 0xFF, str)


void GCS::send_statustext(MAV_SEVERITY severity, uint8_t dest_bitmask, const char *text)
{
    if (dataflash_p != nullptr) 
    {
        dataflash_p->Log_Write_Message(text);
    }

    // add statustext message to FrSky lib queue
    if (frsky_telemetry_p != NULL) 
    {
        frsky_telemetry_p->queue_message(severity, text);
    }

    // filter destination ports to only allow active ports.
    statustext_t statustext{};
    statustext.bitmask = (GCS_MAVLINK::active_channel_mask()  | GCS_MAVLINK::streaming_channel_mask() ) & dest_bitmask;
    if (!statustext.bitmask) {
        // nowhere to send
        return;
    }

    statustext.msg.severity = severity;
    strncpy(statustext.msg.text, text, sizeof(statustext.msg.text));

    // The force push will ensure comm links do not block other comm links forever if they fail.
    // If we push to a full buffer then we overwrite the oldest entry, effectively removing the
    // block but not until the buffer fills up.
    _statustext_queue.push_force(statustext);

    // try and send immediately if possible
    service_statustext();
}

2) notify.send_text(str)


void AP_Notify::send_text(const char *str)
{
    strncpy(_send_text, str, sizeof(_send_text));
    _send_text[sizeof(_send_text)-1] = 0;
    _send_text_updated_millis = AP_HAL::millis();
}

2.copter.gcs_send_text_fmt функция


void Copter::gcs_send_text_fmt(MAV_SEVERITY severity, const char *fmt, ...)
{
    char str[MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN] {};
    va_list arg_list;
    va_start(arg_list, fmt);
    va_end(arg_list);
    hal.util->vsnprintf((char *)str, sizeof(str), fmt, arg_list);
    gcs().send_statustext(severity, 0xFF, str);
    notify.send_text(str);
}

3.send_statustext_all () функция


void GCS_MAVLINK::send_statustext_all(MAV_SEVERITY severity, const char *fmt, ...)
{
    char text[MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN+1] {};
    va_list arg_list;
    va_start(arg_list, fmt);
    hal.util->vsnprintf((char *)text, sizeof(text)-1, fmt, arg_list);
    va_end(arg_list);
    text[MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN] = 0;
    gcs().send_statustext(severity, mavlink_active | chan_is_streaming, text);
}


Коды ошибок асик майнера WhatsMiner

0 ErrSucc ОК ОК — обычный
21 ErrNotPlugged 1 или более хеш-плат не обнаружены Сигнал Hashboard PLUG не обнаружен Номер обнаруженной платы питания, если их более одной, разделенные пробелами 1. Проверьте правильность подключения кабеля SPI (по сравнению с обычной машиной) и снова подключите кабель. 2. Замените плату управления. 3. Замените проблемную доску хешрейта (переделайте доску головоломки).
22 ErrPsuI2cFail Аномальная связь по управлению питанием Неправильная связь I2C источника питания — 1. Заменить блок питания. 2. Замените плату управления.
23 ErrEncoreAllFail Все хэш-платы не могут быть включены SPI недоступен для всех плат хешрейта — 1. Убедитесь, что винты на обоих концах клеммы питания и соединения кабеля SPI не ослаблены. 2. Заменить блок питания. 3. Замените плату управления. 4. Отремонтируйте всю машину.
24 ErrEncoreFail Некоторые платы не включаются SPI недоступен на некоторых хэш-досках Номер хэшборда, для которого произошел сбой связи по SPI, если их несколько, разделенных пробелами 1. Убедитесь, что винты на обоих концах клеммы питания и соединения кабеля SPI не ослаблены. 2. Заменить блок питания. 3. Замените плату управления. 4. Замените проблемную хеш-доску (переделайте доску-головоломку).
25 ErrSetPllFail Не удалось поднять частоту хэш-платы Не удалось поднять частоту хэш-платы Номер хэшборда: частота ошибок 1. Убедитесь, что винты на обоих концах клеммы питания и соединения кабеля SPI не ослаблены. 2. Заменить блок питания. 3. Замените плату управления. 4. Замените проблемную хеш-доску (переделайте доску-головоломку).
26 ErrSetVolFail Не удалось установить напряжение Не удалось установить напряжение Номер хэшборда: 1/2 1. Убедитесь, что винты на обоих концах клеммы питания и соединения кабеля SPI не ослаблены. 2. Заменить блок питания. 3. Замените плату управления. 4. Заменить проблемную хеш-доску (присоединиться)
27 ErrBistFail Тест чипа BIST не пройден Тест чипа BIST не пройден Номер хэшборда: 1/2 1. Убедитесь, что винты на обоих концах клеммы питания и соединения кабеля SPI не ослаблены. 2. Заменить проблемную хеш-доску (присоединиться к плате)
28 ErrSpiFail Ненормальная связь платы хешрейта не может быть автоматически восстановлена ??во время работы Ненормальное соединение SPI платы хешрейта не может быть автоматически восстановлено во время работы Номер хэшборда 1. Убедитесь, что винты на обоих концах клеммы питания и соединения кабеля SPI не ослаблены. 2. Замените проблемную хеш-доску (переделайте доску-головоломку)
29 ErrI2cFail Ненормальная связь по питанию во время работы не может быть восстановлена ??автоматически Связь I2C с ненормальным источником питания не может быть автоматически восстановлена ??во время работы — 1. Заменить блок питания. 2. Замените плату управления.
30 ErrNetwork Подключение к майнинговому пулу прервано Подключение к майнинговому пулу прервано — Если эта проблема возникает на большом количестве или на всех майнинговых машинах с одним и тем же коммутатором: 1. Проверьте правильность настроек пула для майнинга. 2. Проверьте конфигурацию сетевой среды (например, конфигурацию DHCP, конфигурацию DNS, порт и т. Д.). Если проблемы возникают только на одной или нескольких машинах для майнинга: 1. Проверьте правильность настроек пула для майнинга. 2. Проверить подключения к сетевому порту майнера. 3. Замените сетевой кабель на работающую майнинговую машину. 4. Замените плату управления.
31 ErrBadChip Повреждение отдельных микросхем, что приводит к искусственно завышенной вычислительной мощности Повреждение отдельных микросхем, что приводит к искусственно завышенной вычислительной мощности Номер поврежденной микросхемы: номер хеш-платы, если их более одной, разделенные пробелами В ремонт
32 ErrOverheat Hashboard перегрелся Hashboard перегрелся Номер хэшборда 1. Проверьте, вращаются ли передний и задний вентиляторы, если они не вращаются, сначала замените вентиляторы, а затем замените плату управления / блок питания. 2. Убедитесь, что направление ветра спереди и сзади согласовано, согласуется ли оно с другими машинами, если нет, измените направление вентилятора. 3. Если температура воздуха на входе горной машины превышает 40 градусов, необходимо улучшить температурную среду в шахте. 4. Если определенная плата хешрейта часто перегревается, вы можете заменить проблемную плату хешрейта (переделайте головоломку).
33 ErrInvTemp Невозможно прочитать температуру чипа Невозможно прочитать температуру чипа Номер хэшборда 1. Убедитесь, что винты на обоих концах клеммы питания и соединения кабеля SPI не ослаблены. 2. Заменить блок питания. 3. Замените плату управления. 4. Замените проблемную хеш-доску (переделайте доску-головоломку).
34 ErrMisPlugged Неправильное подключение кабеля связи платы управления Ненормальное подключение кабеля SPI платы управления Номер хэшборда 1. Проверьте, совместим ли метод (последовательность) подключения кабеля SPI хэш-платы с другими машинами той же модели. 2. Замените плату управления.
35 ErrPsuFail Аномальный источник питания Аномальный источник питания 1. Обратите внимание на то, что если нет явного отклонения от нормы вычислительной мощности всей машины (не отключается плата), то перезагрузить 2. Убедитесь, что винты на обоих концах клеммы питания и соединения кабеля SPI не ослаблены. 3. Заменить блок питания.
36 ErrInvCorenum Некоторые чипы не работают должным образом Количество хороших фишек ненормальное Номер хэшборда: номер чипа 1. Обратите внимание на то, что если нет явного отклонения от нормы вычислительной мощности всей машины (не отключается плата), то перезагрузить 2. Перезапустите майнер, чтобы увидеть, появляется ли по-прежнему та же ошибка. 3. Замените проблемную хеш-плату.
37 ErrInvVidtype Тип платы управления / версия прошивки / количество микросхем не совпадает Тип платы управления / версия прошивки / количество микросхем не совпадает vidtype, minertype, subtype, chipnum После накопления нескольких единиц (> 10) обратитесь в ремонт.
38 ErrBadRearChips Наконец, у некоторых чипов низкая вычислительная мощность. Последние несколько уровней чипов имеют низкую вычислительную мощность В ремонт
39 ErrInvTuneParam Аномальные параметры старения Напряжение начальной частоты старения неверно В ремонт

Errcode Scope of application Explanation Troubleshooting steps
0 Whole miner Normal Normal
21 hashboard one or more hashboards can’t be detected 1. check and see whether the SPI cables are firmly and correctly connected (compared the connection of cables with working miners), reconnect the SPI cables, don’t change sequence of connection
2. replace control board with other well functional one
3. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
22 Whole miner PSU communication is abnormal 1. replace PSU with other well functional one
2. replace control board with other well functional one
23 Whole miner All hashboards can’t be powered up 1. check and see whether screws on the PSU side and SPI connection are loose
2. replace PSU with other well functional one
3. replace control board with other well functional one
4. whole miner should be returned for repair
24 hashboard one or more hashboards can’t be powered up 1. check and see whether screws on the PSU side and SPI connection are loose
2. replace PSU with other well functional one
3. replace control board with other well functional one
4. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
25 hashboard frequency increase of hashboards fails 1. check hashrate of the miner, if there is nothing obviously abnormal (no missing hashboard), no action should be taken
2. check and see whether screws on the PSU side and SPI connection are loose
3. replace PSU with other well functional one
4. replace control board with other well functional one
5. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
26 hashboard voltage setting fails 1. check and see whether screws on the PSU side and SPI connection are loose
2. replace PSU with other well functional one
3. replace control board with other well functional one
4. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
27 hashboard chip BIST test fails 1. check and see whether screws on the PSU side and SPI connection are loose
2. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
28 hashboard abnormal communication of hashboard, it can’t be automatically recovered when running 1. check and see whether screws on the PSU side and SPI connection are loose
2. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
29 Whole miner abnormal communication of PSU can’t be automatically recovered when running 1. replace PSU with other well functional one
2. replace control board with other well functional one
30 Whole miner pool disconnect If the problem occurs in a large number of miners or all of the mines under the same switch:
1. please first check whether pool setting is correct
2. then check network configuration (such as DHCP configuration, DNS configuration, ports, etc.)
If the problem occurs in only one or just a small number of miners under the same switch:
1. please first check whether pool setting is correct
2. then check whether network cable is firmly connected
3. replace network cable with other one from other well working miner
4. replace control board with other well functional one
31 hashboard damage of some individual chip causes inflated high hashrate of the miner no action should be taken
32 hashboard hashboard overheat 1. check and see whether both fans are spinning, if not, replace fan with other functional one, if still not, then replace control board or PSU
2. check and see whether wind direction of both fans are the same, whether wind direction are the same with other miners, if not, exchange fans
3. meter the inlet temperature of the miner, if above 40 °C, cooling system of the mining farm should be improved
4. if some hashboard is overheated frequently, that hashboard should be replaced (returned for repair)
33 hashboard chip temperature can’t be read 1. check and see whether screws on the PSU side and SPI connection are loose
2. replace PSU with other well functional one
3. replace control board with other well functional one
4. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
34   cables of control board is connected incorrectly 1. check hashrate of the miner, if there is nothing obviously abnormal (no missing hashboard), no action should be taken
2. check whether hashboard SPI cables are conneted in the same way (sequence) as other miners of same model
3. replace control board with other well functional one
35 hashboard PSU voltage is too low 1. check hashrate of the miner, if there is nothing obviously abnormal (no missing hashboard), no action should be taken
2.check and see whether screws on the PSU side and SPI connection is loose
3. replace PSU with other well functional one
36 hashboard working or some chips is abnormal 1. check hashrate of the miner, if there is nothing obviously abnormal (no missing hashboard), no action should be taken
2. reboot the miner to see whether the same error is given
3. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
37 Whole miner mismatch of control board version/firmware version/quantity of chips if there are more than 10 miners with same error, please contact engineers
38 hashboard low hashrate of last few chips no action should be taken
39 hashboard testing parameter is abnormal no action should be taken
40 hashboard PSU load is insufficient 1. check and see whether screws on the PSU side and SPI connection are loose
2. replace PSU with other well functional one
3. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
41 hashboard startup voltage of PSU is too low 1. check hashrate of the miner, if there is nothing obviously abnormal (no missing hashboard), no action should be taken
2. check and see whether screws on the PSU side and SPI connection are loose
3. replace PSU with other well functional one
4. replace control board with other well functional one
42 hashboard implementation of plan B fails when hashboard frequency increases 1. check hashrate of the miner, if there is nothing obviously abnormal (no missing hashboard), no action should be taken
2. check and see whether screws on the PSU side and SPI connection are loose
3. replace PSU with other well functional one
4. replace control board with other well functional one
5. replace defective hashboard(s) with other well functional one(s) (defective one should be returned for repair/replacement)
       
      Attention:
1. The miner should be powered up again to see whether it is back to normal after every step is taken
2. If the problem is not solve after replacement the part, the part should go back to its original unit
3. Error code and brief description of the problem should be attached to the hashboard that is confirmed defective and that will be returned for repair

Error

code

Reason Processing method

110 Fanin detect speed error

Check whether the fan connection is normal,

or replace the power supply, or replace the

fan

111 Fanout detect speed error

Check whether the fan connection is normal,

or replace the power supply, or replace the

fan

130 Fanin speed error

Check whether the fan connection is normal,

or replace the power supply, or replace the

fan

131 Fanout speed error

Check whether the fan connection is normal,

or replace the power supply, or replace the

fan

140 Fan speed is too high Please check the environment temperature

200

Power probing error, no

power found

Detecting power output wiring, updating the

latest firmware, or replacing power supply

201

Power supply and

configuration file

mismatch

Replace the correct PSU

203 Power protecting Please check the environment temperature

204 Power current protecting Please check the environment temperature

205 Power current error Inspection of power supply in power grid

206 Power input voltage is low

Improve power supply conditions and input

voltage

207

Power input current

protecting

Improve power supply conditions and input

voltage

210 Power error status Check power failure code

213

Power input voltage and

current do not match the

power

Replace the PSU

233

Power output over

temperature protection

Please check the environment temperature

234

Power output over

temperature protection

Please check the environment temperature

235

Power output over

temperature protection

Please check the environment temperature

236

Overcurrent Protection of

Power Output

Please check the environment temperature,

check copper row screw

237

Overcurrent Protection of

Power Output

Please check the environment temperature,

check copper row screw

238

Overcurrent Protection of

Power Output

Please check the environment temperature,

check copper row screw

239

Overvoltage Protection of

Power Output

Inspection of power supply in power grid

240

Low Voltage Protection for

Power Output

Inspection of power supply in power grid

241

Power output current

imbalance

Replace the power

243

Over-temperature

Protection for Power Input

Please check the environment temperature

244

Over-temperature

Protection for Power Input

Please check the environment temperature

245

Over-temperature

Protection for Power Input

Please check the environment temperature

246

Overcurrent Protection for

Power Input

Please check the environment temperature

247

Overcurrent Protection for

Power Input

Please check the environment temperature

248

Overvoltage Protection for

Power Input

Inspection of input voltage in power grid

249

Overvoltage Protection for

Power Input

Inspection of input voltage in power grid

250

Undervoltage Protection

for Power Input

Inspection of input voltage in power grid

251

Undervoltage Protection

for Power Input

Inspection of input voltage in power grid

253 Power Fan Error Replace the PSU

254 Power Fan Error Replace the PSU

255

Protection of over power

output

Please check the environment temperature

256

Protection of over power

output

Please check the environment temperature

257

Input over current

protection of power supply

primary side

Try to power off and restart, no effect to

replace the power supply

263

Power communication

warning

Check whether the screws of the control

board are locked

264 Power communication error

Check whether the screws of the control

board are locked

267 Power watchdog protection Contact the technician in time

268

Power output over-current

protection

Check the ambient temperature, check the

copper bar screw

269

Power input over-current

protection

Improve power supply conditions and input

voltage

270

Power input over-voltage

protection

Inspection of input voltage in power grid

271

Power input under-voltage

protection

Inspection of input voltage in power grid

272

Warning of excessive power

output of power supply

Please check the environment temperature

273

Power input power too high

warning

Please check the environment temperature

274 Power fan warning

Check if the power fan is blocked and may

need to be replaced

275

Power over temperature

warning

Please check the environment temperature

300

SM0 temperature sensor

detection error

Check the connection of the hashboard

301

SM1 temperature sensor

detection error

Check the connection of the hashboard

302

SM2 temperature sensor

detection error

Check the connection of the hashboard

320

SM0 temperature reading

error

Check whether the control board screw is

locked properly, check the connection board

and the arrangement contact

321

SM1 temperature reading

error

Check whether the control board screw is

locked properly, check the connection board

and the arrangement contact

322

SM2 temperature reading

error

Check whether the control board screw is

locked properly, check the connection board

and the arrangement contact

329

Control board temperature

sensor communication error

Replace the power supply

350 SM0 temperature protecting Please check the environment temperature

351 SM1 temperature protecting Please check the environment temperature

352 SM2 temperature protecting Please check the environment temperature

410 SM0 detect eeprom error Check adapter board and wiring contact

411 SM1 detect eeprom error Check adapter board and wiring contact

412 SM2 detect eeprom error Check adapter board and wiring contact

420 SM0 parser eeprom error Contact the technician in time

421 SM1 parser eeprom error Contact the technician in time

422 SM2 parser eeprom error Contact the technician in time

430 SM0 chip bin type error Contact the technician in time

431 SM1 chip bin type error Contact the technician in time

432 SM2 chip bin type error Contact the technician in time

440

SM0 eeprom chip num X

error

Contact the technician in time

441

SM1 eeprom chip num X

error

Contact the technician in time

442

SM2 eeprom chip num X

error

Contact the technician in time

510 SM0 miner type error

The version and type of hashboard are

inconsistent, replace the correct hashboard

511 SM1 miner type error

The version and type of hashboard are

inconsistent, replace the correct hashboard

512 SM2 miner type error

The version and type of hashboard are

inconsistent, replace the correct hashboard

530 SM0 not found

Check the connection and arrangement of the

adapter board, or replace the control

board, check whether the hash board

connector is empty welded

531 SM1 not found

Check the connection and arrangement of the

adapter board, or replace the control

board, check whether the hash board

connector is empty welded

532 SM2 not found

Check the connection and arrangement of the

adapter board, or replace the control

board, check whether the hash board

connector is empty welded

540 SM0 reading chip id error

Check adapter board and wiring contact,

Clean the dust on the hashboard

541 SM1 reading chip id error

Check adapter board and wiring contact,

Clean the dust on the hashboard

542 SM2 reading chip id error

Check adapter board and wiring contact,

Clean the dust on the hashboard

550 SM0 have bad chips Replacement of bad chips

551 SM1 have bad chips Replacement of bad chips

552 SM2 have bad chips Replacement of bad chips

560 SM0 loss balance

Plug in the adapter plate, and then screw

in the power connection hashboard again

561 SM1 loss balance

Plug in the adapter plate, and then screw

in the power connection hashboard again

562 SM2 loss balance

Plug in the adapter plate, and then screw

in the power connection hashboard again

600

Environment temperature is

high

Please check the environment temperature

610

If the ambient temperature

is too high in high

performance mode, return

to normal mode

Check the ambient temperature, high

performance mode needs to be controlled

below 30 ?

710

Control board rebooted as

exception

Updating the latest firmware.Check whether

the control board screw is locked properly

800 cgminer checksum error Re-upgrade firmware

801

system-monitor checksum

error

Re-upgrade firmware

802

remote-daemon checksum

error

Re-upgrade firmware

2010 All pools are disable Please check the network or pools configure

2020 Pool0 connect failed Please check the network or pools configure

2021 Pool1 connect failed Please check the network or pools configure

2022 Pool2 connect failed Please check the network or pools configure

2030

High rejection rate of

pool

Please check the network or pools

configure.Setting of mining currency

2040

The pool does not support

the asicboost mode

Check pool configuration

5110 SM0 Frequency Up Timeout reboot

5111 SM1 Frequency Up Timeout reboot

5112 SM2 Frequency Up Timeout reboot

8410

Software version error

(M2x miner with M3x

firmware, or M3x with M2x

firmware).

Upgrade to the correct firmware version

PSU

Error

code

Reason processing method

0x0001 Input undervoltage Check the power supply

0x0002

Temperature sampling over

temperature protection of

power radiator

Power on again after 10 minutes of power

failure. If it occurs again, replace the

power supply

0x0004

Temperature sampling over

temperature protection of

power radiator

Power on again after 10 minutes of power

failure. If it occurs again, replace the

power supply

0x0008

Over temperature

protection of

environmental temperature

sampling in power supply

Power on again after 10 minutes of power

failure. If it occurs again, replace the

power supply

0x0010 Primary side over current

Power on again after 10 minutes of power

failure. If it occurs again, replace the

power supply

0x0020 Output undervoltage Check the power supply

0x0040

Output over current

(continuous load 320A for

more than 2S)

Tighten the copper bar screw again

0x0080 Primary side over current

Power on again after 10 minutes of power

failure. If it occurs again, replace the

power supply

0x0100

Single circuit overcurrent

(protection point 120a)

Check the PSU

0x0200

Single circuit overcurrent

(protection point 120a)

Check the PSU

0x0400

Single circuit overcurrent

(protection point 120a)

Check the PSU

0x0800 Fan failure Replace the PSU

0x1000

Output over current

(continuous load of 310A

for more than 5min)

Check the PSU

0x2000

Output over current

(continuous load 295A for

more than 10min)

Check the PS

Error code Reason Processing method 110 Fanin detect speed error Check whether the fan connection is normal, or replace the power supply, or replace the fan 111 Fanout detect speed error Check whether the fan connection is normal, or replace the power supply, or replace the fan 130 Fanin speed error Check whether the fan connection is normal, or replace the power supply, or replace the fan 131 Fanout speed error Check whether the fan connection is normal, or replace the power supply, or replace the fan 140 Fan speed is too high Please check the environment temperature 200 Power probing error, no power found Detecting power output wiring, updating the latest firmware, or replacing power supply 201 Power supply and configuration file mismatch Replace the correct PSU 203 Power protecting Please check the environment temperature 204 Power current protecting Please check the environment temperature 205 Power current error Inspection of power supply in power grid 206 Power input voltage is low Improve power supply conditions and input voltage 207 Power input current protecting Improve power supply conditions and input voltage 210 Power error status Check power failure code 213 Power input voltage and current do not match the power Replace the PSU 233 Power output over temperature protection Please check the environment temperature 234 Power output over temperature protection Please check the environment temperature 235 Power output over temperature protection Please check the environment temperature 236 Overcurrent Protection of Power Output Please check the environment temperature, check copper row screw 237 Overcurrent Protection of Power Output Please check the environment temperature, check copper row screw 238 Overcurrent Protection of Power Output Please check the environment temperature, check copper row screw 239 Overvoltage Protection of Power Output Inspection of power supply in power grid 240 Low Voltage Protection for Power Output Inspection of power supply in power grid 241 Power output current imbalance Replace the power 243 Over-temperature Protection for Power Input Please check the environment temperature 244 Over-temperature Protection for Power Input Please check the environment temperature 245 Over-temperature Protection for Power Input Please check the environment temperature 246 Overcurrent Protection for Power Input Please check the environment temperature 247 Overcurrent Protection for Power Input Please check the environment temperature 248 Overvoltage Protection for Power Input Inspection of input voltage in power grid 249 Overvoltage Protection for Power Input Inspection of input voltage in power grid 250 Undervoltage Protection for Power Input Inspection of input voltage in power grid 251 Undervoltage Protection for Power Input Inspection of input voltage in power grid 253 Power Fan Error Replace the PSU 254 Power Fan Error Replace the PSU 255 Protection of over power output Please check the environment temperature 256 Protection of over power output Please check the environment temperature 257 Input over current protection of power supply primary side Try to power off and restart, no effect to replace the power supply 263 Power communication warning Check whether the screws of the control board are locked 264 Power communication error Check whether the screws of the control board are locked 267 Power watchdog protection Contact the technician in time 268 Power output over-current protection Check the ambient temperature, check the copper bar screw 269 Power input over-current protection Improve power supply conditions and input voltage 270 Power input over-voltage protection Inspection of input voltage in power grid 271 Power input under-voltage protection Inspection of input voltage in power grid 272 Warning of excessive power output of power supply Please check the environment temperature 273 Power input power too high warning Please check the environment temperature 274 Power fan warning Check if the power fan is blocked and may need to be replaced 275 Power over temperature warning Please check the environment temperature 300 SM0 temperature sensor detection error Check the connection of the hashboard 301 SM1 temperature sensor detection error Check the connection of the hashboard 302 SM2 temperature sensor detection error Check the connection of the hashboard 320 SM0 temperature reading error Check whether the control board screw is locked properly, check the connection board and the arrangement contact 321 SM1 temperature reading error Check whether the control board screw is locked properly, check the connection board and the arrangement contact 322 SM2 temperature reading error Check whether the control board screw is locked properly, check the connection board and the arrangement contact 329 Control board temperature sensor communication error Replace the power supply 350 SM0 temperature protecting Please check the environment temperature 351 SM1 temperature protecting Please check the environment temperature 352 SM2 temperature protecting Please check the environment temperature 410 SM0 detect eeprom error Check adapter board and wiring contact 411 SM1 detect eeprom error Check adapter board and wiring contact 412 SM2 detect eeprom error Check adapter board and wiring contact 420 SM0 parser eeprom error Contact the technician in time 421 SM1 parser eeprom error Contact the technician in time 422 SM2 parser eeprom error Contact the technician in time 430 SM0 chip bin type error Contact the technician in time 431 SM1 chip bin type error Contact the technician in time 432 SM2 chip bin type error Contact the technician in time 440 SM0 eeprom chip num X error Contact the technician in time 441 SM1 eeprom chip num X error Contact the technician in time 442 SM2 eeprom chip num X error Contact the technician in time 510 SM0 miner type error The version and type of hashboard are inconsistent, replace the correct hashboard 511 SM1 miner type error The version and type of hashboard are inconsistent, replace the correct hashboard 512 SM2 miner type error The version and type of hashboard are inconsistent, replace the correct hashboard 530 SM0 not found Check the connection and arrangement of the adapter board, or replace the control board, check whether the hash board connector is empty welded 531 SM1 not found Check the connection and arrangement of the adapter board, or replace the control board, check whether the hash board connector is empty welded 532 SM2 not found Check the connection and arrangement of the adapter board, or replace the control board, check whether the hash board connector is empty welded 540 SM0 reading chip id error Check adapter board and wiring contact, Clean the dust on the hashboard 541 SM1 reading chip id error Check adapter board and wiring contact, Clean the dust on the hashboard 542 SM2 reading chip id error Check adapter board and wiring contact, Clean the dust on the hashboard 550 SM0 have bad chips Replacement of bad chips 551 SM1 have bad chips Replacement of bad chips 552 SM2 have bad chips Replacement of bad chips 560 SM0 loss balance Plug in the adapter plate, and then screw in the power connection hashboard again 561 SM1 loss balance Plug in the adapter plate, and then screw in the power connection hashboard again 562 SM2 loss balance Plug in the adapter plate, and then screw in the power connection hashboard again 600 Environment temperature is high Please check the environment temperature 610 If the ambient temperature is too high in high performance mode, return to normal mode Check the ambient temperature, high performance mode needs to be controlled below 30 ℃ 710 Control board rebooted as exception Updating the latest firmware.Check whether the control board screw is locked properly 800 cgminer checksum error Re-upgrade firmware 801 system-monitor checksum error Re-upgrade firmware 802 remote-daemon checksum error Re-upgrade firmware 2010 All pools are disable Please check the network or pools configure 2020 Pool0 connect failed Please check the network or pools configure 2021 Pool1 connect failed Please check the network or pools configure 2022 Pool2 connect failed Please check the network or pools configure 2030 High rejection rate of pool Please check the network or pools configure.Setting of mining currency 2040 The pool does not support the asicboost mode Check pool configuration 5110 SM0 Frequency Up Timeout reboot 5111 SM1 Frequency Up Timeout reboot 5112 SM2 Frequency Up Timeout reboot 8410 Software version error (M2x miner with M3x firmware, or M3x with M2x firmware). Upgrade to the correct firmware version PSU Error code Reason processing method 0x0001 Input undervoltage Check the power supply 0x0002 Temperature sampling over temperature protection of power radiator Power on again after 10 minutes of power failure. If it occurs again, replace the power supply 0x0004 Temperature sampling over temperature protection of power radiator Power on again after 10 minutes of power failure. If it occurs again, replace the power supply 0x0008 Over temperature protection of environmental temperature sampling in power supply Power on again after 10 minutes of power failure. If it occurs again, replace the power supply 0x0010 Primary side over current Power on again after 10 minutes of power failure. If it occurs again, replace the power supply 0x0020 Output undervoltage Check the power supply 0x0040 Output over current (continuous load 320A for more than 2S) Tighten the copper bar screw again 0x0080 Primary side over current Power on again after 10 minutes of power failure. If it occurs again, replace the power supply 0x0100 Single circuit overcurrent (protection point 120a) Check the PSU 0x0200 Single circuit overcurrent (protection point 120a) Check the PSU 0x0400 Single circuit overcurrent (protection point 120a) Check the PSU 0x0800 Fan failure Replace the PSU 0x1000 Output over current (continuous load of 310A for more than 5min) Check the PSU 0x2000 Output over current (continuous load 295A for more than 10min) Check the PS

Ошибки частотных преобразователей: примеры и коды ошибок

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

Использование частотных преобразователей на промышленных объектах дает следующие преимущества:

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

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

Основные виды и причины неисправностей

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

  1. Over Current или OC. Данный сигнал на мониторе устройства свидетельствует о его перегрузке. Если подобная проблема возникла при тестовом запуске, необходимо проверить соответствие токов регулятора и электрической машины, а также исправность электроцепей управляемого двигателя. Следует учесть, что некоторые модели частотников высвечивают ошибку Over Current при торможении, работе и запуске электродвигателя.
  2. Over Heat или ОН. Это сообщение указывает на превышение номинально допустимой температуры частотного преобразователя. Проще говоря — на его перегрев. Устранить проблему можно посредством чистки внутреннего вентилятора или установки дополнительной вентиляционной системы в бокс, где располагается преобразователь. В качестве профилактики следует размещать частотник в месте, гарантирующем эффективный отвод тепла.
  3. Over Load или OL. Такая ошибка преобразователя может быть вызвана двумя обстоятельствами: превышением на валу момента силы или перегревом управляемого двигателя. Чтобы устранить проблему, необходимо выполнить корректную настройку тепловой защиты. Для этого во время программирования устройства нужно задать требуемую величину тока и время срабатывания защитной функции.
  4. Low Voltage или LV. Ошибка высвечивается при снижении напряжения питания или обрыве фаз (одной или двух). Существует два варианта решения этой проблемы: «насильственная» остановка двигателя или настройка его работы в однофазном режиме.
  5. Over Voltage или OV. Такую надпись можно увидеть на мониторе при замедлении вращения двигателя. Для устранения неисправности необходимо воспользоваться одним из трех способов: переводом устройства в режим генератора, активацией тормозного резистора или перенастройкой системы защиты от повышенного напряжения.

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

В число наиболее распространенных причин неисправностей входят:

  1. Заводской брак. Как правило, фабричные дефекты дают о себе знать в течение гарантийного срока. Поэтому для их устранения следует обращаться к поставщику или в брендовый сервисный центр.
  2. Ошибки при монтаже. Чаще всего причиной неисправностей становится некорректная сборка схемы привода или установка частотника в неподходящем месте.
  3. Нарушение норм эксплуатации. Регламент технического обслуживания изложен в инструкции, прилагаемой к устройству. Игнорирование регламента может привести к выходу из строя полупроводниковых элементов, перегреванию частотного регулятора и другим неисправностям.
  4. Несоответствие частотного преобразователя условиям его эксплуатации. Основные критерии выбора частотника — электрические характеристики двигателя, исполнение, набор функций и т. д. Несоответствие параметров условиям его эксплуатации приводит к некорректной работе устройства, выходу из строя и многочисленным поломкам.

Теперь поговорим об ошибках преобразователя частоты более подробно и предметно. В качестве примера рассмотрим привод известного китайского бренда INVT ELECTRIC CO, серии GDXXX. Предлагаем вашему вниманию таблицу, в которой представлены коды ошибок устройства, их расшифровка, вероятные причины неисправностей, а также способы их устранения.

Код ошибки Расшифровка Вероятные причины Способы устранения
OUt1, 2, 3 Ошибка фазы. Отсутствие заземления или контакта при подсоединении кабеля; слишком маленькое время разгона. Увеличение времени разгона;
замена модуля IGBT; устранение неисправностей внешнего оборудования; переподключение кабеля.
OC1, 2, 3 Токовая перегрузка при разгоне, торможении или постоянной скорости. Чрезмерное время торможения или разгона; слишком высокое напряжение в сети; недостаточная мощность привода;
потеря фазы или короткое замыкание «на землю»; воздействие внешнего фактора.
Сокращение времени разгона;
оптимизация питающего напряжения;
приобретение привода с более высокой мощностью; проверка конфигурации выхода;
устранение внешних помех.
OV1, 2, 3 Сверхнапряжение при разгоне, торможении или постоянной скорости. Напряжение на входе не соответствует параметрам привода;
чрезмерная энергия торможения.
Проверка входного напряжения;
оптимизация времени торможения/разгона.
UV Слишком низкое напряжение шины. Пониженное напряжение питания. Проверка и оптимизация входного напряжения.
OL1 Перегрузка электродвигателя. Слишком низкое питающее напряжение;
неверно заданные параметры тока;
чрезмерная нагрузка на электродвигатель.
Проверка входного напряжения;
настройка правильных параметров тока в двигателе;
оптимизация нагрузки.
OL2 Перегрузка преобразователя частоты. Чрезмерно быстрый разгон;
остановка двигателя;
заниженное питающее напряжение;
сверхнагрузка;
длительная работа двигателя на низкой скорости.
Увеличение времени разгона;
снижение нагрузки на двигатель;
проверка мощности двигателя и входного напряжения;
приобретение привода с более высокой мощностью;
замена двигателя.
OL3 Перегрузка по электричеству. Сигнализация перегрузки в соответствии с заданными параметрами. Проверка нагрузки и точки перегрузки.
SPI Потеря фаз входа. Потеря колебания или фазы напряжения трех входных фаз. Проверка и оптимизация входного напряжения и/или правильности монтажа.
SPO Потеря фаз выхода. Асимметричная нагрузка. Проверка выхода, двигателя и кабеля.
OH1 Перегревание выпрямителя. Неисправность вентилятора или засорение вентиляционного канала;
слишком высокая температура воздуха в помещении;
чрезмерно затянутый запуск устройства.
Замена вентилятора и проверка воздуховода;
снижение температуры окружающей среды;
проверка и восстановление воздухообмена;
оптимизация мощности нагрузки;
замена модуля IGBT;
ремонт платы управления.
EF Неисправность внешних элементов. Повреждение клеммы SIn и/или других внешних клемм. Замена пришедших в негодность клемм.
CE Проблемы со связью. Некорректная скорость в бодах;
повреждение кабеля связи;
неверно заданный адрес сообщения;
серьезные помехи в кабеле.
Оптимизация скорости в бодах;
проверка кабеля связи;
настройка правильного адреса сообщения;
замена кабеля или оптимизация защиты от помех.
ItE Проблемы с обнаружением тока. Некорректное подключение платы управления;
отсутствие вспомогательного напряжения;
выход из строя индикаторов тока.
Проверка разъема, датчиков и платы управления.
tE Ошибка автоматической настройки. Несоответствие мощностей двигателя и частотного преобразователя;
неверно заданные параметры электродвигателя;
серьезная разница между стандартными параметрами и параметрами автоматической настройки;
выход времени на автонастройку.
Установка параметров, указанных на шильдике двигателя;
снижение нагрузки на двигатель;
проверка параметров двигателя и его соединения;
установка верхнего предела частоты на уровень «выше 2/3 номинальной частоты».
bCE Неисправность тормозного модуля. Разрыв тормозных коммуникаций или некорректная работа тормозной цепи;
недостаток производительности внешнего тормозного резистора.
Проверка тормозного модуля и замена тормозных кабелей;
принудительное повышение мощности тормозного резистора.
ETH1, 2 Короткое замыкание Замыкание выхода преобразователя частоты «на землю»;
неисправность в цепи определения тока.
Проверка подключения двигателя и индикаторов тока;
замена платы управления.
dEu Отклонение скоростного режима. Избыточная нагрузка. Оптимизация нагрузки и увеличение времени обнаружения;
проверка и при необходимости корректировка параметров управления.
STo Несогласованность параметров. Отсутствие параметров управления для синхронных электродвигателей;
некорректно заданные параметры автоматической настройки;
отсутствие подключения частотника к двигателю.
Корректировка нагрузки на двигатель;
установка корректных параметров управления;
увеличение времени определения несогласованности.
PCE Обрыв связи с блоком управления. Повреждение проводов, обеспечивающих подключение к блоку управления;
помехи в проводах, связанные с внешним фактором;
некорректное функционирование цепи в основной плате и/или в клавиатуре.
Замена проводов блока управления;
проверка внешней среды и устранение источника помех;
выполнение комплексного сервисного обслуживания устройства.
END Сброс времени до заводских настроек. Фактическое время функционирования преобразователя не соответствует внутреннему параметру продолжительности работы. Корректировка настроек времени.
DNE Проблема с загрузкой параметров. Повреждение проводов, подключаемых к блоку управления;
помехи в проводах;
ошибка в базе данных панели управления.
Замена проводов блока управления;
сервисное обслуживание частотного преобразователя;
повторная загрузка данных в панель управления.

Преимущества ремонта в инженерной компании 555

  • Огромный опыт в ремонте частотных преобразователей разных моделей и марок.
  • Команда профессиональных специалистов.
  • Экономия до 70 % средств по сравнению с приобретением нового оборудования.
  • Оперативное выполнение работ (максимальный срок ремонта — 15 дней).
  • Бесплатная консультация и предварительный осмотр для определения ремонтопригодности привода.
  • Доступные цены и оплата только по результату работы.
  • Гарантия на отремонтированное оборудование — 12 месяцев.

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

Мы ремонтируем:

Компания ООО «Барс-Гидравлик Групп»

Компания ООО «Барс-Гидравлик Групп» на протяжении нескольких лет успешно сотрудничает с ООО «Инженерная компания 555» в вопросах ремонта сложного промышленного оборудования. За время работы наш партнер зарекомендовал себя с самой лучшей стороны. Заказы выполняются в кротчайшие сроки при соблюдении высокого качества работ. Организация приема и выдачи заказов четкая. Гарантийные обязательства выполняются в полном объеме.

Выражаем благодарность Вашим специалистам за профессионализм и оперативное решение поставленных задач.

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

Мы высоко ценим сложившиеся между нашими компаниями открытые и доверительные партнерские отношения и искренне желаем «Инженерной компании «555» долгих лет успеха и процветания.

Читать весь
отзыв

ООО «СоюзМашМеталл»

ООО «Инженерная компания «555» оказывала нашей компании услуги по ремонту электродвигателей и проявила пунктуальность, аккуратность и ответственность в работе.

Результат выполненных работ говорит о качественном оборудовании и высококвалифицированных кадрах.

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

Рекомендуем ООО «ИК «555» как ответственного и надежного поставщика услуг.

Читать весь
отзыв

ООО «РСК»

Сообщаем, что наша организация сотрудничает с ООО «Инженерная компания «555» с мая 2016 года по настоящее время.

За этот период мы обращались к услугам компании более 10 раз.

Благодаря серьезному и квалифицированному подходу сотрудников ООО «Инженерная компания «555» ремонтные работы произведены качественно с учетом сроков, и обеспечены гарантийным сопровождением.

Планируем в дальнейшем работать с ООО «Инженерная компания «555»

Читать весь
отзыв

ОАО «Октябрьский электровагоноремонтный завод»

Уважаемый Дмитрий Васильевич!

ОАО «Октябрьский электровагоноремонтный завод» успешно работает с ООО «Инженерная компания «555» несколько лет, очень довольны данным сотрудничеством. В работе компании наибольшую ценность для нас представляет готовность работать на условиях, удобных Заказчику, качественный ремонт оборудования в заявленные сроки и самое главное, финансовая защищенность Заказчика. В инженерной компании работают внимательные, доброжелательные сотрудники, готовые в любой момент решить проблему Заказчика. Мы рады, что выбрали ООО «Инженерная компания «555» в качестве партнера. Гарантируем дальнейшее сотрудничество!

Читать весь
отзыв

ЗАО «ОХТИНСКОЕ»

ЗАО «Охтинское» выражает глубокую признательность и истинную благодарность ООО Инженерной компании «555» за качественную работу компании по ремонту сложного оборудования промышленной электроники, оперативность и технически грамотное отношение к работе в течении всего периода сотрудничества.

Мы надеемся на дальнейшее успешное развитие деловых отношений в сфере ремонта промышленной электроники.

Читать весь
отзыв

Преимущества сотрудничества с нами

Оплата только за результат — работающий блок

Гарантия на работоспособность блока целиком 12 месяцев

Срок ремонта от 5 до 15 дней

Бесплатный предварительный осмотр на предмет ремонтопригодности

Не вносим конструктивных изменений

Ремонт на компонентном уровне

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

+7 (800) 555-89-01 (звонок по России бесплатный).

Расскажите о своей проблеме и получите инструкцию к дальнейшим действиям.

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

Что такое потеря пакетов?

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

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

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

Что вызывает потерю пакетов в вашей сети

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

Mint Images / Getty Images
  • Пропускная способность сети и перегрузка . Основной причиной потери пакетов является недостаточная пропускная способность сети для требуемого соединения. Это происходит, когда слишком много устройств пытаются установить связь в одной сети.
  • Недостаточно мощное оборудование. Любое оборудование в сети, которое маршрутизирует пакеты, может привести к потере пакетов. Маршрутизаторы, коммутаторы, брандмауэры и другие аппаратные устройства являются наиболее уязвимыми. Если они не могут «идти в ногу» с трафиком, который вы передаете через них, они будут отбрасывать пакеты. Думайте об этом как официанте с полными руками: если вы попросите их взять другую тарелку, они, вероятно, уронят одну или несколько других тарелок.
  • Поврежденные кабели. Потеря пакетов может произойти на уровне 1, физическом сетевом уровне. Если ваши кабели Ethernet повреждены, неправильно подключены или слишком медленны для обработки сетевого трафика, они будут «пропускать» пакеты.
  • Программные ошибки: ни одно программное обеспечение не является безупречным. Микропрограмма вашего сетевого оборудования или программного обеспечения вашего компьютера может содержать ошибки, которые могут привести к потере пакетов. В этом случае потребитель мало что может сделать. Вы можете попытаться решить проблему самостоятельно, но часто единственным способом решения проблемы является исправление микропрограммы от поставщика, поставляющего оборудование. Обязательно сообщайте о предполагаемых ошибках, чтобы найти поставщиков, которые помогут решить проблему.

Обнаружение потери пакета

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

Майк Пауэлл / Getty Images
  • В Windows откройте окно командной строки и используйте команду ping для настройки вашего маршрутизатора. Например, если локальный IP-адрес вашего маршрутизатора 127.0.0.1, следующая команда будет проверять связь с маршрутизатором:
    ping 127.0.0.1 -t

    В macOS или Linux откройте окно терминала и используйте следующую команду:

    ping 127.0.0.1

    Единственное отличие — это отсутствие -t в конце команды.

  • После того, как команда ping обработает достаточное количество пакетов (не менее 10), нажмите Ctrl + C, чтобы остановить команду.
  • Посмотрите, была ли потеря пакетов. Если это конкретное соединение между устройством проверки связи и целью работает правильно, вы должны увидеть 0% потери пакетов.
    --- 127.0.0.1 ping statistics ---
    27 packets transmitted, 27 packets received, 0.0% packet loss
    round-trip min/avg/max/stddev = 1.820/8.351/72.343/14.186 ms
  • Вот и все.
    Есть также более продвинутые инструменты, доступные для обнаружения потери пакетов.
  • Команда tcpdump в macOS и Linux значительно более мощная, чем ping. Немного трудновато привыкнуть, но следующая команда перехватит пакеты, а затем подсчитает количество потерянных пакетов:
    tcpdump -i any
  • Это запустит tcpdump через любое сетевое соединение. Он также может быть запущен с -i eth0 для захвата только основного сетевого интерфейса или с -c 10 для захвата только десяти пакетов.
  • После выполнения команды посмотрите на нижнюю строку, чтобы увидеть, были ли потеряны какие-либо пакеты.
    17 packets captured
    85 packets received by filter
    0 packets dropped by kernel
  • В идеале вы должны увидеть, что 0 пакетов были потеряны.

В Windows вы можете использовать tcpdump через оболочку Bash в Windows 10 или запустить Wireshark.

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

Определение причины потери пакета

Чтобы определить основную причину потери пакетов, вы должны начать с самой простой проблемы, чтобы обнаружить и вернуться обратно.

Сначала проверьте соединение Ethernet между устройствами. Проверьте наличие явных признаков физического повреждения и неправильного подключения. Эти кабели работают правильно? Решает ли переключение кабелей проблему? Проверьте маршрутизаторы и коммутаторы аналогичным образом.

Во-вторых, определите, достаточно ли пропускной способности для обработки необходимых устройств в вашей сети. Является ли какой-либо один аппаратный элемент обработкой значительно большего количества соединений, чем следует? Это часто процесс поиска и замены, пока проблема не решится. Вы также можете использовать «заведомо исправный» коммутатор и маршрутизатор, поменяв его местами с потенциально проблемными устройствами в сети, чтобы увидеть, исчезает ли потеря пакетов при удалении определенного устройства.

Как исправить потерю пакетов в вашей сети

Как только вы определили причину потери пакета, есть два исправления, которые могут быть применены.

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

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

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


These examples may contain rude words based on your search.


These examples may contain colloquial words based on your search.

гибель многих

гибелью многих

к потере множества

к утрате многих

потере многих

гибели многих

потеря многих

потери многих

к многочисленным

на потерю многих

утратой многих

о потере множества

потеряв много

гибели большого числа


Recurring breaches of the 1994 ceasefire agreement along the borders have led to the loss of many lives and the rhetoric of officials remains hostile.



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


With the agreement, irregular arrivals decreased by around 99 percent, thus preventing the loss of many lives at sea.



В рамках соглашения, нерегулярные прибытия сократились примерно на 99%, что предотвратило гибель многих людей на море.


Lack of action could result in the loss of many lives in racial conflict.



Бездействие может обернуться гибелью многих людей в расовом конфликте.


I have been deeply saddened by the loss of many lives and the destruction of property caused by the floods in Pakistan and India.



«Я опечален гибелью многих людей и многочисленными разрушениями, которые повлекли за собой наводнения в Пакистане и Индии.


According to the President, NAFTA caused the loss of many jobs in the USA.


The unfavourable consequences of this situation are the loss of many innocent lives and massive refugee flows, particularly in Africa.



Неблагоприятные последствия этой ситуации — гибель многих ни в чем не повинных людей и массовые потоки беженцев, в особенности в Африке.


Notwithstanding the loss of many jobs.


Probably the most profound impact that habitat destruction has on people is the loss of many valuable ecosystem services.



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


Automation and mergers have resulted in the loss of many jobs in the city.



Автоматизация и слияний привели к потере многих рабочих мест в городе.


These two additional acts of aggression resulted in the loss of many innocent civilian lives among children, women and elderly people.



Эти два дополнительных акта агрессии привели к гибели многих ни в чем не повинных гражданских лиц среди детей, женщин и стариков.


Excessive use of force by military police carrying out evictions of landless rural workers has led to the loss of many lives.



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


Our slow response has on many occasions proved very costly, leading to the loss of many lives.



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


The museum community are concerned that the transfer of property to religious organizations may result in the loss of many historical treasures.



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


I’m fine, but I suffered the loss of many treasured items.


Gambling erodes society, assuring the loss of many for the gain of a few.



Азартные игры разрушают общество, гарантируя потерю многих для выигрыша нескольких.


A break in training means the loss of many sports achievements, depending on the individual physical condition.



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


This tension has already led to the loss of many lives and to a large number of injuries.



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


The global decline in ecosystems and the loss of many services they provide contribute to increasing vulnerability for poor urban and rural communities.



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


This is on top of the loss of many post offices.


This has led to the loss of many trees.

No results found for this meaning.

Results: 135. Exact: 135. Elapsed time: 229 ms.

Documents

Corporate solutions

Conjugation

Synonyms

Grammar Check

Help & about

Word index: 1-300, 301-600, 601-900

Expression index: 1-400, 401-800, 801-1200

Phrase index: 1-400, 401-800, 801-1200

image

Привет, Хабр! С этого выпуска мы начинаем хорошую традицию: каждый месяц будет выходить набор рецензий на некоторые научные статьи от членов сообщества Open Data Science из канала #article_essence. Хотите получать их раньше всех — вступайте в сообщество ODS!
Статьи выбираются либо из личного интереса, либо из-за близости к проходящим сейчас соревнованиям. Если вы хотите предложить свою статью или у вас есть какие-то пожелания — просто напишите в комментариях и мы постараемся всё учесть в дальнейшем.

Статьи на сегодня:

  1. Fitting to Noise or Nothing At All: Machine Learning in Markets
  2. Learned in Translation: Contextualized Word Vectors
  3. Create Anime Characters with A.I. !
  4. LiveMaps: Converting Map Images into Interactive Maps
  5. Random Erasing Data Augmentation
  6. YellowFin and the Art of Momentum Tuning
  7. The Devil is in the Decoder
  8. Improving Deep Learning using Generic Data Augmentation
  9. Learning both Weights and Connections for Efficient Neural Networks
  10. Focal Loss for Dense Object Detection
  11. Borrowing Treasures from the Wealthy: Deep Transfer Learning through Selective Joint Fine-tuning
  12. Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks

1. Fitting to Noise or Nothing At All: Machine Learning in Markets

Оригинал статьи
Автор: kt{at}ut{dot}ee

Это рецензия на статью, в которой диплернингом предсказываются финансовые рынки. Автор поста (далее — ZHD) указывает на следующие очевидные глупости данной и схожих статей:

  • Притягивание за уши показателя accuracy методом взятия максимума из всех экспериментов. Медиана, наоборот, как раз соответствует случайному предсказанию.
  • Хвастовство «хорошими результатами», которые получены на инструментах, которые сейчас вообще не торгуются (т.е. у них константная цена). В целом, ZHD рекомендует сравнивать трейдинговые модели не со случайным предсказателем, а со стратегией buy and hold.
  • Авторы «симулируют» свою стратегию, предполагая отсутствие комиссий при сделках и то, что любую сделку можно выполнить по цене, равной среднему между high и low за последние пять минут. Из-за этого в симуляциях наилучшая прибыль получается у наименее ликвидных инструментов (которые на деле далеко не всегда продадутся по средней цене за пять минут, поэтому вся прибыль скорее всего «получена» за счет нечестного предположения о ликвидности). Вдобавок, авторы хвастаются только несколькими «удачными» моделями, умалчивая всё, что отсимулировалось в минус.
  • Авторы не учитывают время работы бирж (в том числе, очные сессии для сделок (trading pits)) и по мнению ZHD это неправильно.

2. Learned in Translation: Contextualized Word Vectors

→ Оригинал статьи
→ Код
Автор: kt{at}ut{dot}ee

Трансфер лернинг в наше время — стандартный прием. Взять сетку, натренированную на породах болонок из ImageNet, и прикрутить её куда-то для распознавания типов соплей — это уже стандартная программа для всех мамкиных диплёрнеров. В контексте обработки текста, трансфер лернинг обычно менее глубокий и упирается в использование заготовленных векторов слов типа Word2Vec, GloVe итд.

Авторы статьи предлагают углубить текстовый трансфер лернинг на один уровень следующим образом:

  • Натренируем LSTM-based seq2seq модель (вида encoder + decoder with attention over encoder hidden states) для перевода, скажем, с английского на немецкий.
  • Возьмем из неё только encoder (он будет простенького вида LSTM(Embedding(word_idxs)). Этот энкодер умеет превращать последовательность слов в последовательность LSTM hidden states. Т.к. эти hidden states взяты не случайно (их переводческая модель использует в своём аттеншене), то однозначно в них будет полезный сигнал.
  • Ну и всё, давайте теперь строить любые другие текстовые модели, которым мы на вход будем скармливать не только GloVe векторы слов, но и приклеенные к ним соответствующие LSTM hidden векторы из нашего переводческого энкодера (их мы будем называть Context Vectors, CoVe).

Далее авторы наворачивают какую-то нетривиальную модель c biattention и maxout (видимо, завалялась с их прошлой работы) и сравнивают, как она работает в разных задачах, если ей на входе скормить случайный эмбеддинг, GloVe, GloVe+CoVe, GloVe+CoVe+CharNGramEmbeddings.

По результатам кажется, что добавление CoVe повышает точность голого GloVe примерно на 1%. Иногда эффект меньше, иногда отрицательный, иногда добавление вместо CoVe в модель CharNGrams работает так же или даже лучше. В любом случае, совмещение GloVe+CoVe+CharNGrams работает точно лучше всех других методов.

image

На мой взгляд, из-за того, что авторы навернули нехилую модель с аттеншеном поверх сравниваемых типов эмбеддинга (GloVe vs CoVe), замер эффекта полезности CoVe получился излишне зашумленным и не очень убедительным. Я бы предпочел увидеть более «лабораторный» замер.

3. Create Anime Characters with A.I. !

→ Оригинал статьи
→ Сайт
Автор: kt{at}ut{dot}ee

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

Для нахождения лица на картинке можно использовать некую тулзу «lbpcascade animeface». Таким образом авторы получили 42к анимешных лиц, которые они потом ручками пересмотрели и выкинули 4% плохих примеров.

Имеется некая уже готовая CNN-модель Illustration2Vec, которая умеет распознавать на анимешных картинках свойства типа «улыбка», «цвет волос», итд. Авторы использовали её для того, чтобы отлейблить картинки и выбрали 34 интересующих их тэга.

Авторы запихнули это всё в DRAGAN (Kodali et al, где это отличается от обычных GAN авторы не углубляются, видимо, непринципиально).

Чтобы уметь генерировать картинки с заданными атрибутами, авторы делают как в ACGAN:

  • Кормят генератору вектор атрибутов.
  • Заставляют дискриминатор этот вектор предсказывать.
  • Дополнительно штрафуют генератор пропорционально тому, насколько дискриминатор не угадал верный класс.

И генератор, и дискриминатор — довольно замороченные конволюционные SRResNet-ы (у генератора 16-блоковый, у дискриминатора 10-блоковый). У дискриминатора авторы убрали батчнорм-слои «since it would bring correlations within the mini-batch, which is undesired for the computation of the gradient norm.» Я не очень понял эту проблему, поясните если вдруг кому ясно.

Тренировалось всё Адамом с уменьшающимся lr начиная от 0.0002, не очень понятно как долго.
Для вебаппа авторы сконвертировали сеть под WebDNN (https://github.com/mil-tokyo/webdnn) и поэтому генерят все картинки прямо в браузере на клиенте (!).

4. LiveMaps: Converting Map Images into Interactive Maps

→ Оригинал статьи
→ Статья — победитель Best Short Paper Awart SIGIR 2017
Автор: zevsone

Предложена принципиально новая система (LiveMaps) для анализа изображений карт и извлечения релевантного viewport’a.

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

LiveMaps работает в несколько приемов. Сперва проверяется является ли изображение картой.
Если «да», система пытается определить геолокацию этого изображения. Для определения локации используется текстовая и визуальная информация извлеченная из изображения. В итоге, система создает интерактивную карту, отображающую географическую область, вычисленную для изображения.

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

P.S. Совсем не ожидал получить best short paper award на такой маститой конфе (121 short paper в претендентах в этом году, все industry гиганты).

5. Random Erasing Data Augmentation

→ Оригинал статьи
Автор: egor.v.panfilov{at}gmail{dot}com

Статья посвящена исследованию одного из простейших методов аугментации изображений — Random Erasing (по-русски, закрашиванию случайных прямоугольников).

Аугментация параметризовалась 4-мя параметрами: (P_prob) вероятность применения к каждой картинке батча, (P_area) размер региона (area ratio), (P_aspect) соотношение сторон региона (aspect ratio), (P_value) заполняемое значением: случайные / среднее на ImageNet / 0 / 255.

image

Авторы провели оценку влияния данного метода аугментации на 3-х задачах: (A) object classification, (B) object detection, © person re-identification.

(A): Использовались 6 архитектур, начиная с AlexNet, заканчивая ResNeXt. Датасет — CIFAR10/100. Оптимальное значение параметров: P_prob = 0.5, P_aspect = в широком диапазоне, но желательно не 1(квадрат), P_area = 0.02-0.4 (2-40% изображения), P_value = random или среднее на ImageNet, для 0 и 255 результаты существенно хуже. Сравнили также с другими методами и аугментации (random cropping, random flipping), и регуляризации (dropout, random noise): в порядке снижения эффективности — всё вместе, random cropping, random flipping, random erasing. Drouput и random noise данный метод уделывет «в щепки». В целом, метод не самый мощный, но при оптимальных параметрах стабильно даёт 1% точности (5.5% -> 4.5%). Также пишут, что он повышает робастность классификатора к перекрытиям объектов :you-dont-say:.

(B): Использовалась Fast-RCNN на PASCAL VOC 2007+2012. Реализовали 3 схемы: IRE (Image-aware Random Erasing, также выбираем регион для зануления вслепую), ORE (Object-aware, зануляем только части bounding box’ов), I+ORE (и там, и там). Существенной разницы по mAP между этими методами нет. По сравнению с чистым Fast-RCNN, дают порядка 5% (67->71 на VOC07, 70->75 на VOC07+12), столько же, сколько и A-Fast-RCNN. Оптимальные параметры — P_prob = 0.5, P_area = 0.02-0.2 (2-20%), P_aspect = 0.3-3.33 (от лежачей до стоячей полоски).

(С): Использовались ID-discim.Embedding (IDE), Triplet Net, и SVD-Net (все на базе ResNet, предобученной на ImageNet) на Market-1501 / DukeMTMC-reID / CUHK03. На всех моделях и датасетах аугментация стабильно даёт не менее 2% (до 8%) для Rank@1, и не менее 3% (до 8%) для mAP. Параметры те же, что и для (B).

В целом, несмотря на простоту метода, исследование и статья довольно аккуратные и подробные (10 страниц), с кучей графиков и таблиц. Порадовали китайцы, ничего не скажешь.

6. YellowFin and the Art of Momentum Tuning

→ Оригинал статьи
→ Дополнительный материал про momentum
Автор: Arech

Давно я её читал, поэтому очень-очень поверхностно: после вдумчивого курения свойств классического моментума (он же моментум Бориса Поляка), на одномерных строго выпуклых квадратичных целях чуваки вывели (или нашли у кого-то?) неравенство, связывающее коэффициенты learning rate и моментума так, чтобы они попадали в некий «робастный» регион, гарантирующий наибыстрейшее схождение алгоритма SGD. Потом показали(?), что оное утверждение в принципе может как-то выполняться и для некоторых невыпуклых функций, по крайней мере в некоторой их локальной области, которую можно более-менее апроксимировать квадратичным приближением. После чего решили запилить свой тюнер YellowFin, который на основании знания предыдущей истории изменения градиента, апроксимировал бы нужные для неравенства характеристики поверхности функции ошибки (дисперсия градиента, некая «обощённая» кривизна поверхности и расстояние до локального минимума квадратичной апроксимации текущей точки) и, с помощью этих апроксимаций, выдавал бы подходящие значения learning rate и моментума для использования в SGD.

Также, изучив вопрос асинхронной (распределённой) тренировки сетей, чуваки предложили обобщение своего метода (Closed-loop YellowFin), которое учитывает, что реальный моментум в таких условиях оказывается больше запланированного.

Тестировали свёрточные 110- и 164-слойные ResNet на CIFAR10 и 100 соответственно, и какие-то LSTM на PTB, TS и WSJ. Результаты интересные (от х1.18 до х2.8 ускорения относительно Адама), но, как обычно, есть вопросы к постановке эксперимента — грубый подбор коэффициентов для компетиторов, + емнип, только один прогон на каждую архитектуру, + показаны результаты только тренировочного набора… Короче, есть к чему докопаться…

Как-то так, надеюсь, по деталям не сильно наврал.

Я подумывал запилить его к своей либине, но крепко влип в Self-Normalizing Neural Networks (SELU+AlphaDropout), которыми занялся чуть раньше и которые оказались мне крайне полезны, поэтому пока руки не дошли. Слежу за тем тредом в Lesagne (https://github.com/Lasagne/Lasagne/issues/856 — у человека возникли проблемы с воспроизводством результатов) и вообще, надеюсь, что будет больше инфы по воспроизводству их результатов. Так что если кто попробует — делитесь чокак.

7. The Devil is in the Decoder

→ Оригинал статьи
Автор: ternaus

Вопрос с тем, какой UpSampling лучше для различных архитектур, где есть Decoder, теребит умы многих, особенно тех, кто борется за пятый знак после запятой в задачах сегментации, super resolution, colorization, depth, boundary detection.

Ребята из Гугла и UCL заморочились и написали статью, где эмпирическим путем решили проверить кто лучше и найти в этом логику.

Проверили — выяснилось, что разница есть, но логика не очень просматривается.

Для сегментации:

[1] Transposed Conv = Upsampling + Conv и который все яростно используют в Unet норм.
[2] добрасывание skiped connections, то есть, трансформация SegNet => Unet железобетонно добрасывает. Это интуитивно понятно, но тут есть циферки.
[3] Такое ощущение, что Separable Transposed, которое Transposed, но с меньшим числом параметоров для сегментации, работает лучше. Хотелось бы, чтобы народ в #proj_cars это проверил.
[4] Хитроумный Bilinear additive Upsampling, который они предложили, на сегментации работает примерно как [3]. Но это тоже в сторону коллектива из #proj_cars проверить
[5] Они добрасывают residual connections куда-то, что тоже в теории может что-то добавить, но куда именно — не очень понятно, и добрасывает очень неуверенно и не всегда.

Для задач сегментации они используют resnet 50 как base и потом сверху добавляют decoder.

Для задачи instance boundary detection они решили выбрать метрику, при которой меньше оверфитишь на алгоритм разметки + циферки побольше получаются.
То есть, During the evaluation, predicted contour pixels within three from ground truth pixels are assumed to be correct. Что сразу ставит вопрос о том, как это все переносится на задачи, где важен каждый пиксель. (Тут вспоминается Костин трюк со спутников для поиска заборов толщиной в один пиксель и то, как народ борется за +-1 пиксель на границах в задаче про машинки)

[6] У всех сетей, что они тренируют, у весов используется L2 регуляризация порядка 0.0002
Карпатый, вроде, тоже в свое время говорил, что всегда так делает для более стабильной сходимости. (Это мне надо попробовать, если кто так делает и это дает что-то заметное, было бы неплохо рассказать об этом в тредике)

Summary:
[1] Вопрос о том, кто и когда лучше они подняли, но не ответили.
[2] Они предложили еще один метод делать Upsampling, который работает не хуже других.
[3] Подтвердили, что skipped connection однозначно помогают, а residual — в зависимости от фазы луны.

Ждем месяц, о том, что скажет человеческий GridSearch на #proj_cars.

8. Improving Deep Learning using Generic Data Augmentation

→ Оригинал статьи
Автор: egor.v.panfilov{at}gmail{dot}com

Эпиграф: Лавры китайцев не дают покоя никому, даже на чёрном континенте. Хороших компьютеров, правда, пока не завезли, но Тернаус велел писать, «и вот они продолжают».

Авторы попытались провести бенчмарк методов аугментации изображений на задаче классификации изображений, и выработать рекомендации по их использованию для различных случаев. В первом приближении, данные методы разделить на 2 категории: Generic (общеприменимые) и Complex (использующие информацию о домене / генеративные). В данной статье рассматриваются только Generic.

Все эксперименты в статье проводились на Caltech-101 (101 класс, 9144 изображения) с использованием ZFNet (половина информативной части статьи о том, как лучше всего обучить ванильную ZFNet). Обучали 30 эпох, используя DL4j. Рассматриваемые методы аугментации: (1) без аугмен-ции, (2-4) геометрические: horizontal flipping, rotating (-30deg и +30deg), cropping (4 угловых кропа), (5-7) фотометрические: color jittering, edge enhacement (добавляем к изображению результат фильтра Собеля), fancy PCA (усиливаем principal компоненты на изображениях).

Результаты: к бейзлайну (top1/top5: 48.1%/64.5%) (a) flipping даёт +1/2%, но увеличивает разброс точности, (b) rotating даёт +2%, (с) cropping даёт +14%, (d) color jittering +1.5/2.5%, (d-e) edge enhancement и fancy PCA по +1/2%. Т.е. среди геометрических методов впереди cropping, среди фотометрических — color jittering. В заключении авторы пишут, что существенное улучшение точности при аугментации cropping’ом может быть связано с тем, что датасет получается в 4 раза больше исходного (сбалансировать-то не судьба). Из положительного — не забыли 5-fold кросс-валидацию при оценке точности моделей. Почему были выбраны конкретно эти методы аугментации среди других (в т.ч. более популярных) узнаем, видимо, в следующей статье.

9. Learning both Weights and Connections for Efficient Neural Networks

→ Оригинал статьи
Автор: egor.v.panfilov{at}gmail{dot}com

Статья рассматривает проблему выского потребления ресурсов современными архитектурами DNN (в частности, CNN). Самый главный бич — это обращение к динамической памяти. Например, инференс сети с 1 млрд связей на 20Гц потребляет ~13Вт.

Авторы предлагают метод снижения числа активных нейронов и связей в сети — prunning. Работает следующим образом: (1) обучаем сеть на полном датасете, (2) маскируем связи с весами ниже определённого уровня, (3) дообучаем оставшиеся связи на полном датасете. Шаги (2) и (3) можно и нужно повторять несколько раз, так как агрессивный (за 1 подход) prunning показывает результаты немного хуже (для AlexNet на ImageNet, например, 5x против 9x). Хитрости: использовать L2-регуляризацию весов, при дообучении уменьшать dropout, уменьшать learning rate, прунить и дообучать CONV и FC слои раздельно, выкидывать мёртвые (non-connected) нейроны по результатам шага (2).

Эксперименты производились в Caffe с сетями Lenet-300-100, Lenet-5 на MNIST, AlexNet, VGG-16 на ImageNet. На MNIST: уменьшили число весов и FLOP’ов в 12 раз, а также обнаружили, что prunning проявляет свойство механизма attention (по краям режет больше). На ImageNet: AlexNet обучали 75 часов и дообучали 173 часа, VGG-16 прунили и дообучали 5 раз. По весам удалось сжать в 9 и 13 раз соответственно, по FLOP’ам — в 3.3 и 5 раз. Интересен профиль того, как прунятся связи: первый CONV-слой ужимается меньше чем в 2 раза, следующие CONV — в 3 и более (до 12), скрытые FC — в 10-20 раз, последний FC слой — в 4 раза.

В заключение, авторы приводят результаты сравнения различных методов prunning’а (с L1-, L2-регуляризацией, с дообучением и без, отдельно по CONV, отдельно по FC). Вкратце, есть лень прунить, то учите сеть с L1, и половину слоёв можно просто выкинуть. Если не лень — только L2, прунить и дообучать итеративно ~5 раз. И последнее, хранение весов в sparse виде у авторов давало overhead в ~16% — не то чтобы критично, когда у вас сеть в 10 раз меньше.
image

10. Focal Loss for Dense Object Detection

→ Оригинал статьи
Автор: kt{at}ut{dot}ee

Как известно, процесс поиска моделей в машинном обучении упирается в оптимизацию некой целевой функции потерь. Самая простая функция потерь — процент ошибок на тренинг-сете, но её оптимизировать сложно и результат статистически плох, поэтому на практике используют разные суррогатные лоссы: квадрат ошибки, минус логарифм вероятности, экспонента от минус скора, hinge loss и т.д. Все суррогатные лоссы являются монотонными функциями, штрафующими ошибки тем больше, чем больше величина ошибки. Любой лосс можно интерпретировать как вид распределения целевой переменной (например, квадрат ошибок соответствует гауссовому распределению).

Авторы работы обнаружили, что суррогатный лосс вида

loss(p, y) := -(1-p)^gamma log(p) if y == 1 else -p^gamma log(1-p)

ещё нигде не использовался и не публиковался. Зачем нужно использовать именно такой лосс, а не ещё какой-нибудь, и каков смысл подразумеваемого распределения, авторы не знают, но им он кажется прикольным, т.к. здесь есть лишний параметр gamma, с помощью которого можно как будто бы подкручивать величину штрафа «легким» примерам. Авторы назвали эту функцию «focal loss».

Авторы подобрали один набор данных и одну модель-нейросеть на которых, если подогнать значения параметра, в табличке результатов виден якобы некий положительный эффект от использования такого лосса вместо обычной кросс-энтропии (взвешенной по классам). На самом деле, большая часть статьи жует вопросы применения RetinaNet для детекции объектов, не сильно зависящие от выбора лосс-функции.

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

Альтернативное мнение
Следи за руками: чуваки взяли один из стандартных, довольно сложных датасетов, на которых меряются в детекции, взяли простенькую сеть без особых наворотов (то из чего все другие уже пробовали выжать сколько могли), приложили свой лосс и получили сходу результат single model без мультскейла и прочих трюков выше чем все остальные на этом датасете, включая все сети в одну стадию и более продвинутые двухстадийные. Чтобы убедиться, что дело в лоссе, а не чём-то ещё, они попробовали другие варианты, которые до этого были крутыми и модными техниками — балансирование кросс-энтропии, OHEM и получили результат стабильно выше на своём. Покрутили параметры своего и нашли вариант, который работает лучше всех и даже попробовали чуток объяснить почему (там есть график, где видно что гамма ниже 2 даёт довольно гладкое распределение, а больше двух уж очень резко штрафует (даже при двух там практически полка, удивительно что работает)).

Конечно, можно было им начать сравнивать 40 вариантов сетей, с миллионом вариантов гиперпараметров и на всех известных датасетах, да ещё и кроссвалидацию 10 раз по 10 фолдов, но сколько бы это времени тогда заняло и когда была бы публикация готова и сколько бы там было разных идей?

Тут всё просто — изменили один компонент, получили результат превосходящий SoTA на конкретном датасете. Убедились, что результат вызван изменением, а не чем-то ещё. Fin.

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

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

В любом случае, я для себя никак не могу вынести из этой статьи обещанный в заглавии и тексте тезис «вкручивайте такой лосс везде и будет вам счастье».

Тезис «RetinaNet хорошо работает на COCO (с любым лоссом, причем!)» я, при этом, вынести вполне могу.

11. Borrowing Treasures from the Wealthy: Deep Transfer Learning through Selective Joint Fine-tuning

→ Оригинал статьи
→ Код
Автор: movchan74

image

Авторы сосредоточились на проблеме классификации изображений с небольшим датасетом. Типичный подход в таком случае следующий: взять предобученную CNN на ImageNet и дообучить на своем датасете (или даже дообучить только классификационные полносвязный слои). Но при этом сеть быстро переобучается и достигает не таких значений точности, каких хотелось бы. Авторы предлагают использовать не только целевой датасет (target dataset, мало данных, далее буду называть датасет T), но и дополнительный исходный датесет (source dataset, далее буду называть датасет S) с большим количеством изображений (обычно ImageNet) и обучать мультитаск на двух датасетах одновременно (делаем после CNN две головы по одной на датасет).

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

Получаем следующий фреймворк:

  1. Берем два датасета: S и T. T — датасет с малым количеством примеров, для которого нам необходимо получить классификатор, S — большой вспомогательный датасет (обычно ImageNet).
  2. Выбираем подмножество изображений из датасета S, такое, что изображения из подмножества близки к изображениям из целевого датасета T. Как именно выбирать близкие рассмотрим далее.
  3. Учим мультитаск сеть на датасете T и выбранном подмножесте S.

Рассмотрим как предлагается выбирать подмножество датасета S. Авторы предлагают для каждого семпла из датасета T находить некоторое количество соседей из S и учиться только на них. Близость определяется как расстояние между гистограммами низкоуровневых фильтров AlexNet или фильтров Габора. Гистограммы берутся, чтобы не учитывать пространственную составляющую.

Объяснение, почему берутся низкоуровневые фильтры, приводится следующее:

  1. Получается лучше обучить низкоуровневые сверточные слои за счет большего количества данных, а качество этих низкоуровневых фич определяет качество фич более высоких уровней.
  2. Поиск похожих изображений по низкоуровневым фильтрам позволяет находить намного больше семплов для тренировки, т.к. семантика почти не учитывается.
    Мне, если честно, эти объяснения не очень нравятся, но в статье так. Может я конечно что-то не понял или понял не так. Это все описано на 2 странице после слов «The motivation behind selecting images according to their low-level characteristics is two fold».

Еще из особенностей поиска близких изображений:

  1. Гистограммы строятся так, чтобы в среднем по всему датасету в один бин попадало примерно одинаковое количество.
  2. Расстояние между гистограммами считается с помошью KL-дивергенции.

Авторы попробовали разные сверточные слои AlexNet и фильтры Габора для поиска близких семплов, лучше всего получилось если использовать 1+2 сверточные слои из AlexNet.

Также авторы предложили итеративный способ подбора количества похожих семплов из датасета S для каджого семпла из T. Изначально берем некоторое заданое число ближайших соседей для каждого отдельного семпла из T. Затем прогоняем обучение, и если ошибка для семпла большая, то увеличиваем количество ближайших соседей для этого семпла. Как именно производится увеличение ближайших соседей понятно из уравнения 6.

Из особенностей обучения. При формировании батча случайно выбираем семплы из датасета T, и для каждого выбранного семпла берем одного из его ближайших соседей.

Проведены эксперименты на следующих датасетах: Stanford Dogs 120, Oxford Flowers 102, Caltech 256, MIT Indoor 67. На всех датасетах получены SOTA результаты. Получилось поднять точность классфикации от 2 до 10% в зависимости от датасета.

12. Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks

→ Оригинал статьи
→ Код
Автор: repyevsky{at}gmail{dot}com
Статья про мета-обучение: авторы хотят научить модель объединять свой предыдущий опыт с малым количеством новой информации для решения новых заданий из некоторого общего класса.

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

В качество бенчмарка для классификации используются два датасета: Omniglot и miniImagenet. В первом рукописные буквы из нескольких алфавитов — всего около 1600 классов, 20 примеров на класс. Во втором 100 классов из Imagenet — по 600 картинок на класс. Ещё есть раздел про RL, но его я не смотрел.

Перед обучением все классы разбиваются на непересекающиеся множества train, validation и test. Для проверки, из test-классов (которые модель не видела при обучении) выбирается, например, 5 случайных классов (5-way learning). Для каждого из выбранных классов сэмплится несколько примеров, лейблы кодируются one-hot вектором длины 5. Дальше примеры для каждого класса делятся на две части A и B. Примеры из A показываются модели с ответами, а примеры из B используются для проверки точности классификации. Так формируется задание. Авторы смотрят на accuracy.

Таким образом, нужно научить модель адаптироваться к новому заданию (новому набору классов) за несколько итераций/новых примеров.

В отличии от предыдущих работ, где для этого пытались использовать RNN или feature embedding с непараметрическими методами на тесте (вроде k-ближайших соседей), авторы предлагают подход, позволяющий настроить параметры любой стандартной модели, если она обучается градиентными методами.

Ключевая идея: обновлять веса модели так, чтобы она давала лучший результат на новых заданиях.

Интуиция: внутри модели получатся универсальные для всех классов датасета представления входных данных, по которым модель сможет быстро подстроиться под новое задание.

Суть в следующем. Пусть мы хотим, чтобы наша модель F(x, p) обучалась новому заданию за 1 итерацию (1-shot learning). Тогда для обучения нужно из тренировочных классов подготовить такие же задания как на тесте. Дальше на примерах из части A мы считаем loss, его градиент и делаем одну итерацию обучения — в итоге получаем промежуточные обновленные веса p' = p - a*grad и новую версию модели — F(x, p'). Считаем loss для F(x, p') на B и минимизируем его относительно исходных весов p. Получаем настоящие новые веса — конец итерации. Когда считается градиент от градиента :xzibit:, появляются вторые производные.

На самом деле, генерируется сразу несколько заданий, объединеных в metabatch. Для каждого находится свой p' и считается свой loss. Потом все эти loss суммируются в total_loss, который уже минимизируется относительно p.

Авторы применили свой подход к базовым моделям из предыдущих работ (маленькие сверточная и полносвязная сети) и получили SOTA на обоих датасетах.

При этом, итоговая модель получается без дополнительных параметров для мета-обучения. Зато используется большое количество вычислений, в том числе из-за вторых производных. Авторы пробовали отбросить вторые производные на miniImagenet. При этом accuracy осталась почти такой же, а вычисления ускорились на 33%. Предположительно это связано с тем, что ReLU — кусочно-линейная функция и вторая производная у неё почти всегда нулевая.

Код авторов на Tensorflow. Там внутренний градиентый шаг делается вручную, а внешний с помощью AdamOptimizer.

За редактуру спасибо yuli_semenova.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Ошибка los на роутере ростелеком
  • Ошибка los на роутере huawei
  • Ошибка los на модеме белтелеком
  • Ошибка line 19363
  • Ошибка lol невозможно установить

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии