Как я сделал систему мониторинга для башенного крана

В своей практике я встречался со множеством башенных кранов, начиная от “советских” КБ различных моделей и их модификаций, заканчивая современными кранами, в том числе Liebherr. Причем, среди последних я сейчас встречаюсь не только с новыми, а и со старичками, которые иногда старше меня)
Если с новыми кранами все более-менее хорошо (мощная система диагностики практически всех компонентов электросхемы, большой экран с отображением множества параметров, современная схемотехника с использованием ПЧ), то со старичками часто приходится повозиться. Да, релейно-контакторная схема не сложна, но годы дают знать свое.
Отдельным пунктом стоит выделить экран в кабине оператора — ящик с маленьким сегментным экраном, показывающим только значение вылета тележки на стреле. И табличка с грузовой характеристикой, которую нужно выбрать и прикрутить к корпусу в соответствии со смонтированной длиной стрелы.

Старый экран, отображающий одну координату - актуальный вылет.
Старый экран, отображающий одну координату — актуальный вылет.

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

Концевой выключатель с установленным потенциометром.
Концевой выключатель с установленным потенциометром.

Естественно, возникла идея заменить старое на что-то более-менее современное. Т.к. для модернизации нужно разрешение завода-изготовителя, получить которое практически невозможно, то решено было сделать систему мониторинга параметров, которая никак не влияет на имеющуюся электрическую схему. По сути, — систему, являющуюся надстройкой.
Имея опыт программирования HMI (ЧМИ) и PLC с PLR, в голове прикинул проект, предложил руководству компании — и получил положительное решение. Значит, пора строить испытательный прототип. И приниматься за программирование.


В качестве HMI я использовал панель DOP-107EV производителя Delta Electronics.
Устройством, отвечающим за логику работы, решил выбрать хорошо знакомое мне программируемое реле EasyE4 от Eaton Electric — выбрал вариант с пружинными клеммами и без дисплея EASY-E4-AC-12RCX1P, и с модулем расширения 4AI+2AO — EASY-E4-DC-6AE1. О них, кстати, писал здесь ранее.
Запитывать панель HMI и модуль расширения было решено от блока питания Delta DRC-24V60W-1AZ — более гармонично смотрится рядом с EasyE4. Да и в надежности и помехозащищённости БП данного производителя я уверен на все 100%.
Вообще, конкретные модели оборудования выбирались исходя из наличия: возможны различные комбинации HMI — PLR, но наличие подводит) Кризис в полупроводниковой сфере и пандемия значительно влияют на ситуацию с ассортиментом и доступностью.
PLR и HMI соединяются при помощи обычного Ethernet-кабеля, протокол связи — Modbus TCP.
Схему прототипа составил следующую:

Схема прототипа системы мониторинга.
Схема прототипа системы мониторинга.

Для создания схем я использовал (и рекомендую его) продукт QElectroTech — хорошее, постоянно обновляемое бесплатное ПО с огромной базой компонентов — для небольших схем отличный вариант: я на нем проект на 16 листов с перекрестными ссылками нарисовал как-то:)
Дополнительно для тестового образца была закуплена периферия — различные разъёмы, клеммы, корпуса для панели и PLR, кабели для подсоединения датчиков, монтажные принадлежности (подбиралась периферия, опять же, в близлежащем магазине электротоваров и исходя из наличия).

Один из промежуточных этапов сборки прототипа.
Один из промежуточных этапов сборки прототипа.

Пока компоненты закупались, я начал программировать. Т.к. с рисованием и программированием интерфейсов у меня опыта больше, чем с программированием PLC/PLR, и в программе DIAScreen для HMI есть встроенный эмулятор — принялся за интерфейс.
Все экраны рисовал в фирменных “либхеровских” цветах — желтом и сером.
Получилось как-то так:

Экран системы мониторинга, установленный в кабине башенного крана.
Экран системы мониторинга, установленный в кабине башенного крана.

Главный экран имеет 2 варианта отображения — желтый на сером и серый на желтом. Дневной и ночной режимы, если можно так сказать. Выбирается в настройках.
Общий вид и функционал экрана для крановщика (скриншоты из режима офлайн эмуляции панели, поэтому везде в значениях нули):

Главный экран. Темный режим.
Главный экран. Темный режим.

Секция А: тележка стрелы.
А1 — актуальное положение;
А2, А3 — минимальное и максимальное значение вылета согласно смонтированному варианту стрелы;
А4 — максимальное допустимое положение тележки с актуальным грузом согласно установленной грузовой характеристике.
Секция В: Масса груза
В1 — актуальный груз;
В2 — допустимая масса груза на текущем вылете согласно установленной грузовой характеристике;
В3 — процент загрузки — отношение актуального груза к допустимому при текущем положении тележки (В1/В2).
Секция С: Глубина опускания крюка.
С1 — актуальная глубина опускания;
С2, С3 — минимальная и максимальная глубины опускания крюка.
Секция D: Анемометр.
Отображение текущей скорости ветра в м/с и км/ч. Настраиваемая подсветка раздела (предупреждение и запрет работы — оранжевый и красный фон раздела).
Секция E: дополнительная.
На данный момент в ней реализовано отображение грузовой характеристики.
Координаты А1, В1, С1 дублируются в виде прогресс-бара.
В качестве датчика высоты используется потенциометр, аналогичный испоьзуемому для тележки — блоки концевых выключателей однотипны, есть место под установку потенциометра.
В качестве датчика груза будет использован (пока ничего подходящего нет в наличии) датчик линейного положения. Рассматриваемая модель — KL 500-5K0/M-SE.


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

