https://wiki.factorio.com/Tutorial:Combinator_tutorial
여기 나오는
Set/Reset latching switch
SR래치는,
SET 조건이 되면 참이 되고, RESET 조건이 되면 거짓이 되는 스위치.
즉, 조건이 2가지 들어가며, 이 2 조건에 의해 2조건 모두 만족하지 않는 "범위"가 생성되어 그 범위 안에서는 마지막에 입력한 참 또는 거짓 상태가 유지된다.
위키의 예제에선 2개의 조합기만을 사용하는 버전을 소개하는데,
가스<200이면 RESET, 가스>2000이면 SET, 200≤가스≤2000이면 마지막 판정 유지.
하는 회로를 소개하고 있다.
내용을 토대로 다시 만든 예제 청사진.
스샷에선 [24]번 [25]번. 단 2개의 네트워크가 사용되는 것을 볼 수 있다. 네트워크 번호는 설치될 때마다 그때그때 달라진다.
어떤 복잡한 회로 네트워크를 꾸밀 때, 몇개의 분리된 네트워크가 쓰이는지 아는 것은 매우 중요하다고 생각한다.
이 청사진의 스크린샷에서
저장탱크의 출력과 산술조합기의 출력은 network[24]에 합산되고 있다.
network[24]의 값은 비교조합기와 펌프가 입력받는다. (조명은 덤)
비교조합기는 network[25]로 출력을 보내고, 산술조합기는 network[25]에서 입력받는다.
수식으로 나열하면,
network[24] = 저장탱크값 + 산술조합기( network[25] )
network[25] = 비교조합기( network[24] )
펌프동작여부 = 펌프( network[24] )
저장탱크 값 변화에 따라 어떤일이 일어나는지 추적해보자.
탱크값이 최초로 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==
S신호랑 R신호를 조합기 하나로 퉁치는게 재밌네
혹시 저 값을 리셋시킬 방법은 없을까
연산량 줄이는데 좋긴 하겠네
굿굿