人工膵臓 PID 血糖制御シミュレーター 戻る
医工学・制御工学

人工膵臓 PID 血糖制御シミュレーター

1型糖尿病の人工膵臓(クローズドループインスリンポンプ)の PID 制御を設計するツールです。目標血糖・炭水化物比・PID ゲインを変えると、食後血糖プロファイル・TIR・低血糖リスクがリアルタイムで分かり、Medtronic 780G や Tandem Control-IQ のような臨床向けクローズドループの当たりづけができます。

パラメータ設定
目標血糖 BG_target
mg/dL
CGM のセットポイント。標準は 110 mg/dL 前後
インスリン感度 ISF
mg/dL/U
1 単位のインスリンで下がる血糖量
炭水化物比 ICR
g/U
1 単位のインスリンで処理できる炭水化物量
基礎インスリン
U/h
食事炭水化物
g
1 食あたりの炭水化物量
比例ゲイン Kp
積分ゲイン Ki
1/h
微分ゲイン Kd
h
Kd=0 でも安定。大きすぎると CGM ノイズで震える
計算結果
ボーラスインスリン (U)
全日インスリン (U/day)
食後ピーク BG (mg/dL)
TIR 推定 (%)
位相余裕 (deg)
低血糖リスク
血糖値時系列(過去6h)— インスリン注入と食事マーカー

青線:血糖値、緑帯:目標範囲 70〜180 mg/dL、橙バー:インスリン注入量、▼:食事イベント。リアルタイム遷移するクローズドループの振る舞いを示します。

24h 血糖プロファイル — PID 制御 vs 開ループ
TIR (%) vs ゲイン設定(Kp スイープ)
理論・主要公式

$$u(t) = K_p\,e(t) + K_i\!\int_0^t e(\tau)\,d\tau + K_d\,\frac{de}{dt},\quad e = BG_{\text{actual}} - BG_{\text{target}}$$

u:インスリン流量 (U/h)、e:血糖誤差 (mg/dL)、Kp/Ki/Kd:PID ゲイン。比例+積分+微分の3項でクローズドループ制御を行う。

$$\text{Bolus} = \frac{C_{\text{meal}}}{\text{ICR}},\qquad \Delta BG_{\text{insulin}} = U \cdot \text{ISF}$$

ボーラスインスリン量は食事炭水化物 C_meal を炭水化物比 ICR で割って算出。インスリン感度 ISF [mg/dL/U] は 1 単位で下がる血糖量。

$$\text{TIR} = \frac{T_{70 \le BG \le 180}}{T_{\text{total}}}\times 100\,[\%]$$

TIR(Time in Range)は血糖値が 70〜180 mg/dL に収まっている時間の割合。国際コンセンサスで TIR > 70% が成人 1型糖尿病の推奨目標。

人工膵臓 PID インスリン制御 — 血糖値クローズドループ

🙋
「人工膵臓」って、機械が膵臓の代わりにインスリンを出してくれるってことですか?1型糖尿病の人が使うって聞いたんですけど、どういう仕組みなんですか?
🎓
そう、正確には「クローズドループインスリンポンプ」って呼ぶことが多い。三つの部品で出来ていてね、まず CGM(連続血糖モニタ)が皮下に刺さっていて 5 分おきに血糖値を測る。次にインスリンポンプが、皮下にカニューレで繋がっていて 0.025 単位刻みでインスリンを注入できる。最後に、その2つを繋ぐコントローラがあって、これが PID とか MPC のアルゴリズムで「今いくら出すか」を決めるんだ。Medtronic の 780G、Tandem の Control-IQ、Insulet の Omnipod 5 が世界で売れている代表機種だよ。
🙋
え、PID って制御工学の授業でやったやつですか?モーターの速度制御とかで出てきたような…。血糖値みたいな生体に使えるんですか?
🎓
気づいたね、原理は同じ。目標血糖(例えば 110 mg/dL)と実測の差を e(t) として、u(t) = Kp·e + Ki·∫e + Kd·de/dt でインスリン流量を決める。ただ、モーター制御と決定的に違うのが「時間遅れがめちゃくちゃ大きい」こと。皮下に打ったインスリンが効くまで 1〜2 時間、食事で血糖が上がるまで 30〜60 分、CGM の値も間質液なので血液より 5〜15 分遅れる。だから単純な PID だと振動して低血糖と高血糖を行き来しちゃう。本ツールの「位相余裕」と「ゲイン余裕」がその安定性を見る指標なんだ。
🙋
なるほど!じゃあ Kp を上げて応答を速くすればいいってわけじゃないんですね。スライダーで Kp を 2.0 まで上げてみたら、位相余裕がガクッと下がって verdict が警告になりました。
🎓
そう、典型的な失敗パターンだね。位相余裕が 30° を切ると、時間遅れで遅れて効いてきたインスリンが過剰に血糖を下げる「インスリンスタッキング」が起こる。これが夜中だと、患者は気づかず重症低血糖(BG < 54 mg/dL)になり、最悪意識消失する。だから商用機は「IOB(Insulin On Board:体内に残っているインスリン量)補正」で過去 4 時間に打った量を引き算したり、低血糖予測時にポンプを自動停止(low glucose suspend)させたりして二重三重に守ってる。
🙋
食事のときに自分で「今 60g 食べます」ってボーラスを打つのが面倒そうですけど、これも自動化できないんですか?「フルクローズドループ」って言葉を聞いたんですけど。
🎓
いい質問。現状の商用機は「ハイブリッドクローズドループ」と呼ばれていて、食事ボーラスだけは患者が炭水化物量を入力する必要がある。フルクローズドループ(食事認識も完全自動)は研究段階で、CGM の血糖上昇パターンから「食事を検知したら自動で追加ボーラス」する方式や、MPC(モデル予測制御)で先読みする方式が試されている。ただ食後ピークまでの 30 分の遅れを取り戻すのは難しくて、未来 10 年のホットトピックだよ。AID(Automated Insulin Delivery)って呼ばれることも多い。
🙋
最後に、左の TIR(Time in Range)が 90% って出てるんですけど、これがそんなにすごい数字なんですか?
🎓
めちゃくちゃ良い数字。国際コンセンサスでは成人 1型で TIR > 70% が推奨目標、CGM 普及前の MDI(毎日複数回注射)患者は平均 50% くらいだった。780G などのハイブリッドクローズドループで 75〜80% まで上がる人が多くて、TIR が 10% 上がるごとに HbA1c が約 0.5% 下がると言われている。これは網膜症・腎症などの合併症リスクを長期的に大きく減らす。ただし TIR と同じくらい重要なのが「TBR(Time Below Range)< 4%」、特に重症低血糖 < 1% を守ること。高血糖は数十年後の合併症だけど、低血糖は今夜の命に関わるからね。

