Mechanical logic: различия между версиями

Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску
(Перенёс страницу из англовики, начал перевод.)
 
Нет описания правки
 
(не показано 5 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Computing}}
{{Computing}}


Механическая логика — способ [[Computing|вычислений]], использующий [[Power|энергию]] для выполнения логических операций. Здесь двоичная информация представляется тем, подведена ли энергия к данной [[Machine_component|машине]].
'''Механическая логика''' — способ [[Computing|вычислений]], использующий [[Power|энергию]] для выполнения логических операций. Здесь двоичная информация представляется тем, подведена ли энергия к данной [[Machine_component|машине]].


Принцип механической логики прост. [[Gear assembly|Редукторы]], связанные с [[lever|рычагами]] или [[pressure plate|нажимными пластинами]], будут переключаться при получении сигнала. Так можно подводить энергию от [[windmill|ветряков]] и [[water wheel|водяных колёс]] к потребителю только при выполнении какого-либо условия, что позволяет строить логические элементы.
Принцип механической логики прост. [[Gear assembly|Редукторы]], связанные с [[lever|рычагами]] или [[pressure plate|нажимными пластинами]], будут переключаться при получении сигнала. Так можно подводить энергию от [[windmill|ветряков]] и [[water wheel|водяных колёс]] к потребителю только при выполнении какого-либо условия, что позволяет строить логические элементы.
Строка 20: Строка 20:


=== На основе нагрузки ===
=== На основе нагрузки ===
Логика на основе нагрузки использует элементы с заданным потреблением энергии. У них есть дополнительная нагрузка, потребляющая всю энергию при подключении. Элементы схемы разрабатываются так, что нагрузка отключается, когда выход равен истине, и включается, когда выход — ложь.  
Логика на основе нагрузки использует элементы с заданным потреблением энергии. У них есть дополнительная нагрузка, потребляющая всю энергию при подключении. Элементы схемы разрабатываются так, что нагрузка отключается, когда выход равен истине, и включается, когда выход — ложь. У каждой схемы должен быть свой источник питания. Компактные и сложные схемы такого рода сложно разрабатывать, так как нужно регулировать и источник, и потребителя для каждой схемы, и каждый элемент схемы должен быть соединён с теми, с которыми он взаимодействует. Тем не менее, у таких схем есть преимущество — они работают мгновенно.
 
Load based mechanical logic uses logic gates with a defined amount of power. They have an additional amount of load in terms of mechanism or other machine components, consuming all of the power if connected. The gates are designed in a way that the load is disconnected while the output is true, and connected while the output is false. Every circuit has to have its own power supply. Compact complex circuits are very difficult to design, because power and load need to be controlled for each circuit, and each gate in a circuit needs to be connected to others it interacts with. However, the advantage is that load-based mechanical logic computes instantly.


=== На основе переключения ===
=== На основе переключения ===
Toggle based mechanical logic works more like [[fluid logic]], not controlling the flow of fluid but the flow of power. It uses the fact that gears don't have a defined state when receiving an on or an off signal, but toggle between connected and disengaged, independent of the type of signal. It normally uses a central power supply. It is quite easy to create very complex gates with multiple output signals such as, for example, a binary to decimal converter. The cost of this ease of use and design, however, is that toggle based circuits need to be converted not just for output, but sometimes also for further processing.
Логика на переключении работает примерно как [[fluid logic|жидкостная логика]], но контролируется поток не жидкости, а энергии. В ней используется факт того, что редукторы, вне зависимости от типа получаемого сигнала, при его получении переключаются между включенным и выключенным состояниями. Для таких схем обычно используется один общий источник питания. Создавать сложные схемы с множеством выходов на такой логике гораздо проще, но ценой этого является необходимость переводить энергию в сигнал не только на выходе схемы, но и внутри, при передаче с одних логических элементов на другие.


