Как стать автором
Обновить

Запускаем стенд испытаний коробок передач

Время на прочтение7 мин
Количество просмотров12K

После просмотра «Форд против Феррари» мы с женой вышли из кинотеатра под первый снег ноябрьским вечером. Глаза у меня горели, руки чесались. И пронеслась мысль: «Вот это да! Вот бы что-то такое поизобретать. Всякое инженерное, чтоб рёв мотора, гарь бензина и масло во все стороны!».

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

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

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

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

Ну, что ж, задача ясна (подумал я тогда).

Домой меня подвёз один из сотрудников. На вопрос, где применяются такие краны, он ответил:
– Представь себе промышленный ветрогенератор, как, например, в ростовской области, в Европе... Да у него одна лопасть весит двенадцать тонн, а сам генератор – больше пятидесяти! Манипулятору с таким не справиться.
Ну, и, кроме того, чтобы отремонтировать такой кран, нужен... другой такой же кран, ho-ho-ho!

Вечером вместо совместного с женой просмотра сериалов Интернет открыл для ̶н̶а̶с̶ меня дивный мир коробок передач.

Коробка передач - что ты такое?

Коробки, о которых пойдёт речь, произведены компанией ZF (в оригинале «Zahnradfabrik Friedrichshafen», но сокращено до аббревиатуры ZF в связи с тем, что (как оказалось) для иностранцев название было совершенно непроизносимым). Это немецкий производитель запчастей для автомобилей, тракторов, поездов и даже самолетов. Кстати, праотцом-основателем ZF считается Фердинанд Адольф Август Цеппелин. Да-да, тот самый Цеппелин, создавший в своё время целую отрасль дирижаблестроения.

Первые КПП применяли как раз для дирижаблей, а позже они начали появляться во всевозможных транспортных средствах, в том числе и в автокранах.
На этом историческая ремарка заканчивается, и перейдём к делу. Будем рассматривать КПП ZF 4WG210 на стыке программирования и жестокой реальности.

Ожидание:

int gearBox(int engine_speed, int gear)
{
  /* Скорость на выходе КПП равна 
   * произведению скорости двигателя на передачу 
  */
  return engine_speed * gear;
}

Реальность:

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

Глянем в мануал: ZF 4WG210 имеет 4 передние передачи и 3 задние. Три задних... Неплохо, да? Читаем дальше: у каждой передачи есть своё передаточное число:

Значит скорость двигателя умножаем не на порядковый номер передачи, а на эту переменную:

typedef enum
{
    gear_N,  /* neutral */
    gear_F1, /* forward */
  	gear_F2,
  	gear_F3,
  	gear_F4,
    gear_R1, /* reverse */
  	gear_R2,
  	gear_R3,

    GEAR_ITEMS
} gear_type;

const float speed_ratio[] = [  0.000,  /* N  */
                               0.275,  /* F1 */
                               0.479,  /* F2 */
                               0.933,  /* F3 */
                               1.572,  /* F4 */
                              -0.290,  /* R1 */
                              -0.505,  /* R2 */
                              -0.983]; /* R3 */

float gearBox(float engine_speed, gear_type gear)
{
  /* Скорость на выходе КПП равна произведению 
   * скорости двигателя на коэффициент передачи
  */
  return engine_speed * speed_ratio[ gear ];
}

Но откуда берутся эти передаточные коэффициенты? От переключения между сцепляющими шестернями с разным радиусом:

На нашей КПП шесть сцеплений (cluthes), для каждой передачи два из них должны быть включены одновременно (engaged cluthes):

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

\begin{cases}K_1 * K_V = 0.275\\K_2 * K_V = 0.479\\K_3 * K_V = 0.933\\K_4 * K_3 = 1.572\\K_1 * K_R = -0.290\\K_2 * K_R = -0.505\\K_3 * K_R = -0.983\\\end{cases}\begin{cases}K_1 = 0.329\\K_2 = 0.574\\K_3 = 1.118\\K_4 = 1.406\\K_V = 0.835\\K_R = -0.880\\\end{cases}

Добавляем массив с коэффициентами и комбинациями включения сцеплений:

                             /*  K1     K2     K3     K4     KV      KR  */
const float clutch_ratio[] = [ 0.329, 0.574, 1.118, 1.406, 0.835, -0.880 ];

const int engaged_clutches[][] = { 
  /* K1 K2 K3 K4 KV KR  */
  [  0, 0, 0, 0, 0, 0 ],  /* N  */
  [  1, 0, 0, 0, 1, 0 ],  /* F1 */
  [  0, 1, 0, 0, 1, 0 ],  /* F2 */
  [  0, 0, 1, 0, 1, 0 ],  /* F3 */
  [  0, 0, 1, 1, 0, 0 ],  /* F4 */
  [  1, 0, 0, 0, 0, 1 ],  /* R1 */
  [  0, 1, 0, 0, 0, 1 ],  /* R2 */
  [  0, 0, 1, 0, 0, 1 ],  /* R3 */
};

Теперь дополним алгоритм КПП:

