ESP32P4 HMI

Решил поставить такую на станок вместо DMG80480C043_01WTR. Конечно, HMI от DWIN пиздатая по-своему - у ней нажежная конструкция, питание от 24V DC, своя система создания GUI, которая по началу кажется кривой и говняной, но потом как-то привыкаешь и становится норм, но вот некоторых фишечек ц нее нет в отличие от ESP32P4 - а именно Wi-Fi, Bluetooth, RS-485, обновление через OTA и GPIO. Поэтому решил попробовать создать глобальную систему обновления прошивок с контролем версий, деплоем, правилами роллоут и т. д., и как аппаратную платформу выбрал JC4880P443C-I-W-Y. Не знаю как она в итоге подойдет для промышленных нужд, но для DIY так вообще ахуенно. Покажу здесь, пожалуй, несколько фоточек и оставлю ссылку на гитхаб. Прикол прошивки в том, что в нее можно подсовывать картинки из EEZ-Studio тупо копированием папки ./src в папку ./main.
Прошивка умеет показывать картинки, отображать объекты LVGL 9.5, умеет OTA для самой себя и + киллер-фича, до которой не додумался бы ни один другой "умный дядя", кроме меня. Это софтварный программатор для микроконтроллеров семейства STM32! Создан он на базе документации CMSIS от ARM. И он, сука, работает! Хоть и не очень стабильно. Точную причину нестабильности я пока не знаю, но подозреваю, что здесь не обошлось без аппаратных проблем, вроде подтяжки для пинов SWCLK, SWDIO, NRST. На своем тестовом стенде я ее сделал, припаяв резисторы по 10 кОм, но они пока не очень-то работают и успешных прошивок "по воздуху" я в итоге добиваюсь брутфорсом, т. е. повторением попыток при неудачной перезаписи, но тут имеются в виду не попытки записать милипусенький пакетик в чип, а именно весь процесс перезаписи глобально. Всего допущено 5 попыток, но их количество можно установить произвольно через дефайн.
Кроме всего прочего, я потратил довольно много времени для того, чтобы устранить голубые всполохи экрана при прошивке ESP32-контроллера, которые возникали в процессе записи новой прошивки в чип. Теперь тут у нас красивенький прогресс-бар и всполох возникает только в самом конце, когда происходит перезагрузка. И то, я думаю, лечится заблаговременным отключением подсветки экрана.
На данный момент прка что еще не реализованы интерфейсы RS-485, на борту нет modbus, нет управления камерой и нет блютуз, а так же нет управления SD-картой.
Интересная игрушка... Посмотрим, какой из нее выйдет толк.
- L - расчетная длина прыжка в обычном пространстве;
- Lc - критическая навигационная дистанция, принимаемая равной 1,2 светового года;
- σ(L) - характеристический радиус локализации выхода;
- τ(L) - характеристический радиус временной локализации выхода;
- r0 - расчетная точка выхода;
- RH - радиус Хаббла;
- RG - эффективный радиус захвата приводного маяка;
- Λ - постоянная Найяра;
- σc - радиус локализации на критической дистанции, принимаемый равным 9 световых минут;
- τc - временная неопределенность на критической дистанции.
Формулировка. При уменьшении длины прыжка ниже критической дистанции Lc радиус локализации выхода растет экспоненциально по обратной длине прыжка. На дальних дистанциях рост сохраняется, но становится медленным и логарифмическим.
Нормировка:
σc = 9 св. минут
Λ ≈ 284 св. минут
α ≈ 0.12
Примечание о размерности. В формуле Найяра все длины должны быть приведены к одной единице измерения. Например, если Λ выражена в световых минутах, то L и Lc также подставляются в световых минутах. Это особенно важно при расчетах в области ближней расходимости.
Следствия.
- При L = Lc радиус локализации стабильно определяется в пределах около 9 световых минут.
- При L → 0+ величина σ(L) стремится к бесконечности.
- На больших расстояниях радиус локализации растет слабо, примерно как ln(L).
Формулировка. Гравитация сама по себе не запрещает гиперпрыжок, однако локальная кривизна пространства-времени и, в особенности, ее градиенты искажают фазовую геометрию прожига гипер-ядра. В результате расчетная траектория перехода получает дополнительное смещение относительно идеального решения.
Физический смысл. ГПТ-чувствительный контур реагирует не на однородное ускорение как таковое, а на приливную неоднородность метрики. Поэтому определяющим параметром является не величина поля вида GM/r², а величина его пространственного градиента, пропорциональная GM/r³.
где:
- ΔR_g - добавочное гравитационное смещение точки выхода;
- μ - эмпирический коэффициент ГПТ-чувствительности;
- G - гравитационная постоянная;
- M - масса ближайшего доминирующего тела;
- r - расстояние до центра масс;
- D - расчетная длина прыжка.
Обобщенная форма записи:
где ||T|| - норма приливного тензора локальной кривизны.
- Чем ближе старт к массивному телу, тем хуже предсказуемость выхода.
- Чем дальше прыжок, тем сильнее накапливается гравитационная ошибка.
- Низкие орбиты и глубокие гравитационные колодцы считаются навигационно неблагоприятными зонами.
- Точки Лагранжа, высокие орбиты и межпланетное пространство являются предпочтительными областями старта.
Суммарная эффективная ошибка локализации может оцениваться как:
где σ(L) - базовая ошибка локализации, задаваемая правилом Найяра.
Формулировка. Для устойчивой работы приводных узлов требуется не только малая пространственная ошибка, но и минимальная приливная деформация рабочей метрики в объеме фазовой синхронизации.
Практически это означает, что приводные узлы стандартного класса устанавливаются только в областях, где гравитационное преломление траектории мало и стабильно во времени.
Нормативно предпочтительные зоны:
- точки Лагранжа;
- высокие стационарные орбиты;
- межпланетные якорные области;
- зоны с малым градиентом гравитационного поля.
Следствие. Если одна пара приводных узлов размещена в зоне слабой приливной кривизны, а другая - в низкой орбите или у поверхности массивного тела, общий канал становится плавающим и не обеспечивает гарантированного попадания в приемную камеру.
Военные структуры могут временно развертывать тактические приводные маяки в областях с повышенной приливной кривизной - в том числе на низких орбитах или вблизи планетарных тел. Однако при этом аварийность канала резко возрастает.
Практические риски:
- нестабильность окна выхода;
- неполное совмещение канала;
- выход объекта вне приемной камеры;
- врезание в твердую породу, конструкцию или атмосферу;
- размазывание полезной нагрузки по пространственно-временному окну выхода.
По этой причине тактические приводные маяки рассматриваются как средство чрезвычайного применения, а не как допустимая гражданская инфраструктура.
ГПТ-смещение не следует путать с общей ошибкой навигационного решения. Даже идеально рассчитанный прыжок может оказаться неудачным, если старт выполнен в зоне, где локальная приливная геометрия недостаточно благоприятна для стабильного прожига гипер-ядра.
Формулировка. Существует такая малая длина прыжка LH, при которой радиус локализации сравним с радиусом Хаббла:
В принятой инженерной нормировке это достигается примерно при:
Интерпретация. При попытке прыгнуть “слишком близко” область допустимого выхода разрастается до космологических масштабов. Объект может выйти практически в любом направлении относительно цели, включая направление, противоположное расчетному.
Важно: пока L > 0, вероятность выхода вблизи расчетной точки остается ненулевой, сколь бы малой она ни была.
Формулировка. Прыжок с нулевой расчетной длиной является сингулярным предельным случаем и не допускает конечной области локализации выхода.
Для точного нулевого прыжка вероятность выхода в любой конечной области пространства принимается равной нулю:
Практический вывод. Нулевой прыжок запрещен как форма гарантированной безвозвратной утраты отправляемого объекта. То есть, для человека это фактически смерть.
Формулировка. Гиперпрыжок не вводит единого универсального “сейчас” для удаленных звездных систем. Солнце, Альфа Центавра и любая другая достаточно удаленная область не обязаны иметь общее объективное настоящее в обычном пространстве-времени.
Однако сам гиперпереход является физическим процессом с внутренней направленностью. В нем различаются входная фаза, виртуальная фаза и выходная актуализация:
где:
- Φ_entry - фаза входного прожига и утраты локальной материальной допустимости объекта;
- Φ_virtual - виртуальная гиперфаза конфигурации;
- Φ_exit - фаза выходной актуализации конфигурации в области прибытия.
Физический смысл. Запрещены не “прыжки раньше какого-то общего времени Вселенной”, а такие решения прожига, которые создают замкнутую причинную петлю. В разных системах отсчета один и тот же гиперпереход может получать различное координатное описание: момент отправления, момент выхода и интервал между ними не обязаны укладываться в бытовое представление об общем “сейчас” для удаленных звездных систем. Однако ни одно допустимое описание не должно приводить к сценарию, в котором результат выхода меняет условия собственного входа.
Уточнение. Опережение светового фронта не тождественно путешествию в прошлое. Объект, вышедший в удаленной системе раньше, чем туда дошел свет от его отправления, оказывается не в прошлом системы отправления, а в области, еще не получившей обычной световой информации о данном событии.
В рамках стандартной релятивистской картины такой переход был бы проблемным, поэтому ГПТ не является простой надстройкой над привычной физикой. Это новая область эмпирической физики, где допустимы сверхсветовые переходы, но недопустимы самозамкнутые причинные контуры.
Следствие. Стандартная ГПТ не является машиной времени. Она не требует абсолютной одновременности между звездами, но сохраняет внутренний порядок самого гиперпроцесса: входная конфигурация предшествует виртуальной фазе, а виртуальная фаза - выходной актуализации.
Формулировка. Рост пространственной неопределенности выхода сопровождается ростом временной неопределенности, связанной с ней степенным законом.
Для инженерной нормировки допустимо принимать:
β = 2/3
Интерпретация.
- На критической дистанции временной разброс составляет секунды.
- На безопасных дальних прыжках он обычно несущественен.
- На опасных ближних прыжках он может возрастать до часов, дней, лет и более.
Формулировка. Ни одна последовательность допустимых гиперпрыжков не может привести объект в такое состояние пространства-времени, в котором выход этого объекта становится причиной отмены или изменения собственного входного прожига.
Интерпретация. В разных локальных системах отсчета порядок удаленных событий может описываться по-разному. Это не считается нарушением ГПТ. Нарушением считается только причинно замкнутая конструкция, где результат прыжка делает невозможным сам прыжок.
Следствие. ГПТ не вводит общего настоящего для всей Вселенной, но накладывает запрет на самопротиворечивые причинные контуры. Поэтому стандартная ГПТ не может быть использована для построения практической машины времени.
Формулировка. Никакой конечный экспериментальный протокол не может строго доказать абсолютную тождественность субъекта или объекта на входе и на выходе гиперпрыжка.
Пусть X_in - объект на входе, X_out - объект на выходе. Тогда даже если конечный набор наблюдаемых полностью совпадает:
из этого не следует строгая онтологическая идентичность:
Следствие. ГПТ допускает доказательство структурной, функциональной, биографической и информационной непрерывности, но не абсолютного физического и метафизического тождества.
Формулировка. ГПТ не транспортирует вещество через промежуточное пространство как поток частиц. Он переводит физическую конфигурацию объекта в виртуальное гиперсостояние и затем актуализирует эквивалентную конфигурацию в области выхода.
Иначе говоря: на входе частицы объекта утрачивают статус обычных локально существующих частиц и переходят в виртуальную конфигурацию. На выходе эта конфигурация снова становится реальной. Инженерно говорят, что “корабль перенесен”, но строго физически сохраняется не материальная непрерывность, а конфигурационная непрерывность.
Для пассажира, врача и страховой компании это различие не является отвлеченной философией. После успешного выхода человек сохраняет память, личность, структуру мозга, биографическую непрерывность и медицински наблюдаемое состояние. Но строгого доказательства, что “это те же самые частицы” или “тот же самый субъект в метафизическом смысле”, ГПТ не предоставляет.
ГПТ не перевозит мешок атомов. Он заставляет Вселенную согласиться, что такая же конфигурация снова допустима по ту сторону.
Формулировка. ГПТ не сохраняет заранее подготовленную квантовую сцепленность между системой, прошедшей через гиперпрыжок, и системой, оставшейся в исходной области. После выходной актуализации макроскопическая структура объекта, классические записи, память, биологическое состояние и инженерные контрольные метки могут сохраняться, однако исходная внешняя квантовая сцепленность не восстанавливается.
Это не означает, что после прыжка материя лишается квантовых свойств или что разрушается химическая структура объекта. Речь идет о более узком, но принципиальном результате: ГПТ обрывает внешние сцепленные связи, связывавшие переносимую конфигурацию с контрольными системами вне прожига.
Практический смысл. Объект на выходе может быть тем же самым во всех макроскопически значимых смыслах, но он уже не является частью прежней сцепленной квантовой пары с объектами, оставшимися на стороне входа. Поэтому сцепленность не может использоваться как абсолютный доказатель тождества после гиперперехода.
Для проверки совместимости ГПТ с квантовой сцепленностью была проведена серия экспериментов со сцепленными эталонами. В базовом варианте создавалась пара сцепленных квантовых систем: эталон A оставался в лаборатории отправления, а эталон B помещался в защищенный контейнер и проходил через штатный гиперпрыжок. После подтвержденной выходной актуализации проводилась сверка результатов измерений по заранее согласованному протоколу.
Затем были проверены усложненные схемы: перенос одной половины сцепленной пары через разные типы приводных маяков, одновременный перенос обеих половин в разных контейнерах, перенос сцепленных эталонов внутри одного корабля, попытки восстановить сцепленность через гиперсвязный узел, опыты с квантовой памятью, цепочками сцепления, обменом сцепленности и многочастичными состояниями.
Итог оказался устойчивым: любые схемы, где сцепленность должна была пережить участие ГПТ как внешняя проверяемая связь между входной и выходной областями, давали отрицательный результат. На выходе сохранялись классические данные, физическая структура контейнера и состояние контрольных носителей в обычном инженерном смысле, но исходная сцепленность с оставшейся системой исчезала.
В неформальной формулировке лабораторных групп этот результат звучал так: “все, что работает без ГПТ, с ГПТ не работает”. ГПТ не позволил построить мгновенную сцепленную связь, не позволил создать абсолютный квантовый паспорт личности и не позволил доказать полную онтологическую идентичность объекта после прыжка.
После прыжка человек помнит себя, узнает друзей и проходит медицинский контроль. Но если до прыжка он был частью сцепленной квантовой пары, то по ту сторону эта связь уже мертва.
Важно. ГПТ не является квантовой телепортацией. Несмотря на внешнее сходство слов, эти процедуры относятся к разным физическим механизмам.
Квантовая телепортация в строгом смысле передает квантовое состояние от одной системы к другой при помощи заранее подготовленной сцепленности и обычного классического канала связи. Она не переносит макроскопический объект, не создает транспортный канал, не перемещает массу и не дает сверхсветовой передачи управляемой информации.
ГПТ, напротив, работает с макроскопической конфигурацией объекта. Он переводит ее в виртуальную гиперфазу и актуализирует в области выхода. Он не требует заранее подготовленного сцепленного двойника на стороне прибытия и, согласно экспериментам сцепленного эталона, не сохраняет внешнюю квантовую сцепленность через прожиг.
GPT = macroscopic configuration actualization
Следствие. Попытки описывать ГПТ как “квантовую телепортацию корабля” считаются грубой популяризацией. В технической речи предпочтительны термины гиперпереход, конфигурационный перенос, виртуальная гиперфаза и выходная актуализация.
Формулировка. Врата не являются порталом и не создают “дверь” между двумя точками пространства. В инженерном смысле Врата представляют собой приводной гипермаяк: фазово-навигационное устройство, создающее устойчивую сигнатуру, по которой гипер-ядро корабля может выполнить приводной захват области выхода.
В бытовой речи такие объекты продолжают называться Вратами, однако в технической документации предпочтительны термины приводной маяк, приводной узел и фазово-приводная сигнатура.
Gate = drive beacon
Для допустимого режима:
где η << 1 - коэффициент навигационного сжатия.
Инженерный смысл. Приводной маяк не отменяет правило Найяра, не переносит корабль сам по себе и не заменяет прожиг гипер-ядра. Он лишь делает дальний прыжок инженерно управляемым, сужая окно выхода до нескольких метров или десятков метров.
- Приводной маяк - устройство, создающее устойчивую фазовую сигнатуру выхода.
- Приводной узел - крупная гражданская или военная инфраструктура, включающая маяк, диспетчерскую систему, энергетику и зону безопасного приема.
- Приводная метка - временная, скрытая или маломощная сигнатура, используемая в экспедиционных и военных режимах.
- Приводной захват - наведение гипер-ядра на сигнатуру маяка или метки.
- Приводная тень - область, где захват искажен, зашумлен или невозможен.
Формулировка. Приводной маяк уменьшает не только пространственную, но и временную область локализации выхода, формируя устойчивую фазово-приводную сигнатуру.
где:
- TG - временное окно приводного маяка;
- ηt - коэффициент темпорального сжатия;
- обычно TG лежит в пределах от миллисекунд до микросекунд.
Следствие. Без приводного маяка гиперпрыжок - это искусство попасть "примерно туда" и "примерно тогда". С приводным маяком - это уже транспорт.
Формулировка. Построение сети приводных узлов на расстояниях меньше критической дистанции Lc не дает устойчивой навигационной выгоды.
При L < Lc вероятность промаха по приводному узлу растет в соответствии с общим законом ближней расходимости локализации.
Следствие. Приводные сети строятся редкими магистральными узлами, а не густой локальной решеткой.
Формулировка. Наличие ГПТ не отменяет скорость света и не создает мгновенную межзвездную сеть с произвольной пропускной способностью. Глобалнет существует как совокупность локальных радиосетей, лазерных и микроволновых линий связи, внутрисистемных ретрансляторов, узлов гипер-связи, магистральных приводных станций и дорогих приоритетных каналов.
Внутри планетной системы связь остается обычной электромагнитной связью. Станции, спутники, корабли, ретрансляторы и планетные сети обмениваются радиосигналами, лазерными лучами, направленными микроволновыми каналами и кабельными магистралями. Задержки внутри системы по-прежнему определяются скоростью света, расстояниями, орбитальной геометрией и загруженностью ретрансляторов.
Между звездными системами данные передаются через узлы гипер-связи. Такой узел не отправляет физический носитель с данными и не открывает полноценный транспортный канал для корабля. Он принимает обычный электромагнитный поток из локальной сети, кодирует его, сжимает, шифрует и модулирует им гиперсвязную несущую, направленную на сопряженный приемный узел.
Иначе говоря: узел гипер-связи не пересылает “диск с файлами”, контейнер данных или миниатюрный груз. Он работает ближе к сверхдорогой межзвездной радиостанции: принимает поток обычного сигнала, накладывает его на нестабильную гипернесущую и передает короткими импульсами через подготовленный канал связи.
Условная схема передачи:
- локальная сеть передает данные на ближайший узел гипер-связи обычными радиоканалами, лазерными линиями или кабельными магистралями;
- узел буферизует данные, сжимает их, шифрует и разбивает на блоки с сильной коррекцией ошибок;
- передающий контур формирует гиперсвязную несущую и модулирует ее информационным сигналом;
- приемный узел фиксирует гиперсвязный импульс, восстанавливает поток данных и сверяет контрольные коды;
- после восстановления данные уходят в локальную сеть принимающей системы через обычные ретрансляторы.
Отличие от транспортного прожига. Гипер-связь не переносит макроскопический объект, массу корабля, экипаж, защиту, инерционный профиль и бортовые системы. Поэтому расход гипертоплива на один информационный импульс значительно ниже, чем при транспортном гиперпрыжке. Однако он не равен нулю: узел тратит энергию и гипертопливо на формирование гиперсвязной несущей, стабилизацию фазы, охлаждение, синхронизацию и подавление шумов.
Ограничение. Узел гипер-связи не является бесконечным межзвездным Wi-Fi. Его пропускная способность ограничена классом оборудования, запасом гипертоплива, качеством приводной сигнатуры, шумами гиперсреды, дальностью сопряжения, временем охлаждения и доступными окнами связи. Чем выше скорость передачи, тем дороже становится каждый устойчиво принятый бит.
Следствие 1. Глобалнет создает общее информационное пространство цивилизации, но не дает земного интернета с малым пингом. Межзвездные новости, банковские пакеты, военные донесения, научные архивы и личная переписка передаются регулярно, но через очереди, приоритеты и расписания.
Следствие 2. Срочная передача небольшого объема данных между звездами может стоить очень дорого. Оплачивается не только объем, но и приоритет канала, занятость узла, расход гипертоплива, резервирование, криптографическая обработка и риск потери или повреждения пакета.
Следствие 3. Большие массивы данных часто выгоднее передавать не в реальном времени, а пакетами по расписанию. Поэтому в Глобалнете одновременно существуют дорогие срочные каналы, дешевые отложенные очереди, военные магистрали, корпоративные линии и физическая доставка архивов курьерскими судами.
Глобалнет похож на космический Wi-Fi только в пределах локальной системы. Между звездами это уже не домашний роутер, а дорогая сеть гиперсвязных радиостанций, где за скорость, объем и секретность приходится платить топливом, временем и приоритетом доступа.
Формулировка. Узел гипер-связи не всегда может эффективно передать сигнал ближайшему узлу. Если расстояние между двумя узлами меньше критической дистанции Lc, прямое гиперсвязное плечо становится навигационно невыгодным, нестабильным или запрещенным регламентом. В таких случаях сеть может использовать дальний обход: маршрутизацию пакета через удаленный межзвездный узел.
Поэтому сообщение между двумя объектами внутри одной планетной системы не всегда идет прямым путем. Если обычная радиосвязь слишком медленна, а прямой гиперсвязный импульс слишком короток для устойчивого режима, пакет может быть отправлен через дальний магистральный ретранслятор.
Интерпретация. Для обычной связи кратчайший путь почти всегда предпочтителен. Для гипер-связи это не обязательно так. Слишком близкое плечо может оказаться хуже дальнего, поскольку правило Найяра делает малые гиперпереходы нестабильными. Поэтому дальний межзвездный ретранслятор иногда обеспечивает более быстрый и надежный маршрут, чем прямое соединение между соседними планетами.
Следствие 1. Если на Луне есть узел гипер-связи, а на Марсе такого узла нет, сообщение до Марса все равно должно идти обычным электромагнитным каналом и будет ограничено скоростью света.
Следствие 2. Если на Марсе есть собственный узел гипер-связи, это не означает автоматического мгновенного канала Луна-Марс. Прямое плечо может быть слишком коротким. В этом случае сеть использует внешний магистральный ретранслятор, если он доступен технически, политически и по квотам.
Следствие 3. Топология Глобалнета контринтуитивна: ближайший узел не всегда является лучшим маршрутом. Стоимость маршрута определяется не только расстоянием, но и ГПТ-допустимостью плеча, загрузкой узлов, расходом гипертоплива, приоритетом пакета, режимом шифрования и запретами безопасности.
В Глобалнете пакет с Луны на Марс иногда действительно идет через другую звезду. Не потому что маршрутизатор сошел с ума, а потому что для гипер-связи слишком близко - это тоже плохо.
Формулировка. Расход гипертоплива не зависит от длины прыжка и определяется только параметрами прожига гипер-ядра и массой транспортируемой системы.
где:
- mf - масса гипертоплива;
- M - полная масса системы;
- χ - класс гипер-ядра;
- ν - режим прожига.
Ключевое следствие. Прыжок до Андромеды и прыжок до Стрельца A* стоят одинаково по топливу при одинаковой массе и классе прожига. Ограничение задается не “дальностью как ценой”, а навигацией и доступностью топлива.
Формулировка. Активное гипертопливо не переносится через образующуюся при прожиге червоточину как обычный груз и потому не может быть доставлено “само собой” в точку выхода.
При попытке провести активное гипертопливо через собственный или внешний ГПТ-прожиг его фазовая структура вступает в резонанс с каналом. В зависимости от режима оно либо расходуется, либо деградирует в инертный шлак, либо вызывает аварийную нестабильность прожига.
Следствие. Невозможно организовать простую схему стратегического накопления активного гипертоплива на удаленных узлах за счет обычной гипердоставки. Каждый крупный узел должен иметь собственную производственную, квазипроизводственную или финально-активационную базу.
| Состояние | Перенос через ГПТ | Практический смысл |
|---|---|---|
| Прекурсоры | допустим | сырье, изотопные смеси, катализаторы и компоненты, еще не имеющие активной фазовой структуры |
| Стабилизированная матрица | ограниченно допустим | полуфабрикат, требующий финальной активации на месте |
| Активное гипертопливо | не допускается | непосредственно вовлекается в фазовый прожиг и не ведет себя как обычный груз |
Практический смысл. Главная проблема ГПТ - не цена прыжка как такового, а сверхзатратное производство, кратковременная стабилизация, финальная активация и жесткие ограничения хранения гипертоплива.
Формулировка. Расход топлива масштабируется с массой транспортируемой системы, однако практически допустимый гиперпереход имеет нижний порог, задаваемый массой гипер-ядра, фазового каркаса, защиты, автоматики, охлаждения и стабилизаторов.
Следствие. Малые грузы, одиночные пассажиры, капсулы данных и легкие суда не могут дешево прыгать сами по себе. Они используют корабль-носитель, курьерскую линию, приводной узел или иную тяжелую инфраструктуру.
В человеческой инженерной школе бортовой ГПТ на кораблях меньше эсминца считается крайне нерациональным или практически невозможным. Однако шатурианцы, по косвенным данным, сумели обойти это ограничение для малых боевых кораблей - корветов, бомбардировщиков и ударных носителей роя.
Точный механизм неизвестен. Среди рабочих гипотез называют мгновенную активацию стабилизированной матрицы в момент прожига, следовой привод по краткоживущим фазовым меткам, скрытые приводные закладки и принципиально иную модель локализации. Ни одна из гипотез не считается доказанной.
Именно шатурианская миниатюризация ГПТ сделала возможной тактику внезапных роевых налетов: множество малых кораблей появляется из плохо предсказуемого направления, быстро отрабатывает по цели и уходит до того, как оборона успевает развернуть полноценный ответ.
Формулировка. В момент прожига гипер-ядра объект на стороне входа необратимо утрачивает устойчивую локальную материальную конфигурацию. Этот процесс сопровождается кратковременным выбросом излучения и частиц, однако суммарная локально наблюдаемая энергия выброса определяется не полной массой корабля, а лишь малой долей энергии гипертоплива, реально диссипирующей в исходное пространство.
Иначе говоря: корабль, полезная нагрузка и топливо на стороне входа действительно погибают как локально существующая система, однако наблюдаемый “пшгик” не является полной энергетической разверткой всей отправляемой массы. Локально фиксируется только входной остаток, связанный с частичным распадом энергетики прожига.
В современной инженерной модели расход гипертоплива задаётся как малая доля отправляемой массы:
где:
- m_fuel - масса гипертоплива, подаваемого на прожиг;
- η - удельная топливная доля;
- M_ship - полная масса корабля вместе с полезной нагрузкой.
Для стандартного человеческого ГПТ-флота принимается:
То есть на каждый килограмм отправляемой массы требуется примерно 0.0001 кг гипертоплива. Иными словами:
- 0.1 г топлива на 1 кг массы;
- 100 г топлива на 1 тонну массы;
- 100 кг топлива на 1000 тонн массы.
Полная энергетическая ёмкость топлива описывается как:
где:
- E_fuel - полная энергия топлива, вовлечённого в прожиг;
- ξ - коэффициент эффективной энергетической развёртки топлива;
- c - скорость света.
В эксплуатационных расчётах обычно полагают:
Это не означает, что наблюдатель на стороне входа увидит полную релятивистскую развертку топлива. Напротив - именно здесь появляется понятие входного остатка.
Локально наблюдаемая энергия выброса на стороне входа составляет лишь малую долю от полной энергии топлива:
или, развёрнуто:
где:
- E_res - энергия локально наблюдаемого входного остатка;
- κ - коэффициент входного остатка, причём κ << 1;
- ξ - коэффициент энергетической развёртки топлива;
- η - удельная топливная доля;
- M_ship - полная масса корабля;
- c - скорость света.
Типичный инженерный диапазон для штатных гражданских прожигов:
При этом в большинстве мирных транспортных операций за рабочую норму принимают порядок:
Следствие 1. Даже сравнительно яркий входной прожиг соответствует лишь очень малой доле энергии топлива:
Следствие 2. Наблюдаемый “пышщщ” не является аннигиляцией корабля. Он является остаточным эффектом прожига и частичного локального сброса энергии топлива.
Следствие 3. Закон Риттера–Аникеева согласуется с теоремой Цзянь–Риттера: корабль на стороне входа гибнет полностью, но по эту сторону не остаётся энергетического эквивалента всей его массы.
Если принять:
ξ = 1
κ_typ = 10^(-8)
то получаем:
или, если масса корабля выражена в килограммах:
или, если масса корабля выражена в тоннах:
Для грубого перевода в условный тротиловый эквивалент можно использовать:
Это означает, что в мирном режиме энергия входного остатка растёт линейно с массой корабля и остаётся опасной, но не апокалиптической. Главная проблема - не только суммарная энергия, но и её форма: жесткое излучение, плазменный выброс, локальная ионизация, электромагнитная наводка и вторичные радиационные эффекты.
Ниже приведена ориентировочная таблица для штатного гражданского прожига при η = 10^(-4), ξ = 1 и κ = 10^(-8). Под безопасной дистанцией понимается минимальное расстояние от доков, жилых орбитальных объектов, терминалов, складов, ремонтных платформ и иной чувствительной гражданской инфраструктуры.
| Класс корабля | Типичная масса | Масса топлива | Оценка E_res | Условный эквивалент | Рекомендуемая дистанция старта |
|---|---|---|---|---|---|
| Эсминец (минимальный класс с бортовым ГПТ) |
20 000 т | 2 т | ≈ 1.8 * 10^12 Дж | ≈ 430 кг ТНТ | не менее 800 км |
| Крейсер | 80 000 т | 8 т | ≈ 7.2 * 10^12 Дж | ≈ 1.72 т ТНТ | не менее 1 500 км |
| Тяжёлый транспорт / танкер | 150 000 т | 15 т | ≈ 1.35 * 10^13 Дж | ≈ 3.23 т ТНТ | не менее 2 200 км |
| Пассажирский лайнер дальнего следования | 250 000 т | 25 т | ≈ 2.25 * 10^13 Дж | ≈ 5.38 т ТНТ | не менее 3 000 км |
| Сверхтяжёлый грузовик / контейнеровоз | 500 000 т | 50 т | ≈ 4.5 * 10^13 Дж | ≈ 10.76 т ТНТ | не менее 5 000 км |
Примечание. В человеческой практике корабли легче эсминца бортовым ГПТ-оборудованием, как правило, не оснащаются. Причины: громоздкость ядра, жесткие требования к радиационной защите, необходимость в сложном сопутствующем оборудовании, огромная стоимость, сложность обслуживания и нерациональность размещения столь тяжёлой системы на малых судах. Поэтому в таблице не рассматриваются шаттлы, тендеры и прочие малые аппараты.
- Отбытие в гиперпрыжок производится вдали от доков. Корабль сначала выводится на удалённую стартовую позицию и только затем прожигает гипер-ядро.
- Посадка пассажиров и экипажа осуществляется через тендеры, шлюпки, челноки и служебные катера. Для крупных лайнеров и грузовиков это штатная практика.
- Прожиг вблизи гражданских станций, жилых орбит и плотной сервисной инфраструктуры запрещён. Основные риски: гамма-компонента, ионизация среды, плазменный выброс и электромагнитные перегрузки.
- Стандартные Врата являются приводными узлами, а не порталами. Они не переносят корабль сами по себе, а дают точную фазово-приводную сигнатуру для выхода.
- Гражданские узлы обычно оптимизированы под приём и диспетчеризацию. Передающие режимы возможны, но требуют отдельной энергетики, стартовых зон и регламентов прожига.
Прибывший через приводной маяк корабль не “подруливает к пирсу” сам по себе. Приводной узел задает для него заранее расчищенную приёмную зону актуализации — область, свободную от плотной материи, активного трафика, неэкранированной электроники и обслуживающего персонала. После подтверждения устойчивого выхода в работу вступают орбитальные буксиры, тяговые фермы, швартовочные сети и диспетчерские алгоритмы разведения масс.
Крупнотоннажные лайнеры и грузовики, как правило, либо медленно перегоняются буксирными командами к внешним докам, либо обслуживаются на удаленных рейдах через контейнерные лихтеры, пассажирские тендеры и сервисные модули. Именно поэтому большой межзвёздный корабль обычно висит далеко за пределами основной доковой суеты.
Формулировка. Выходная актуализация требует не только точной фазовой сигнатуры, но и достаточной материальной чистоты области прибытия. Корабль не “отодвигает” окружающее вещество при выходе и не вытесняет его безопасным образом. Он актуализируется в заданной зоне, поэтому уже находящаяся там материя становится источником аварийного наложения конфигураций.
По этой причине приёмная зона приводного узла должна быть заранее очищена от плотной материи, активного трафика, крупных обломков, высоких концентраций пыли, ледяных частиц, неэкранированной аппаратуры и обслуживающего персонала. Речь идет не о “комфортной парковочной зоне”, а о минимальном условии физически допустимого выхода.
Пыль, микромусор и материальные включения. Разреженная пылевая среда опасна не только внешними повреждениями корпуса. При выходной актуализации часть посторонней материи может оказаться не “перед” кораблём, а внутри его актуализируемого объёма. В мягких случаях такие частицы фазово отбрасываются, испаряются или дают локальные плазменные вспышки. В тяжёлых случаях возникают материальные включения: микрофрагменты пыли, льда, металла или силикатов оказываются внедрены в обшивку, оптику, кабельные трассы, топливные магистрали, электронные блоки или живые ткани экипажа.
Для техники это может означать не просто царапины и пробоины, а отказ электроники на уровне кристаллов, пробой диэлектриков, короткие замыкания, битовые ошибки, разрушение сенсорных матриц, засорение микроканалов охлаждения и каскадные сбои управляющих систем. Особенно уязвимы вычислительные ядра, навигационные контуры, медицинские импланты, нейроинтерфейсы, оптика, радиаторы и тонкие внешние фермы.
Для живого организма последствия ещё хуже: посторонние микрофрагменты могут оказаться в крови, лёгких, глазах, нервной ткани, мозге, сердечной мышце и других внутренних органах. Даже если речь идёт о долях миллиметра, такие включения способны вызвать инсульт, внутреннее кровотечение, повреждение сетчатки, судорожный синдром, отказ имплантов или мгновенную смерть. Поэтому грязное окно выхода опасно не как “пыльная дорога”, а как попытка собрать человека и корабль в месте, где уже находится чужая материя.
Инкрустация выхода. В тяжелых авариях объект может выйти внешне почти целым, но с чужой материей внутри критических структур: металлической пылью в процессорных кристаллах, силикатной крошкой в оптических трактах, ледяными иглами в микроканалах охлаждения или микрофрагментами породы в тканях экипажа. Такой корабль иногда успевает передать штатный сигнал прибытия, а затем теряет управление, потому что навигационная электроника, медицинские импланты или мозг пилота уже физически повреждены.
Атмосфера и газовые облака. Выход в плотной газовой среде опасен не потому, что газ “твёрдый”, а потому что его масса в объёме корабля уже не является пренебрежимо малой. При актуализации корабля этот газ должен быть мгновенно вытеснен, ионизирован, сжат или фазово отброшен. Результатом становятся ударная волна, плазменная оболочка, тепловой импульс, электромагнитный выброс и экстремальная нагрузка на корпус.
Жидкость, лёд, грунт и конструкции. Попытка выйти внутри воды, льда, породы, корпуса станции или плотного обломочного поля почти всегда катастрофична. В этих режимах возникает не загрязнение выхода, а прямой конфликт объёмов: часть корабля актуализируется в области, уже занятой другой материей. Последствия варьируются от мгновенного разрушения внешних отсеков до полной потери корабля и размазывания полезной нагрузки по окну выхода.
Следствие. Приводной узел обязан не только дать точную фазовую сигнатуру, но и подтвердить материальную чистоту пространства в зоне выхода. Поэтому перед приёмом крупного судна выполняются радиолокационное, лидарное, гравиметрическое и пылевое сканирование зоны, расчистка траекторий, блокировка трафика и выдержка сухого окна.
Неформальное правило флота: хороший маяк показывает, куда выходить; хороший диспетчер следит, чтобы в этом месте уже ничего не было.
Входной остаток объясняет, почему межзвездный флот выглядит не как стая маршруток, а как тяжелая инфраструктура с удаленными стартовыми позициями, тендерами, буксирами, рейдами и очень нервными диспетчерами.
Формулировка. Входной остаток проявляется преимущественно как краткий импульс жесткого электромагнитного излучения с доминирующей фотонной компонентой, сопровождаемый потоком слабовзаимодействующих и экзотических частиц.
Условная запись спектрального баланса:
где:
- E_gamma - энергия фотонной компоненты (основной вклад);
- E_nu - энергия нейтринной компоненты;
- E_ex - энергия экзотических частиц или квазичастиц, фиксируемых косвенно;
- E_th - энергия вторичных тепловых и плазменных эффектов.
Инженерная оценка для штатного прожига:
E_nu / E_res ≈ 0.01 ... 0.10
E_ex / E_res ≈ 0.01 ... 0.20
E_th / E_res <= 0.05
Интерпретация. Для невооруженного наблюдателя входной прожиг выглядит как краткий ослепительный световой срыв, иногда сопровождаемый ударной волной, плазменным ореолом и остаточным свечением. При инструментальной регистрации доминирует именно фотонный импульс, что и создает субъективное впечатление, будто объект “улетел в свет”.
Формулировка. На замедленной съемке и при фазово-чувствительной регистрации входная деструкция локального состояния имеет две характерные стадии:
- предсрывное свечение - вещество объекта начинает неравномерно светиться, теряя обычные оптические свойства;
- фаза "схлопывания" - контуры объекта нарушаются, после чего он визуально исчезает, оставляя фотонно-плазменный остаток.
Условная временная запись процесса:
где:
- S_matter - обычное локальное материальное состояние объекта;
- S_lum - краткая светящаяся предсрывная фаза;
- ∅_local - отсутствие объекта как допустимого локального состояния;
- R_res - наблюдаемый входной остаток.
Практический вывод. На стороне входа не остается сомнений, что объекту “по эту сторону” пришел конец. Именно поэтому философские споры о тождестве субъекта после прыжка для большинства людей начинаются уже после того, как они видят прожиг хотя бы однажды вблизи.
Формулировка. На стороне выхода не возникает симметричного энергетического взрыва, эквивалентного входному прожигу. Выход является актуализацией виртуальной конфигурации в допустимой области пространства, а не торможением корабля и не сборкой объекта из местной материи.
Тем не менее выход не является полностью бесследным. При плохой фазовой чистоте, попадании в плотную среду или наличии чужой материи в области актуализации возникают дефекты выхода: ионизация, электромагнитные наводки, локальные фазовые шумы, сбои электроники и повреждения живых тканей.
Следствие. Приводной маяк не “гасит энергию выхода”. Он уменьшает вероятность дефектной актуализации, потому что дает чистую сигнатуру, заранее размеченную область выхода и очищенную зону безопасности.
Медицинский и инженерный риск. Для брони дефектный выход может выглядеть как поверхностная эрозия или микротрещины; для электроники - как множественные сбои, фантомные токи и деградация памяти; для живой ткани - как радиационно-фазовая травма без обязательного внешнего разрушения.
Формулировка. Гипер-ядро наводится не на текущее видимое положение звезды или планетной системы, а на расчетную фазово-гравитационную конфигурацию области выхода, в которой цель окажется в момент ожидаемого выхода из гиперперехода.
Иначе говоря, прыжок совершается не туда, где цель видна, а туда, где она должна быть после учета движения системы, гравитационной топографии региона, временного сдвига и статистической локализационной ошибки.
где:
- Target - целевое решение для прожига гипер-ядра;
- r_future - прогнозное положение цели на момент выхода;
- Phi_metric - карта локальной и маршрутной гравитационной метрики;
- tau_exit - ожидаемое временное окно выхода;
- sigma_loc - допустимая ошибка локализации.
Интерпретация. Для ГПТ-навигации звезда или планета являются не столько оптическим ориентиром, сколько гравитационно-фазовым узлом. Именно поэтому в основе гиперпрыжковой навигации лежат не обычные звездные карты, а прогнозные карты гравитационных колодцев, приливных градиентов, фазовых якорей и устойчивых метрических опор.
Следствие 1. Минимальный горизонт надежного прогноза не может быть меньше критической дистанции прыжка. По этой причине целеуказание всегда строится на прогнозе будущего состояния системы, а не на ее “настоящем” визуальном положении.
Следствие 2. Ошибка в карте гравитационных колодцев опаснее простой угловой ошибки наведения. Неправильная оценка метрики может привести к выходу “рядом со звездной системой”, но в принципиально неблагоприятном гравитационном окне.
Следствие 3. Приводные маяки играют роль внешних фазово-навигационных якорей. При их наличии гипер-ядро использует не только общую прогнозную карту, но и готовую приводную сигнатуру, резко уменьшающую флуктуации выхода.
На практике экипаж не “вводит координаты звезды”, а загружает в навигационную автоматику решение прожига, в котором уже учтены:
- текущая карта локальной гравитационной среды;
- маршрутная гравитационная топография;
- прогноз будущего состояния цели;
- масса корабля и инерционный профиль;
- режим подачи гипертоплива;
- наличие приводных маяков или иных фазовых опор.
По этой причине даже хорошо обученные навигаторы, как правило, понимают ГПТ только в прикладном смысле. Сама процедура целеуказания остается во многом черным ящиком, и именно это делает гиперпрыжок скорее ремеслом высокой точности, чем прозрачной инженерной процедурой.
Практическая школа ГПТ учит не тому, “как устроена Вселенная на самом деле”, а тому, какие решения прожига статистически не убивают корабль.
ГПТ прыгает не к звезде, а к тому месту, куда звезда прилетит, когда ты там вывалишься.
Формулировка. ГПТ переносит конфигурацию объекта вместе с его входным импульсным профилем, но не адаптирует корабль к целевой системе. Корабль выходит не с “удобной” скоростью относительно звезды, планеты или станции, а с тем инерциальным состоянием, которое было задано входным решением прожига.
Следствие 1. ГПТ не паркует корабль у цели. Ошибка в выборе входного вектора, скорости, фазы орбитального движения или точки выхода оплачивается жизнью экипажа, а не исправляется физикой перехода.
Следствие 2. Военные могут использовать это свойство для холодного вброса: заранее подобрать входной вектор так, чтобы выйти с минимальной активной тягой, на фоне звезды, в неудобной для обнаружения зоне или в готовом атакующем порядке.
ГПТ не обязан быть удобным. Если навигатор вывел корабль с неправильным относительным вектором, корабль может оказаться в полной оперативной, топливной или баллистической катастрофе уже после формально успешного выхода.
Формулировка. Прыжок в неизвестность может быть выполнен в широкий безопасный объем, выбранный вдали от звезд, планет и плотной материи. Обратный прыжок требует существенно большего: знания собственной реальной точки выхода, исправного гипер-ядра, достаточного топлива, прогноза метрики, карты дома и желательно приводной сигнатуры.
Поэтому дальняя экспедиция не является туристическим перелетом “из любопытства”. Это инженерное мероприятие с огромной стоимостью, резервированием, топливной логистикой, страховыми окнами и риском невозврата.
Улететь туда гораздо проще, чем вернуться оттуда.
Формулировка. Гипер-ядро является многоразовым прожиговым реактором, однако его эксплуатационный ресурс ограничен. Каждый гиперпрыжок вызывает накопление необратимых изменений в активной зоне, фазовом каркасе и системах стабилизации. По этой причине ядро не может использоваться неограниченно часто и требует периодического обслуживания, перекалибровки и, в пределе, замены ключевых компонентов.
Иначе говоря: гипер-ядро - это не волшебная кнопка и не вечный двигатель, а сложный, дорогой и капризный узел, который можно “надорвать” плохим прожигом, неудачной навигацией или злоупотреблением тяжелыми режимами.
где:
- Wear_jump - условная стоимость одного прожига по ресурсу ядра;
- W0 - базовый износ штатного прожига;
- K_range - поправка на длину прыжка и геометрию решения;
- K_grav - поправка на гравитационную сложность стартовой области;
- K_stab - поправка на чистоту и стабильность прожига;
- K_gate - поправка на наличие или отсутствие внешней приводной стабилизации приводных узлов.
Интерпретация коэффициентов.
- K_range обычно близок к единице в штатных дальних режимах, но может резко возрастать в ближних и нестандартных прыжках;
- K_grav возрастает вблизи сильных гравитационных градиентов, на низких орбитах и в иных неблагоприятных стартовых зонах;
- K_stab отражает качество работы автоматики, стабильность топлива и чистоту фазового режима;
- K_gate обычно меньше единицы при работе на готовый приводной якорь и больше единицы при полностью автономном прожиге.
Следствие 1. Износ ядра определяется не только числом прыжков, но и качеством этих прыжков. Два корабля с одинаковым количеством прожигов могут иметь принципиально разное остаточное состояние ядра.
Следствие 2. Штатный дальний прыжок из хорошей стартовой зоны может быть для ядра менее вредным, чем формально более короткий, но грязный или гравитационно неудобный прожиг.
Следствие 3. Ближние прыжки, аварийные режимы, работа без приводных маяков и прожиги из неблагоприятных гравитационных областей ускоряют деградацию активной зоны и фазового каркаса.
В гражданском флоте гипер-ядро рассматривается как один из главных активов корабля. После каждого прожига проводится:
- диагностика активной зоны;
- контроль фазового каркаса;
- оценка остаточного дрейфа параметров;
- сверка с эталонной сигнатурой прожига;
- при необходимости - перекалибровка и частичная замена узлов.
Военные суда допускают более агрессивный режим эксплуатации, но расплачиваются за это ускоренной выработкой ресурса и повышенной вероятностью тяжелых отказов.
Именно по причине ограниченного ресурса гипер-ядра межзвездный корабль не ведет себя как “маршрутка”, прыгающая по мелочи каждые полчаса. Даже при наличии топлива каждый прожиг имеет:
- цену по ресурсу ядра;
- цену по ресурсу обслуживающей автоматики;
- цену по времени на послепрыжковую диагностику;
- цену по риску накопления скрытых дефектов.
В этом смысле хороший капитан экономит не только топливо, но и прожиги.
- выполнить прожиг ядра - совершить гиперпрыжок;
- грязный прожиг - прыжок с плохой фазовой чистотой;
- надорвать ядро - сильно ускорить деградацию тяжелым режимом;
- ядро повело - накопился опасный дрейф параметров;
- сухое окно - хороший стабильный режим выхода;
- грязное окно - зона выхода с недопустимой концентрацией пыли, газа, обломков или активного трафика;
- инкрустация выхода - аварийное внедрение чужой материи в конструкцию, электронику или ткани экипажа при выходной актуализации.
Примечание. Точный механизм деградации гипер-ядра остается предметом спора. В инженерной практике достаточно того, что ядро статистически изнашивается, предсказуемо ухудшает параметры после тяжелых прожигов и не прощает слишком вольного обращения. Как и сама ГПТ в целом, эта область гораздо лучше описана эмпирически, чем понята теоретически.
Формулировка. Инженерная ГПТ описывает гиперпереход как последовательность входного прожига, виртуальной гиперфазы и выходной актуализации. Однако эта модель не отвечает окончательно на вопрос, что именно происходит с реальностью в момент перехода и в каком смысле объект на выходе является продолжением объекта на входе.
В стандартной практической школе принято говорить о конфигурационном переносе: объект на стороне входа утрачивает локальную материальную допустимость, его состояние переходит в виртуальную гиперфазу, а затем эквивалентная конфигурация актуализируется в области выхода. Такая формулировка достаточна для инженерных расчетов, но не исчерпывает философскую и физическую проблему.
Наиболее осторожная интерпретация утверждает, что в момент прожига исчезает только локальная материальная конфигурация объекта. Для внешнего наблюдателя корабль, экипаж и полезная нагрузка перестают существовать в исходной области, оставляя входной остаток. Если переход успешен, в другой области пространства возникает выходная конфигурация, функционально и биографически продолжающая исходную.
В этой версии ГПТ не требует утверждать, что вся Вселенная меняет свое состояние целиком. Достаточно признать, что объект на входе погибает как локальная система, а объект на выходе является его допустимым конфигурационным продолжением.
Гипотеза ветвления допускает, что гиперпереход связан не с уничтожением исходной реальности, а с разделением физической истории на несколько самосогласованных ветвей. В одной ветви провожающие продолжают существовать после прожига и фиксируют исчезновение отправленного объекта. В другой ветви субъективная линия прыгающего продолжается после выходной актуализации.
Эта версия часто сопоставляется с многомировой интерпретацией квантовой механики. В осторожной формулировке ГПТ не доказывает многомировую картину, но делает ее удобным языком описания: объект не столько “летит” внутри одной-единственной реальности, сколько продолжает свою конфигурационную историю в другой совместимой ветви.
В более сильной трактовке гиперпереход и есть управляемый переход между близкими ветвями Мультивселенной. Тогда ГПТ не просто похожа на многомировую интерпретацию, а становится ее инженерным следствием: прыжок выбирает такую ветвь, где объект уже актуализирован в допустимой области выхода, а причинные противоречия не возникают.
В такой модели нельзя однозначно сказать, “улетел” объект или “погиб” в исходной ветви. Оба описания являются частичными. Для провожающих исходной ветви объект исчез. Для самого объекта его память, тело и субъективная непрерывность продолжаются в ветви выхода.
Ключевое отличие. Гипотеза ветвления не требует коллапса всей исходной Вселенной. Она предполагает, что разные ветви могут продолжать существовать параллельно, а ГПТ лишь связывает субъективную линию объекта с одной из совместимых реализаций.
Статус. Тождество гипотезы ветвления и многомировой интерпретации не является общепринятым. Часть школ рассматривает это как метафору, часть - как близкое математическое описание, а наиболее радикальные направления считают ГПТ первой инженерной технологией, работающей непосредственно с ветвлением реальности.
Наиболее мрачная предельная версия утверждает, что в момент гиперперехода коллапсирует не отдельный корабль, не локальная область пространства и не одна субъективная ветвь, а вся исходная Вселенная как текущая физическая реализация. После этого актуализируется новая самосогласованная Вселенная, достаточно близкая к прежней, чтобы сохранить память, причинные следы, историю наблюдений и выходную конфигурацию объекта.
В этой трактовке прежняя Вселенная не продолжает существовать “для оставшихся наблюдателей”. Она коллапсирует целиком. Однако новая реализация собирается так, что в ней присутствуют наблюдатели, помнящие отправление корабля, приборы с корректными записями, станции с непрерывными журналами и вся совокупность следов, необходимых для причинной самосогласованности.
Поэтому прыгающий теоретически может вернуться к точке отправления и спросить у очевидцев, они ли провожали его перед прожигом. Они ответят утвердительно, будут помнить те же события и предъявят те же записи. Но в рамках гипотезы полного космологического коллапса это уже не те самые очевидцы из исходной Вселенной. Те очевидцы прекратили существование вместе с прежней реализацией; новая Вселенная содержит их самосогласованное продолжение.
Universe_B → reconstructed with consistent witnesses, records and jumper
Ключевое отличие от гипотезы ветвления. В гипотезе ветвления исходная ветвь продолжает существовать. В гипотезе полного космологического коллапса исходная реализация исчезает целиком, а наблюдаемая непрерывность возникает потому, что следующая реализация содержит все необходимые следы прежней.
Проблема проверки. Отличить такую модель от обычного успешного прыжка практически невозможно. Любая проверка после выхода проводится уже внутри новой самосогласованной Вселенной. Если она собрана достаточно точно, то свидетели, приборы, архивы и сам прыгающий подтвердят непрерывность событий, даже если исходная реализация действительно коллапсировала полностью.
Гипотеза полного космологического коллапса практически неизбежно предполагает существование Мультивселенной: множества возможных Вселенных, ветвей или космологических реализаций, среди которых могут существовать как почти неотличимые варианты исходного мира, так и реальности с радикально иными начальными условиями, историей и даже законами физики.
Однако из этого не следует, что гиперпрыжок может привести объект в произвольную Вселенную. ГПТ-переход возможен только между такими космологическими реализациями, которые допускают сам механизм перехода, актуализацию переносимой конфигурации и сохранение причинной самосогласованности.
где:
- U_in - исходная космологическая реализация;
- U_out - целевая космологическая реализация;
- S - переносимая конфигурация объекта;
- Ω_GPT - область ГПТ-совместимых реализаций.
Интерпретация. Даже если Мультивселенная содержит бесконечное множество миров, гипер-ядро не выбирает среди них произвольно. Оно может актуализировать объект только в той реализации, где одновременно выполняются физические, фазовые, информационные и причинные условия перехода. Поэтому большинство мыслимых Вселенных для ГПТ практически недоступны.
Следствие 1. Гиперпрыжок не является способом попасть в любую желаемую альтернативную реальность. Он не подбирает “лучший мир” и не исполняет намерение экипажа. Он лишь находит допустимую область актуализации, совместимую с решением прожига.
Следствие 2. Чем сильнее потенциальная целевая реализация отличается от исходной, тем ниже вероятность устойчивой актуализации. Практически успешные переходы почти всегда ведут в реализацию, настолько близкую к исходной, что различия невозможно обнаружить обычными средствами.
Следствие 3. Вселенные с несовместимыми законами физики, иной структурой причинности или отсутствием условий для существования переносимой конфигурации не могут служить целевыми реализациями ГПТ-перехода.
Главная проблема всех предельных интерпретаций состоит в их практической неразличимости. Любой успешный переход оставляет согласованный набор фактов: объект исчез на входе, объект появился на выходе, память и структура субъекта сохранились, приборы зафиксировали штатные следы прожига, а свидетели подтверждают непрерывность событий.
При локальной деструкции эти факты означают конфигурационное продолжение объекта. При ветвлении они могут означать переход субъективной линии в другую ветвь при сохранении исходной. При полном космологическом коллапсе они могут означать, что прежняя Вселенная прекратилась целиком, а все свидетели и архивы уже принадлежат новой самосогласованной реализации.
Поэтому инженерная ГПТ не выбирает окончательно между локальной деструкцией, ветвлением и полным космологическим коллапсом. Она лишь описывает условия, при которых переход статистически успешен, а причинная петля не возникает.
Для провожающих корабль исчезает. Для пассажиров мир продолжается. Что именно произошло между этими двумя утверждениями, ГПТ не объясняет до конца.
В самой мрачной трактовке каждый прыжок - это не перелет, а конец одной Вселенной и пробуждение в другой, почти неотличимой от прежней.
Несмотря на то, что входной остаток много слабее полного энергетического эквивалента массы корабля и топлива, зона прожига остается крайне опасной из-за:
- жесткого фотонного импульса;
- возможного гамма-излучения;
- вторичной ионизации среды;
- плазменного выброса;
- локальных электромагнитных перегрузок.
По этой причине присутствие незащищенного персонала в непосредственной близости от зоны прожига категорически запрещено даже при штатном прыжке.
Закон Риттера-Аникеева усиливает практический смысл теоремы Брукса-Аникеева о трансгиперной неидентифицируемости:
Современная ГПТ является не завершенной картиной мира, а устойчивой инженерной дисциплиной. Человечество научилось рассчитывать допустимые прожиги, строить гипер-ядра, пользоваться приводными маяками, запрещать наиболее опасные режимы и снижать вероятность катастроф. Но это не означает, что природа гиперперехода понята до конца.
Фундаментальные вопросы остаются открытыми: что именно представляет собой виртуальная гиперфаза, почему близкие прыжки расходятся сильнее дальних, каким образом сохраняется причинность, что происходит с тождеством субъекта и почему некоторые режимы просто не реализуются, хотя формально выглядят допустимыми.
- Чем ближе цель - тем опаснее прыжок.
- Очень далекий прыжок не дороже ближнего по топливу.
- Врата - это приводные маяки, а не порталы.
- ГПТ переносит конфигурацию и входной импульсный профиль, но не делает выход удобным.
- ГПТ обеспечивает функциональную непрерывность, но не дает строгого доказательства абсолютной идентичности субъекта.
- Сцепленность не переживает прожиг. ГПТ сохраняет макроскопическую и биографическую непрерывность, но не сохраняет исходную внешнюю квантовую сцепленность с оставшимися системами.
- ГПТ не является квантовой телепортацией. Квантовая телепортация передает состояние; ГПТ актуализирует макроскопическую конфигурацию.
- Активное гипертопливо нельзя перевозить через прожиг как обычный груз.
- Прыжок “в ноль” является гарантированной формой безвозвратной утраты.
- Улететь в неизвестность проще, чем гарантированно вернуться.
- Опережение светового фронта не равно путешествию в прошлое; запрещена только самозамкнутая причинная петля.
- Даже если Мультивселенная существует, ГПТ-переход возможен только между ГПТ-совместимыми реализациями.
В прикладной навигации удачным обычно считается прыжок, при котором пространственная ошибка локализации не превышает 5-10 световых минут. Все более точные режимы требуют либо очень качественной навигационной привязки, либо использования приводных маяков. В бытовой речи такие маяки по-прежнему часто называют Вратами.
Ниже приведен сводный реестр ключевых ученых, чьи имена закрепились в теории гиперпрыжков, инженерии приводных узлов, физике гипертоплива, философии тождества и медицине гиперперехода.
Ученый Марк Фейнман, фигурирующий в данном реестре, является лишь однофамильцем известного физика Ричарда Фейнмана.
| № | Ученый | Где фигурирует | Специализация | Научная роль | Место в истории ГПТ |
|---|---|---|---|---|---|
| 1 | Аравинд Найяр | Правило Найяра о ближней расходимости локализации; Постоянная Найяра (Λ); Следствие Найяра-Шеноя | Физик-теоретик, основатель ГПТ | Открыл фундаментальный закон локализации и доказал контринтуитивную опасность ближних прыжков. До него экспедиции улетали вникуда и не возвращались. | Первая эпоха; центральная фигура всей теории ГПТ |
| 2 | Киран Шеной | Следствие Найяра-Шеноя о пороге космологической дезориентации | Космолог, математический физик | Связал ошибку прыжка с космологическими масштабами и радиусом Хаббла | Первая эпоха; школа Найяра |
| 3 | Адити Шанкара | Теорема Шанкары о нулевом прыжке | Математик, специалист по сингулярностям | Доказала, что нулевой прыжок является предельным и физически патологическим случаем | Первая эпоха; формирование строгой математики ГПТ |
| 4 | Мадхава Кесаван | Принцип Мадхавы о гиперхронологической привязке | Физик-хронолог | Сформулировал фазовую модель причинности гиперперехода без введения единого настоящего для всей Вселенной | Вторая эпоха; становление хронотеории ГПТ |
| 5 | Сринивас Айенгар | Теорема Айенгара о сопряженности навигационной и хронологической ошибки | Математик-статистик | Вывел закон связи между пространственной и временной ошибками выхода | Вторая эпоха; развитие хроностатистики ГПТ |
| 6 | Виджай Менон | Теорема Менона о невозможности самозамкнутой причинной петли | Физик-теоретик, специалист по причинности | Установил ограничение на самозамкнутые причинные петли и практическую невозможность машины времени на базе ГПТ | Вторая эпоха; хронологическая защита |
| 7 | Артур Брукс | Теорема Брукса-Аникеева о трансгиперной неидентифицируемости | Философ науки, логик | Поставил вопрос о недоказуемости идентичности субъекта на входе и на выходе | Философский кризис ГПТ |
| 8 | Дмитрий Аникеев | Теорема Брукса-Аникеева; Закон Риттера-Аникеева о входном остатке | Физик-экспериментатор | Связал философию тождества с наблюдаемой физикой входа и физикой остаточного излучения | Философский кризис + экспериментальная физика прожига |
| 9 | Иоганн Риттер | Принцип Риттера-Моханти; Принцип Субраманьяна-Риттера; Закон Риттера-Аникеева; Теорема Цзянь-Риттера | Инженер-физик, специалист по приводным узлам и физике прожига | Один из главных инженеров практической эпохи ГПТ; довел теорию до надежной транспортной технологии | Великая инженерная эпоха ГПТ |
| 10 | Раджеш Моханти | Принцип Риттера-Моханти о приводных гипермаяках | Инженер приводных узлов | Разработал подход к использованию приводных узлов как приводных маяков, повышающих точность выхода | Инженеризация приводных узлов |
| 11 | Субраманьян Рао | Принцип Субраманьяна-Риттера; Принцип Гревса-Субраманьяна | Физик-синхронист | Разработал фазовую и временную фиксацию приводных узлов, стабилизирующую окно выхода | Инженеризация приводных узлов; школа фазовой стабилизации |
| 12 | Клаус Гревс | Принцип Гревса-Субраманьяна о допустимых зонах установки приводных узлов | Инженер-сетевик, проектировщик ГПТ-инфраструктуры | Показал, что приводные узлы нельзя строить где попало: гравитационная среда влияет на стабильность канала | Инженеризация приводных узлов; инфраструктурная школа |
| 13 | Ян Ковальский | Теорема Ковальского-Хартмана о невозможности короткой приводной стяжки | Тополог ГПТ-сетей | Доказал бесперспективность чрезмерно плотной локальной сети приводных узлов на малых дистанциях | Эпоха сетевой оптимизации |
| 14 | Эрих Хартман | Теорема Ковальского-Хартмана | Математик, специалист по топологии транспортных сетей | Соформализовал топологические ограничения приводных сетей и их масштабирования | Эпоха сетевой оптимизации |
| 15 | Сергей Карпов | Закон Субраманьяна-Карпова об изодальном расходе гипертоплива | Инженер-энергетик, специалист по гипертопливу | Довел идею изодального расхода до инженерной формы и эксплуатационных расчетов | Промышленная стабилизация ГПТ |
| 16 | Марк Фейнман | Закон Субраманьяна-Карпова об изодальном расходе гипертоплива | Теоретик физики гипертоплива | Предложил раннюю модель изодального расхода, позже уточненную в промышленной школе Субраманьяна-Карпова | Промышленная стабилизация ГПТ; однофамилец Ричарда Фейнмана |
| 17 | Антон Лобач | Теорема Лобача-Кюна о непереносимости гипертоплива через канал прожига | Физик гипертоплива | Показал, что гипертопливо нельзя транспортировать через уже сформированный канал как обычный груз | Промышленная стабилизация; физика каналов |
| 18 | Мартин Кюн | Теорема Лобача-Кюна | Физик-теоретик, специалист по каналам прожига | Соформализовал ограничения переноса гипертоплива и устойчивости канала | Промышленная стабилизация; физика каналов |
| 19 | Ли Цзянь | Теорема Цзянь-Риттера о входной деструкции локального состояния | Физик высокоэнергетического входа | Строго доказал, что прожиг на входе - это не разрушение объекта по обычным физическим каналам, а распад его локальной допустимости как состояния. | Поздняя физика прожига; китайская школа диагностики входа |
| 20 | Чжао Вэньцзе | Синдром Чжао; медицина гиперпрыжка | Нейрофизиолог, врач гиперперехода | Первым системно описал психоневрологические и вегетативные последствия выхода из гиперпрыжка | Медицина массового гипертранспорта |
- Первая эпоха - фундаментальная теория: Найяр, Шеной, Шанкара.
- Вторая эпоха - хронотеория и причинность: Мадхава, Айенгар, Менон.
- Третья эпоха - философский кризис тождества: Брукс, Аникеев.
- Четвертая эпоха - инженеризация приводных узлов: Риттер, Моханти, Субраманьян, Гревс.
- Пятая эпоха - сетевое и промышленное развитие: Ковальский, Хартман, Карпов, Фейнман, Лобач, Кюн, Цзянь.
- Шестая эпоха - медицина массового гипертранспорта: Чжао Вэньцзе.
madChess
Экспериментальная шахматная игра с постепенным выставлением армии на доску, встроенным ИИ, локальными партиями, сетевыми лобби, профилями, друзьями, чатом и архивом партий.

