Repeater

Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску

Генератор импульсов — устройство, генерирующее периодически команды включить-выключить. Существует несколько конструкций таких устройств, использующие жидкость или животное, нажимающее на нажимные плиты.

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

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

Данная статья помечена как не оконченная.
Вы можете прочитать эту статью на английском или помочь проекту её переводом.

Волновой генератор импульсов

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

╔══════╗ ╔══════╗ ║[#F0F]^.....║-->║[#0FF]7[#0FF]7[#0FF]7[#0FF]7[#0FF]7[#0FF]6║ ╚══════╝ ╚══════╝


Единственный тайл воды высотой 6/7 проходит через канал, время от времени переключая нажимную плиту, отжимаемую при уровне воды 0-6/7. Чтобы получить нужное количество воды в канале, проще всего заполнить его полностью, затем назначить его в качестве источника воды (и, возможно, пруда), после чего дварфы заберут одно ведро воды.

В соответствии с проектом (1 тайл воды из 6 запускает переключение), эта установка срабатывает быстро, на одном уровне с описанными ниже генераторами импульсов. Что не сразу очевидно, строительство канала меньшей длины или удаление большего количества воды замедляет действие генератора импульсов. Это происходит потому, что нажимная плита никогда не сможет вернуться в первоначальное состояние, для чего ей нужно 100 тиков.

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

Генератор импульсов на жидкостной логике

Традиционный проект генератора импульсов на основе жидкости предложен на форуме B12 участником AncientEnemy):

≈≈≈≈≈ — бесконечный источник воды
═╗≈╔═ — стена, ограничивающая канал после строительства
 ╠F╣  — запорный шлюз (связан с внешним рычагом)
 ║#║  — 1-тайловый подъёмный мост (связан с нажимной плитой)
 ║p┼  — нажимная плита (срабатывает на уровень воды 7/7) и дверь для доступа
 ╠F╣  — шлюз (связанный с нажимной плитой)
 ╚═╝

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

Этот генератор импульсов переключается довольно медленно, с периодом примерно в 300 шагов, что делает его пригодным для управления мостами, шлюзами и выдвижными шипами. Выключение обычно происходит примерно через 200 тиков после отдачи команды. В качестве дополнительного бонуса, южную стену можно убрать и подключить к цистерне, уровень воды которой будет автоматически поддерживаться на глубине 3/7-4/7 - идеальное место для плавания!

Альтернативным генератором импульсов на основе воды является проект на странице en:User:SL/Logic_Gates#Repeater, демонстрирующий двухуровневый, гибридный генератор импульсов.

Гоблинский генератор импульсов

Также возможны проекты на основе логики существ. Следующий пример компактен, надёжен и легко предсказуем.

╔═╗ ═══╝[#FF0]¢╚══ [#F00]p[#FF0]¢[#FF0]^[#FF0]¢[#00F]¢[#F0F][#00F]^[#00F]¢[#F00]p ══╗[#00F]¢╔═══ ╚═╝


Пойманный гоблин, помещённый между двумя нажимными плитами, приводит эту систему в действие своими попытками достигнуть края карты по путям ¢p. ^ связана со всеми ¢, а ^ связана со всеми ¢,так же как и с выходом. Таким образом, у гоблина появляется путь наружу с навязанного ему тайла каждые 100 тиков. Задержки в появлении пути заставляют его бегать по кругу каждые 250 тиков с сигналами включения/выключения, расходящимися примерно на 120 тиков. Частоту повторения можно удвоить сцеплением обеих ^ с выходом, однако это приведёт к сближению сигналов включения и выключения.

Генератор с вагонеткой

В простейшей реализации дварф толкает вагонетку по заданному расписанию по замкнутому пути, на котором расположена нажимная плита. Установка станции на маршруте в режиме guide after X days задаёт минимальный интервал времени (X дней), через который начинается очередной цикл работы генератора, но максимальная продолжительность цикла может варьироваться (в зависимости от того, как много времени потребуется носильщику, чтобы приступить к работе и дойти до вагонетки). Данный тип генератора может быть полезен для инициирования случайных событий, для которых не важна строгая периодичность – вроде включения генератора тумана на несколько дней каждый месяц.

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

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

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

Генератор с вагонеткой может быть откалиброван на значения периода, пригодные для создания часов, – такие как 100, 200, 300 тиков и т.д. Конструкция этого типа, использующая внешний источник энергии, требует для создания единственный роллер (и энергию для его запуска), одну нажимную плиту и немного места для размещения путей. Генератору на основе импульсных рамп для поддержания вечного движения не нужен подвод энергии извне, однако калибровать его на полезные значения периода (т.е. кратные 100 тикам) несколько сложнее. Также потребуются дополнительные элементы, чтобы можно было по желанию останавливать его работу.

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

Создание часов

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

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

Level 0 Level -1 Level -2
██[#ff0]☼███ █[#00f]☼[#c0c0c0]☼[#c0c0c0]☼[#808000]═[#808000]═ ███[#c0c0c0]☼[#f00]☼█ ███[#0f0]☼██ ██████
█[#000]█[#0f0]÷[#008000]÷[#000]██ █[#008000]÷██[#0f0]÷█ █[#0f0]÷██[#008000]÷█ █[#000]█[#008000]÷[#0f0]÷[#000]██ ██████
█[#f00]^██[#0f0]^█ ██████ ██████ █[#ff0]^██[#00f]^█ ██████

÷÷ — помпа, качает со светлой стороны на тёмную. ^ - нажимная плита, которая высвобождает шестерню , когда вода глубиной 1-7 давит на неё. Цвета плит и шестерёнок лишь указывают на связи друг с другом. В игре они все будут выглядеть как ^ и . Постройка помпы после питающей шестерни или шестерни после управляющей нажимной плиты создаёт задержку в 1 шаг. Если строить строго помпы, затем шестерни, затем плиты, то вся система работает с периодом 400 шагов. Если в обратном порядке, то за 408. Для запуска генератора понадобится 2 ведра воды, вылитые на одну плиту. Это делается через разметку пруда.

The device as depicted uses 47-62 power during operation, and requires 62 power for startup. Drive train to power may, of course, lead to higher requirements. Once the two units of water are introduced to the system, water is conserved perfectly.

См. также: NStepCyclicRepeater] for generalizable n-step clock generator instructions.

SelfPoweredHaltableRepeater demonstrates clock generation with integrated water reactor.

Forum thread has more description and explanations.

DFMA movie shows the action of pump-based clock generation.

Задержка

Clock generation is closely related to the concept of delay: making a signal reach a target a certain amount of time after it is created. Any non-mechanical circuit introduces delay in a signal-- the simplest form of delay is an identity gate. The clock signal generator described above is unique in that it introduces a consistent delay. Any consistent delay can be used for clock generation. There are three known consistent intervals in Dwarf Fortress with which to fashion a clock signal generator: the reset delay associated with a pressure plate sending a close signal; the rate with which a creature falls; and the amount of time that a screw pump will continue to pump after losing power. Any (or all) of these delays can be involved in a clock signal generator.