Экран основных настроек.
Экран основных настроек.

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

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

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

Экран настроек типа крана.
Экран настроек типа крана.

После данных настроек нужно перейти на страницу настроек датчиков.

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

Экран настроек отображаемых координат
Экран настроек отображаемых координат

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


Программирование PLR было увлекательным 🙂
Программа написана на языке ST (структурированный текст) — наиболее подошедший из имеющихся для использования с циклами условий, например «IF-THEN-ELSE» или «WHILE-DO».
Предварительно была произведена настройка «железа». В частности, установлен тип сигнала и размерность аналоговых входов и выходов модуля расширения.

Настройка каналов аналогового ввода-вывода модуля расширения.
Настройка каналов аналогового ввода-вывода модуля расширения.

Настроена передача слов (MW) через Modbus TCP.

Настройка Modbus базового модуля.
Настройка Modbus базового модуля.

На входы программируемого реле (см. схему ранее) подал дискретные сигналы от аварийной кнопки (“гриб”, I01), включения управления крана (I02), а также сигнал “флюгерного” положения (I03) — когда в нерабочем состоянии кран может вращаться под действием ветра в любую сторону.
После изучения возможностей PLR и имеющихся стандартных функциональных блоков, для отображения актуальных координат были использованы блоки “LS” — блок масштабирования значений. Блок преобразует входной сигнал (в нашем случае сигнал в Вольтах с аналогового входа) в нужную нам величину — метры, тонны, метры в секунду. Ниже пример для преобразования сигнала от потенциометра тележечной лебедки стрелы.

LS01 (   EN := I01 AND I02,   I1 := IA05,   X1 := MW11,   Y1 := MW12,   X2 := MW13,   Y2 := MW14,   QV => MW15 );

EN — разрешение работы блока. Работает при сигналах на дискретных входах I01 и I02 — аварийная кнопка не нажата и управление крана включено, чтобы не загружать реле расчетами во время простоя.
I1 — источник сигнала для масштабирования. В данном случае это первый аналоговый вход модуля расширения.

Нумерация входов в программе.
Нумерация входов в программе.

Координаты X1, X2 — значения сигнала аналогового входа для крайних положений.
Координаты Y1, Y2 — соответствующие значения в метрах.
QV — выход блока — переменная, в которую будет записываться масштабированное значение.
В качестве значений используются слова — их можно перезаписывать и считывать из PLR при помощи HMI при настройке. Например, слову MW15 соответствует координата А1 на главном экране, MW12 и MW14 — координаты А2 и А3.
Аналогичным образом идет расчет координат для глубины опускания, массы груза, скорости ветра.
Еще одно использование блока LS — для формирования сигнала, пропорционального вылету стрелы, на аналоговом выходе. Данный сигнал необходим в случае установки и использования на кране системы антистолкновений при работе нескольких машин на одной стройплощадке с пересекающимися зонами работы (Anti Collision system). Для этой системы используется сигнал 0..3,3В. Данная реализация кода всегда дает сигнал 0,3В при минимальном вылете, и 3,0В при максимальном.

LS05 ( EN := I01 AND I02, I1 := MW15, X1 := MW12, Y1 := 300, X2 := MW14, Y2 := 3000, QV => QA05 );

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

Пример грузовой характеристики башенного крана Liebherr 140EC-H6. Источник: liebherr.com
Пример грузовой характеристики башенного крана Liebherr 140EC-H6. Источник: liebherr.com

Проштудировав инструкцию к EasyE4, нашел функциональный блок PM — блок кривой нагрузки. «Идеально подходящий» -, подумал я. Настройка данного блока заключается во внесении данных в таблицу. Первый столбец — вылет, второй — соответствующая масса. Запустил эмуляцию, проверил — работает.

Настройка блока PM - поле характеристической кривой.
Настройка блока PM — поле характеристической кривой.

Но не тут-то было. Всего таких блоков в памяти реле можно использовать аж 4 штуки. А учитывая, что на каждую из кривых надо 2 блока (зависимость массы от вылета и обратная зависимость — вылета от массы), получается, что можно внести только 2 характеристики. А для кранов может быть и 4, и 6, и даже 10 вариантов характеристик, зависящих от смонтированной длины стрелы и запасовки. И самый большой минус — данные в табличную часть можно занести только вручную (правая часть скриншота выше — задаваемые точки). Обращался по этому поводу в официальную техподдержку — на данный момент возможности вносить данные через протокол связи нету. А каждый раз загружать новую программу, отличающуюся только внесенными данными — не самый лучший вариант. Тем более, если в планах расширять функционал, вносить правки во множество программ, отличающихся только значениями в таблицах — не самый разумный подход.
Что ж, пришлось искать выход из положения. Фактически, кривую нагрузки можно рассматривать как последовательность прямых отрезков. Разница значений на малых радиусах между кривой и спрямленной линией небольшая, а на конце стрелы так вообще кривую нагрузки не отличить от прямой.
Что дает возможность использования все того же блока LS, передавая в него ближайшие меньшую и бОльшую известные координаты кривой нагрузки. А вот данные конкретной характеристики можно загружать из панели. Для этого я использовал такой инструмент, как наборы рецептов.