Коротко: madChess похожа на шахматы, но партия начинается не с полной доски. Сначала игроки выставляют королей, а затем постепенно вводят фигуры из резерва или ходят уже выставленными фигурами. Из-за этого партия с первых ходов превращается не в заученный дебют, а в живую борьбу за пространство, темп и инициативу.
Что это такое ♟️
madChess — авторский шахматный вариант и одновременно полноценное приложение для Android/Qt. Игра сохраняет узнаваемую шахматную основу: король, ферзь, ладья, слон, конь, пешка, шах, мат и пат остаются понятными. Но стартовая позиция и развитие партии устроены иначе: вместо готовой армии на доске у каждого игрока есть резерв, из которого фигуры постепенно появляются в игре.
Идея простая: меньше зубрёжки дебютов и больше тактических решений прямо за доской. Каждый ход — это выбор между обычным шахматным ходом и выставлением новой фигуры. Поэтому приходится думать не только о том, куда пойти, но и о том, когда вообще вводить в игру новые силы.
Главные особенности
| Постепенное выставление фигур | Игрок может либо сделать ход фигурой на доске, либо поставить новую фигуру из своего резерва на свободную клетку. |
| Новая стартовая фаза | Сначала белые выставляют короля, затем чёрные выставляют своего короля. Первоначальная постановка короля запрещена на четырёх центральных клетках. |
| Запрет мгновенного шаха из резерва | Новую фигуру нельзя поставить так, чтобы король соперника сразу оказался под шахом. Обычный ход уже выставленной фигуры может давать шах. |
| Ограничение по слонам | У одного игрока не может одновременно действовать два слона одного цвета клеток. Это сохраняет смысл разноцветных слонов и не превращает материал в хаос. |
| Пешки из резерва | В хардкорном варианте пешку можно ставить на любую свободную клетку, кроме первой и восьмой горизонтали. В более спокойном варианте пешки выставляются только на своей половине доски. |
| Обычные финалы партии | Нельзя оставлять своего короля под шахом. Мат завершает партию победой атакующей стороны, пат считается ничьёй. |
Как проходит партия
- Белые выставляют короля из резерва.
- Чёрные выставляют своего короля, не нарушая запрет соседства королей.
- После постановки королей белые делают первый обычный ход партии.
- В свой ход игрок выбирает: передвинуть фигуру, которая уже стоит на доске, или выставить новую фигуру из резерва.
- Партия развивается по обычной шахматной логике: шах, мат, пат, безопасность своего короля и допустимые ходы проверяются игровым ядром.
Чем это интересно: в обычных шахматах первые ходы часто идут по известным дебютным схемам. В madChess стартовая позиция рождается прямо в партии, поэтому важнее становится понимание угроз, геометрии доски и момента ввода фигур.
Режимы игры 🎮
Локальная партия
Можно играть на одном устройстве: человек против человека. Подходит для проверки правил, быстрой партии рядом с другом или демонстрации самой идеи.
Игра против компьютера
В приложении есть PvE-режим: человек играет против встроенного шахматного движка. Для расчёта используется адаптированный Fairy-Stockfish, который умеет работать с шахматными вариантами и был встроен в проект как статическая библиотека.
ИИ получает от игрового ядра только допустимые действия, поэтому компьютер не должен делать ход, который нарушает правила madChess.
Сетевая игра
В проекте реализован сетевой контур: быстрый подбор соперника, открытые и парольные лобби, выбор цвета, готовность игроков, зрители, чат лобби и синхронизация ходов через сервер.
- Быстрый матч — приложение создаёт или подбирает подходящее лобби.
- Поиск лобби — список открытых и парольных комнат.
- Код партии — вход в конкретное лобби по идентификатору.
- Зрители — можно наблюдать за сетевой партией.
- Чат — сообщения в лобби и поверх доски во время сетевой игры.
Архив партий
Партии можно сохранять в архив, давать им названия, открывать позже и просматривать ход за ходом. Для активного сетевого профиля история может синхронизироваться с сервером.
Профили, друзья и общение 👤
madChess постепенно выросла из экспериментальной доски в приложение с полноценным профилем игрока. В программе есть локальный профиль, почтовая авторизация, вход через Яндекс, аватары, публичные профили, друзья, заявки и приглашения в лобби.
- Локальный профиль — можно играть без регистрации.
- Сетевой профиль — нужен для сетевых функций, истории, друзей и рейтинга.
- Аватар — можно выбрать встроенный вариант или загрузить своё изображение.
- Публичная карточка игрока — профиль, рейтинг, статистика и состояние отношений.
- Друзья — заявки, список друзей, приглашения в лобби и личная переписка.
Интерфейс и оформление 🪵
Визуально приложение сделано в тёплой древесной гамме: тёмное дерево, слоновая кость, золотистые акценты, карточки меню, крупные аватары и шахматные фигуры в едином стиле.
Интерфейс адаптирован под разные экраны: смартфон, планшет, горизонтальную и вертикальную ориентацию. В альбомном режиме доска располагается между боковыми областями игроков, а на планшете меню раскладывается в несколько колонок.
- адаптивная доска и резервы фигур;
- верхнее меню с быстрым доступом к ходам, настройкам и статусу партии;
- шторка истории ходов;
- нижний чат с настройкой прозрачности;
- экранная клавиатура Qt Virtual Keyboard для Android;
- мастерская оформления: наборы фигур, текстуры доски, фон приложения и AI-аватары.
Техническая часть ⚙️
| Клиент | Qt 6, QML/Qt Quick, C++, Qt Concurrent, Qt Network. Основная цель — Android, также в проекте предусмотрена настольная сборка. |
| Игровое ядро | Правила вынесены в C++-движок GameEngine. Он проверяет обычные ходы, выставления из резерва, шах, мат, пат, соседство королей и безопасность собственного короля. |
| ИИ | MadChessAI + FairyStockfishBridge. Позиция преобразуется в формат движка, допустимые действия фильтруются игровым ядром, а расчёт выполняется вне GUI-потока. |
| Сервер | C++20 backend на Drogon, MySQL, systemd, reverse proxy через веб-сервер. Сервер отвечает за профили, сессии, лобби, сетевые партии, друзей, чат, рейтинг и медиа-файлы. |
| Сеть | Клиент обращается к API по HTTPS. Синхронизация сетевой партии в текущем контуре выполняется через периодический REST polling. |
| Сторонние компоненты | Fairy-Stockfish используется как движок для расчёта ходов в шахматном варианте. При распространении сборок важно учитывать требования лицензии GPL. |
Сборка из исходников 🛠️
Для сборки удобнее открыть корневой CMakeLists.txt в Qt Creator и выбрать подходящий комплект Qt. Для Android используется Qt 6.x Android Clang, а проверять производительность лучше в конфигурации Release, потому что Debug-сборка QML заметно тяжелее.
git clone https://github.com/madmentat/madChess.git cd madChess git checkout release
После первой настройки проекта Qt Creator сам создаст каталог сборки. Старую папку build лучше не переносить между разными версиями Qt, Android SDK/NDK и ABI.
Для кого эта программа
- для тех, кому нравятся шахматы, но хочется свежей игровой идеи без стандартной дебютной колеи;
- для экспериментов с шахматными вариантами, резервами и необычной динамикой партии;
- для разработки на Qt/QML/C++ с Android-сборкой, серверным API и сетевой синхронизацией;
- для тестирования собственного шахматного клиента, профилей, чатов, лобби и рейтинговой системы.
FAQ ❓
Это обычные шахматы?
Нет. Фигуры ходят узнаваемо, но старт партии и ввод материала отличаются. Главная особенность — постепенное выставление фигур из резерва.
Можно играть без регистрации?
Да. Локальная игра и базовый профиль не требуют сетевой авторизации. Сетевые функции, друзья, рейтинг и синхронизация истории требуют сетевого профиля.
ИИ играет по тем же правилам?
Да. Игровое ядро формирует список допустимых действий, а движок получает уже отфильтрованные варианты. Это нужно, чтобы ИИ не нарушал специальные правила madChess.
Почему не WebSocket?
В текущем рабочем контуре сетевой партии используется REST polling. Это проще для отладки и достаточно для первого сетевого MVP. WebSocket логично добавить как следующий этап развития сетевой игры.
Можно менять внешний вид?
Да. В проекте есть мастерская оформления: можно работать с наборами фигур, текстурами доски, фоном приложения и аватарами ИИ.
madChess — шахматный эксперимент, который постепенно превращается в полноценную игровую платформу: доска, правила, ИИ, сетевые партии, профили, друзья, чат и архив.
2026 madmentat
🛠 Главный файл шаблона для DWIN + UART5 + RS-485 + Modbus

