Привет, Хабр!

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

Установка для монтажа изделий электронной техники
Установка для монтажа изделий электронной техники

Работа подобной установки:

Видео ролики

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

Меня зовут Дмитрий, мне 41 год, последние 7 лет работаю в Германии на одной из фирм, производящих оборудование, указанное в 1м абзаце. Являюсь тимлидом группы, занимающейся разработкой встроенного программного обеспечения для контроллера управления фирмы Elmo Motion Control на языке С++. А также в рамках магистерской диссертации разрабатывал методы распознавания изображений (электронных компонентов) в системах технического зрения. Возможно, в одной из статей освещу и эту тему.

Вот сам контроллер:

Master-контроллер Platinum Maestro фирмы Elmo
Master-контроллер Platinum Maestro фирмы Elmo

https://www.elmomc.com/product/platinum-maestro/

Platinum Maestro является контроллером, обеспечивающим интерфейс доступа к внутренней сети управления машиной для управляющей программы из внешней TCP/IP сети.

Внутренняя сеть - шина EtherCAT, обеспечивает обмен данными управления и обратной связи между master-контроллером и slave-контроллерами приводов (драйверами), модулями аналоговых и цифровых портов ввода-вывода.

Отдельно о шине EtherCAT можно посмотреть здесь:

Видео, ссылка

Под интерфейсом доступа понимается программная библиотека c API от Elmo, модули которой обеспечивают трансляцию переданных вызывающей программой входных данных в команды управления устройствами на шине. Библиотека написана на языке С/С++ и поставляется Elmo в виде динамических библиотек в двух вариантах – для Windows и Linux. Версия под Linux используется для создания программ как на базе внешнего по отношению к master-контроллеру x86 под управлением ОС Linux, так и для запуска на самом master-контроллере Platinum Maestro.

Для знакомых с TwinCAT или Codesys – Platinum Maestro является (самым) компактным промышленным компьютером для выполнения тех же самых функций – конфигурирования топологии шины EtherCAT и управления устройствами на ней в реальном времени. Плюсом является интеграция в корпус любой даже самой требовательной к габаритам установки и собственная алгоритмическая база для обеспечения интеллектуального смешивания движений, наложенных движений, сплайнового профилирования многоосевых движений с высокой точностью, – встроенная и поставляемая сразу без дополнительных условий (или докупаемых модулей) вместе с контроллером. Кроме С++ доступна библиотека для .NET, модули для интеграции в MATLAB Simulink, собственная среда разработки и удаленной отладки программ на С++ на базе Eclipse, примеры программирования и колоссально отзывчивая техническая поддержка. Это не реклама, а опыт взаимодействия.

Интерфейс программы для настройки топологии сети EtherCAT и устройств к ней подключенных будет темой одной из последующих статей. Называется программа Elmo Application Studio II, или EASII, и аббревиатура действительно соответствует ожиданиям – она проста и одновременно удивительно функциональна.

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

 Для начала, что установка из себя представляет с точки зрения топологии подключения устройств управления и контроля.

Пример топологии сети установки с 1-го фото
Пример топологии сети установки с 1-го фото

Розовым цветом выделена внутренняя шина EtherCAT, зеленым – внешняя TCP/IP.

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

Теперь подробнее о библиотеке, обеспечивающей доступ к устройствам на шине EtherCAT.

  1. Архив скачивается с официального сайта

  2. После разархивирования вы получаете папку includes с заголовочными файлами С++, и две папки с бинарными файлами библиотеки – lib и libwin32.

Теперь можно отобразить простейший код подключения к master-контроллеру Maestro Platinum:

// Windows:
CMMCConnection m_cConn;
MMC_CONNECT_HNDL m_gConnHndl;
m_gConnHndl = m_cConn.ConnectRPCEx("192.168.35.10", "192.168.35.4", 0x7fffffff, 
                                   reinterpret_cast<MMC_MB_CLBK>(CallbackFunc));