Окно ввода наборов данных ("рецептов").
Окно ввода наборов данных («рецептов»).

Именно эту функцию делает страница настроек с выбором модели крана и длины его стрелы — загружает в PLR нужный набор значений вылета стрелы и соответствующих им грузоподъемностей. Как дополнительное удобство — данные в “рецепты” можно импортировать через csv-файл, подготовленный во внешнем редакторе. Но нужно учитывать, что тот же Excel, либо Google Sheets, при открытии по умолчанию производят конвертацию форматов данных в csv, и нужно либо отключать эти конвертации, либо использовать другие редакторы.
Каждый из рецептов представляет собой строку длиной 50 слов, первые 25 ипользуются для значений вылетов, остальные — для соотвествующих значений. Если в конкретной кривой нагрузки меньше 25 значений, то оставшиеся ячейки заполняются нулями. При вызове всплывающего экрана проверяется условие “значение > 0”, что является условием видимости значения на экране.

if (screen.IsOpen(10) == 1) then if (mem.static.Read(101) == 0) then     mem.inter.WriteBit(1, 1, 0)  else     mem.inter.WriteBit(1, 1, 1) end if (mem.static.Read(102) == 0) then     mem.inter.WriteBit(1, 2, 0)  else     mem.inter.WriteBit(1, 2, 1) end

… и т.д. для первых 25 байтов данных активного рецепта (байт 26 содержит значение массы для первого байта с вылетом, 27-й для 2-го, и т.д., поэтому проверять все 50 байтов нету смысла).

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

Отображение грузовой характеристики в табличном виде.
Отображение грузовой характеристики в табличном виде.

В зависимости от комбинации сигналов на входах I01..I03 возможно отображение всплывающих экранов состояния крана.

Состояния крана: 1) Требуется включение управления, 2) Нажат аварийный выключатель, 3) Кран во флюгерном положении, 4) Кран во флюгерном положении, аварийный выключатель нажат.
Состояния крана: 1) Требуется включение управления, 2) Нажат аварийный выключатель, 3) Кран во флюгерном положении, 4) Кран во флюгерном положении, аварийный выключатель нажат.

На данный момент тестовый вариант системы смонтирован на башенном кране и проходит обкатку. Уже есть несколько мыслей по добавлению функционала, которые будут реализованы с ближашем будущем.


ссылка на оригинал статьи https://habr.com/ru/post/708794/

Домашний «Эльбрус»: против и за

Всем привет! Долго раскачивался написать этот рассказ, но «под ёлочку» наконец отмазки закончились – собрал заметки на манжетах и засел.

Правда, изначально статья собиралась быть озаглавлена: Как я собрал себе домашний «Эльбрус» и как было надо.

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

image

Краткое содержание:

  • зачем эльбрус обычному человеку, да ещё и дома?
  • как им обзавестись и каких ошибок стоит избежать?
  • что в итоге?

Краткий вывод: при наличии желания, упорства и свободных средств обзавестись собственным эльбрусом в России вполне возможно; на данном этапе для этого лучше уже понимать по личному опыту, что это за машина, чего от неё стоит (и не стоит) ожидать.

Против и за

Каковы были мои собственные pro et contra по данному вопросу в уходящем году?

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

Не без опасений насчёт перспектив с учётом возни вокруг TSMC, на тот момент уже всё-таки приведшей к отказу в поставке уже заказанных и произведённых чипов (и встречном отказе в поставках неона).

За – то, что в условиях опять же неясности перспектив валют

как таковых

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

это обмен монетарных средств на физические ценности. Притом такие, которые в самом

худшем случае

(кроме разве что взаимного стеклования)

окажутся впоследствии антиквариатом по естеству своего Limited Edition. А в не самом худшем – «всего лишь» остродефицитным товаром, который как минимум в те же деньги и продам, если вдруг эти самые деньги окажутся нужней.

Ну и, разумеется, то, что мне машинка уже давно понравилась – брал я не «кота в мешке», а освоенную и отлично себя показавшую платформу (хотя всё-таки при именно десктопном применении один «сюрприз» удалось найти).

Что ещё могло оказаться «за» или «против»? Например, то, что приобретаемая плата (как и процессор) шли в статусе инженерных образцов – т. е. заведомо содержали недоработки, которые и следовало выявить путём опытного применения (ну или тестовой эксплуатации, тут уж кому что ближе). С другой стороны – это именно отечественная архитектура, это наше железо, на которое можно положиться, в отличие от Intel с инсайдами. Сложно передать ощущения от общения с разработчиком плат, который тебя поправляет, притом слышит – и с отладчиками, которые знают буквально каждый конденсатор. Ну и «если враги ругают – значит, делаем верно».

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

Как обзавестись эльбрусом?

Сейчас – сравнительно просто: можно заказать материнскую плату на imaxai.ru либо готовую систему на bitblaze.ru; разве что обратите внимание на рекомендации по подбору совместимой памяти.

На время написания статьи про 101-РС дома – не то чтоб никак: Алексей Лобанов себе такую машинку приобрёл через ИП, если правильно помню его рассказ; но – сложно.

Некоторое время ходил с навязчивой идеей оказаться первым, кто купил «Эльбрус» у МЦСТ не в качестве юрлица, а именно себе. Идея оказалась глупой даже с учётом того, что контрагент прекрасно понимал, с кем имеет дело, и не опасался за головную боль с техподдержкой: примерно к выходу плат на 8СВ выяснилось, что их бухгалтерия технически не работает с частными лицами и для такого понадобилось бы производить достаточно существенные изменения.