😌 Не надо бояться Keil и TL51
У многих при виде Keil, T5L или TL51 сразу включается внутренний хтонический ужас, будто впереди не работа с микроконтроллером, а какое-то особо извращенное инженерное испытание. Я лично и сам мандражировал как девственница перед гэнг-бэнгом. На самом деле, все оказалось довольно просто. TL51 — это не магия, не инопланетная технология и не черный ящик. Это вполне обычный микроконтроллер, и, насколько можно судить по логике работы, речь идет о вполне понятной 8-битной архитектуре, со своими регистрами, UART, таймерами, прерываниями и прочими знакомыми вещами.
То есть подход здесь примерно такой же, как и в старых добрых проектах под AVR или ту же ATmega: настраиваем периферию, инициализируем порты, запускаем UART, крутим основной цикл, обрабатываем события. Никакой принципиально новой вселенной тут нет. Если человек уже работал с микроконтроллерами не только через яркие кнопочки Arduino IDE, а понимает, что такое регистры, биты, таймеры и обмен по последовательному интерфейсу, то и Keil, и TL51 он вполне осилит без мистических обрядов и кровавых жертвоприношений.
Да, местами тут есть свои странности: названия регистров могут быть непривычными, документация — мутной, а некоторые вещи приходится выяснять почти археологическими методами. Но это не делает платформу какой-то запредельно сложной. Порог входа здесь психологически завышен сильнее, чем технически. И если не страдать недугом «Arduino головного мозга», где любой шаг вне готовой библиотеки вызывает экзистенциальный кризис, то с этой системой можно работать совершенно нормально.
Поэтому правильный настрой в начале такой: перед нами обычный микроконтроллер с UART, таймерами и памятью, а не древнее проклятие инженеров DWIN. Нужно просто спокойно разобрать, что и где инициализируется, какие функции за что отвечают, и как связаны между собой экран, UART5, RS-485 и Modbus. А дальше всё становится гораздо менее страшным и гораздо более похожим на обычную прикладную разработку под железо.
/****************************************************************************** * Project : TEMPLATE * File : APP.c * Author : Andrey madmentat * Site : https://madmentat.ru * Year : 2026 * * Brief: * Главный файл шаблона приложения для DWIN/DGUS. * Содержит базовую прикладную логику проекта: * инициализацию UART5, RS-485, Modbus RTU и основной цикл обработки. * modbus rtu slave 8n1 115200 * Notes: * - Используется как стартовая точка для проектов с DWIN HMI * - Подходит для обмена данными по Modbus RTU Slave * - Может быть расширен пользовательской логикой страниц, VP и меню ******************************************************************************/ #include "APP.h" #include "SYSTEM.h" #include "UART.h" #include "TIMER.h" #include "modbus.h" #include <string.h> // ==================== ОСНОВНЫЕ НАСТРОЙКИ ==================== // Примеры часто используемых VP (можно добавлять свои) #define STATUS_VP 0x3000 // Статус/сообщение для STM32 #define CONTROL_VP 0x3002 // Команда от STM32 к DWIN #define VALUE_VP 0x3100 // Пример числового значения #define TEXT_VP 0x1005 // Пример текстового VP (26 символов) // ==================== ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ ==================== xdata uint32_t SysTimCnt = 0; // Счётчик системного таймера (инкремент в ISR) xdata uint32_t Uptime = 0; // Время работы в секундах xdata uint32_t UptimeOld = 0; // Для сравнения (периодические задачи) xdata uint16_t CurrentPage = 0; // Текущая страница (для отслеживания смены) // ==================== ПРОТОТИПЫ ==================== static void WriteDgusByte(uint16_t vp, uint8_t offset, uint8_t value); static void ClearText(uint16_t vp); static void WriteText(uint16_t vp, const char* str); // ==================== ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ DGUS ==================== static void WriteDgusByte(uint16_t vp, uint8_t offset, uint8_t value) { uint16_t current_word = ReadDgus(vp + (offset / 2)); if (offset % 2 == 0) current_word = (current_word & 0x00FF) | ((uint16_t)value << 8); else current_word = (current_word & 0xFF00) | value; WriteDgus(vp + (offset / 2), current_word); } static void ClearText(uint16_t vp) { uint8_t i; WriteDgus(vp, 0xFFFF); // Очистка первого слова for (i = 0; i < 26; i++) // 26 символов — стандарт для DWIN { WriteDgusByte(vp, i, 0x20); // Пробел } } static void WriteText(uint16_t vp, const char* str) { uint8_t len = 0; uint8_t i; while (str[len] && len < 26) len++; ClearText(vp); for (i = 0; i < len; i++) { WriteDgusByte(vp, i, (uint8_t)str[i]); } } // ==================== ИНИЦИАЛИЗАЦИЯ ==================== void AppInit(void) { UartInit(); TimerInit(); ModbusInit(); SysTimCnt = 0; Uptime = 0; UptimeOld = 0; CurrentPage = 0; // Пример начальной инициализации VP WriteText(TEXT_VP, "READY"); WriteDgus(STATUS_VP, 0x0000); // Статус = 0 WriteDgus(CONTROL_VP, 0x0000); // Можно сразу перейти на главную страницу // PageChange(0); } // ==================== ОСНОВНОЙ ЦИКЛ ==================== void AppProcess(void) { uint16_t new_page; ModbusProcess(); // ← Обработка Modbus RTU Slave (самое важное!) new_page = GetPageID(); // Отслеживаем смену страницы (удобно для реакций) if (new_page != CurrentPage) { CurrentPage = new_page; // Здесь можно добавить действия при смене страницы } // Пример периодической задачи раз в секунду if (Uptime != UptimeOld) { UptimeOld = Uptime; // Можно обновлять STATUS_VP или делать heartbeat // WriteDgus(STATUS_VP, (uint16_t)Uptime); } // Если используете тач/клавиатуру — сюда можно добавить обработчик // ProcessTouch() или аналог UartProcess(); // Если нужно (обычно пустой или для отладки) }
Этот файл — главный прикладной файл шаблона. Именно здесь собирается базовая логика работы программы: инициализация UART, таймера, Modbus, работа с DGUS/DWIN-переменными и выполнение основного цикла.
Если говорить совсем по-простому, то этот файл отвечает за следующее:
- 📡 запускает связь по UART5;
- 🔁 готовит программу к работе по RS-485;
- 📘 подключает обработку Modbus RTU Slave;
- 🖥 умеет писать текст и значения в DWIN/DGUS;
- ⏱ выполняет периодические действия в основном цикле.
📂 Какие файлы подключаются
В начале файла подключаются заголовки:
#include "APP.h" #include "SYSTEM.h" #include "UART.h" #include "TIMER.h" #include "modbus.h" #include <string.h>
Что это значит:
- APP.h — заголовок самого прикладного модуля;
- SYSTEM.h — общие системные объявления;
- UART.h — работа с UART, в том числе UART5;
- TIMER.h — системный таймер;
- modbus.h — поддержка протокола Modbus;
- string.h — стандартные функции для строк.
💡 То есть этот файл сам по себе не делает всё в одиночку. Он скорее выступает как дирижёр, который вызывает нужные модули.
⚙ Основные настройки VP
#define STATUS_VP 0x3000 #define CONTROL_VP 0x3002 #define VALUE_VP 0x3100 #define TEXT_VP 0x1005
Это адреса переменных VP в памяти DWIN/DGUS.
- 📌 STATUS_VP — адрес для статуса или сообщения;
- 📌 CONTROL_VP — адрес для управляющей команды;
- 📌 VALUE_VP — адрес для числового значения;
- 📌 TEXT_VP — адрес текстового поля на экране.
Проще говоря, это ячейки экрана, в которые программа может записывать данные.
🧠 Глобальные переменные
xdata uint32_t SysTimCnt = 0; xdata uint32_t Uptime = 0; xdata uint32_t UptimeOld = 0; xdata uint16_t CurrentPage = 0;
Они нужны для хранения текущего состояния программы:
- ⏱ SysTimCnt — системный счётчик тиков таймера;
- ⌛ Uptime — время работы программы;
- 🔄 UptimeOld — предыдущее значение времени, чтобы понимать, прошла ли секунда;
- 📄 CurrentPage — текущая страница DWIN, чтобы отслеживать переключения.
То есть это не какие-то «магические числа», а обычные служебные переменные, нужные для контроля времени и экрана.
🖊 Вспомогательные функции для DGUS
В файле есть три важных служебных функции:
- WriteDgusByte()
- ClearText()
- WriteText()
1️⃣ WriteDgusByte()
Эта функция записывает один байт в текстовую область DWIN. Поскольку DGUS обычно работает словами по 16 бит, приходится:
- сначала прочитать текущее слово,
- поменять в нём только нужный байт,
- записать слово обратно.
🔧 Это нужно потому, что текст на DWIN часто хранится не как обычная C-строка, а как набор байтов внутри 16-битных слов.
2️⃣ ClearText()
Эта функция очищает текстовое поле. Сначала записывает специальное значение, а потом заполняет область пробелами.
🧹 Проще говоря: было что-то написано на экране — функция стирает это и делает поле пустым.
3️⃣ WriteText()
Эта функция выводит текст в заданный VP. Она:
- считает длину строки;
- очищает текстовое поле;
- записывает символы один за другим.
🖥 Благодаря этому можно делать, например, такие надписи:
WriteText(TEXT_VP, "READY");
То есть на экране появится слово READY.
🚀 Что делает AppInit()
Функция AppInit() — это начальная инициализация программы.
void AppInit(void)
{
UartInit();
TimerInit();
ModbusInit();
SysTimCnt = 0;
Uptime = 0;
UptimeOld = 0;
CurrentPage = 0;
WriteText(TEXT_VP, "READY");
WriteDgus(STATUS_VP, 0x0000);
WriteDgus(CONTROL_VP, 0x0000);
}
По шагам:
- 📡 UartInit() — запускает UART;
- ⏱ TimerInit() — запускает таймер;
- 📘 ModbusInit() — подготавливает Modbus;
- 🧹 обнуляет служебные переменные;
- 🖥 пишет на экран слово READY;
- 📌 сбрасывает значения статуса и управления.
То есть после включения устройство приводит всё в понятное начальное состояние.
✅ Иными словами: AppInit() — это «подготовить железку к жизни».
🔁 Что делает AppProcess()
Функция AppProcess() — это основной рабочий цикл программы. Она вызывается снова и снова, пока устройство включено.
void AppProcess(void)
{
uint16_t new_page;
ModbusProcess();
new_page = GetPageID();
if (new_page != CurrentPage)
{
CurrentPage = new_page;
}
if (Uptime != UptimeOld)
{
UptimeOld = Uptime;
}
UartProcess();
}
Разберём по-человечески.
1️⃣ ModbusProcess()
Это самая важная часть цикла. Здесь идёт обработка обмена по Modbus RTU Slave.
📡 Именно тут устройство:
- принимает запросы от мастера;
- разбирает пакеты;
- отвечает по RS-485;
- обновляет регистры и данные.
Если убрать или сломать эту часть, то Modbus просто работать не будет.
2️⃣ GetPageID()
Дальше программа узнаёт, какая сейчас открыта страница на DWIN.
Это полезно, если нужно делать разную логику для разных экранов. Например:
- на главной странице читать только основные параметры;
- в инженерном меню читать другой набор переменных;
- не опрашивать всё подряд без необходимости.
💡 Это как раз тот путь, который помогает уменьшить лишние задержки и нагрузку.
3️⃣ Контроль времени
Дальше идёт проверка:
if (Uptime != UptimeOld)
{
UptimeOld = Uptime;
}
Это значит: если прошла ещё одна секунда — можно выполнить какое-нибудь периодическое действие.
Например:
- 💓 послать heartbeat;
- 🧾 обновить статус;
- 🔍 проверить наличие связи;
- 🖥 вывести диагностическую информацию на экран.
4️⃣ UartProcess()
В конце вызывается UartProcess(). В зависимости от проекта там может быть:
- обработка буферов приёма и передачи;
- отладка;
- или вообще почти ничего, если всё уже делается в других местах.
📡 Как тут связаны UART5, RS-485 и Modbus
Сам этот файл не содержит всей низкоуровневой магии UART5 в явном виде, но он управляет общей логикой через вызовы:
- UartInit() — инициализация UART;
- UartProcess() — обработка UART;
- ModbusInit() — запуск Modbus;
- ModbusProcess() — работа протокола Modbus.
То есть реальная работа с UART5 и RS-485 обычно находится в модулях UART.c и modbus.c, а данный файл управляет этим на уровне приложения.
📘 Упрощённая схема такая:
Modbus master (например Modbus Poll)
↓
RS-485
↓
UART5
↓
modbus.c / UART.c
↓
APP.c
↓
переменные и экран DWIN
🖥 Зачем вообще нужен этот файл
Этот файл удобен как главный шаблон проекта, потому что в нём уже есть:
- ✅ базовая структура программы;
- ✅ инициализация всех нужных подсистем;
- ✅ работа с текстом на DWIN;
- ✅ основной цикл обработки;
- ✅ место для добавления своей логики.
То есть можно не начинать с полного нуля, а взять этот шаблон и постепенно наращивать функциональность.
🔍 Что в этом шаблоне пока простое, а что можно улучшить
Сейчас шаблон хороший как основа, но он ещё базовый.
Что уже есть:
- ✔ понятная инициализация;
- ✔ вывод текста в DWIN;
- ✔ вызов Modbus в основном цикле;
- ✔ отслеживание текущей страницы;
- ✔ заготовка для периодических действий.
Что можно развить дальше:
- 🔧 добавить реакцию на конкретные страницы;
- 🔧 опрашивать только нужные VP в зависимости от экрана;
- 🔧 сделать индикацию потери связи;
- 🔧 добавить heartbeat в Modbus или DGUS;
- 🔧 реализовать меню, кнопки, ввод пароля и т. д.
🧾 Итог простыми словами
Если совсем по-простому, то этот файл делает следующее:
- 🚀 запускает UART, таймер и Modbus;
- 🖥 подготавливает DWIN-экран;
- 🔁 в бесконечном цикле обрабатывает обмен по Modbus;
- 📄 следит за текущей страницей экрана;
- ⏱ позволяет выполнять действия раз в секунду или по событиям.
То есть это не «весь Modbus целиком», а главный управляющий файл приложения, в котором сходятся вместе: UART5, RS-485, DWIN/DGUS и Modbus RTU Slave.
💬 Пояснение для маленьких и тупых (все, как мы любим)
- 🤖 AppInit() — это «включили всё нужное»;
- 🔁 AppProcess() — это «крутимся по кругу и работаем»;
- 🖥 WriteText() — это «пишем текст на экран»;
- 📡 ModbusProcess() — это «слушаем мастера и отвечаем ему»;
- 📄 GetPageID() — это «смотрим, какой экран открыт».
Вот и все. Не магия. Просто аккуратно разложенная по функциям логика.
P.S. ⚠ Подготовка шаблона под DMG80480C043_01WTR
При подготовке этого шаблона к работе с конкретной панелью DMG80480C043_01WTR пришлось столкнуться с довольно типичной для таких устройств проблемой: исходный примерный проект был рассчитан под другую частоту микроконтроллера. А это значит, что настройки UART из чужого шаблона нельзя было просто взять и бездумно оставить как есть.
Проблема заключалась в том, что реальная частота моего микроконтроллера фактически была неизвестна. Документация на такие панели часто не даёт нормальной уверенности в подобных деталях, а если и даёт, то далеко не всегда понятно, насколько этим данным можно доверять на практике. В результате обычный путь вида «вписал стандартное значение и пошёл дальше» здесь не сработал.
Поэтому пришлось действовать более практичным, инженерным и местами слегка шаманским методом: была написана специальная тестовая программа, задача которой состояла в том, чтобы методом перебора подбирать нужное значение переменной i для функции static void Uart5Init(void) из файла UART.c.
Смысл теста был предельно простой:
- ⚙ программа выставляла очередное значение i;
- 📡 запускала UART5 с этими настройками;
- 🖥 отправляла текст через UART5 примерно раз в одну секунду;
- 👀 оставалось смотреть, в какой момент на экране появится нормально читаемый текст, а не мусор и абракадабра.
Как только на экране начал отображаться читаемый текст, стало ясно, что найденное значение i является близким к правильному, а значит, параметры инициализации UART5 наконец-то совпали с реальными условиями работы данной панели. Любопытно, что подходящим оказался не один-единственный параметр. В процессе перебора был найден довольно широкий рабочий диапазон — примерно около 16 значений, при которых текст уже становился читаемым. Это полезное наблюдение, потому что оно косвенно показывает: даже при неизвестной точной частоте МК можно эмпирически подобрать достаточно устойчивую настройку UART.
Иными словами, в данном случае настройка UART5 выполнялась не от красивой теории из документации, а от практического результата. Сначала подбиралось значение, при котором связь реально начинала работать, и только после этого шаблон можно было считать пригодным для дальнейшего использования.
✅ Именно таким способом и удалось определить оптимальное значение переменной i, которое затем было использовано в рабочем варианте шаблона.
Ну что, уже ручки чешутся посмотреть поближе, о чем речь? Ну вот мы и добрались до этого момента!
