30 октября, 2018

Oxygen not included, защита от метеоритов, уборка реголита, простая логика

Простая схема защиты от метеоритов и раскапывания реголита. Всего 3 логических блока, чтобы все работало, еще парочка для удобства.

У меня используется 6+1 антенна, эффективность сканирования 100%. Можно использовать 2+1 антенну, работает не хуже, но менее точно.


Общий вид сети антенн:


У нас есть антенна, которая дает красный сигнал, когда ничего не находит и зеленый, когда есть метеориты.

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

Для начала я хочу чтобы бункерная дверь открывалась, когда метеоритов нет, и закрывалась когда они есть.

То есть нам нужен NOT Gate, который инвертирует сигнал.

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

Выглядит это примерно так:
Мы берем AND Gate, для того чтобы двери открывались и закрывались тогда, когда есть сигнал от антенн И нижние часы активны. Если нижние часы не будут активны - бункерные двери будут принудительно закрыты, даже если придет сигнал от антенн что все ок. Это может быть нужно, чтобы дуплики что-то забрали или построили над дверями и могли пройти по ним.

Отключил нижние часы, двери закрываются:


Вторые часы подключены после AND Gate. И простое соединение проводов работает как логическое ИЛИ. То есть если придет сигнал с гейта ИЛИ с часов, бункерные двери откроются. В нормальном состоянии верхние часы выключены. Если их включить, то это принудительно откроет двери.

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

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

Механическая дверь так же как и бункерная, открывается когда зеленый сигнал и закрывается когда красный.

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

Поэтому я добавил фильтр, который 200 секунд держит двери закрытыми в тот момент, когда любая из антенн замечает метеорит.

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

Ну и наконец после окончания бомбардировки мы открываем бункерные двери, это занимает 40 секунд, и реголит должен успеть упасть вниз, до того, как мы закроем двери под антеннами. Поэтому после фильтра добавляем еще и буфер на 45 секунд.

В итоге пассивная антенна, фильтр и буфер выглядят так:
Вот в общем-то и все.

Как это работает?

Пока метеоритов нет
Ветка антенн красная
Ветка дверей под ними красная. Двери закрыты.
Ветка бункерных дверей - зеленая. Бункерные двери открыты.
Замечены метеориты.
Ветка с антеннами зеленая. фильтр начал отсчет 200 секунд.
Ветка дверей под ними красная. Двери закрыты.
Ветка бункерных дверей - красная, двери начали закрываться.
Начало бомбимть.
Ветка с антеннами зеленая. Фильтр досчитал 200 секунд. Антенна под крышей справа держит сигнал.
Ветка дверей под ними зеленая. Двери открылись.
Ветка бункерных дверей - красная. Двери закрыты.
Метеоритный дождь закончился.
Ветка с антеннами красная. Буфер после фильтра начал отсчет 45 секунд.
Ветка дверей под ними зеленая. Двери открыты.
Ветка бункерных дверей - зеленая. Двери открываются.
Через 40 секунд бункерные двери полностью открылись и реголит начал падать.
Через 50 секунд.
Ветка антенн красная. Буфер досчитал свое время.
Ветка дверей красная. Двери закрылись. Заработали антенны и робомайнеры.
Ветка бункерных дверей зеленая. Двери полностью открыты.
Круг замкнулся.

p.s. это не лучшая схема, которую можно сделать, но она работает и в ней немного автоматики.

6 комментариев:

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

    ОтветитьУдалить
    Ответы
    1. Сканнер в центре держит зеленый сигнал до тех пор, пока дождь не закончится.

      Удалить
  2. ну и еще пару вопросов по мелочи:
    1. почему такое большое расстояние по вертикали между бункерными дверьми и радарами?
    2. почему такое большое расстояние по вертикали между радарами и стеклянным полом?

    ОтветитьУдалить
  3. в общем потестил в дебаге, выяснилось:
    1. для нормальной работы радару нужны 15 клеток в любую сторону(вверх от предела космоса, в стороны от другого радара, вниз от солнечной панели)
    2. момент окончания метеоритного дождя радар определяет и при закрытых дверях. (собсно и начало дождя определяет при закрытых дверях, просто незадолго до начала)
    3. бункерные двери открываются неравномерно, быстрее те, что в пределах видимости экрана, а те что за пределом - медленнее) поэтому буфера на 45 сек не хватает, я поставил 70 сек.
    4. все что выделяет тепло должно охлаждаться, а так как в вакууме отдать тепло некуда, нужно мудрить либо с постройкой комнат, либо отводить тепло пластинами

    ОтветитьУдалить
    Ответы
    1. Неравномерность открытия и закрытия связана не с тем, что отрисовывается или нет, а с тем, что на сети управляющие дверями нужно вешать батареи, иначе 4 кдж из большого трансформатора бункерные двери высасывают за 2 секунды, и трансформатор не успевает начать заряжаться.

      Насчет размеров. Вики говорит что вверх нужно что-то вроде 8-10 клеток. Я брал 15+, потому что мне было лень тестировать сколько точно нужно, да и вопрос экономии места не стоял.

      И да, как выяснилось позже - стеклянный пол не нужен. Mesh тайл лучше пропускает свет, да еще и не нагревается от реголита.

      Удалить