В общем, ни 1С+, ни 8С, ни 8СВ я себе так и не купил, хотя организовать через контору было, наверное, возможно (с нашей бухгалтерией мы это даже не обсуждали, поскольку ведь idea fix).

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

Впрочем, оставался существенный момент: 101-РС стоил порядка 150–170 т.р. в разные годы (материнская плата mITX на 1С+ – от 100 или 120 т.р., точно не помню); куда более интересный по мощности и расширяемости 801-РС – порядка 350 т.р. за системный блок и 200 – за материнскую плату.

При этом

(32 Гб памяти DDR3 ECC, набортный mSATA SSD на 120 Гб, терабайтник, Radeon R5 230 и вполне обычный корпус как-то не тянули на оставшиеся полторы сотни даже при весьма грамотной сборке; разве что шикарное техобслуживание?)

Самая простенькая mITX с 8С оценивалась в 135 т.р., а инженерная плата с 8СВ – в 250 т.р.

Пока я сражался с амфибиотропной асфиксией на предмет цены MBE1C-PC (ТВГИ.469555.331), заранее смиряясь с одним ядром и одним PCIe-слотом из соображений «а пакетики собирать буду на работе»

хотя…

(эксперимент со 101-РС и майнерским набором показал нормальную работу и нескольких PCIe-карт, но это уж колхоз получался)

– с одной стороны, становился доступней 8С

2020

(в двадцатом году на удалёнку домой утащил именно такую машину, отлично себя показала)

и с другой – всё-таки пробился 8СВ…

… А с третьей стороны практически одновременно с четырёхпроцессорной платой на 8СВ мы как контора получили предложение по инженерке 16С. Это и был ожидаемый прорыв. Брать для разработки v5, когда уже v6… в общем, решился.

На самом деле

… здесь есть и пожелание к маркетингу МЦСТ: чётче формулировать стадии создания продукта, не вызывая собственноручно в публике мысленной конкуренции только что заработавшего инженерного экземпляра процессора и серийных плат на его предшественниках (такое было и с 8СВ «против» 8С).

Как именно – надо думать самим и смотреть у «коллег по цеху»; в конце концов, «включить блондинку» и попытаться посмотреть глазами внешнего наблюдателя. Потому как тот же не менее прорывной 8С (переход на 28 нм, DDR3 и PCIe gen2, производительность почти четырёх предшественников под одним капотом!) прошёл госиспытания в 2015 году, серийно выпускается с 2016 – но первые платы из опытной серии на нём мы приобрели в конце 2017; а если бы сидели и ждали 8С вместо работы над пакетной базой и дистрибутивом на 401-РС, разве получилось бы в 2018 году его довести до рабочего вида и выпустить?

«Что в имени тебе моём?»

Так для чего же применим домашний эльбрус, а для чего – малоприменим или вовсе неприменим?

Вкратце – мои задачи решает, что и требовалось.

При этом стоит понимать, что на данный момент все знакомые, которые такими машинками обзавелись, а пальцев двух рук уже перестаёт хватать – достаточно опытные, а то и матёрые линуксоводы (нередко с опытом в «больших» UNIX); сам применяю Linux с 1998 года (и сразу в качестве основной системы – впрочем, в дуалбуте какое-то время на той 486 был DOS), а участвую в разработке ALT Linux – с 2001.

Для меня, пожалуй, наиболее практически узким местом является браузер: на время написания этой статьи перенесены Firefox 52 и 68, завершается работа над fx91 – а вот Chromium и всё, что на этом движке (в т.ч. яндекс-браузер), доступно лишь посредством бинарной трансляции (которую для работы не применяю, довольствуясь лишь тем, что доступно в «родных» кодах e2k – или же выручаясь стареньким ноутом).

Причём помимо чисто браузерных проблем вида «для подсветки формочки обратной связи непременно нужна последняя версия последнего фреймворка, которой требуется последний браузер» (просто иду в другой магазин) есть и проблема уровня доведённости JIT-компилятора JavaScript – впрочем, тем же яндекс-картам опять же хватало и машины пятилетней давности, а вопрос является скорее ресурсным, чем принципиальным (бишь решаемым и насущным).

Но это мои «тараканы» – а вот, скажем, владелец системы на e8c и сайтика e8c.ru активно применяет «бинарку», запуская как целые x86 ОС (например, Windows или Android), так и отдельные приложения вроде IDE; на канале @elbrus_pc_test и вовсе показывают игрушки, многие из которых доступны не просто «в восемьдесят шестых», а конкретно под винду и точка.

Суммируя: если есть опыт работы с *nix в качестве основной операционной системы (особенно не только на x86), то эльбрус может оказаться «занятной зверушкой», достаточно быстро приручаемой для прикладных задач; если же wintel – «наше всё», то смысл ненулевой (поскольку тоже работает), но уже более трудноизвлекаемый как минимум на «восьмых» процессорах, поскольку JIT-компилятор lintel хоть и великолепен, но всё-таки неизбежно влечёт накладные расходы в виде тактов (напомню, на частоте до полутора гигагерц).

Для обычного пользователя может тоже оказаться всего достаточно, но в комплекте понадобится пользователь опытный (см. выше).

И всё-таки: что под капотом?