=== Пример ===
=== Пример ===
Строка 92: Строка 90:
|}
|}
</div>
</div>
In stark contrast to the load-based XOR, it consists of a single gear. While it requires a power source and an output, it can accept power from an axle and serve as output gear by itself. This is how it works:<br />Connect it to your source of power, and link it to one of your input triggers. Build a temporary lever anywhere and connect it, too. Pull the lever once. You can deconstruct the temporary lever now. Now the gear is disengaged, and you link the second input trigger to it. Since gears toggle, every time your trigger changes state and sends a signal the gear will change state. Initially both triggers are off, and the gear is disengaged. When one trigger changes state, it will activate the gear. Independent of which trigger changes next, both will have the same state afterwards, and the gear will be disengaged again. So the gear will transport power when both input triggers are at different state: XOR. You can build this on top of a [[Mechanical logic#Power to signal converter|power to signal converter]] as shown on this page.<br />As you can see, you won't need many mechanisms to build this gate. 1 for the gear, 4 to connect to the input and 1 will be lost after disconnecting the temporary lever (that needs 3 temporarily). And of course you will need all the components for the converter, but no load.<br>
В отличие от XOR'а на нагрузке, здесь используется всего один редуктор. Источник и приемник энергии следует подключить к нему. Процесс постройки:
* Привяжите редуктор к одному из источников входного сигнала;
* Постройте временный рычаг, присоедините его к редуктору и нажмите его один раз; разберите рычаг;
* Привяжите второй источник входного сигнала.
Работает это так:<br />
Изначально оба источника входного сигнала выключены, и редуктор также выключен. Редуктор при получении сигнала переключается между включенным и выключенным состояниями, так что, если какой-либо из входов включится, редуктор переключится и станет активным, проводя энергию. Если после этого либо включится второй вход, либо выключится первый, редуктор переключится снова и перестанет проводить энергию — таким образом, этот редуктор работает как XOR. <br />
Эту схему также можно построить сверху конвертера из энергии в сигнал. <br />
Эта схема требует меньше механизмов: 1 для редуктора, 4 для связи с устройствами ввода, и ещё 1 будет потерян после отключения временного рычага.
 
'''XNOR на переключении'''
* Строится так же, как и XOR, но шаг с временным рычагом пропускается.
 
'''NOR на переключении'''
<diagram>
[#0f0]P[#aaf]I[#aaf]I[#ff0]O
</diagram>


'''toggle based XNOR'''
* Несколько редукторов, поставленных в ряд, к каждому из которых подключен ровно один вход. При включении любого входного сигнала NOR перестанет выдавать энергию (выключится).
* Use a single gear as for the XOR, but omit the temporary lever step.
* Можно превратить в OR, поставив на выходе инвертор.
* Не требует временных рычагов.


'''toggle based NOR'''
'''AND на переключении'''
* Multiple gears in series, with one (and only one) input connected to each gear. Any single ON(signal) input will produce an OFF(power) output.
* Так же, как и NOR, но каждый редуктор нужно предварительно переключить временными рычагами. Для большого количества входов, возможно, лучше переделать логическое выражение под NOR, так как его быстрее, проще и дешевле строить, плюс все затраченные механизмы можно будет восстановить при разборе редукторов(?).
* Can be converted to OR by adding an [[inverter]] to the output
* No temporary levers, so it uses fewer mechanisms.


'''toggle based AND'''
'''NAND на переключении'''
* Same as the NOR except use temporary levers to pre-toggle each input gear. For large logic arrays it is probably best to convert your Boolean equations to NOR logic, as that is the quickest simplest and least expensive (in mechanisms) to implement.  With the added benefit that all mechanisms can be recovered from gears.


'''toggle based NAND'''
<diagram>
* A 3x1 gear assembly for each input.  Input goes to the center (signal) gear.  Power goes to either one of the other gears (the power gear), output is the other outer gear (output gear).  Can be expanded indefinitely by adding additional 3x1 arrays in parallel (i.e. 3x2 for a 2 input, 3x5 for 5 input).  The theory is that power is transmitted across all of the power gears (which are all connected to each other in parallel.  Any single signal gear which has an OFF state (gear engaged) will allow power through to the output gears.  It requires every input gear to be disengaged (ON signal) in order to produce an OFF (unpowered) output.
[#0f0]P[#aaf]I[#ff0]O
[#0f0]P[#aaf]I[#ff0]O
</diagram>


'''toggle based OR'''
* Конструкция 3x1 из редукторов на каждый вход. Вход подключается к центральному редуктору, питание к одному из боковых, другой боковой редуктор будет выходом. Такие конструкции для каждого входа ставятся друг рядом с другом параллельно. Можно расширять на любое количество входов. Идея в том, что энергия передаётся через все редукторы: все редукторы на питании соединены в один ряд, все редукторы на выходе соединены в другой ряд, и эти ряды разделены рядом редукторов, связанных со входами. Если хотя бы один из входов будет выключен, то соответствующий ему редуктор будет включен и соединит питание с выходом. Чтобы выход был выключен, нужно, чтобы все входы были включены.
* Same as the NAND except pre-toggle each signal gear.
 
'''OR на переключении'''
* То же, что и NAND, но каждый редуктор нужно предварительно переключить временными рычагами.
 
== Конвертер энергии в сигнал ==
При работе с механической логикой обычно в конце концов нужно переключать что-то кроме машин, например, двери или мосты, или, если это логика на переключении, редукторы других частей схемы. Сейчас (версия 0.44.12) нет устройства, которое бы подавало сигнал при работе механизмов или при подаче энергии. Традиционное решение — использовать гидромеханический конвертер энергии в сигнал, заметно похожий на гидромеханическую [[Memory_(computing)|память]].


== Power to signal converter ==
When you are dealing with mechanical logic, you'll finally want or have to trigger something else than machine components like doors or bridges (or, with toggle-based mechanical logic, another gear assembly). Currently, there exists no trigger in dwarf fortress that reacts on the working state of machine components, that is, the presence or absence of power. The traditional solution to this was to use a hydromechanical power-to-signal converter, remarkably similar to hydromechanical [[Memory_(computing)|memory]].
<div style="width:1px; white-space:nowrap;">
<div style="width:1px; white-space:nowrap;">
'''Z 0'''
'''Z 0'''
Строка 173: Строка 189:
</div>
</div>
<br />
<br />
When the pump is connected to power, it will suck water from the pressure plate and pump it to the right. The water level on the pressure plate will fall to 0. The plate can be constructed to react on 0…3 water. You can invert it to get an off signal instead setting it to 4…7. In both cases the ''off signal'' will have a delay of about 100 steps. This gate is fluid conserving.
Когда на помпу подаётся энергия, она будет качать воду с нажимной пластины вправо. Уровень воды на пластине станет равным нулю. Пластину нужно настроить на реагирование на уровень воды 0-3; можно инвертировать конвертер, настроив её на 4-7. В любом случае сигнал выключения будет идти с задержкой в примерно 100 тактов. Эта схема водосберегающая.


However, the introduction of minecarts have created alternatives that are more compact and don't require water, largely rendering the hydromechanical PTS device obsolete. The following minecart-based PTS converter is fast, easy to build, and extraordinarily compact:
Введение в игру вагонеток сделало возможным более компактную и не требующую воды альтернативу, которая делает использование гидромеханических конвертеров бессмысленным. Такой конвертер быстрый, простой в постройке и необычайно компактный:


[[File:2x2pts.png]]
[[File:2x2pts.png]]


[http://www.bay12forums.com/smf/index.php?topic=114923.0 Bloodbeard's Minecart Dwarfputing Ideas thread] on the DF forums has other examples of minecart-based PTS.
Другие примеры конвертеров на основе вагонеток можно посмотреть здесь: [http://www.bay12forums.com/smf/index.php?topic=114923.0 Bloodbeard's Minecart Dwarfputing Ideas thread].


==Load based Mechanical signal-input power-output gates==
==Элементы, основанные на нагрузке==
* These gates can be used either by adding a power -> link signal converter (also known as a "rotation sensor"), or directly used to control pumps, such as in other logic gates (the unsourced fluid logic gates use these, for instance). The conventional "rotation sensor" consists of a pump powered by the gate's OUTPUT gear, pumping an infinite supply of water onto a water-sensing pressure plate with an infinite drain.
* Эти элементы принимают сигнал на входе и выводят энергию на выходе
* There are certain things important to all the gates:
* Их можно использовать совместно с конвертером, датчиком вращения, или для непосредственного управления помпой, которая может использоваться в жидкостной логике. Датчик вращения представляет собой нажимную пластину и помпу, качающую воду из бесконечного источника на пластину, с которой она затем стекает в бесконечный водосток
* Each gate has an OUTPUT gear, which will be placed next to a pump which the gate will control.
* Используемые обозначения:
* In diagrams, the OUTPUT gear is below the 'O' gear, connected to it by gears or vertical axles. The P indicates where you should hook power up, and L indicates where load (gears or pumps that don't have a water source) should be connected, and ¦ and - are horizontal axles. The Is are gears linked to INPUTs (some gates have one input, but most have two).
** Выходной редуктор ('O' на диаграммах) следует соединить с приемником (например, с помпой, работой которой планируется управлять с помощью элемента)
* Gates which incorporate a NOT will have the power network branch off from the 'O' gear, and have a train of power-draining stuff connected to the input gears, whereas gates which do not incorporate a NOT will have the power connected to the input gears instead. The principle behind normal gates is that when the INPUTs are ON, power is connected. The principle behind the NOT gates is that power is always connected, but when the INPUTs are ON, a large enough power requirement is connected to send the power requirements above the power supply, shutting down the system.
** P означает место, к которому необходимо подводить энергию
* If your windmills produce no power, you'll have to come up with some way to use water wheels for power instead.
** L обозначает нагрузку (редукторы, помпы или что-то другое). Её основное предназначение — потреблять очень много энергии; при этом она необязательно должна производить какую-то полезную работу.
* You should build only enough windmills (or water wheels) to power the system, and should not connect the network for one gate to another gate's network, since the load would shut everything down or nothing at all.
** ¦ обозначает горизонтальный [[Axle|вал]]
* The gates' instructions will explain how much load and power you need to have at each P and L in the more complicated gates.
** I обозначает редуктор, соединённый с входным сигналом (каждый I соединён со своим входом)


===Legend===
* В инвертирующих элементах к источнику также подключается куча потребляющего энергию хлама, а в элементах без NOT источник будет соединён с выходом. Принцип обычных элементов в том, что, когда на вход подаётся включающий сигнал, энергия проводится на выход. Принцип инвертированных элементов в том, что энергия подключена всегда, но когда подаётся включающий сигнал, дополнительно подключается нагрузка, на которую источнику не хватает энергии, и схема отключается.
* Источник энергии должен быть таким, чтобы давать ровно сколько энергии, сколько системе нужно для работы. Нельзя соединять питание нескольких схем, так как тогда нагрузка либо отключит их все, либо не отключит ни одной.
* В пояснениях к элементам будет сказано, сколько питания и нагрузки нужно для каждого P и L в более сложных элементах.
 
=== Обозначения ===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Symbol
! Символ
! Meaning
! Значение
|-
|-
| {{diagram|[#ff0]O}}
| <diagram>[#ff0]O</diagram>
| A gear which connects to your OUTPUT gear, which outputs power when the gate is producing an ON output.
| Выходной редуктор. Когда выполняется логическое выражение для элемента, на него подаётся энергия.
|-
|-
| {{diagram|[#aaf]I}}
| <diagram>[#aaf]I</diagram>
| A gear connected to an INPUT. In most gates you will have two Is, with each one connected to a different input.
| Редуктор, соединённый с источником входного сигнала. В большинстве случаев их два, каждый соединяется со своим источником.
|-
|-
| {{diagram|-}} and {{diagram|¦}}
| <diagram>-</diagram> и <diagram>¦</diagram>
| Horizontal axles
| Горизонтальные валы.
|-
|-
| {{diagram|[#0f0]P}}
| <diagram>[#0f0]P</diagram>
| Power goes here
| Сюда подводится энергия.
|-
|-
| {{diagram|[#aaf]i}}
| <diagram>[#aaf]i</diagram>
| Two more gears, each connected to the two different inputs.
| Ещё два редуктора, подключенные каждый к своему источнику сигнала.
|-
|-
| {{diagram|[#f00]L}}
| <diagram>[#f00]L</diagram>
| a chain of gears or pumps which serve to add load to the system, generally shutting it off when connected.
| Цепь редукторов или помп, служащая нагрузкой. При подключении к системе отключает её.
|-
|-
| {{diagram|*}}
| <diagram>*</diagram>
| A gear which isn't linked to any inputs or outputs and just serves to connect the power or whatever.
| Редуктор, не подключенный к входам или выходам. Нужен только для передачи энергии.
|}
|}


===Mechanical identity gate ===
=== Идентичность ===
{{diagram|
<diagram>
  [#ff0]O[#aaf]I--[#0f0]P}}
  [#ff0]O[#aaf]I--[#0f0]P</diagram>
 
* This takes an linked input signal and converts it to power without changing it.
* Принимает сигнал и переводит его в энергию, не изменяя его.
* Connected to the input gear, such that they will only be connected to the system if the input gear is receiving an ON signal, are gears with windmills on top of them. Build only enough windmills to power the devices that the gate's OUTPUT gear are connected to (and the gears/axles).
* Когда вход включен, редуктор I будет активен и будет пропускать энергию на выход. Если выход выключен, энергия пропускаться не будет.
* When the INPUT is ON, the INPUT gear will be active, and the network will provide power to the OUTPUT. When the INPUT is OFF, it will not provide power to the OUTPUT.


===Mechanical NOT gate===
=== NOT ===
{{diagram|
<diagram>
  [#ff0]O[#aaf]I[#f00]L
  [#ff0]O[#aaf]I[#f00]L
  ¦
  ¦
  ¦
  ¦
  [#0f0]P}}
  [#0f0]P</diagram>
 
* When the INPUT is ON, the INPUT gear will be active, and the network should need more power than is available. The devices connected to OUTPUT should shut down. When INPUT is OFF, the devices should have power since the INPUT gear will be disconnected.
* L должен требовать больше, чем выдаёт P.
* Когда вход включен, редуктор I будет активен, и системе потребуется больше энергии, чем ей даёт источник. Устройства, подключенные к выходу, должны отключиться. Когда вход выключен, этот редуктор отрежет нагрузку, и системе станет хватать энергии.


===Mechanical NAND gate===
=== NAND ===
{{diagram|
<diagram>
  [#ff0]O[#aaf]I[#aaf]I[#f00]L
  [#ff0]O[#aaf]I[#aaf]I[#f00]L
  ¦
  ¦
  ¦
  ¦
  [#0f0]P}}
  [#0f0]P</diagram>
 
* This works just like the NOT gate, except that there are two inputs and both have to be active to shut down the system instead of one. Make sure you have enough power to run the system when one of the input gears is active.
* L должен требовать больше, чем выдаёт P.
* Работает так же, как и NOT, за исключением того, что тут два входа, и оба должны быть активированы для отключения системы. Убедитесь, что вам хватит энергии, если будет включен один из редукторов.


===Mechanical AND gate===
=== AND ===
{{diagram|
<diagram>
  [#ff0]O[#aaf]I[#aaf]I[#0f0]P}}
  [#ff0]O[#aaf]I[#aaf]I[#0f0]P</diagram>
   
   
* This works like the identity gate, except that there are two inputs and both have to be active for the system to get power.
* Работает так же, как и элемент идентичности, за исключением того, что тут два входа, и оба должны быть активированы для подачи энергии в систему.


===Mechanical OR gate===
=== OR ===
{{diagram|
<diagram>
  [#ff0]O[#aaf]I
  [#ff0]O[#aaf]I
  [#aaf]I*[#0f0]P}}
  [#aaf]I*[#0f0]P</diagram>


* This works like the identity gate, except that there are two inputs, and if either is active, the system receives power. Note that the entire power network is connected to both inputs, such that if either input is active the entire power network is powering the system.
* Работает так же, как и элемент идентичности, за исключением того, что тут два входа, и, если будет включен хотя бы один, в систему будет подаваться энергия.


===Mechanical NOR gate===
=== NOR ===
{{diagram|
<diagram>
  [#aaf]I*[#f00]L
  [#aaf]I*[#f00]L
  [#ff0]O[#aaf]I
  [#ff0]O[#aaf]I
  ¦
  ¦
  ¦
  ¦
  [#0f0]P}}
  [#0f0]P</diagram>
   
   
* This works like the NOT gate, except that there are two inputs, and if either is active, the gear train or pump stack signified by the 'L' will be connected to the system. You need to have enough load to push power requirements above the amount of power produced by the power supply, shutting the system down.
* L должен требовать больше, чем выдаёт P.
* Работает так же, как и NOT, за исключением того, что тут два входа, и, если будет включен хотя бы один, системе потребуется больше энергии, чем ей даёт источник.


===Mechanical XOR gate===
=== XOR ===
{{diagram|
<diagram>
[#ff0]O[#aaf]I
[#ff0]O[#aaf]I
[#aaf]I*-[#0f0]P
[#aaf]I*-[#0f0]P
[#000].[#aaf]i
[#000].[#aaf]i
[#000].[#aaf]i
[#000].[#aaf]i
[#000].[#f00]L}}
[#000].[#f00]L</diagram>
   
   
* Except for the 'i's and 'L', this gate is identical to the OR gate. The additional components add the 'exclusive' part of the 'XOR' to the gate.
* L должен требовать больше, чем выдаёт P.
*The 'i's are additional gears connected to each of your inputs, and the L is additional load (large enough to stop the system, of course).
* i — дополнительные входные редукторы. Каждый из двух источников входного сигнала подключается к одному I и одному i.
* Работает аналогично OR.


===Mechanical XNOR gate===
=== XNOR ===
{{diagram|
<diagram>
[#000].[#000].[#aaf]I*[#f00]L
[#000].[#000].[#aaf]I*[#f00]L
[#000].[#000].[#ff0]O[#aaf]I
[#000].[#000].[#ff0]O[#aaf]I
Строка 288: Строка 310:
[#000].[#000].[#aaf]i
[#000].[#000].[#aaf]i
[#000].[#000].[#aaf]i
[#000].[#000].[#aaf]i
[#000].[#000].[#0f0]P}}
[#000].[#000].[#0f0]P</diagram>


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Строка 294: Строка 316:
! A
! A
! B
! B
! Drain
! Нагрузка
! Power
! Питание
! Extra Power
! Доп. питание
! Result
! Результат
|-
|-
| 0
| 0
| 0
| 0
| No
| Нет
| Yes
| Да
| No
| Нет
| 1
| 1
|-
|-
| 0
| 0
| 1
| 1
| Yes
| Да
| Yes
| Да
| No
| Нет
| 0
| 0
|-
|-
| 1
| 1
| 0
| 0
| Yes
| Да
| Yes
| Да
| No
| Нет
| 0
| 0
|-
|-
| 1
| 1
| 1
| 1
| Yes
| Да
| Yes
| Да
| Yes
| Да
| 1
| 1
|}  
|}  


* The XNOR gate is an equality gate: The output is ON when both inputs are equal, and OFF when they are not equal.
* XNOR — элемент равенства: выход включается, если входы равны, и отключается в противном случае.
* This gate may be '''even more complicated''' to build than the XOR gate!
* Как и в случае с XOR, i — дополнительные входные редукторы; каждый из двух источников входного сигнала подключается к одному I и одному i. Ещё один P внизу - дополнительный источник энергии, в идеале — один ветряк.
* First, your 'i's are again gears connected to your two inputs. The extra P below them is additional power source, ideally only one windmill.
* Нагрузка и источники должны быть подобраны так, чтобы нагрузка отключала систему, если отключен дополнительный источник, но, если тот включен, система должна работать.
* Here's where it gets complicated. The load has to be sufficient to shut down the system when additional power supply is disconnected. However, when BOTH inputs are on, there needs to be enough power from additional P to bring the system back online.
* Thus our gate does what it is supposed to: Produce enough power to have the OUTPUT gear be ON when both A and B are either 0 or 1, but not when they are not equal.


[[Категория:Логика]]
[[Категория:Логика]]
[[en:DF2014:Mechanical_logic]]
[[en:Mechanical_logic]]

Текущая версия от 18:15, 21 января 2023

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

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

Сравнение механической логики с другими видами логики

Плюсы

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

Минусы

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

Общие идеи

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

На основе нагрузки

Логика на основе нагрузки использует элементы с заданным потреблением энергии. У них есть дополнительная нагрузка, потребляющая всю энергию при подключении. Элементы схемы разрабатываются так, что нагрузка отключается, когда выход равен истине, и включается, когда выход — ложь. У каждой схемы должен быть свой источник питания. Компактные и сложные схемы такого рода сложно разрабатывать, так как нужно регулировать и источник, и потребителя для каждой схемы, и каждый элемент схемы должен быть соединён с теми, с которыми он взаимодействует. Тем не менее, у таких схем есть преимущество — они работают мгновенно.

На основе переключения

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

Пример

Первый пример показывает элемент XOR на логике нагрузки. Он принимает сигналы с двух разных источников. Энергия на его выходной редуктор (O) подаётся только тогда, когда один из двух входных сигналов включен, а другой выключен. Это делается так:
Энергия будет подключена к редуктору P (с низа схемы или с другого z-уровня). Один вход будет подключен к редуктору 1, второй — к редуктору 2. Так энергия будет течь от P к O, если будет выключен один из входных сигналов. Источник энергии нужно подобрать таким образом, чтобы предоставляемой им энергии хватило на нагрузку и один из связанных с входами редукторов, но не оба. Можно построить это сверху над конвертером энергии в сигнал, описанным ниже на этой странице.
Можно видеть, что такие схемы сложно строить. Нужно четыре редуктора, и ещё четыре для соединения входов, и это не считая компонентов для конвертера и нагрузки; кроме того, нагрузка должна иметь строго определённое потребление и может быть использована только конкретно этой схемой. Если использовать общую для нескольких схем нагрузку, нужно подключать их к ней через два управляемых сигналом редуктора, поставленных друг за другом, что ещё сильнее увеличивает затраты на схему.

XOR на нагрузке

*
1
*
O
 
L
*
P
*
2


XOR на основе переключения выглядит гораздо проще:

XOR на основе переключения

*

В отличие от XOR'а на нагрузке, здесь используется всего один редуктор. Источник и приемник энергии следует подключить к нему. Процесс постройки:

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

Работает это так:
Изначально оба источника входного сигнала выключены, и редуктор также выключен. Редуктор при получении сигнала переключается между включенным и выключенным состояниями, так что, если какой-либо из входов включится, редуктор переключится и станет активным, проводя энергию. Если после этого либо включится второй вход, либо выключится первый, редуктор переключится снова и перестанет проводить энергию — таким образом, этот редуктор работает как XOR.
Эту схему также можно построить сверху конвертера из энергии в сигнал.
Эта схема требует меньше механизмов: 1 для редуктора, 4 для связи с устройствами ввода, и ещё 1 будет потерян после отключения временного рычага.

XNOR на переключении

  • Строится так же, как и XOR, но шаг с временным рычагом пропускается.

NOR на переключении

PIIO
  • Несколько редукторов, поставленных в ряд, к каждому из которых подключен ровно один вход. При включении любого входного сигнала NOR перестанет выдавать энергию (выключится).
  • Можно превратить в OR, поставив на выходе инвертор.
  • Не требует временных рычагов.

AND на переключении

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

NAND на переключении

PIO
PIO
  • Конструкция 3x1 из редукторов на каждый вход. Вход подключается к центральному редуктору, питание к одному из боковых, другой боковой редуктор будет выходом. Такие конструкции для каждого входа ставятся друг рядом с другом параллельно. Можно расширять на любое количество входов. Идея в том, что энергия передаётся через все редукторы: все редукторы на питании соединены в один ряд, все редукторы на выходе соединены в другой ряд, и эти ряды разделены рядом редукторов, связанных со входами. Если хотя бы один из входов будет выключен, то соответствующий ему редуктор будет включен и соединит питание с выходом. Чтобы выход был выключен, нужно, чтобы все входы были включены.

OR на переключении

  • То же, что и NAND, но каждый редуктор нужно предварительно переключить временными рычагами.

Конвертер энергии в сигнал

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

Z 0

·
÷
÷
·

Z-1

^
7
7
7
7


Когда на помпу подаётся энергия, она будет качать воду с нажимной пластины вправо. Уровень воды на пластине станет равным нулю. Пластину нужно настроить на реагирование на уровень воды 0-3; можно инвертировать конвертер, настроив её на 4-7. В любом случае сигнал выключения будет идти с задержкой в примерно 100 тактов. Эта схема водосберегающая.

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

2x2pts.png

Другие примеры конвертеров на основе вагонеток можно посмотреть здесь: Bloodbeard's Minecart Dwarfputing Ideas thread.

Элементы, основанные на нагрузке

  • Эти элементы принимают сигнал на входе и выводят энергию на выходе
  • Их можно использовать совместно с конвертером, датчиком вращения, или для непосредственного управления помпой, которая может использоваться в жидкостной логике. Датчик вращения представляет собой нажимную пластину и помпу, качающую воду из бесконечного источника на пластину, с которой она затем стекает в бесконечный водосток
  • Используемые обозначения:
    • Выходной редуктор ('O' на диаграммах) следует соединить с приемником (например, с помпой, работой которой планируется управлять с помощью элемента)
    • P означает место, к которому необходимо подводить энергию
    • L обозначает нагрузку (редукторы, помпы или что-то другое). Её основное предназначение — потреблять очень много энергии; при этом она необязательно должна производить какую-то полезную работу.
    • ¦ обозначает горизонтальный вал
    • I обозначает редуктор, соединённый с входным сигналом (каждый I соединён со своим входом)
  • В инвертирующих элементах к источнику также подключается куча потребляющего энергию хлама, а в элементах без NOT источник будет соединён с выходом. Принцип обычных элементов в том, что, когда на вход подаётся включающий сигнал, энергия проводится на выход. Принцип инвертированных элементов в том, что энергия подключена всегда, но когда подаётся включающий сигнал, дополнительно подключается нагрузка, на которую источнику не хватает энергии, и схема отключается.
  • Источник энергии должен быть таким, чтобы давать ровно сколько энергии, сколько системе нужно для работы. Нельзя соединять питание нескольких схем, так как тогда нагрузка либо отключит их все, либо не отключит ни одной.
  • В пояснениях к элементам будет сказано, сколько питания и нагрузки нужно для каждого P и L в более сложных элементах.

Обозначения

Символ Значение
O
Выходной редуктор. Когда выполняется логическое выражение для элемента, на него подаётся энергия.
I
Редуктор, соединённый с источником входного сигнала. В большинстве случаев их два, каждый соединяется со своим источником.
-
и
¦
Горизонтальные валы.
P
Сюда подводится энергия.
i
Ещё два редуктора, подключенные каждый к своему источнику сигнала.
L
Цепь редукторов или помп, служащая нагрузкой. При подключении к системе отключает её.
*
Редуктор, не подключенный к входам или выходам. Нужен только для передачи энергии.

Идентичность

 OI--P
  • Принимает сигнал и переводит его в энергию, не изменяя его.
  • Когда вход включен, редуктор I будет активен и будет пропускать энергию на выход. Если выход выключен, энергия пропускаться не будет.

NOT

 OIL
 ¦  
 ¦  
 P  
  • L должен требовать больше, чем выдаёт P.
  • Когда вход включен, редуктор I будет активен, и системе потребуется больше энергии, чем ей даёт источник. Устройства, подключенные к выходу, должны отключиться. Когда вход выключен, этот редуктор отрежет нагрузку, и системе станет хватать энергии.

NAND

 OIIL
 ¦   
 ¦   
 P   
  • L должен требовать больше, чем выдаёт P.
  • Работает так же, как и NOT, за исключением того, что тут два входа, и оба должны быть активированы для отключения системы. Убедитесь, что вам хватит энергии, если будет включен один из редукторов.

AND

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

OR

 OI 
 I*P
  • Работает так же, как и элемент идентичности, за исключением того, что тут два входа, и, если будет включен хотя бы один, в систему будет подаваться энергия.

NOR

 I*L
 OI 
 ¦  
 ¦  
 P  
  • L должен требовать больше, чем выдаёт P.
  • Работает так же, как и NOT, за исключением того, что тут два входа, и, если будет включен хотя бы один, системе потребуется больше энергии, чем ей даёт источник.

XOR

OI  
I*-P
.i  
.i  
.L  
  • L должен требовать больше, чем выдаёт P.
  • i — дополнительные входные редукторы. Каждый из двух источников входного сигнала подключается к одному I и одному i.
  • Работает аналогично OR.

XNOR

..I*L
..OI 
..¦  
P-*  
..i  
..i  
..P  
A B Нагрузка Питание Доп. питание Результат
0 0 Нет Да Нет 1
0 1 Да Да Нет 0
1 0 Да Да Нет 0
1 1 Да Да Да 1
  • XNOR — элемент равенства: выход включается, если входы равны, и отключается в противном случае.
  • Как и в случае с XOR, i — дополнительные входные редукторы; каждый из двух источников входного сигнала подключается к одному I и одному i. Ещё один P внизу - дополнительный источник энергии, в идеале — один ветряк.
  • Нагрузка и источники должны быть подобраны так, чтобы нагрузка отключала систему, если отключен дополнительный источник, но, если тот включен, система должна работать.