こんにちはよっさんです。
今日は回路ネットワークについてお話したいと思います。なかなか分かりづらく苦手な方もいると思いますが、回路を使うことでより効率的な工場設計をすることが可能です。そこで、今回は割と簡単なヒステリシス付スイッチ回路を具体例を用いながら説明したいと考えています。
この記事に来られる方はすでにfactorioで回路ネットワークという言葉についてはご存じの方も多いと思いますので、その説明は省きたいと思います。回路ネットワークについては下記のページでわかりやすく解説されていますので、こちらをご確認いただければと思います。
ヒステリシス付スイッチ回路とは?
タイトルに有る”ヒステリシス付スイッチ回路”、、電子回路等に触れていない方だとヒステリシスという言葉に馴染みがないかと思います。これを簡単に解説します。
wikipedia等で調べると、「ある系の状態が、現在加えられている力だけでなく、過去に加わった力に依存して変化すること。履歴現象、履歴効果とも呼ぶ。」とありますが、正直よくわかりません。
今回の回路の例で簡単に言うと、スイッチの切替条件についてオンの状態からオフに切り替わる条件と、逆にスイッチオフからオンに切り替わる条件を変化させるということです。このスイッチを切り替える前の状態を履歴ということになります。
結論:ユースケースとレイアウト
ヒステリシスの説明が長くなり申し訳ありません。まずは結論としてユースケースとレイアウトを説明します。
ユースケース:蓄電池と蒸気発電の切り替え
では具体的にどんな場面で必要なのか、ユースケースを説明します。
その一つとして蓄電池と蒸気発電の切り替えがあります。汚染対策として、ソーラー発電を使用されている方も多いと思いますが、ソーラー発電は夜に停止するという問題点を抱えています。そのために蓄電池を置いて夜の電気を賄おうと考えるのですが、ここで一つ問題があります。factorioは電気の使用において蓄電池の優先度が低いということです。
使用電気の優先度
ソーラー発電 > 蒸気発電 > 蓄電池
これだと、蓄電池を放電する前に蒸気発電が始まってしまい、夜は汚染を撒き散らしてしまいます。また、せっかく置いた蓄電池も無駄になります。
なので、ソーラ発電が止まる夜は蓄電池からまず放電したい、蓄電池の電気がなくなったら蒸気発電を使いたい、つまりユーザーとしては下記の優先度で電気を使用したいのではないでしょうか。
ソーラー発電 >蓄電池 >蒸気発電
これを実現するために、ヒステリシス付スイッチ回路を使います。それについて次の章で説明します。
レイアウト
このようなレイアウトを考えました。この回路の解説は先の章にて説明します。また、一応ブループリントも用意してみましたが、規模が小さいので、自作で問題ないかとも思います。
レイアウト解説
そもそもですが、ユースケースを状態遷移図で表すと下記のようになるかと思います。
昼からソーラ発電で動作させている状態からスタートすると、はじめは蒸気発電停止(右の状態)になります。昼のうちはソーラーパネルが発電してくれていますが、夜になるとソーラー発電が停止します。放電が始まり、蓄電量が30%を切ったら、蒸気発電作動(左の状態)に遷移します。そうすると、蒸気発電で電力が供給され始めます。次第に日が昇ることでソーラーパネルが起動し、蓄電池に電気が充電されます。充電率が70%を超えると、蒸気発電停止に戻ります。これを繰り返すシステム構成です。
これがこの回路でどう実現されているのか、レイアウトと状態遷移図を重ねてみたいと思います。
状態が搬送ベルト、矢印がインサータになります。今の状態を表すのが、銅鉱石です。(部品は何でもよいです。)スイッチは搬送ベルトの終点に回路を設置し、ここの銅板の有でON、無しでOFFを切り替えています。
各部品の設定値はこちらになります。搬送ベルトの読み取り方法をホールドにすることを忘れないよう注意してください。
本当はもっと小さくレイアウトすることも考えたのですが、直感的にわかりやすくするためこの形にしました。レイアウトと状態遷移図を並べてみるとわかりやすいかと思います。
補足:ヒステリシスが無いとどうなるのか
別にわざわざヒステリシスを設けなくても蓄電池の残量でON・OFFを切り替えればよいのではという疑問を抱く方もいると思います。
ではヒステリシスが無いとどうなるのか。それは、スイッチの切替付近で高速でONOFFが発生します。例えば今回の場合、スイッチの切替条件で使用した蓄電池の蓄電量を50%で統一にします。そうすると、
50%を下回る → 蒸気発電作動 → 同時に蓄電池に充電 → 50%を上回る → 蒸気発電停止 → 蓄電池から放電 → 50%を下回る → ,,,,,
というループを短い周期で延々と繰り返すことになります。49.9%でもOFF、50.1%でもONだからです。factorioはゲームのためスイッチが破壊することは無いため問題ないかもしれませんが、現実的には大きな問題に発展します。
参考に、ヒステリシスの有無で電気の状態がどの様になるのかを比較してみました。測定時間は10分です。
■ヒステリシスあり
■ヒステリシスなし
この2つの波形の違いについて、ソーラ発電が止まる夜を見ていただくとわかるのですが、ヒステリシスありはある時間を境に蓄電池から蒸気発電に100%電力生産が切り替わっています。しかし、ヒステリシスなしのほうは蓄電池の発電が残っています。これは100%スイッチの切替ができずONOFFが繰り返されているためです。
これは時間軸を5秒に拡大してみると、以下に高速でスイッチを切り替えているかがわかるかと思います。
■5秒
他のユースケースについて
ヒステリシスの考え方は一般的な考え方ですので、他にも下記のような制御に使用することが可能です。
応用原油処理
こちらも困ることが多いと思います。応用原油処理は重油・軽油・石油ガス、どれか一つでも飽和してしまうと精製所が止まってしまいます。そこでタンクの状態をモニタし、ポンプの出力をONOFFすることで、貯蔵量を調整することが可能です。下記に一例を示します。これは軽油のケースですが同様に重油や石油ガスでも応用できると思います。
駅の有効化
これは少し工場が大きくなってからの話で、かつそれほどヒステリシスが有効には働かないかもしれませんが、運搬する部品が貯まったら駅を有効、部品がなくなったら駅を無効にすることで列車輸送を効率的に行うことができるかもしれません。こちらも一例を示します。
まとめ
ここまで読んでいただきありがとうございました。説明が拙い部分もあるかと思いますが、これを読んで少しでもfactorioを楽しんでいただけたら是幸いです。factorioに関する記事は他にもいくつか作っていますので、時間があれば読んでみてくださいね。