В целом виды на машинку были более-менее понятны сразу:

  • от 64 Гб ОЗУ (под сбору пакетов/исошек и виртуалки);
  • NVMe + SATA SSD;
  • Radeon RX 580 или мощнее;
  • ОС Альт для Эльбрус.

В итоге: Э16С 16x2000 / 128 / 512 + 2 + 8 / RX580 / 27" 4K IPS, бишь 1Э16С-uATX на штатных двух гигагерцах, 128 Гб DDR4-3200 ECC в восьмиканальном режиме, полутерабайтный калининградский SATA SSD, двухтерабайтный корейский NVMe, хитачевский восьмитонник и уже хорошо обкатанная AMD RX 580 8 Гб да безымянный 4К-монитор

с китайпосылторга.

(«он не кривенький, он изогнутый!»; фото на нём обрабатывать бы не стал, а для работы вполне себе)

На всём этом бегает альтовый стартовый набор с WindowMaker и sysvinit (мне так нравится; на работе MATE тоже с sysv, а желающие могут поставить хоть KDE, мы его уже пропатчили и на 8С катается вполне прилично).

По поводу «сюрприза»

уже на домашней машинке выяснилось, что USB3-контроллер в первых e2kv6 (бишь e16c r0) вышел с аппаратной плюхой и порой отваливается – это успели поправить в инженерных же 2С3, но пока что для стабильной работы всего подключаемого снаружи пришлось поставить отдельную четырёхпортовку на чипе NEC, как и на «восьмёрочках» первым делом обеспечивал.

Ну и введение в эксплуатацию несколько затянулось не только из-за набегового характера сборки железа, но и в силу желания непременно завести всю память именно на полных 800 МГц, а не в «компромиссных» вариантах DDR4-2400/2600 (бишь на 600/650 МГц): прошивку и тайминги довели до ума уже к сентябрю. Но вот это уже та самая другая история…

Работа работается (теперь удалённое рабочее место стало удобней, чем собственно на работе), телеграм и веб читаются, видео крутится (для 4К достаточно примерно одного ядра), виртуалки вращаются (в т.ч. и с удалённым доступом для коллег), порой и игрушки играются; демка War Thunder тоже ездит – впрочем, она и на 8С выдала больше кадров в секунду, чем на wintel; вот только пока не удалось собрать на v6 полностью рабочий экземпляр «сталкера», но о найденных новых плюхах надо бы потолковать с разработчиками OpenXRay.

А так… wmaker, xterm, vim, ssh, mutt, firefox есть – это закрывает практически всё, что мне обычно надо от компьютера; telegram-desktop также перенесли (не щелчком пальцев, но в итоге успешно); obs-studio ещё предстоит освоить

…замыслы коварные…

(пробы прошли нормально и на 8С; кстати, есть мысль порассказывать о полезных для разработчика прикладного ПО вещах вроде «зачем собирать пакеты» и «чем отличаются дистрибутивы», а то и добраться до темы собственных сборок LiveCD или даже установщиков, на альте это всё достаточно просто)

Что ещё? Да гляньте сами сведения о доступных пакетах, при необходимости расспросите конкретней.

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

Вместо напутствия

Пощупать руками «Эльбрус» на сейчас удобней в московском Яндекс-музее, что на метро Парк культуры; в Питере есть в «Технопарке» (сам там не бывал); в Вологде отправился бы прямиком в «Кванториум», особенно будучи подростком.

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

Наиболее доступным вариантом практического знакомства с эльбрусом остаётся «удалёнка» в виде стенда Игоря Молчанова в ИНЭУМ – см. тж. соответствующий чатик.

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

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Михаил Шигорин, [20.09.2022 15:16] о-оо, ща расскажу
48.15% как собирал эту машинку 13
29.63% как закалялась память 8
66.67% как заводили виртуалки 18
11.11% свой вопрос в комментариях 3
Проголосовали 27 пользователей. Воздержались 22 пользователя.

ссылка на оригинал статьи https://habr.com/ru/post/708798/

Таинственный мир информационной геометрии. Введение


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

У многих из нас в старших классах отношения с геометрией напоминали несчастную любовь, переходящую в ненависть. Особенно нелегко было, когда речь зашла о координатах и объёме. Даже расчёты с использованием геометрии вызывали отторжение. А впереди ждал бум информационных технологий и шумиха вокруг машинного обучения, ИИ и науки о данных. Всё это побудило многих нырнуть в тёмные глубины математики, где среди прочих дисциплин нас снова ждала геометрия. Информационная геометрия применима в статистическом многомерном обучении (statistical manifold learning), которое недавно зарекомендовало себя в обучении на высокоразмерных наборов данных без учителя. Также информационная геометрия позволяет вычислять расстояние между двумя вероятностными мерами, что находит применение при подборе шаблонов, построении альтернативных функций потерь для обучения нейронной сети, сети распространения убеждений и решении задач оптимизации. Подробности — к старту нашего флагманского курса по Data Science.

Информационная геометрия — это математический инструмент для исследования мира данных с помощью геометрии. Информационную геометрию также называют фишеровской (Fisherian Geometry).

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

Давайте обсудим некоторые основы, чтобы понять сущность информационной геометрии.

Основы

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

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

Топологическое пространство