// Linux:
m_gConnHndl = m_cConn.ConnectIPCEx(0x7fffffff, reinterpret_cast<MMC_MB_CLBK>(CallbackFunc));

Под Windows: первый IP-адрес является адресом master-контроллера на стороне TCP/IP, второй - адресом сетевой карты компьютера, подключенной к той же шине.

Под Linux: указание IP адресов не требуется.

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

Функция обратного вызова CallbackFunc – нужна для обратной связи и получения информации об асинхронных событиях, генерируемых библиотекой. Хотя есть и более удобный инструмент – возможность зарегистрировать функции обратного вызова для основных событий по отдельности. Делается это так:

m_cConn.RegisterEventCallback(MMCPP_HOME_ENDED, (void*)HomeEnded_Received);
m_cConn.RegisterEventCallback(MMCPP_MOTIONENDED, (void*)MotionEnded_Received);
m_cConn.RegisterEventCallback(MMCPP_FB_NOTIFICATION, (void*)FBNotifyEvent_Received);
m_cConn.RegisterEventCallback(MMCPP_PDORCV, (void*)PDO_Received);
m_cConn.RegisterEventCallback(MMCPP_HBEAT, (void*)HeartBeat_Received);
m_cConn.RegisterEventCallback(MMCPP_EMCY, (void*)EmergencyEvent_Received);
m_cConn.RegisterEventCallback(MMCPP_MODBUS_WRITE, (void*)ModbusWrite_Received);
m_cConn.RegisterEventCallback(MMCPP_ASYNC_REPLY, (void*)AsyncReplyEvent_Received);
m_cConn.RegisterEventCallback(MMCPP_GLOBAL_ASYNC_REPLY, (void*)GlobalAsyncReply_Received);
m_cConn.RegisterEventCallback(MMCPP_TOUCH_PROBE_ENDED, (void*)TouchProbeEndEvent_Received);
m_cConn.RegisterEventCallback(MMCPP_NODE_ERROR, (void*)NodeErrorEvent_Received);
m_cConn.RegisterEventCallback(MMCPP_STOP_ON_LIMIT, (void*)StopOnLimit_Received); 
m_cConn.RegisterEventCallback(MMCPP_TABLE_UNDERFLOW, (void*)TableUnderflowEvent_Received);
m_cConn.RegisterEventCallback(MMCPP_NODE_CONNECTED, (void*)NodeConnectedEvent_Received);
m_cConn.RegisterEventCallback(MMCPP_NODE_INIT, (void*)NodeInitEvent_Received);
m_cConn.RegisterEventCallback(MMCPP_POLICY_ENDED, (void*)PolicyEndedEvent_Received);

Где, например, первая – вызывается, когда любой из моторов выполнит команду поиска нуля:

void HomeEnded_Received(unsigned short usAxisRef, short sErrCode,...)
{
			ldbg << "home ended for axis " << usAxisRef << endl;	
  		//.....
}

Single Axis Motion

Теперь возникает вопрос – что дальше? Вам нужно включить воображение, и представить, что на шине EtherCAT «висит» контроллер управления сервоприводом от Elmo, например КМ1 в левом верхнем углу нашей диаграммы. Выглядит он так - https://www.elmomc.com/servo-drives/ или любого другого производителя. Вы хотите выполнить одномерное движение - заставить этот мотор переместить управляемый им объект из положения А (сейчас) в положение Б (новая координата) с какой-то скоростью. В установке это будет равносильно перемещению, например, инструмента из левого положения в правое в рабочем пространстве.

MMC_MOVEABSOLUTEEX_IN in;
MMC_MOVEABSOLUTEEX_OUT out;
in.dAcceleration = m_ParamsMoveUU.dAcceleration;
in.dDeceleration = m_ParamsMoveUU.dDeceleration;
in.dJerk = m_ParamsMoveUU.dJerk;
in.dVelocity = m_ParamsMoveUU.dVelocity;
in.dbPosition = PositionToUU(target);
in.eBufferMode = m_ParamsMoveUU.eBufferMode;
in.eDirection = m_ParamsMoveUU.eDirection;
in.ucExecute = 1;

