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

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

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

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

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

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

Домой меня подвёз один из сотрудников. На вопрос, где применяются такие краны, он ответил:
– Представь себе промышленный ветрогенератор, как, например, в ростовской области, в Европе... Да у него одна лопасть весит двенадцать тонн, а сам генератор – больше пятидесяти! Манипулятору с таким не справиться.
Ну, и, кроме того, чтобы отремонтировать такой кран, нужен... другой такой же кран, 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 bool engaged_clutches[][] = { 
  /* K1     K2     K3     K4     KV     KR  */
  [ false, false, false, false, false, false ],  // N
  [ true,  false, false, false, true,  false ],  // F1
  [ false, true,  false, false, true,  false ],  // F2
  [ false, false, true,  false, true,  false ],  // F3
  [ false, false, true,  true,  false, false ],  // F4
  [ true,  false, false, false, false, true  ],  // R1
  [ false, true,  false, false, false, true  ],  // R2
  [ false, false, true,  false, false, true  ],  // 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). Хотел привести примеры кода, но в итоге всё так разрослось, что проще словами.

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

Клапаны переключения передач
Клапаны переключения передач

Чтобы открыть клапан нужно подать 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 6WG260. Этот монстр ещё мощнее, и уже с шестью передними передачами.
Ну, что ж, коллеги, а вот и видео испытаний. Звук!

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

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

Комментарии (21)


  1. v1000
    18.02.2022 22:32

    В свое время был удивлен, когда узнал, что на Ауди, БМВ и Мерседес зачастую ставились одинаковые АКПП от ZF, с минимальными изменениями в зависимости от типа привода, ну и прошивки от самого автопроизводителя.

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

    С другой стороны, тот-же БМВ умудрялся ставить АКПП, для которой крутящий момент от двигателя был 90% от максимума, на который была расчитана АКПП. А затем выпускал новую модель, в которой мотор был мощнее, но при этом АКПП не менялся, и теперь крутящий момент был 100% от расчетного для данной АКПП.

    И владельцы новой модели БМВ вдруг начинали сталкиваться с массовым отказом АКПП. Удивительно, почему? (сарказм).


    1. PKav
      19.02.2022 14:51

      Значит производитель АКПП неправильно рассчитал ресурс и нагрузку. Вот если бы двигатель выдавал 110% от максимального крутящего момента - тогда да, косяк. А если максимальный момент 100% - то всё в пределах спецификации.
      И, опять же, двигатель, как правило, выдаёт лишь малую долю от своего возможного момента в процессе обычной езды. Поэтому тут что-то явно не так.


      1. denis-isaev
        19.02.2022 16:55
        +1

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

        Не на BMW :)


    1. collder
      21.02.2022 15:18

      Как вы правильно заметили у разных производителей разная прошивка в АКПП.

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

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

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


  1. GlebGleb
    18.02.2022 22:39

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


    1. Igr2 Автор
      19.02.2022 05:26

      Да, мы потом замедлили переключение, чтоб клапаны открывались более плавно.


      1. shindax
        19.02.2022 11:05

        Пропорциональное управление? Дополнительное железо над клапанами, или специальные модули для ПЛК? Ни тексте, ни на видео не упомянуто наименование самого ПЛК. Раз там CodeSys, то вряд-ли это Siemens, не Овен? Или кто там еще под него железо делает?


        1. Igr2 Автор
          20.02.2022 12:51

          Вот тут вы меня подловили.
          Для сокращения я написал, что ПЛК "якобы" управляет клапанами напрямую. Но в действительности напряжение сначала идёт на специальный конвертер, а он уже управляет клапанами.
          Дополнил комментариями и изменил схему. Спасибо, что внимательно читаете!
          Сначала мы просто открывали и закрывали клапаны в дискретном режиме. Но получалось громко, как на видео. Потом сделали плавное открывание в течении двух секунд.
          А ПЛК - это наш уральский Агава ПЛК 40. Вполне себе, для таких проектов самое то. Ещё у них модули расширения копеешные. Мы как раз, пока отлаживали, спалили парочку.


      1. Kotman
        19.02.2022 16:37

        Похоже кнопки включния передач маловаты на экране. Есть смысл сдвинуть вправо указатели и укрупнить кнопки.


  1. Olegun
    19.02.2022 07:44

    Вот тут непонятно:

    KD - kickdown control - предохранитель от случайного нанажатия

    Таки это - сброс на нижнюю передачу или предохранитель? Для чего эта кнопка применяется?


    1. Igr2 Автор
      19.02.2022 08:51

      Вы правы, это сброс на нижнюю передачу. Про предохранитель что-то сам придумал. Исправлю.


    1. Kotman
      19.02.2022 15:38

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

      На легковых было так.


  1. Chupakabra303
    19.02.2022 11:01

    Что за контроллер, что за HMI панель?


    1. Igr2 Автор
      20.02.2022 12:46

      Агава ПЛК 40.


  1. corvair
    19.02.2022 16:01

    Конструктивно это вальная АКПП типа как на ЛиАЗ-677 и "Хонде"?

    Ещё когда-то удивился, узнав, что гидротрансформатор используется в гусеничном кране (экскаваторе) Э-10011, ЭО-5111Б, стоит между двигателем и трансмиссией, защищает механизмы от ударных нагрузок и именно ему обязаны эти машины своим огромным ресурсом. И механизмы там тоже весьма сложные.


    1. sneg2015
      19.02.2022 22:41

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


      1. Nansen09
        19.02.2022 23:53

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

        И на совсем не представительские, внедорожники например. Да на многие прочие, ибо любая гидромеханическая АКПП имеет в своём составе гидротрансформатор.

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

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

        Требования к рабочей жидкости достаточно обычные для трансмиссионных масел. Знающие люди с определёнными запросами к технике льют АКППшное масло в механические КПП, ибо только польза коробке.


      1. sva89
        20.02.2022 00:08

        И не только старые. Даже последние M5 и RS6 используют ZF с гидротрансформатором.


  1. megabyte1024
    19.02.2022 22:22

    В начале статьи перепутаны понятия "шестерня" и "сцепление", например,

    нужно задействовать две шестерни из шести (engaged cluthes)

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


    1. Igr2 Автор
      20.02.2022 12:46
      +1

      Спасибо, исправил.


  1. Wesha
    19.02.2022 23:26
    +1

    Узнаю Русь-матушку: на экране дисплея гордо сияет защитная транспортировочная плёнка, в углу которой огромная надпись: УДАЛИТЬ ПЛЁНКУ

    у вас пульт ДУ от телевизора всё ещё в транспортировнчом пакетике? :)