Пусть пространство X задано множеством точек x∈ X и множеством подмножеств X, которые называются окрестностями N (x) для каждой точки. Мы располагаем следующими параметрами:

  1. Если U — окрестность x, x∈ U, V⊂X и U⊂V, то V тоже является окрестностью x.
  2. Пересечение двух окрестностей x также является окрестностью x.
  3. Любая окрестность U для x включает окрестность V для x, и при этом U является окрестностью всех точек V.

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

Гомоморфизм

В статье про выравнивание многообразий (manifold alignment) я касался вопроса гомоморфизма, которую, как аксиома, можно представить так:

Рассмотрим f XY как функцию двух топологических пространств, тогда X и Y гомоморфны при условии, что f непрерывна, взаимно однозначна, и обратная функция f также непрерывна. Рассмотрим многообразие 𝓜. Во всех точках x  𝓜, где U является окрестностью x, и для целочисленных значений n, где U гомоморфна ℝⁿ, малая n является размерностью многообразия.

Диаграмма

Гомоморфизм, обозначаемый функцией κ Uκ (U), называется картой (chart), где U может быть открытым подмножеством 𝓜. Построить график для определения 𝓜 можно разными способами. Коллекция таких карт называется атласом (atlas). Графически эта идея представлена на рисунке 1. Математически атлас определяется уравнением 1. Конкретным примером графика является система координат, которая может быть функцией, отображающей точки на многообразии.


Рис. 1. Многообразие и карты (изображение создано автором)


Уравнение 1. Атлас

На этом этапе легко определить дифференцируемое многообразие как многообразие, для которого переходные карты (transition maps) дифференцируются.

Вот и всё, что можно сказать о многообразиях в абстрактной математике. А как быть с пониманием статистики и науки о данных? Как мы помним, вы статистике мы имеем дело с вероятностями. Это приводит к понятию статистического многообразия (statistical manifold). В статистическом многообразии каждая точка p ∈ 𝓜 соответствует распределению вероятности в области 𝓧. Это можно пояснить на конкретном примере многообразия, которое образовано семейством нормальных распределений.

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

В обычной геометрии вектором называют прямую, соединяющую две точки. Но не для искривлённого пространства. Здесь векторы — касательные к кривой в определенной точке на многообразии. Если параметр u меняется по всей длине кривой, кривую можно определить как x (u). При этом u часто опускается, и мы просто пишем x. Вектор в искривлённых пространствах выражается так:


Уравнение 2. Вектор в искривлённых пространствах

Вектор определён локально в точке p, где u = 0. Заметим, что сам вектор не живёт в многообразии. Он пришёл сюда евклидовой геометрии. Как и в случае карт, в точке p можно построить много касательных. Да, на двухмерной плоскости это уже трудно себе представить, однако и у трёхмерного объекта вроде сферы, есть множество касательных в точке. Поэтому мы можем говорить о касательной плоскости (tangent plane) в точке сферы (Рис. 3). Подобным образом мы можем говорить и о касательной плоскости в точке p многообразия.


Уравнение 3. Сфера с касательной плоскостью (изображение создано автором)

Переход от одной карты к другой равносилен переходу, например, из декартовой в полярную систему координат. Пусть, у нас есть функция преобразования ϕ для перевода x с одной карты на другую. Тогда её можно записать как x′ = ϕ(x).

Двойственное пространство

Двойственное пространство (dual space) V пространства векторов V содержит все линейные функционалы (linear functionals) V. То есть, для всех карт T VF, где F — поле пространства векторов V. Тогда двойственное пространство содержит все линейные преобразования из V в F. В поисках лучшего объяснения модального пространства я наткнулся в сети на такой пример³

Представим себе 2-мерное вещественное векторное пространство (2D real vector space). Зададим две функции: одна возвращает координату любого вектора по оси x, а другая — по оси y. Назовём первую функцию f1, а вторую — f2. Но давайте смотреть на вещи шире.

Рассмотрим эти две функции как векторы. Пусть это базисные векторы в каком-нибудь смехотворном векторном пространстве. Эти векторы можно сложить и считать f1 + f2 функцией, которая возвращает сумму значения любого вектора по x и y. Их можно и умножать на числа. Например, мы можем считать 7 * f1 функцией, которая возвращает семикратное значение любого вектора по оси x. Вы можете создать линейную комбинацию подобных действий, например, функция 3.5 × f1 — 5 * f2 возвращает 3.5 значений вектора по x за вычетом 5 значений по y. Именно так работает двойственное пространство._

Тензор

Тензоры — ключевое понятие в математике многообразий. Итак, что это за звери и что они едят? Звери это многолинейные, и едят они векторы из касательных пространств и их двойственного пространства, а выплёвывают вещественные числа. Общее число съеденных векторов касательного пространства и его двойственного пространства называют рангом (rank) тензора. Число съеденных векторов из двойственного пространства называют контравариантным рангом (contravariant rank), а из касательного — ковариантным (covariant rank).

Опустим более формальное описание тензоров. Если честно, я и сам его пока что до конца не понимаю. Но по сути, многообразия — построения геометрические, а тензоры — соответствующие им алгебраические построения.

Метрика

Метрикой (metric) называют тензорное поле, которое индуцирует внутреннее произведение на касательном пространстве в каждой точке многообразия. Любое тензорное поле второго ковариантного ранга можно использовать для определения метрики. Некоторые источники называют такую метрику римановой (Riemannian Metric)⁷.

Теперь, после длинного и путанного перечисления терминов, рассмотрим кое-что действительно полезное в информационной геометрии.