よくある質問

人工膵臓(Artificial Pancreas, AP)とは、連続血糖モニタ(CGM)で測った血糖値をフィードバックに、インスリンポンプから注入する量を自動的に決めるクローズドループ制御系です。PID 制御は、目標血糖との差 e(t) に対し、比例(Kp·e)、積分(Ki·∫e dt)、微分(Kd·de/dt)の3項を足してインスリン流量 u(t) を決めます。Medtronic 770G/780G、Tandem Control-IQ、Insulet Omnipod 5 など、商用ハイブリッドクローズドループポンプはこの考え方をベースにしています。
炭水化物比 ICR は「1 単位のインスリンで処理できる炭水化物のグラム数」です。食事炭水化物 60 g、ICR 12 g/U なら、ボーラスインスリンは 60/12 = 5.0 単位です。ICR は個人差が大きく、起床直後は小さく(インスリン抵抗性が高い)、夜は大きくなる傾向があります。クローズドループでも食事の予測ボーラスは患者または食事認識アルゴリズムが入力する必要があり、完全自動化(フルクローズドループ)は研究段階です。
TIR は「血糖値が 70〜180 mg/dL に収まっている時間の割合」で、ADA/国際コンセンサスでは 1型糖尿病の成人で TIR > 70% が推奨目標です。これは HbA1c < 7% に概ね対応し、網膜症・腎症など微小血管合併症のリスクを大きく下げます。同時に、低血糖時間(BG < 70 mg/dL)を 4% 未満、重症低血糖時間(BG < 54 mg/dL)を 1% 未満に抑えることが、TIR を上げるよりむしろ最重要です。
皮下インスリンは吸収に 1〜2 時間の遅れがあるため、ループには大きな時間遅れ(むだ時間)が含まれます。Kp や Ki を大きくしすぎると、過去の高血糖に反応した過量のインスリンが遅れて効き、ターゲットを大きく下回って低血糖(BG < 70 mg/dL)を起こします。本シミュレーターは位相余裕(>30°)とゲイン余裕(>4 dB)でこの危険を可視化します。実装では「インスリン搭乗時間(IOB)補正」「予測モデル MPC」などで時間遅れに対処します。

実世界での応用

商用ハイブリッドクローズドループポンプ(HCL):Medtronic MiniMed 780G、Tandem Control-IQ、Insulet Omnipod 5 などが代表例。CGM(Dexcom G6/G7、Guardian 4 等)と無線連携し、5 分ごとに微小調整するモデル予測制御+PID 補正のハイブリッドを使う。米英欧で 1型糖尿病患者の TIR を平均 50% → 75% へ底上げした実績があり、HbA1c も 0.5〜1.0% 改善。日本では 780G が 2023 年に承認、徐々に保険適用が拡大中。

夜間ベーサル自動調整(PLGS / Predictive Low-Glucose Suspend):就寝中の重症低血糖を防ぐため、30 分後に血糖が 70 mg/dL を切ると予測した時点でポンプを自動停止する機能。CGM の傾き(de/dt)を用いるため微分制御の一形態。睡眠中の低血糖時間を 50〜80% 削減し、夜間痙攣・意識消失のリスクを劇的に下げる。Medtronic 670G で初めて商用化、現在はほぼ全 HCL に標準搭載。