int rc = getGmasController()->wrp_MMC_MoveAbsoluteExCmd(*this, ref, &in, &out);
if (rc != 0)
{
	if (out.usErrorID == 1009) // already there
	{
		MotorRunning(0);
		EVENT->Trigger_MotionEnded(ref, true);
		m_smHelper->SetSubState(2,st_DONE);
		return st_DONE;
	}
	else
	{
		GMASERROR(out.usErrorID);
		return st_ERROR;
	}
}

Где MMC_MOVEABSOLUTEEX_IN – структура с параметрами команды, задающими новую координату, максимальную скорость, ускорение – в единицах, указанных при конфигурировании системы.

MultiAxis Vector Motion

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

Таким образом, код подготовки команды для движения группы осей будет отличаться от команды для одномерного движения только тем, что каждая координата in.dbPosition – это вектор состоящий из координат каждой из осей группы, а параметры in.dVelocity, in.dAcceleration и т.п. – скорость и ускорение перемещаемого объекта. Встроенный алгоритм контроллера рассчитает линейную скорость каждой из осей так чтобы соблюсти заданные условия и обеспечить плавное движение объекта, в том числе при огибании точек траектории.

// v_Trajectory - вектор 
// 
for (size_t idx=0; idx < v_Trajectory.size(); idx++)
{
  cMMC_MOTIONPARAMS_GROUP par = v_Trajectory[idx];
  
  MMC_MOVELINEARABSOLUTE_IN in;
  MMC_MOVELINARABSOLUTE_OUT out;
  in.fAcceleration = par.fAcceleration;
  in.fDeceleration = par.fDeceleration;
  in.fVelocity = par.fVelocity;
  in.fJerk = par.fJerk;
  // how to interpolate the corners?
  in.eTransitionMode = MC_TM_CORNER_DIST_CV_POLYNOM5;
  in.eBufferMode = MC_BLENDING_LOW_MODE;
  in.ucSuperimposed = 0;
  in.eCoordSystem = MC_MCS_COORD;
  for (int i = 0; i < v_group.size(); ++i)
	{
		in.dbPosition[i] = par.dEndPoint[i];
		in.fTransitionParameter[i] = par.fTransitionParameter[i];
	}
  int rc = getGmasController()->wrp_MMC_MoveLinearAbsoluteCmd(*this, getAxisRef(), &in, &out);
  if (rc != 0)
  {
    // ERROR
  }
}

В листинге выше происходит вызов функции MMC_MoveLinearAbsoluteCmd() в цикле по количеству точек траектории. Вложенный цикл задает вектор пространственных координат in.dbPosition. Несколько параметров задают способ огибания углов в точках перелома.

К слову, EASII позволяет моделировать пространственное движение, как на картинке ниже.

Панель Path Editor из программы EASII
Панель Path Editor из программы EASII

У пытливого читателя возникнет вопрос, кто задает координаты для каждой последующей команды? Откуда они берутся в программе, запущенной на встроенном контроллере?

Лирическое отступление о программном комплексе управления

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

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

  • составление процесса из разветвленного дерева конфигурируемых шагов

  • для каждого шага процесса - выбор из доступных способов монтажа с выбором параметров – источник компонентов и плат (конвейер, ленты с SMD, кремниевая пластина с кристаллами и т. п.), температура пайки, наличие катализаторов, усилия прижима, график приложения всех этих воздействий и т. п.,

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

  • интерфейс обучения системы технического зрения - алгоритмов распознавания различных визуальных паттернов и меток отдельно для каждого шага, автоматический пересчет полученных точек на изображении в системе координат установки, и затем – в системе координат моторов,

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

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

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

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