Информационная геометрия

Информационная геометрия возникла на стыке статистики и дифференциальной геометрии. С её помощью мы рассматриваем вероятностное распределение с точки зрения геометрии.

Для этого нам понадобится информационная метрика (Information metric). Её также называют информационной метрикой Фишера (Fisher Information metric).

Информационная метрика Фишера

Чтобы найти подходящий метрический тензор в точке θ, где θ — распределение из семейства p (xθ), нам нужно определить расстояние между p (xθ) и его бесконечно малым возмущением (infinitesimal perturbation) p (xθ + dθ). Тогда относительная разность (relative difference) выражается уравнением 3. Очевидно, что:

Уравнение 3. Относительная разность возмущения в точке θ.

Относительное расстояние зависит от случайной величины x. При правильном расчёте, то математическое ожидание Δ, т. е. 𝔼(Δ) = 0. А как насчёт дисперсии? Как оказывается, дисперсия ненулевая. Мы можем определить dl²=𝔼[Δ²]. Из первого принципа длина бесконечно малого смещения между θ* и θ** для метрики 𝓕 задаётся как dl² = 𝓕dθdθ. Решение для dl²=𝔼[Δ²] = 𝓕dθdθ даёт следующее выражение:


Уравнение 4. Информационная метрика Фишера

Эту величину называют информационной метрикой Фишера (FIM). Она измеряет, сколько информации несёт наблюдение случайной переменной θ в среднем, если xp (x∣θ). Есть и другой способ превратить уравнение 4 вплоть до фактора 12. Подробнее об этом — по ссылке 1. Но если вас это волнует, то бурное развитие квантовой информатики позволило найти применение квантовой метрике Фишера. по этому поводу у меня скоро выйдет новая серия статей. Если хотите узнать об их выходе, подписывайтесь! Другое применение — неаприорная информация в выводе Байеса (uninformative prior in Bayesian inference). Но, возможно, я увлёкся и лезу слишком глубоко в дебри.

В заключение статьи скажу, что информационная матрица Фишера 𝓘, которая является матричным вариантом 𝓕, в случае нескольких параметров может использоваться в оптимизации аналогично градиентному спуску с правилом обновления в виде:


Уравнение 5. Правило обновления для оптимизации на языке дифференциального многообразия

где η — изучаемый параметр, а ∇J — дивергенция скалярного поля J.

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

Ссылки

  1. http://www.robots.ox.ac.uk~lsgsposts2019-09-27-info-geom.html
  2. https://math.stackexchange.comquestions240491what-is-a-covector-and-what-is-it-used-for
  3. https://qr.aepv34JS
  4. https://franknielsen.github.ioSPIG-LesHouches2020Geomstats-SPIGL2020.pdf
  5. https://www.cmu.edubiolphysdesernopdfdiff_geom.pdf
  6. https://math.ucr.eduhomebaezinformationinformation_geometry_1.html
  7. https://mathworld.wolfram.comRiemannianMetric.html

Обратите внимание, что ссылки, приведённые в конце, архивированы http://web.archive.org.

Научим вас аккуратно работать с данными, чтобы вы прокачали карьеру и стали востребованным IT-специалистом.


ссылка на оригинал статьи https://habr.com/ru/company/skillfactory/blog/708796/

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

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

Окно выбора режима работы ScoreCloud Studio
Окно выбора режима работы ScoreCloud Studio

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

Режим записи. Если много времени - редактор не отличается от классических редакторов нот.
Режим записи. Если много времени — редактор не отличается от классических редакторов нот.

Позволяя как сохранять ноты локально, так и в облако. В бесплатной версии доступно 10 файлов.

Сделаем проще. Возьмем МИДИ-файл «В лесу родилась елочка» и импортируем его через Music XML (*.xml). Формат считается устаревшим, но тут он работает.

Виден такой же редактор, но заметно более интересно играющий музыку
Виден такой же редактор, но заметно более интересно играющий музыку

Открыли в MuseScore3, конвертируем.

Конвертируем в самый устаревший формат
Конвертируем в самый устаревший формат

Попытка подписать к импортированным нотам наше распознанное пение срывается.

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

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

Распознанные ноты без ритма
Распознанные ноты без ритма

Расставленный ритм, смотрим на разделенные фразы.

Получаем немного другую партитуру.

Изменение ритма. Фразы стали отрывистые.
Изменение ритма. Фразы стали отрывистые.

И, напоследок, автоматический подбор аккордов по кнопке «Magic Wand» для импортированной мелодии «В лесу родилась елочка».

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

Вот такой интересный бесплатный продукт предлагается вниманию всем читателям Хабра! Всем с Новым Годом! Успешных выступлений и добрый песен в новом, 2023 году!


ссылка на оригинал статьи https://habr.com/ru/post/708802/

Восемь самых востребованных языков программирования в 2022 году

Задумывались ли вы, какие языки программирования пользовались наибольшей популярностью в 2022 году? Хотя на свете их существует более двухсот, лишь немногие реально используются в IT-компаниях. Знать, какие именно, очень важно для тех, кто хочет преуспеть в индустрии разработки.

За последние четырнадцать месяцев (с октября 2021 по ноябрь 2022 года) DevJobsScanner обработал более двенадцати миллионов вакансий на должность разработчика. Из этих двенадцати миллионов DevJobsScanner отобрал только те, в которых был прописан конкретный язык. Если вы хотите узнать больше о методике, обратитесь к разделу «Как проводилось это исследование».

