https://wiki.factorio.com/Tutorial:Combinator_tutorial


여기 나오는


Set/Reset latching switch


인데,


viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed84fa11d02831150e3d5bd66e1c599a53538ed1f92cc0099cb574ea29ed263a0c2adb939cd0da8b49881e567823b9f52a5d30bd544400cf654c4f


SR래치는,


SET 조건이 되면 참이 되고, RESET 조건이 되면 거짓이 되는 스위치.

즉, 조건이 2가지 들어가며, 이 2 조건에 의해 2조건 모두 만족하지 않는 "범위"가 생성되어 그 범위 안에서는 마지막에 입력한 참 또는 거짓 상태가 유지된다.


위키의 예제에선 2개의 조합기만을 사용하는 버전을 소개하는데,

가스<200이면 RESET, 가스>2000이면 SET, 200≤가스≤2000이면 마지막 판정 유지.

하는 회로를 소개하고 있다.


내용을 토대로 다시 만든 예제 청사진.

viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed84fa11d02831150e3d5bd66e1c599a53538ed1f92cc0099cb574ea29ed263a0c2ab6fe9ed4dee275156a6328850532f6659cefad6f3d1b98d1


스샷에선 [24]번 [25]번. 단 2개의 네트워크가 사용되는 것을 볼 수 있다. 네트워크 번호는 설치될 때마다 그때그때 달라진다.

어떤 복잡한 회로 네트워크를 꾸밀 때, 몇개의 분리된 네트워크가 쓰이는지 아는 것은 매우 중요하다고 생각한다.


이 청사진의 스크린샷에서

저장탱크의 출력과 산술조합기의 출력은 network[24]에 합산되고 있다.

network[24]의 값은 비교조합기와 펌프가 입력받는다. (조명은 덤)

비교조합기는 network[25]로 출력을 보내고, 산술조합기는 network[25]에서 입력받는다.


수식으로 나열하면,

network[24] = 저장탱크값 + 산술조합기( network[25] )

network[25] = 비교조합기( network[24] )

펌프동작여부 = 펌프( network[24] )



저장탱크 값 변화에 따라 어떤일이 일어나는지 추적해보자.

viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed84fa11d02831150e3d5bd66e1c599a53538ed1f92cc0099cb574ea29ed267f597cd9f597d1d736a7449baf13db058e86877812f8a4

탱크값이 최초로 2000을 넘어가면,

비교조합기가 A=1을 network[25]로 뱉는다.

그럼 그걸 1틱 이후에 산술조합기가 받아서,

다시 1틱 이후에 가스 = A * 1800 값을 network[24]에 합쳐버린다. (자동으로 합쳐진다)

그럼 network[24]의 가스값은 탱크값+1800이 된다.

그럼 탱크값+1800을 비교조합기가 받아서 탱크값이 좀 낮아져도 계속해서 A=1을 내보낼 것이다.


그러면, 탱크값+1800이 network[24]를 통해서 순환하고 있으므로, 탱크값이 200까지 내려가도 200+1800값이 되므로, 200밑으로 다시 내려갈 때까지 펌프를 계속해서 작동시킨다.


따라서

가스>2000이면 SET이 되어 펌프가 켜지고,

200≤가스≤2000구간에서 켜진 상태를 유지하다가,

가스<200이면 RESET이 되어 펌프가 꺼지고,

200≤가스≤2000구간에서 꺼진 상태를 유지한다.




예제 청사진


0eNrVVstu00AU/ZVoVoDsyjNO09YLJH6hXaLKmtg36Qh7bM2MK6LIEuzYsAMpC0Blya5L+CUa/oE7dhqHdJK4SCzYWJrHOT733DNjz8k4q6BUQhoSzYlICqlJ9HJOtJhKntk5MyuBRORaKFPhjEckz+1Eu8O/ILVHhEzhNYlo7T0Ceb6BZE7kJKtE2uFKMKrIoMr9Kdcb4LC+9AhII4yAVn0zmMWyysegUNeagithrnIwIvGTIh8LyU2h8A1loRFdSPtyW8jRsUdmJPJRF0mFgqRdZB5Bh6yKeAxX/FogGBEda4zLacOk7cJEKG3i3o68sEVpsByWSBtu20JPg8AjRQmKtyrIM0QWlSkrB/d+z+q6qUC2BTUaqX1MFYDctA45mmqFSiph2mF9iWhmtytItzcf42ptu7jlPVtLSSERKah+xoe9jF9R9nP9UJo6x1lgHUedJVeNzog832P53nYmRTlDfZU08UQVeSwkcpBowjMNu7rhsDfcsNaOh10znL2jf/aO7uhOuNacQyrQC8hQjMLjUaI3D/vj07Y9tL9y1k/JsHMPHedT8LEXrx4qCBoB1BWPv1Lj9UrxcRebKi8fqmKr3Aa9YnuvYB3bf5faR0RsuOUF3T7+W8vhDq9GnVhROjJ075QDenIAOtwNPV1DhZwIiUu+m2O0m+OsL4ffkrDmG9TujDUYI+S0sdjZLGQBleArMdwo4Aj9NZA313qlcIahMXmRNp8p42fAtSEulTQ4EEZ/uErj9tfLRUYPWO6HKyoXmB0Csz3g7u7ROc8yP+POk7Wu5P85Se0tgj8lAhuM4O4fyyMZHwOqIhfnd18Wyx+LwXLxbnnzafDk7v2HwfLm7fLzm8Hy6+2vj99+fr99ioBrULop7CQM6BkdsREb1vVvlXlTkw==