Возвращаясь к вопросу, одна из функций программного комплекса – хранение данных о системе координат установки. Если вы видите где-то в окне программы координату XYZ, это не обязательно те же самые координаты, которыми оперирует библиотека Elmo. (Она в свою очередь «видит» только те координаты, которые может считать с датчиков положения самих приводов – соответствующие входы для подключения датчиков есть у драйвера, а он их передает мастеру по шине EtherCAT). То есть, систему координат установки надо как-то соотнести с координатами, в которых работают контроллеры. Вообще, расчет координат довольно сложная тема сама по себе, ведь кроме абсолютной общей системы координат рабочего пространства установки есть еще и несколько вложенных. Например, кристаллы, расфасованные в трее или до фасовки - на сепарированной кремниевой пластине, будут иметь координаты, привязанные к трею/пластине, а они в свою очередь – будут иметь координаты в системе установки. При этом каждый кристалл будет иметь метки в системе координат кристалла. Поэтому перемещение нашего объекта (инструмента с вакуумным каналом для захвата кристалла) в центр кристалла из произвольной точки рабочего пространстве установки будет выполняться в несколько этапов:

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

  2. пересчет координат камеры в момент снятия изображения в координаты относительно трея или кремниевой пластины, которые также имели свои координаты в тот же момент съемки,

  3. вычисление положения и угла поворота кристалла по изображению,

  4. пересчет результата в системе координат установки,

  5. трансформация в систему координат каждой из осей,

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

  7. касание и захват кристалла включением вакуума,

  8. поднятие кристалла и перенос его к камере, для уточнения координат по меткам снизу,

  9. перенос кристалла к месту монтажа по тому же принципу.

К слову, оценка вертикальной координаты кристалла или места монтажа выполняется как правило по фокусному расстоянию камеры, координаты которой известны.

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

В моем случае передача координат на каждом шаге процесса происходит по внутреннему протоколу обмена командами между программным комплексом установки и master-контроллером по TCP/IP. По сути, программа запущенная на master, является посредником, транслирующим команды, полученные от ПК, во внутреннюю сеть EtherCAT посредством программного интерфейса Elmo, и осуществляющем контроль их выполнения самими устройствами. Например, команда от ПК «перемести стол с кремниевой пластиной в положение X`Y`» раскладывается в master-контроллере на составляющие – какие моторы участвуют, в каком они положении сейчас, какие функции API для этого нужно вызвать, с какими параметрами, дождаться выполнения и рапортовать обратно о выполнении.

Кроме этого, программа на master-контроллере обеспечивает соблюдение параметров воздействий, контроль которых возможен только в системе реального времени, которой Windows не является. Например, обеспечение давления на кристалл во время пайки по определенному графику возможно только на стороне master-контроллера. Когда приходит очередь этого шага процесса – параметры воздействия передаются программе контроллера по TCP/IP, и она запускает PID регулятор. Давление на кристалл обеспечивается передачей контроллеру оси Z команды на перемещение вниз (для усиления давления) или вверх. Роль пружины играет вся механическая система – люфты сборки, подложка, датчик силы. Ошибка на доли микрометра может сломать кристалл.

Что будет дальше

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

Обратите внимание на те же две шины, они на этой диаграмме внизу.

Примеры объектов, с которыми приходится иметь дело - ниже.

Трей с кристаллами
Трей с кристаллами
Кремниевая пластина
Кремниевая пластина

Предпосылки технического отставания России после разделения мира на зоны

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

Можно ли повысить долю собственных роботизированных систем среди ежегодно устанавливаемых в России, а также повысить в целом их количество? Навеяно этой статьей. К сожалению, поиск в тексте по комбинации «Росс» не дал результатов. Это более чем печально.

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

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