Открыв кат, вы узнаете, какие из языков оказались самыми востребованными.

1 — JavaScript / TypeScript

Начиная с того времени, когда его создали, чтобы сделать вебсайты динамичными, JavaScript год от года неуклонно набирает популярность. В свете сказанного, на текущий момент JavaScript является наиболее востребованным языком по всему рынку. Этому достижению могло способствовать и появление TypeScript (суперсет JavaScript с типобезопасностью). Популярность TypeScript стала расти только в последние годы. Многие новые фреймворки JavaScript полностью написаны на TypeScript, например Angular или NestJS.

С октября 2021 по ноябрь 2022 года (за четырнадцать месяцев) мы нашли 801 000 вакансий, что составляет 31% от общего количества должностей, для которых требуется знание определенного языка.

Найдено вакансий: 801 000 (~31%)
Ключевые слова: JavaScript, TypeScript, React, Angular, Vue, Node.

2 – Python

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

За четырнадцать месяцев мы насчитали около 515 000 вакансий, в которых требовалось владение именно Python – это 20% от общего числа.

Найдено вакансий: 515 000 (~20%)
Ключевые слова: Python, Django, Flask.

3 – Java

Замыкающим в тройке призеров оказался Java, третий по популярности язык на рабочем рынке. Java пользовался большой популярностью с самого своего дебюта в 1995 году. Несмотря на то, что в последние годы, когда стали появляться более современные языки вроде Kotlin, интерес к нему стал падать, он всё же прочно укоренился в верхней тройке. Позиции ему помогают удерживать фреймворки типа Spring, которые используются во многих крупных компаниях.

Найдено вакансий: 443 000 (~17%)
Ключевые слова: Java, Spring.

4 — C#

Четвертое место достается C#. C# — это мультипарадигменный объектно-ориентированный язык общего назначения, созданный по большей части для того, чтобы восполнить некоторые недостатки C++. Будучи языком общего назначения, C# имеет обширную область применения. Самый распространенный способ его использования – в сочетании с фреймворком .NET. Он также активно применяется для шифрования в игровом фреймворке Unity. И .NET, и Unity широко распространены в ведущих компаниях.

Найдено вакансий: 305 000 (~12%)
Ключевые слова: C#, .NET.

5 – PHP

Язык, который двадцать семь лет назад стартовал как простой «инструмент для создания персонального сайта» (Personal Home Page Tool), откуда и название PHP, с тех пор прошел невероятный путь. В 2022 году он стал пятым среди самых востребованных языков программирования, с 10% долей от общего числа вакансий. То есть одна из десяти должностей в разработке предполагает знание PHP.

PHP используется преимущественно для веб-разработки в связке со фреймворками вроде Laravel или WordPress.

Найдено вакансий: 226 000 (~9%)
Ключевые слова: PHP, Laravel, WordPress.

6 – C/C++

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

Найдено вакансий: 213 000 (~8%)
Ключевые слова: C, C++.

7 – Ruby

Ruby занимает седьмое место среди самых востребованных языков программирования с 125 000 найденными вакансиями. Самые распространённые практики его применения связаны со фреймворком Ruby on Rails. Седьмое место может показаться скромным результатом, но с Ruby работают некоторые из самых успешных IT-компаний – Twitter, Crunchbase, Github.

Найдено вакансий: 125 000 (~5%)
Ключевые слова: Ruby, Ruby on Rails

8 – GO

Go – молодой язык, созданный компанией Google всего двенадцать лет назад. По замыслу Google, Go должен был улучшить вычислительную производительность в эпоху многоядерных процессоров, объединяемых в сети, и крупных кодовых баз. Как можно увидеть на графике ниже, популярность Go постепенно растет; в 2023 году он может попасть в первую пятерку. Go также используют ведущие компании – Uber, Twitch.

Найдено вакансий: 53 000 (~2%)
Ключевые слова: Go

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

А вот та же информация с разбивкой по месяцам:

Как проводилось это исследование

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

Например, вакансия под заголовком «Бэкенд-разработчик» отметалась и не записывалась ни в какую категорию, даже если для нее указывались стек технологий или список языков в требованиях к кандидату. Напротив, вакансия под названием «Разработчик на React» засчитывалась в JavaScript / TypeScript; аналогичным образом вакансия « Разработчик на Laravel» засчитывалась в PHP.

Важно также отметить, что одна вакансия могла попасть в две или несколько категорий. Например, должность «Фуллстэк-разработчик (Django/Angular)» мы относили к Python и к JavaScript / TypesScript.

Обобщая сказанное

Очевидно, что Javascript и Typescript занимают на рынке истинно доминирующее положение. На долю Javascript и Typescript приходится 31% от общего числа вакансий, в которых есть указание на определенный язык. Это очень много – если перефразировать, почти каждая третья вакансия требует владения Javascript или Typescript.

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

C#, C/C++ и PHP тоже относятся к языкам, которые следует иметь в виду – всех их объединяет устойчивая тенденция к росту. Скажем, PHP в октябре 2021 года собрал около 5% от общего числа вакансий, а к ноябрю 2022-го вышел на чуть меньше 10% — то есть почти что вдвое больше.


ссылка на оригинал статьи https://habr.com/ru/company/productivity_inside/blog/708764/