運動・ストレス時の動的制御:運動時はインスリン感度が上昇するため、固定ベーサルだと低血糖になる。Control-IQ はアクティビティモードでターゲットを 140〜160 mg/dL に上げ、Omnipod 5 は CGM 履歴から ISF を動的に再推定する。完全自動化にはモーションセンサ・心拍計・コルチゾール推定の統合が必要で、Apple Watch / Fitbit との連携実装が研究進行中。

新生児・周産期・ICU での血糖管理:糖尿病に限らず、敗血症・大手術後・心臓血管バイパス術後の高血糖管理でも閉ループインスリン制御が応用される。CamAPS HX、UVA/Padova シミュレータベースの研究プラットフォームが用いられ、ICU での厳格血糖管理(NICE-SUGAR 試験以降は 140〜180 mg/dL 目標)に貢献。新生児では血糖変動が成人と大きく異なるため、専用のモデル較正が必要。

よくある誤解と注意点

まず最大の落とし穴が、「CGM 値 = 血糖値」と思い込むこと。CGM は皮下間質液のグルコース濃度を電気化学的に測っており、血液中のグルコース濃度より 5〜15 分遅れます。空腹時は良く一致しますが、食後の急上昇局面や運動時の急降下局面では実血糖と 20〜40 mg/dL ずれます。だからクローズドループは Kalman フィルタや IIR 平滑化で CGM ノイズを除去し、傾き de/dt を遅れ補正してから PID に入力するのが定石です。「指穿刺の血糖計と CGM の値が違う!」は基本的にこの遅れが原因で、CGM の故障ではありません。

次に、「PID のゲインを上げれば血糖がもっとフラットになる」と思い込むこと。皮下インスリン吸収には 60〜120 分の固定遅れがあるため、Kp や Ki を上げてもループのバンド幅はそれ以上速くなりません。むしろ位相余裕が 30° を切るとリミットサイクル(持続振動)が発生し、血糖が 200 → 60 → 200 → 60 と振動して TIR が悪化します。Skyler らが Diabetes 誌 2017 で示したように、PID 単独では Ki を 0.05〜0.15 /h、Kp を 0.3〜0.7 程度に抑え、IOB 制限と組み合わせるのが安全領域です。本ツールの「ゲイン余裕 > 4 dB」がこの目安に対応します。

最後に、「TIR が高ければ良い管理」とは限らないこと。例えば TIR 85% でも、その内訳が「TBR(< 70 mg/dL)8%・TIR 85%・TAR 7%」だと、重症低血糖リスクが高く、長期的にも認知機能低下が懸念されます。一方 TIR 72% でも「TBR 1%・TIR 72%・TAR 27%」なら臨床的にずっと安全です。国際コンセンサス(Battelino et al., Diabetes Care 2019)では、TIR > 70% と同時に TBR < 4%、重症 TBR < 1% を必須として並列で目標化しています。インスリン治療は「低血糖を起こさない範囲で血糖を下げる」のが原則で、PID ゲイン設計でもここを最優先で守ります。

使い方ガイド

  1. 目標血糖値(70~180 mg/dL)とインスリン感度(1型患者の場合、ICR = 300~1800 mg/dL/U)を設定します
  2. 炭水化物比(CCR = 6~20 g/U)とベースレート(0.3~1.2 U/h)を入力し、PID制御ゲイン(Kp = 0.02~0.08、Ki = 0.001~0.01、Kd = 5~20)を調整します
  3. シミュレータが食事負荷(75 g炭水化物を仮定)後の血糖推移、TIR(70~180 mg/dL内での時間率)、位相余裕(システム安定性評価)、低血糖リスクをリアルタイム計算します

具体的な計算例

1型糖尿病患者(体重70 kg)の設定例:目標血糖 120 mg/dL、ICR 500 mg/dL/U、CCR 10 g/U、ベースレート 0.8 U/h、PID(Kp=0.05, Ki=0.003, Kd=8)の場合、食事(75 g炭水化物)後のボーラスインスリンは7.5 Uと計算されます。シミュレーション結果として、食後ピーク血糖が165 mg/dL、TIR推定値が約85%、位相余裕が35°(安定域)、低血糖リスク2%程度が得られます。全日インスリン必要量は約19.2 U/dayです。

実務での注意点

  1. Kp値が過剰(>0.12)だと血糖オーバーシュートが発生し、ピークが190 mg/dLを超えることがあります
  2. Ki値が小さすぎる(<0.0005)と定常偏差が残存し、夜間血糖が目標値から逸脱します
  3. Kd値を大きく設定しすぎるとノイズに敏感になり、センサ誤差がある実機では誤動作リスクが増加します
  4. 位相余裕が30°未満の場合、パラメータ調整が不安定で臨床運用に適さないため、45~60°の設定を推奨します