Мир меняется, границы закрываются. В нашем евроазиатском регионе утвердится в качестве промышленного (а следовательно, и социального, идеологического, религиозного, военного, и т. п.) лидера тот, кто имеет преимущество не в системах контроля за собственным населением, а в системах производства промышленного оборудования и автоматизированных беспилотных средств вооружения. И пока часть интеллекта китайских товарищей направлена на оцифровку себя, у нас остался последний шанс занять хоть какую-то нишу в производстве робототехники. Конкурентен и независим от внешнеполитической конъюнктуры в новом мире будет тот, кто в состоянии обеспечить всю цепочку производства товаров, а не только цифровую ее часть. Сегодня на нас давит США. Завтра нам будет выламывать руки и ставить условия любой региональный монополист, Германия, да или хотя бы Китай, если 90% электроники, а также / или даже львиная доля оборудования для ее производства будет импортироваться. Невозможно говорить об импортозамещении процессоров, если сами процессоры литографируются не у нас, а в Корее. Невозможно говорить и об импортозамещении компьютеров, если вы собираете их на импортных машинах сборки материнских плат, пусть даже устанавливаете на них «свои» процессоры.

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

Отдельно нужно сказать о наработанных алгоритмах распознавания изображений. Есть хорошие алгоритмы? Направьте их мощь в «мирное» русло распознавания электронных компонентов, маркеров позиционирования на процессорах и печатных платах, штрих-кодов продуктов и компонентов. Там поле непаханое, знаю по опыту работы. Каждая фирма разрабатывает свои алгоритмы, трясясь над их сохранностью, преемственностью и защищенностью от конкурентов. Некоторые из специальных библиотек, например Halcon, продаются с лицензией на рабочее место за хорошие деньги. Беда для нас в том, что все эти библиотеки – зарубежные. Из свободно распространяемых далеко не всегда можно составить конкурентный алгоритм, как по времени его работы, так и по качеству получаемых данных, да и по объему ресурсов на разработку конечного продукта. Обратите внимание, речь идет не об отбраковке товаров, распознавании лиц, рукописных бланков, номеров машин или QR-кодов. Речь идет о создании алгоритмов и установок, позволяющих позиционировать электронные компоненты с точностью до долей микрон в механических системах под управлением системы технического зрения в реальном времени. Разработка медицинского оборудования находится на том же уровне технологических достижений. В этой области мы тоже зависим от импорта.

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

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


  1. iliasam
    04.12.2021 22:50
    +5

    Техническая статья внезапно закончилась политикой.
    «И пока часть интеллекта китайских товарищей направлена на оцифровку себя, у нас остался последний шанс занять хоть какую-то нишу в производстве робототехники. „
    Я думаю, что и в области робототехники мы уже давно отстали от Китая.
    Они даже марсоход успешно построили.
    “Невозможно говорить об импортозамещении процессоров, если сами процессоры литографируются не у нас, а в Корее.»
    Если не ошибаюсь, китайцы даже литографические машины, аналогичные продукции ASML, пытаются строить.
    А у нас десятилетиями не могут запустить чужие станки: habr.com/ru/post/413377

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


  1. orizonti
    05.12.2021 04:13

    "Я знаю пару компаний, производящих установки для присоединения кристаллов и монтажа выводов, находящихся, например, в Беларуси. Как вы думаете, долго ли они протянут, если часть комплектующих и программных модулей, закупаемых на западе, окажутся под расширяющимся санкционным давлением?"

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

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


    1. sinc_func
      05.12.2021 09:42
      +5

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

      Тут возможна следующая причина

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

      На самом верху (например, НИИФИ, СКБТ) находилась сплоченная кодла с мощным коррупционным уклоном. И все это было уже в советское время. Если перевести на нормальный язык - чужих и посторонних туда на этот уровень не пускают, а там на том уровне происходило определение задач и распределение финансовых потоков.

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

      Ну а ниже - это основная масса большая часть которой - человеческий балласт.

      Вот тому же НИИ ФИ дали на рубеже 2010 дали миллиарды рублей на оборудование.

      Например, они укомплектовались линией производства пьезокерамики. Ее стоимость как мне подтвердил недавно бывший Главный Технолог - 1.5 миллиарда рублей. Зам Генерального по науке (кстати, феноменальный клоун) заявлял, что "вот сейчас мы рванем в производстве 2D и 3D ультра-звуковых сенсорных систем". Это было в районе 2011 года.

      Сейчас - конец 2021, а производить что-то подобное они даже не начинали.

      Я в настоящее время работаю в частной фирме и успешно занимаюсь DSP - цифровой обработкой сигналов. И можно было бы по содействовать в создании наиболее интеллектуально насыщенной части подобных разработок.

      Но тоже НИИФИ за провалы не имело никаких серьезных последствий.


    1. tzlom
      05.12.2021 12:07
      +3

      Кто в РФ делает точные рельсы? Хорошие шаговые моторы? Точные цифровые измерительные компоненты? Любой другой ширпотреб? Я не говорю про электронику, её в РФ делать просто не на чем, потому на Тайване и заказывают. Конечно если собрать булки в кучу то можно построить, но руководству страны интереснее строить себе дворец, а бизнесу импортозамещение не нужно - чем больше он подвязан на мировой рынок тем меньше шанс того что его собственное государство оставит 1:1 с внутренним рынком.

      Те же EUV собраны из ширпотреба почти целиком.


      1. softgigant Автор
        05.12.2021 14:57

        Хороший вопрос. Никто не делает. К слову, машина, фотография которой в заголовке статьи - с гранитной плитой в качестве опоры, и там даже рельсов нет. Система портальная, то есть по отполированным гранитным поверхностям с двух сторон портал поддерживает система воздушных подушек. Обеспечивая точность позиционирования компонентов в 3мкм 3сигма в рабочем пространстве 0,5х0,5 метра по тех спецификации, а в реальности точнее. К вопросу об измерительной системе позиционирования (50 делений на микрометр). Ладно, были бы хотя бы рельсы - было бы с чего начинать.


    1. softgigant Автор
      05.12.2021 14:47
      +1

      Спасибо за комментарий! У меня представление складывается такое, что "все кому не лень" не могут разрабатывать ПО для станков которые у нас не производятся. А системы технического зрения для рассматирваемых машин достаточно специфичны. У нас может и есть способные специалисты (об это я и говорю в статье), но куда они этот свой код сдают, если он есть, а главное кто его доводит до ума на конкретном образце установки? Это то случай когда аутсорсинг почти невозможен, на мой взгляд. И талант этих специалистов мало востребован.


      1. sys_Arch
        06.12.2021 04:43

        Разумное желание автора >> монетизировать свои знания = = разработка и отладка mid-layer software для управления электро-пьезо-пневмо-гидро-механическими системами.

        И монетизация достижима, когда представлен минимальный набор в виртуальном пространстве (для демонстрации превосходства собственных идей, над текущим уровнем рынка или исходными пожеланиями инвесторов):

        • 3-5-7 years support plan for equipment and components;

        • mid-layer control software up to (integration)API + maintenance prediction;

        • (embedded) firmware, учитывающее физические особенности каждого исполнительного узла = актуатор + связянные механические компоненты;

        • FMI model << rigid-flexible multi-body model << full-flexible-model << electromagnetic, pneumatic, etc actuator's multi-physics models.

        После чего стандартный набор технико-экономических действий, приведет к выпуску единичного образца как минимум, результаты испытаний которого предоставят автору выбор - в каком месте планеты земля: зарегестрировать IP + know-how, и где и чьими силами организовать production.


      1. orizonti
        06.12.2021 14:53

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

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


  1. Nick0las
    05.12.2021 17:42
    +2

    Спасибо за интересную статью. Интересно, ожидаю продолжения. Полагаю, общественности будет интересно не только про API, но и про аппаратную часть.

    После этой статьи остался вопрос как для вашей библиотеки и приведенного выше примера перемещения (даже одноосевого) задается привязка API вызова к конкретным приводам на шине Ethercat? Я так полял что переменная ref - некий ID привода. Но где указывается соответстиве этой переменной в коде конкретному приводу в станке? В конфиге внутри Elmo? Или в конфиге библиотки? Параметры передаваемые в API - абстракция или маппинг переменных доступных по Ethercat 1:1? Что надо менять если в станке привод <Servo_model_1> заменят на подобный но другой привод <Servo_model_2> хотябы с другими Vendor ID и Device ID (не говоря уже про полный профиль)? Заранее извиняюсь за кучу сумбурных вопросов.


    1. softgigant Автор
      06.12.2021 16:18

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


  1. irokezer58
    06.12.2021 04:01

    Не понимаю этой тенденции западных производителей засунуть ПК с Виндой в любую установку. Зачем? У вас на рисунке "Пример топологии сети установки с 1-го фото" изображена чудесная схема, если исключить все начиная от шины TCP/IP и ниже. Зачем там ПК с виндой? У вас уже есть АРМ с Линухом. Почему не приделать к нему сенсорную панель Weintek и не выводить пользовательский интерфейс на неё?

    У меня на работе был случай, когда мы не могли починить навороченную импортную машину из-за того, что в её основе был ПК на Винде с закрытым исходным кодом всех прикладных программ для машины. Пришлось выкинуть ПК на помойку и поставить простой промышленный контроллер Сименс с панелькой Weintek, оставив всю родную механику. Все работает прекрасно!

    А что касается российской промышленности, тут проблема не техническая. Хороших вузов у нас достаточно, и технари наши на весь мир славятся. Проблема политическая. Для российской промышленности нет рынков. По идее, государство с капиталистической экономикой должно расширять и защищать рынки для продукции своих производителей. Россия этого не делает. Мы наоборот теряем рынки (Украина, Грузия, Молдавия и т.п.).


    1. softgigant Автор
      06.12.2021 16:39

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

      В Maestro Platinum графический порт HDMI есть но он пока не действует. Я общался с техподдержкой, они еще 2 года назад обещали дать поддержку QT. Но не сделали пока, я думаю, по причине того, что мастер-контроллер должен обеспечивать безопасное и точное перемещение в первую очередь, а графический интерфейс в десятую. Если дать пользователю возможность, он нагрузит пользовательскую программу так что никаких ресурсов не хватит. А нагрузить есть чем!

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

      Далее, система технического зрения. Камеры IDS https://en.ids-imaging.com/ с подключением по TCP/IP в количестве 5 штук создают хороший поток данных (хоть и не используются все одновременно), и сохранение высококачественной картинки в памяти, а также обработка требует ресурсов. Допустим памяти 2ГБ нам хватило, что уже под большим вопросом. Остается обработка. CPU можно конечно использовать, но как правило сейчас эти вычисления выполняются на GPU. Плюс сами библиотеки обработки - их не так легко собрать под мастер-контроллер, назначение которого - обеспечить безопасность и точность перемещения, и при перезапуске контроллер сам вычищает у себя все лишнее. Если учитывать, что контроллер используется не только для фиксации конечной точки перемещения, но и выполняет расчеты в реальном времени, желание разработчиков выделить отдельное ядро под этот сервис становится понятно. Пользователю остается только 2-е ядро.

      И контрольный. Изначально под эту машину планировали Linux, но перенос 25-летних наработок из Windows в разумные сроки невозможен.


      1. irokezer58
        06.12.2021 18:05

        Спасибо за развёрнутый ответ!

        Но, всё равно как то притянуто. Как будто разработчики сами себе усложняют работу. Вот так это выглядит:

        • Нам ресурсов одного компьютера мало! Давайте приделаем второй!

        • А давайте ещё сделаем чтобы он под другой ОС был!

        • Давайте! Вообще класс!

        Хочу ещё покритиковать, но уж не стану. Не очень то я в этом разбираюсь. Статья мне понравилась, было интересно читать.