float gearBox(float engine_speed, gear_type gear)
{
  float output_speed = 0;
  
  /* Перебираем все сцепления на включенной передаче */
  for (int clutch = 0; clutch < CLUTCH_ITEMS; clutch++) {
    /* Если сцепление задействовано */
  	if (engaged_clutches[ gear ][ clutch ]) {
      /* Умножаем текущую скорость на коэффициент этого сцепления */
    	output_speed = ( engine_speed *= clutch_ratio[ clutch ] );
    }
  }

  return output_speed;
}

Также некоторые КПП имеют гидротрансформатор (torque_converter) и возможность его блокировки. Гидротрансформатор - это что-то типа сцепления между валом двигателя (engine_speed) и внутренним валом коробки (inner_shaft_speed). Но сцепление это не жёсткое: один вал крутит другой за счёт потока масла между турбинами.

Поэтому такое сцепление предотвращает резкие нагрузки на двигатель, добавляет инерции. Но если всё таки нужно жесткое зацепление валов друг за друга, то как раз можно и применить блокировку. Это позволяет увеличить КПД при передаче крутящего момента.

Не будем подробно выводить формулу гидротрансформатора, просто добавим этот параметр в общих чертах:

float gearBox(float engine_speed, gear_type gear, bool converter_block)
{
  float output_speed = 0, inner_shaft_speed = 0;

  /* Если включена блокировка гидротрансформатора */
  if (converter_block)
    inner_shaft_speed = engine_speed; /* Жёсткое зацерление */
  else
    inner_shaft_speed = torque_converter( engine_speed );

  /* Перебираем все сцепления на включенной передаче */
  for (int clutch = 0; clutch < CLUTCH_ITEMS; clutch++) {
    /* Если сцепление задействовано */
    if (engaged_clutches[ gear ][ clutch ]) {
      /* Умножаем текущую скорость вала на коэффициент этого сцепления */
    	output_speed = ( inner_shaft_speed *= clutch_ratio[ clutch ] );
    }
  }

  return output_speed;
}

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

/* Задаём скорость двигателя */
engine_speed = frequency_converter( target_speed );

/* Управляем скоростью через КПП */
output_speed = gearBox( engine_speed, gear, converter_block );

Ну, вот, разобрались. Здесь мы рассмотрели так сказать математическую модель стенда испытаний. Теперь подключим коробку и двигатель к ПЛК.

Подключаемся

Программа была написана в хорошо известном для АСУТП-шников CodeSys на языке ST (очень похож на Pascal). Хотел привести примеры кода, но в итоге всё так разрослось, что проще словами.

Каждому сцеплению K1..KR соответствует свой электроклапан Y1..Y6 (он же соленоид, он же «шифтовик»).

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

Чтобы открыть клапан нужно подать 10 Вольт, чтобы закрыть - 0 Вольт. Здесь клапаны типа ШИМ, поэтому можно применять плавное открытие.

Но есть нюанс. В действительности напряжение с ПЛК сначала попадает на специальный конвертер, а он в свою очередь управляет клапанами по какой-то своей схеме с обратной связью.

Каждому клапану соответствует свой датчик давления. Норма - 16Bar при включенном клапане. Датчики мониторятся по току 4..20мА.
У частотного преобразователя есть внешний вход 0..10В для управления скоростью, а текущая скорость считывается так же по току 4..20мА.

На коробке блок клапанов и датчиков давления выглядит так:

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

Здесь:
- движение вперёд
- движение назад
N - нейтраль
+ - переключение на одну передачу вверх
- переключение на одну передачу вниз
KD - kickdown control - принудительное переключение на пониженную передачу.

Нарисуем нечто подобное на панели управления и добавим управление двигателем:

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

  1. Сначала запускаем двигатель. Необходимо набрать оборотов 600-700.

  2. Ждём пока масло разогреется. Хотя бы градусов 40 пойдёт. При этом нагнетается давление для управления клапанами.

  3. Теперь можно нажать на кнопку переключения передачи. Включаем! 

  4. Плавно открывается нужная пара клапанов. Для первой передачи это Y3 и Y5. Проверяем, что клапаны включились: давление на них должно быть около 16Bar.

  5. При переключении на следующую передачу сначала происходит переключение на нейтраль: плавно закрываются все открытые клапаны. Проверяем давление - всё должно быть по нулям.

  6. Включаем следующую пару клапанов.

На панели управления сей процесс выглядел так:

Дизайнер за́пил, не судите строго.
Дизайнер за́пил, не судите строго.

При переключении с переднего хода на задний и обратно надо сначала убедиться, что ось центральной передачи полностью остановилась. Вспоминается, как «Разрушители мифов» пробовали включить заднюю передачу на полном ходу на автоматической КПП. Аварии не произошло, ведь на то он и автомат.

Самое интересное

Пока писал статью 4WG210 уже починили и увезли. Но приехала ZF 6WG310. Этот монстр ещё мощнее, и уже с шестью передними передачами.
Ну, что ж, коллеги, а вот и видео испытаний. Звук!

P.S. Старые зубры АСУТП подумают: «Пфф, нашёл о чём писать... Я таких проектов по два в день делаю». Не спорю: получилось минимум кода, но и максимум удовольствия! Ведь даже в таком простом проекте присутствовала та самая магия превращения виртуального в реальное.

Используемые материалы: e-cran.ru

Теги:
Хабы:
Всего голосов 47: ↑47 и ↓0+47
Комментарии21

Публикации