Skip to content
ドキュメントのセクション

API 変更履歴

公開 API の変更のうち、呼び出し元が気付きうるものをすべて、新しい順に掲載しています。各項目の日付はここで告知した日です。既存の呼び出し元に影響する変更は、遅くともその変更を含むリリースまでに告知し、互換性なしと表示します。 以下の 81 件のうち 29 件は互換性のない変更です。

  1. rf-link-budget は atmosphericLoss を省略すると 0.5 dB の大気損失を使います

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch

    atmosphericLoss を省略した呼び出しは 0 dB で計算されていましたが、その provenance.inputs には文書化された既定値の 0.5 dB が示されていました。現在は、計算ツールのページと来歴のとおり 0.5 dB で計算されるため、そうした呼び出しでは rxPower、linkMargin、maxRangeKm がその 0.5 dB の分だけ変わります。この入力を送る呼び出しは変わりません。

    すべての計算ツールのほかのすべての入力も同じ方法で確認しました。省略した場合は、拒否される(400、課金なし)か、文書化された既定値で計算されるかのどちらかです。

  2. GET /v1/usage で日ごとの呼び出し回数を返せるようになりました

    • GET /api/py/v1/usage

    ?days=N(1〜90)を渡すと、レスポンスに daily が加わります。直近 N 日(UTC)それぞれについて {date, calls} が 1 件ずつ、古い順に今日まで並びます。各日の calls はアカウントのすべてのキーの合計で、戻された呼び出しを差し引いた値です。呼び出しのない日は 0 です。1 時間ごとの集計が始まった 2026-09-24 より前の日は 0 になります。

    days を付けない場合、レスポンスは変わりません。使用状況の確認は引き続き計上されません。

  3. Touchstone のアップロードのポート数は、ファイル名より先に行から判断します

    • rf_cascade
    • sparam_pipeline
    • impedance_match
    • eye_diagram

    ファイルの値の個数から複数のポート数が考えられる場合、拡張子より先に行の内容で決めます。.s2p という名前のファイルにある 3 つの 1 ポートの点は、1 つの 2 ポートの点ではなく 1 ポートとして扱い、データと矛盾する名前は報告されます(rf_cascade では port_count_mismatch)。[Number of Ports] キーワードがある場合は、引き続きそれが最優先です。

    アイダイアグラムは、拡張子が示すポート数がデータより多いファイルでも失敗しなくなりました。

  4. フィルターのモンテカルロは、作業量の予算の範囲内で、無料で最大 1,000 試行、Pro と API で最大 100,000 試行を実行します

    • POST /api/py/v1/jobs (filter_monte_carlo)
    • POST /api/py/v1/jobs/estimate
    • GET /api/py/v1/jobs/types
    • MCP simulate_filter_monte_carlo
    • rftools-io SDK

    monteCarloIterations の上限は、無料プランで 1,000(以前は 500)、Pro と API で 100,000(以前は 10,000)になりました。ジョブの時間上限は 180 秒(以前は 120 秒)です。

    実行の費用は、試行回数に、1 試行あたりのラダーの評価回数を掛けたもので、評価回数は部品と passCriteria で決まります。実行環境の予算(有料の実行環境で 120 秒、無料で 60 秒)を超えると予測される実行は、投入時と見積もりの両方で、課金の前に errorKind: "too_large" として拒否されます。詳細には monteCarloIterations が示され、費用、上限、そして収まる最大の試行回数が allowed.max に入ります。5 部品のラダーと 3 つの基準なら 100,000 試行が収まり、20 部品のラダーと 8 つの基準なら 53,304 試行までです。

    見積もりは withinBudget、種類が ladderEvaluations の budget、そして trials と ladderEvaluationsPerTrial としての work を返します。ジョブの computeCost.work にも同じものが記録されます。

  5. RF カスケードの段のリストを投入時に確認するようになりました

    • POST /api/py/v1/jobs
    • POST /api/py/v1/jobs/estimate
    • rf_cascade

    形式の不正な stages(JSON でない、空、オブジェクトでない段、有限の数でない値)は、課金の前に、段とキーを示す 400 で拒否されます。以前は受け付けたうえで、障害として失敗していました。

    段の値には範囲があります:gain_db は ±1000 dB、nf_db は 0〜1000 dB、iip3_dbm と p1db_dbm は ±1000 dBm、そして各段の後のチェーンの利得は ±1000 dB 以内です。NaN、Infinity、true/false は拒否され、テキストとして書かれた数値は引き続き読み取られます。

    既知のキーと大文字・小文字だけが違う段のキー(gain_dB、IIP3_dbm、Name)は、段と正しいキーを示して拒否されます。以前は無視され、その段は既定値で実行されていました。段が受け付けないその他のキー(notes、part)は、unknown_stage_key の警告付きで無視されます。

    ジョブと一緒にアップロードされていない sparamFile を持つ段は、入力された利得で計算されるのではなく、拒否されます。

  6. インターセプトがない場合は 99 dBm ではなく null になりました

    • POST /api/py/v1/jobs
    • rf_cascade

    受動段の IIP3、およびどの段にも制限されないチェーンの IIP3、OIP3、P1dB、SFDR は null になります(以前は 99 dBm と 99 + 利得でした)。その場合、モンテカルロの IIP3 のパーセンタイルとヒストグラムは null で、IIP3 の歩留まりは 100% です。

    受動段が 99 dBm のインターセプトを加えることはなくなりました。IIP3 が 0 dBm の増幅器の前にある 150 dB のパッドは、99 ではなく 150 dBm になります。

  7. RF カスケード:ファイルからの受動段の雑音、モンテカルロの符号、正確なインターセプト、警告

    • rf_cascade

    利得をファイルから得る受動段は、雑音指数をその利得から求めます。

    モンテカルロで、受動段の雑音指数が損失とともに変わるようになりました。符号が逆でした。

    入力の IIP3 と P1dB は、どれほど低くなっても正確に計算されます(300 dB の増幅器 3 段で −600 dBm と −610 dBm。以前は −270 dBm と表示されていました)。−270 dBm の下限は、ある点の背後の和が正の有限の数でない場合の保護としてのみ残りますが、段の範囲によりそうした状態には到達しないため、P1dB でジョブが失敗することはなくなりました。

    警告 unknown_stage_type、unknown_stage_key、file_not_uploaded を追加しました。

  8. インピーダンス整合は対数スケールで値を丸め、電力波の反射を掃引します

    • POST /api/py/v1/jobs
    • impedance_match

    E12、E24、E96 の部品は、系列の間隔に合わせて、対数スケールで最も近い標準値になります。ちょうど中間の場合は小さいほうです。2.099 nH は 2.0 nH ではなく 2.2 nH になりました。2 つの規則が異なる場合、部品、リターンロス、auto が選ぶ分岐が変わることがあります。

    |S11|、スミスチャート上の軌跡、最悪時のリターンロス、帯域幅は、f0 での値と同じく電力波の反射 (Z − Zs*)/(Z + Zs) を使います。実数の信号源では変わりませんが、入力した、またはファイルから読み取った複素数の信号源では |S11| が変わります。

  9. インピーダンス整合で、設計周波数、負荷の周波数モデル、f0 での値を指定・表示できるようになりました

    • POST /api/py/v1/jobs
    • POST /api/py/v1/jobs/estimate
    • impedance_match

    新しいパラメーターはどれも省略可能で、指定しないリクエストには以前と同じ答えが返ります。

    designFreq(Hz):f0。freqStart〜freqStop とは別に、その範囲内で指定します。省略した場合は帯域の中心です。

    loadModel:constant(省略時)、series_rc または series_rl(f0 でフィッティング。符号の違うリアクタンスは拒否されます)、または file(アップロードした負荷自身の周波数点)。branchPreference:any、lowpass、highpass。該当する分岐がない場合は branch_preference_unmet の警告が付きます。.s1p の負荷ファイルも受け付けます。

    新しい結果:designFreqHz、loadModel、unmatchedLoad、performance.ideal と .standard(リターンロス、VSWR、取り除かれたミスマッチロス、RL ≥ 10 dB の帯域幅とその端および f0 に対する比。二分法で求めます)、branch、qDefinitions。

  10. アイダイアグラムで、送信振幅、CTLE、マスクを指定できるようになりました

    • POST /api/py/v1/jobs (eye_diagram)
    • MCP simulate_eye_diagram

    新しいパラメーターはどれも省略可能で、指定しないリクエストには以前と同じ答えが返ります。

    launchSwing(mV ピークツーピーク、既定値 2000。以前のすべての結果が前提としていた ±1 V)はすべての電圧をスケーリングします。eyeHeightPctOfSwing はアイの高さをその振幅に対する割合で示します。

    equalization: ctle は IEEE 802.3 Annex 93A の連続時間フィルターを適用します。ctleDcGain(−12〜0 dB)でその利得を固定し、空欄の場合は −12〜0 dB を 1 dB 刻みで調べて最良のものを使います。ctle は利得、ナイキスト周波数でのピーキング、掃引の結果、適用前のアイを返します。

    maskType(hexagon または rectangle)、maskHalfHeight(mV)、maskWidth(UI)を指定すると、mask.pass、margin_mV、違反が返ります。samplingPhase(クロスポイント後の UI)と lossFrequency(Hz)を指定すると、sampling と lossAtFrequency が加わります。

    すべての結果に channelFile、uiMeasured、traceCount が付きます。

  11. レーダー検出で乱数シードを指定できるようになりました

    • POST /api/py/v1/jobs (radar_detection)
    • provenance.seed

    randomSeed(0 以上の整数)は、固定されていたモンテカルロのシード 42 に代わるもので、provenance.seed として記録されます。そのため、実行を再現したり、同じ乱数で条件を変えて再投入したりできます。指定しない場合、結果はすべて変わりません。

  12. フィルターのモンテカルロは、組んだとおりのラダーを、指定した基準に対して実行し、どこを厳しくすべきかを示します

    • POST /api/py/v1/jobs (filter_monte_carlo)
    • MCP simulate_filter_monte_carlo
    • rftools-io SDK

    新しいパラメーターはどれも省略可能で、指定しないリクエストには以前と同じ答えが返り、その横に新しい結果のフィールドが加わります。

    parts(1〜20 個、信号源から負荷の順:ref、kind は L または C、position は series または shunt、value は H または F、省略可能な tolerance は %)は、指定したとおりのラダーを E24 への丸めなしでシミュレーションします。passCriteria(1〜8 個:fStart〜fStop で最大 maxDb の insertionLoss、fMin〜fMax 内の cutoff3dB、freq で、または fStart〜fStop で最小 minDb の attenuation)は rippleSpec_db と rejectionSpec_db に代わるものです。yieldTarget(%、空欄の場合は 95)。

    新しい結果:circuit、95 % 区間に対する判定付きの yieldTarget、統計、ヒストグラム、各部品の varianceShare(r²)を含む criteria、failingTrials(最初の 200 件)、sampleTrials、そして基準を入力した場合は whatIfs。これは、最も多く不合格になった基準を左右する部品の許容差を 1 段階厳しくし、同じ試行で再実行したものです。その実行の randomSeed とそれらの許容差で再投入すると、同じ歩留まりが得られます。

  13. SMPS 制御ループで、補償器を部品で指定し、クロスオーバー周波数を逆算し、判定を返せるようになりました

    • POST /api/py/v1/jobs
    • POST /api/py/v1/jobs/estimate
    • smps_control_loop result

    新しい入力はどれも省略可能で、指定しないリクエストには以前と同じ答えが返ります。

    compensatorType: type2_ota と compRc、compCc、compChf、compGm、compVref で、相互コンダクタンス型の Type II 補償器を部品で表し、K、f_z、f_p に正確に対応付けます。Vout を超える compVref は拒否されます。

    solveFor: crossover と targetCrossover(Hz、既定値 Fsw/10)、resistorSeries(E96)、capacitorSeries(E12)を指定すると、ピーク電流モードで R_c、C_c、C_hf を決め、それで得られる特性を返します。

    minPhaseMargin(45°)と minGainMargin(10 dB)で、判定とモンテカルロの歩留まりの基準を設定します。

    新しい結果:verdict、polesZeros、nominal.phaseCrossoverHz、nominal.loopGainAt100HzDb、compensatorParts、solve、runSummary、そして bodeAboveHalfFsw(2·Fsw までの応答。この範囲では余裕は読み取りません)。

  14. タイミング系の 16 の計算ツールが、タイミングを予算に対して判定するようになりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    新しい入力はどれも省略可能で、指定しないリクエストには以前と同じ答えが返ります。ただし、以下の項目に記載した例外があります。

    uart-baud-rate:oversampling(16 または 8)、divisorFraction(0 は整数の分周比、1 は 1/oversampling 刻みの分数)、errorBudget(%、2。ボーレート誤差の警告はこれに従います)。divisorSet、baudError_pct(符号付き)、stopSampleOffset_bits。

    can-bus-timing:sjw(tq、1)。bitRateActual、bitRateError_pct、samplePointActual、そして ISO 11898-1 が各ノードに許すクロック許容差 oscTolerance_pct。

    lin-bus-timing:slotTime(ms、10)。frameTimeMax は公称フレームの 1.4 倍(LIN 2.x)。modbus-frame-timing:charGap(ms、0)。フレーム時間にこれを含めるようになりました。t15、charGapChars、t15Chars。

    spi-timing:riseTime(2.2τ)と edgeShare_pct。i2s-timing:mclk(MHz、16.9344)と rateBudget(%、0.1)。mclkDivider、bclkActual、sampleRateActual、sampleRateError_pct。pwm-duty-cycle:timerClock(MHz、16)と requiredBits(8)。periodCounts、onCounts、dutyActual、frequencyActual、dutyResolution_bits。

    555-timer:targetTime(ms、2)、errorBudget(%、5)、rTolerance と cTolerance(%、0)。timeMin、timeMax、timingError_pct。rc-time-constant:rTolerance(%、1)、cTolerance(%、5)、tauBudget(%、10。超えると警告)。tauMinUs、tauMaxUs、tauErrorPct。

    inductor-energy:requiredTime(µs、20)。battery-charge-time:requiredTime(h、3)。supercapacitor-backup:holdUpTime(s、60)。motor-inrush-current:dipLimit(%、10)。via-step-response:slowdownBudget(%、10。遅延の警告はこれに従うようになりました)。いずれも 0 以下は拒否されます。

    inrush-current-limiter:ntcR25(Ω、0 で必要な値)と ntcTolerance(%、20)。peakInrushMax。ntcR25 を指定すると、peakInrush、timeConstant、limitingResistor はフィッティングしたサーミスターに従います。pid-tuning:overshootBudget(%、25)。シミュレーションした閉ループのステップ応答からの overshootPct と settlingTime。

  15. 周波数系の 14 の計算ツールが、生成成分を帯域に対して数えるようになりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    新しい入力はどれも省略可能で、指定しないリクエストには以前と同じ答えが返ります。ただし、以下の項目に記載した例外があります。

    mixer-spur-calculator:rfBandLow/rfBandHigh(MHz、902/928)、ifBandwidth(MHz、10)、nearMargin(MHz、50)。spursInBand、spursNearBand、nearestSpur、imageFreq、imageToBand、loToBand。これらは IF に変換されるすべての RF 入力 f_RF = (m·f_LO ± f_IF)/n(m は LO の高調波次数、n は RF の高調波次数で、以前からの集計と同じ)から、m + n が maxOrder 以下の範囲で求めます。

    intermodulation-distortion:bandLow/bandHigh(MHz、88/108)。productsInBand。vibration-phase-noise:offsetBandLow/offsetBandHigh(Hz、1000/10000)。sidebandsInBand。phase-noise-to-jitter:pointsIntegrated。

    ism-coexistence:channelWidth1_MHz/channelWidth2_MHz(20/2)。overlappingChannels。チャネルは帯域全体に均等に配置されます。channels1 と channels2 の上限は 100 です。

    via-stub-resonance:dataRate(Gb/s、10)。nyquistFreq、resonancesInBand、resonancesNearBand。chassis-resonance:bandLow/bandHigh(MHz、30/1000)。f011MHz と modesInBand。room-modes:bandLow/bandHigh(Hz、20/200)。modesInBand、modesNearBand、modalBandwidth。

    sampling-nyquist:harmonicOrder(5)。aliasesInBand(トーン自体が信号帯域に折り返したもの)、harmonicAliasesInBand(その高調波が帯域に折り返したもの。変換器の SFDR の範囲まで影響します)、lowestAliasingInput。fft-bin-resolution:toneFreq(Hz、1000)と sidebandSpacing(Hz、100)。toneBin、toneLevelError、resolutionBandwidth、sidebandsUnresolved(f_s/2 を超えるトーンでは null)。

    am-modulation-index:channelWidth(kHz、10)。powerInChannel、sidebandsInChannel、sidebandsOutside。fm-modulation-index:channelLow/channelHigh(kHz、98000/98200)。occupiedBandwidth、powerInChannel、sidebandsInChannel、sidebandsOutside(β = 1000 を超えると null で、警告付き)。

    oversampling-snr:signalBandwidth(Hz、24000)。modulatorRate、outOfBandNoise、foldBands。digital-filter-order:toneFreq(Hz、1000)と maxHarmonic(5)。harmonicsInPassband、harmonicsInTransition、nearestHarmonic、butterworthAttenuation、chebyshevAttenuation。

  16. can-bus-timing:ビットレートに最も近いプリスケーラーとクオンタ数を選びます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    8〜25 タイムクオンタのすべてのビット(CAN 2.0)と、求められるプリスケーラーの前後の値の中から、まずビットレートに最も近いもの、次に指定したサンプルポイントに最も近いもの(CiA 601-3)、次に 16 クオンタ、最後に最小のプリスケーラーを選びます。以前は、どのビットレートになるかにかかわらず 16 クオンタに最も近いプリスケーラーを選んでいました。36 MHz で 500 kbps の場合は 5 × 14 クオンタで 2.86 % 速くなっていましたが、現在は 3 × 24 で誤差がありません。正確な、またはより近い設定がある場合は prescaler、nominalBitTime、tq、各セグメントが変わります。既定値とプリセットはすべて変わりません。

    サンプルポイントはビットの終わりから最大 1 クオンタ前に置かれるため、セグメントの合計はそれに一致します(95 % で 8 クオンタだったものは 9 でした)。

  17. modbus-frame-timing:19 200 Bd を超える場合のタイマーを固定値にしました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    19 200 Bd を超える場合、t35 は 3.5 文字分(115 200 Bd 8E1 で 0.334 ms)ではなく固定の 1.75 ms(Modbus over Serial Line V1.02、セクション 2.5.1.1)になり、maxFrameRate もそれに従います。新しい t15 はこの範囲で固定の 750 µs です。

  18. intermodulation-distortion:im3High を絶対値にしました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    im3High は、im3Low と同じく |2f₂ − f₁| になりました。f₂ = f₁/2 より下では負になっていました(100 MHz と 40 MHz の場合、−20 だったものが現在は 20 MHz)。

  19. chassis-resonance:正確な c と (0,1,1) モード

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    光速は 3 × 10¹⁰ ではなく正確な値 29 979 245 800 cm/s を使います。fLowest、f101MHz、f110MHz は 0.07 % 下がります(既定値で 901.39 → 900.76 MHz)。

    fLowest に (0,1,1) を含めるようになりました。長さが最も短い辺の場合はこれが最低次のモードです(Pozar『Microwave Engineering』第 4 版、セクション 6.3)。10 × 30 × 20 cm の箱は 1581 MHz でしたが、現在は 900.76 MHz です。wavelengthAtResonance もそれに従います。

  20. phase-noise-to-jitter:プロファイルをべき乗則として積分します

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    profileMode が 1 の場合、プロファイルは各点の間をべき乗則、つまり両対数軸上の直線として積分し(Drakhlis、Microwaves & RF、2001 年 1 月)、帯域の端ではその位置でのプロファイル自身のレベルを使います。線形の台形則では下降するプロファイルを過大に見積もり、L₄ は帯域の端より先にある場合でも帯域の端まで保たれていました。100 MHz での既定のプロファイルは 0.166 ps でしたが、現在は 0.084 ps です。このモードでは rmsJitter、cycleToCycleJitter、phaseNoisePower、rmsPhaseError、adcSnrLimit が変わります。単一レベルのモードは変わりません。

  21. sampling-nyquist:エイリアスを f_s の最も近い倍数に折り返します

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    aliasFreq_Hz は |f − k·f_s| で、k は f/f_s に最も近い整数です(Kester、MT-002)。以前は |f_s − f| で、1.5·f_s までしか正しくありませんでした。4 kSa/s での 10 kHz は 6000 Hz でしたが、現在は 2000 Hz です。

  22. fm-modulation-index:ベッセル帯域幅をベッセル関数から求めます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    besselBandwidth は、無変調搬送波の 1 % を超える側波帯の範囲 2·n·f_m です(Haykin『Communication Systems』)。以前は 2(β + 1)·f_m で、カーソンの法則と同じでした。β = 5 で 180 kHz だったものが、現在は 240 kHz です。β = 1000 を超えると null になり、警告が付きます。

  23. digital-filter-order:楕円フィルター次数を厳密に求めます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    ellipticOrder は次数方程式 K(k)·K′(k₁)/(K′(k)·K(k₁)) を解きます(k = f_p/f_s、k₁ = ε_p/ε_s)。以前はチェビシェフ次数を 1.5 で割ったもので、ほとんどの設計では高すぎ、一部では低すぎました。既定値では 4 ではなく 3 が必要で、1 dB と 20 dB の 2:1 の遷移帯域では 2 ではなく 3 が必要です。

  24. via-stub-resonance:スタブがなければ共振もありません

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    出口が最終層にある場合、スタブはありません。resonantFreq と backdrillBenefit は 0 ではなく null(共振周波数が上限なし)になります。

  25. room-modes と inductor-energy:何が問題かを示して拒否します

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    room-modes は、0 以下の音速や残響時間を、それぞれに固有のメッセージで拒否し、拒否と一緒に値を返しません。以前はゼロを返し、部屋の寸法を問題として示していました。

    inductor-energy は、サイトが以前からそうしていたように 0 以下の直列抵抗を拒否します。API ではこれで失敗していました。

  26. コンバーターとドライバーの計算ツール 8 種が、動作範囲を受け取り、部品を選び、損失モデルを加えるようになりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    buck-converter と同様に、使用中に変動する入力はそれぞれ <input>Min と <input>Max の組で、0(既定値)は公称入力を意味します。最悪値はすべて出力になり、それが生じる入力値もそれぞれ独立した出力になります(rippleWorstVin での rippleWorstA)。部品は最悪のコーナーが必要とする値以上で選びます。インダクターは E12 で、電圧定格は最悪電圧の 1.5 倍以上の次の標準定格です(フライバックのスイッチはクランプされたドレインのピーク以上)。損失モデルの入力には一般的な既定値があり、損失は公称点での値(W)で、lossTotal に加算されます。新しい入力を指定しないリクエストには以前と同じ答えが返ります。ただし、以下の項目に記載した例外があります。

    boost-converter:inputVoltageMin/inputVoltageMax。coutEach、および損失モデルの rdsOn、tSwitch、qg、vGate、vDiode、qrr、dcr、coreLoss、esrOut。新しい出力には、dutyMin/dutyMax、inductorMinWorstUH と inductorChosenUH、ilPeakWorst、inputCurrentWorst、q1RmsA、coutRmsA、outputRippleMV、vdsRating、8 つの損失、efficiencyLossModel があります。電流は引き続き入力の efficiency で決まります。

    flyback-converter:vinMin/vinMax。各コーナーで公称のトランスを使って計算します。損失モデルの rdsOn、tFall、qg、vGate、vDiode、rPri、rSec、coreLoss、leakageInductance(µH、既定値 2.6)、clampRatio(既定値 2、1.1 以上)。RCD クランプの損失は ½·L_lk·I_pk²·f·k/(k − 1) です。新しい出力には、両巻線のピーク電流と RMS 電流、reflectedVoltage、clampVoltage、vdsPeakWorst、vdsRating、diodeVrWorst、diodeVrRating、7 つの損失、efficiencyLossModel があります。

    charge-pump-voltage:inputVoltageMin/inputVoltageMax と pumpCurrentMin/pumpCurrentMax。switchResistance(Ω、既定値 1)と esr(mΩ、既定値 10)は、ICL7660 のデータシートの R_O と同様に、電荷分配の抵抗に加算されます。新しい出力には、loadedVoltageMin/loadedVoltageMax、outputResistance、loadedVoltageWithLosses、コンデンサーとスイッチの定格、3 つの損失、efficiencyLossModel(理想部品では efficiency と等しい)があります。

    switching-regulator-ripple:outputCurrent(A、既定値 2)、inputVoltageMin/inputVoltageMax、そして降圧コンバーターの損失モデルをそれ自身の部品に適用したもの(esr は出力コンデンサーのもの)。新しい出力には、最悪時のリップルと RMS 電流、vdsRating、8 つの損失、efficiency があります。

    mosfet-power-dissipation:drainCurrentMin/drainCurrentMax と tAmbientMin/tAmbientMax(0 以外の任意の値。0 は公称値)。rdsonTempco(%/°C、既定値 0。接合部温度まで閉形式で解きます)、coss(pF、既定値 0)、qg、vGate。新しい出力には、そのときの電流と周囲温度を伴う junctionTempWorst、totalLossWorst、efficiencyWorst、vdsRating、4 つの損失、efficiencyLossModel があります。

    h-bridge-selection と motor-driver-power:motorCurrentMin/motorCurrentMax と電源の範囲(motorVoltageMin/motorVoltageMax、supplyVoltageMin/supplyVoltageMax)。デッドタイム tDead とボディダイオードの vBody(TI SLVA504A)、さらに H ブリッジでは dutyCycle(%、既定値 75)、tSwitch、qg、vGate。新しい出力には、最悪時のブリッジ損失、最も高温の FET、vdsRating、各損失、efficiencyLossModel があります。

    class-d-efficiency:outputPowerMin/outputPowerMax と supplyVoltageMin/supplyVoltageMax。switchingFreq(kHz、既定値 400)、filterCutoff(kHz、既定値 40)、tSwitch、coss、qg、vGate、およびフィルターインダクターの dcr と coreLoss。新しい出力には、計算値と選定値の出力フィルター(TI SLAA701B)、5 つの損失、loadPower、efficiencyLossModel、コーナー付きの最悪時の効率と損失、headroomWorst(ブリッジが出力を振り切れない場合は負)、フィルターのリップル電流とピーク電流、各定格があります。

  27. boost-converter:デューティ比を TI SLVA372D の式にしました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    デューティ比は 1 − V_in/(V_out·η) で、損失があると短くなり、計算ツール自身の入力電流と矛盾していました。現在は TI SLVA372D の式 1、D = 1 − V_in·η/V_out です。既定値(5 V から 12 V、0.5 A、100 kHz、88 %)では、dutyCycle が 52.65 % から 63.33 % に、inductorValue が 64.35 µH から 77.41 µH に、outputCapacitor が 4.388 µF から 5.278 µF になります。

    拒否と警告もそれに合わせて変わります。η·V_out と V_out の間の入力は、以前は拒否されていましたが、現在は計算されます(拒否されるのは V_out ≤ V_in の場合だけです)。また、95 % のデューティ比の警告は V_in·η/V_out ≤ 0.05 で出ます。

  28. switching-regulator-ripple:入力以上の出力は拒否されます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    この計算ツールは降圧型です。outputVoltage が inputVoltage 以上の場合、以前は 99 % のデューティ比と負のリップルを返していましたが、現在は "Output voltage must be less than input voltage" で拒否し、値は返しません。

  29. buck-converter:入力範囲、選んだ部品とそのストレス、効率を含む損失モデル

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    vinMin と vinMax で入力を範囲として指定します(既定値の 0 は公称の vin)。インダクターはリップルが最大になる点で寸法を決め、E12 でそれ以上の値を選びます(inductorMinWorstUH、inductorChosenUH)。各ストレスは最大になる点で、それが生じる入力電圧とともに報告されます:rippleWorstA/rippleWorstVin、ilPeakWorst/ilPeakWorstVin、outputRippleMV/outputRippleVin、cinMinWorstUF、cinRmsA、q1RmsA、q2RmsA(それぞれ対応する …Vin 付き)、そして dutyMin、dutyMax。出力のコンデンサーバンクは coutEach µF のコンデンサー coutCount 個です。部品の電圧定格は vdsRating、cinVoltageRating、coutVoltageRating です(電圧の 1.5 倍以上で販売されている定格)。

    損失モデルの入力はすべて省略可能です:rdsOnHigh、rdsOnLow、tSwitch、qg、vGate、tDead、vBody、dcr、coreLoss、esrOut、esrIn。公称の入力と負荷での損失は lossDcr、lossCore、lossHsConduction、lossLsConduction、lossHsSwitching、lossGateDrive、lossDeadTime、lossCapEsr、lossTotal(W)で、outputPower と efficiency(%)も返ります。新しい入力を指定しないリクエストには、以前と同じ 5 つの出力が返ります。ただし cinUF は除きます(buck-converter-input-capacitance を参照)。

  30. buck-converter:入力コンデンサーは入力のリップルを抑えるように決めます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    cinUF は出力のリップル電圧(vout に対する deltaVout)で割っていました。現在は TI SLVA477B の式 12 のとおり、入力自身のリップルである新しい入力 deltaVin(vin に対する %、既定値 1)を使います:C_in = I_out·D·(1 − D)/(f_sw·ΔV_in)。既定値(12 V から 5 V、1 A、500 kHz)では 9.72 µF が 4.05 µF になります。

  31. さらに 23 の計算ツールが部品の系列を受け取り、組んだとおりの設計を報告するようになりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    eSeries(理想値なら 0、または 12、24、48、96)は、計算ツールが設計または読み取る各抵抗、コンデンサー、インダクターをその系列の最も近い値に丸め、すべての出力は丸めた設計のものになります。既定値は、指定しないリクエストに以前と同じ答えが返るように設定しています。attenuator-designer、led-resistor、zener-diode では 24 で、これらの E24 の出力(piR1Nearest〜tR2Nearest、rNearest、iActual、pNearest、e24Resistor)はこれに従うようになりました。voltage-divider、opamp-gain、comparator-hysteresis、schmitt-trigger、transistor-switch、current-mirror、crystal-load-capacitance、photodiode-transimpedance、lm317-resistors、rs485-termination、pll-loop-filter、wilkinson-power-divider、rc-snubber、rcd-clamp-snubber、emi-filter-lc、power-supply-ripple-filter、conducted-emissions-filter、differential-mode-filter、speaker-crossover、tweeter-capacitor では 0 です。directional-coupler の部品は線路なので、これを受け取りません。

    新しい出力は丸めた設計を表します:attenuator-designer の piAttenuationBuilt(dB)と piInputImpedanceBuilt(Ω)、wilkinson-power-divider の isolationBuilt(f₀ での dB。厳密な抵抗値では上限がないため null)、rcd-clamp-snubber の clampVoltageBuilt、rippleVoltageBuilt、clampPowerBuilt、peakDrainVoltageBuilt、pll-loop-filter の crossoverBuilt(kHz、ループの 0 dB クロス点。pmActual はそこでの余裕)、rs485-termination の failsafeVoltage(mV、アイドル状態のバスの A–B 間電圧)、emi-filter-lc の insertionLossBuilt(10·f_c での dB)、conducted-emissions-filter の cornerBuilt、attenuationBuilt、outputLevelBuilt、speaker-crossover の wooferCutoffBuilt と tweeterCutoffBuilt、tweeter-capacitor の crossoverBuilt、zener-diode の zenerCurrentBuilt(mA)と zenerPowerBuilt(mW)。後者は、選んだ抵抗を通した全負荷時の値で、抵抗が負荷を流せない場合は電流が負になります。

    ラベルの変更(キーは変わりません):減衰器の丸めた抵抗は "(E24)" の代わりに "(rounded)" と表示されます。rNearest は "Nearest Series Value"、pNearest は "Power (series R)"、e24Resistor は "Nearest Series Resistor"、current-mirror の error は "Output Current Error" で、N·I_ref に対する不足分です(系列を指定した場合は丸めの影響を含み、Widlar の出力は丸めた R_E を使って V_T·ln(I_ref/I) = I·R_E から解きます)。

    目標の出力に対して部品を逆算できるように、次の入力に最大値を定めました(それを超える値も、来歴の警告付きで引き続き計算されます):comparator-hysteresis の r1 と r2 は 10 000 kΩ、photodiode-transimpedance の feedbackResistance は 1e7 kΩ、feedbackCapacitance は 100 000 pF、differential-mode-filter の inductance は 100 000 µH、capacitance は 1 000 µF、power-supply-ripple-filter の inductance は 100 000 µH、capacitance は 100 000 µF。

  32. schmitt-trigger:+ 入力での重ね合わせでしきい値を求めます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    以前のヒステリシス幅は V_cc·R2/(R2 + R3) で、R1 を含まず、分圧器の電圧を中心に対称に置いていました。現在のしきい値は + ノードでの重ね合わせです(TI SNOA997A):V_TH+ = V_cc·R1/(R1 + R2∥R3)、V_TH− = V_cc·(R1∥R3)/(R2 + R1∥R3)。centerVoltage は幅の中央です。既定値(5 V、10 kΩ、10 kΩ、100 kΩ)では、vth_high、vth_low、hysteresis が 2.727、2.273、0.4545 V から 2.6190、2.3810、0.2381 V になります。この回路は反転型のトリガーですが、説明では非反転型となっていました。

  33. conducted-emissions-filter:L と C を負荷に合わせます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    L と C は √(LC·Z) と √(LC/Z) に分けていたため、√(L/C) が √Z になっていました(50 Ω に対して 7.07 Ω。電圧源から駆動するとフィルターは 47 kHz で 17 dB のピークを持っていました)。現在は L = Z/ω₀、C = 1/(ω₀·Z) です。既定値(150 kHz で 80 dBµV、20 dB、50 Ω)では、lValue が 23.7 µH から 167.8 µH に、cValue が 0.475 µF から 0.0671 µF になります。コーナー周波数、したがって 40 dB/decade の減衰は変わりません。

  34. attenuator-designer、led-resistor、zener-diode:10 Ω 未満の E24 の値

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    これらの E24 の探索は 10 Ω から始まっていたため、10 Ω 未満の部品は 10 Ω になっていました。1 dB、50 Ω の T 型パッドの 2.875 Ω の直列抵抗は 10 Ω になり(組んだパッドは 1.336 dB、54 Ω)、5 Ω の LED 抵抗も 10 Ω になっていました。現在は 0.10 Ω から探索します(3.0 Ω と 5.1 Ω)。10 Ω を超える場合は何も変わりません。

  35. pll-loop-filter と class-d-efficiency:拒否では値を返しません

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    pll-loop-filter(すべての拒否)と class-d-efficiency(API)は、エラーと一緒にゼロを返していました。ほかの計算ツールと同じく、値は返しません。

  36. filter-designer:組んだとおりのラダーの応答、厳密なカットオフのずれ、1 GHz までのカットオフ

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    6 つの新しい出力は、部品の値で組んだラダーを、Z₀ とその負荷の間の ABCD 行列の縦続接続として解いた結果を表します:loadImpedance(Z₀、または偶数次チェビシェフでは Z₀/g_{N+1}、ハイパスでは g_{N+1}·Z₀)、cutoffBuilt_Hz(−3 dB 周波数。ローパスとハイパス)、fLowBuilt_Hz と fHighBuilt_Hz(バンドパスの −3 dB の端)、passbandLoss_dB(0.8·f_c まで、1.25·f_c より上、またはバンドの中央 80 % での最悪の損失)、stopbandBuilt_dB(プロトタイプがカットオフの 2 倍に達する点での損失)。eSeries を指定した場合は丸めた設計の値です。理想部品では、阻止帯域の値は attenuation_at_2fc と等しくなります。

    fcShiftPercent は、部品の誤差の最大値の半分でした。現在は、丸めによって、組んだラダーの −3 dB 周波数(バンドパスでは −3 dB 帯域の中心)が理想のラダーからどれだけ動いたかを示します。E24 部品を使った 100 MHz の 5 次バターワースでは +0.997 % で、以前の推定値は +1.31 % でした。eSeries が 0 の場合は、以前と同じく 0 です。

    fc は 1 GHz まで指定できます(以前は 10 MHz まで)。

  37. voltage-drop:すべてのゲージを計算し、アルミニウムは IEC 60889 の値を使います

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    表にない wireGauge(奇数のゲージや小数のゲージ)は、12 AWG の抵抗で計算されていました。現在は表と同じ式、つまり IEC 60028 の銅(1/58 Ω·mm²/m)をそのゲージの ASTM B258 の断面積で割ったものを使います。表にあるゲージは変わりません。

    conductorType 1(アルミニウム)は銅の 1.61 倍の抵抗を使っていました。現在は IEC 60889 の 0.028264 Ω·mm²/m、つまり銅の 1.6393 倍を使うため、アルミニウムの電圧降下はすべて 1.8 % 大きくなります。120 V で 15 A、30 m の 10 AWG は、3.96 % だったものが 4.03 % の降下になります。

  38. coax-loss:メーカーのデータによる減衰量、さらに 8 種のケーブル、入力電力と出力電力

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    ケーブルの表はデータシートの dB/100 ft の約 1.7 倍の基準で作られていたため、すべてのケーブルの損失が低すぎました。100 m あたりの減衰量は、現在は k₁√f + k₂f(f は MHz)です。LMR ケーブルには Times Microwave が公表している係数(25 °C)を、その他には Belden と CommScope の表(20 °C)への最小二乗フィットを使います。100、435、2400 MHz での lossPer100m の旧 → 新:LMR-400 2.15 → 4.10、4.62 → 8.74、11.50 → 21.70。LMR-240 3.60 → 8.05、7.69 → 17.04、19.40 → 41.51。LMR-200 4.80 → 10.64、10.35 → 22.43、26.00 → 54.18。LMR-100A 10.80 → 23.84、23.45 → 51.01、61.00 → 127.68。RG-58/U 10.00 → 12.45、22.65 → 28.77、64.00 → 84.61。RG-8X 6.10 → 10.10、13.50 → 22.74、38.00 → 63.62。RG-213/U 4.70 → 6.30、10.35 → 15.21、28.50 → 48.34。RG-174/U 19.00 → 28.12、43.33 → 65.75、120.00 → 197.64。Belden 9913 2.50 → 4.34、5.42 → 9.23、13.70 → 22.75。Andrew LDF4-50A 0.70 → 2.17、1.53 → 4.66、3.95 → 11.81。attenuation_dB と電力・電圧の割合もそれに従います。Andrew LDF4-50A は 1/2 in のケーブルですが、7/8 in と表示されていました。

    cableIndex 0–9 のケーブルは変わらず、範囲が 17 まで広がりました:LMR-600、LMR-195、LMR-400-UltraFlex、LMR-400-LLPL(プレナム)、RG-316、RG-6(75 Ω)、Andrew LDF5-50A(7/8 in)、LMR-900。新しい省略可能な入力 inputPower(dBm、既定値 30)。新しい出力 powerOut_dBm、powerOut_W、lossPerMeter。ケーブルの定格最大周波数を超える周波数、フィッティングした表の最後の点より先の周波数、またはフィットが 10 % 以内で成り立つ周波数より低い周波数には、拒否ではなく警告が付きます。

  39. 18 の計算ツールがリストを受け取るようになりました:段、損失、項、層、負荷、部品、面

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    各リストは個数とインデックス付きの入力(numLoads と load1Current、load2Current、…)で表すため、リクエストはフラットなオブジェクトのままです。個数の既定値はすべて、その計算ツールが以前持っていたリストに合わせてあるため、新しい入力を指定しないリクエストには以前と同じ答えが返ります(拒否を含め、計算ツールごとに 201 件のリクエストで確認しました)。個数を超えるインデックスの入力は無視されます。

    noise-figure-cascade:numStages は 10 まで指定できるようになり(以前は 4 まで)、stage5Gain、stage5NF、stage5IIP3 から stage10IIP3 まで、さらに省略可能な bandwidth(MHz、既定値 1)が加わりました。新しい出力は cascadedGain、noiseTemperature(290 K × (F − 1))、noiseFloor(kT₀B に縦続雑音指数を加えたもの)です。

    lora-link-budget、ble-link-budget、5g-nr-link-budget:extraLossCount(0–6)個の extraLoss1〜extraLoss6(dB)と totalLoss。clock-jitter:jitterTerms(0–6)個の term{n}Jitter_ps(二乗和平方根で加算)。emi-margin-budget:marginTerms(0–6)個の term{n}Allowance と totalAllowance。sensor-accuracy-budget:errorTerms(0–6)個の term{n}Error(二乗和平方根)。4-20ma-transmitter:loopElements(0–6)個の element{n}Resistance と totalLoopResistance。

    heatsink-calculator、heatsink-selection、thermal-resistance-network、junction-temperature:ケースとヒートシンクの間に直列に入る numLayers(0–6)個の layer{n}Theta(°C/W)。2 つのヒートシンクの計算ツールは thetaJS と heatsinkTemp も返します。

    battery-life:numLoads(0–7)個の load{n}Current と load{n}Duty、および selfDischargeCurrent。battery-runtime-motor:motorDuty(%、既定値 100)と、numLoads(0–5)個の load{n}Current、load{n}Duty、load{n}Efficiency、および batteryCurrent。solar-panel-sizing:loadHours(1 日あたりの時間、既定値 24)と、numLoads(0–9)個の load{n}Power と load{n}Hours。

    gear-ratio:extraStages(0–5)個の stage{n}Driver、stage{n}Driven、stage{n}Efficiency、および totalEfficiency。series-parallel-resistor:numParts(1–8、既定値 4)と r5〜r8、および sumOfValues。ほかの位置がすでにそうだったように、r1 も 0(実装しない部品)にできます。rt60-reverberation:numSurfaces(0–8)個の surface{n}Area と surface{n}Alpha、および otherArea と meanAbsorption。

  40. リンクバジェットは距離 0 に対して経路損失なしで答えます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    lora-link-budget、ble-link-budget、5g-nr-link-budget は距離 0 を拒否していました。現在は経路損失 0 dB で答えます。これは経路のないリンクで、ページでは経路の前のバジェットを示すのに使います。負の距離は引き続き拒否されます。

  41. clock-jitter:タイミングの予算が残っていない場合は 0 % ではなく上限なしの割合になります

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    セットアップ時間とホールド時間がクロック周期全体を占める場合、budgetUsed_pct は 0 になり、ジッターがまったくないように読めていました。現在は null(上限なしの割合)になり、報告すべきセットアップ違反がない場合は、タイミングの予算が残っていないという警告が付きます。

  42. series-parallel-resistor:分圧比は実装した 2 つの部品から求めます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    ちょうど 2 つの部品を実装した場合、voltDividerRatio はどの 2 つであっても R2/(R1 + R2) だったため、R1 と R3 を実装すると 0 になっていました。現在は、実装した 2 つ目の部品を両者の和で割った値で、R1 と R2 の場合は変わりません。

  43. optical-sensor-range:拒否では値を返しません

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    0 以下の安全率は、エラーと一緒に 0 の maxRange と normalizedRange を返して拒否されていました。現在は、ほかのすべての拒否と同じく、値を返しません。

  44. broadside-coupled-pair:プレーンがない場合はコモンモード、非結合インピーダンス、プレーンまでの高さを返しません

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    シールドのないペア(shielded 0)には基準プレーンがないため、警告ですでに示していたとおり、commonImpedance、uncoupledImpedance、heightToPlane は定義されません。以前は 0 でしたが、現在は null です。

  45. rise-time-bandwidth:クロックがなければ高調波の次数はありません

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    clockFrequency が 0 の場合(この入力でクロックを省略できます)、harmonicNumber は 0 で、これはどのクロックからも得られない値でした。現在は、値が存在しない場合のほかの出力と同じく null です。

  46. 13 の計算ツールが、結果を公表された規格に照らして判定するようになりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    それぞれ、規格(該当する場合はクラスも)を省略可能な入力として受け取り、限度値、それに対する結果の割合(100 を超えると不合格)、そして適合する入力の値を返します。限度値は計算の中で求めるため、API はページと同じ判定を返します。新しい入力はどれも省略可能で、既定値では既存の出力はすべて変わりません。ただし、以下の項目に記載した例外があります。

    power-density:standard(0 は FCC 47 CFR §1.1310、1 は ICNIRP 2020)、exposureClass、groundReflection。limitDensity、limitPercent、minDistance、maxEirp を返します。trace-width-current:standard(API がすでに受け取っている、実際に引く traceWidth を読み取ります)。limitCurrent、limitPercent、minTraceWidth。microvia-current-capacity:standard、conductorClass。limitCurrent、limitPercent、minVias、minViaDiameter。pcb-trace-temp:standard、laminate。chartRise、limitRise、limitPercent、minTraceWidth、maxCurrent。

    minimum-conductor-spacing:conductorSpacing。spacingPercent、maxVoltage(限度値は spacing)。padstack-annular-ring:standard、padDiameter、producibilityLevel。minLandDiameter、landPercent、maxDrillDiameter。solder-paste-volume:releaseCriterion。maxStencilThickness、stencilPercent、maxApertureReduction。bga-land-pad:ballType、landDiameter。ipcLand、landDeviation、landTolerance、landPercent、compliantLand。

    i2c-pullup:pullup。riseTime、riseTimePercent、maxBusCap(限度値は riseTimeTarget_ns、モードは speedMode)。usb-termination:impedanceError、impedanceTolerance、impedancePercent、compliantImpedance(規格は usbVersion)。esd-tvs-diode:standard、testLevel、esdRating。testVoltage、limitPercent。esd-clamp-selection:standard、testLevel。testVoltage、limitPercent。radiated-emission-estimate:standard、emissionClass。eFieldUvm、limitField、limitPercent、maxCurrent、maxLoopArea。

    規格が限度値を定めていない場合(30 MHz 未満の ICNIRP、30 MHz–6 GHz の範囲外の CISPR 32、IPC-6012 Class 2 のアニュラーリング、3,050 m を超える A6 の間隔)、新しい出力は NaN で、null として返され、理由を示す警告が付きます。

  47. 伝送線路の計算ツール 11 種が管内波長を返すようになりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    microstrip-impedance、controlled-impedance、asymmetric-stripline、dual-stripline、differential-pair、edge-coupled-internal-symmetric、edge-coupled-internal-asymmetric、edge-coupled-embedded、broadside-coupled-pair、coplanar-waveguide、coax-impedance は、省略可能な frequency(GHz、既定値 2.4)を受け取り、guidedWavelength と quarterWavelength(mm)を返します。λg = c/(f·√εeff) で、結合線路では奇モードの εeff から求めます。frequency のないリクエストは、既存の出力をすべて変わらずに返し、さらに 2.4 GHz での 2 つの新しい出力を返します。

  48. radiated-emission-estimate:余裕は選んだ規格とクラスに従います

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    margin は、リクエストの周波数と距離での、選んだ規格とクラスの限度値から電界を引いたものです:standard 0 は CISPR 32、1 は FCC Part 15 セクション 15.109、emissionClass 0 は Class B、1 は Class A です。これらを指定しないリクエストは、以前と同じく CISPR 32 Class B になるため、余裕は変わりません。FCC の限度値は 30 MHz から 40 GHz まで適用され、規格の範囲外では余裕は null です。出力のラベルは "Margin to Limit" になりました。

  49. minimum-conductor-spacing に部品リードの列 A6 と A7、および B4 の出力を追加しました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    condition 4 は A6(外部の部品リードまたは端子、コーティングなし、海抜 0〜3,050 m)、5 は A7(外部の部品リードまたは端子、コンフォーマルコーティング)で、どちらも IPC-2221B Table 6-1 によるものです。3,050 m を超える場合、表が A6 を 3,050 m までしか示していないため、A6 のリクエストは警告付きで null の間隔を返します。新しい出力 spacingB4 は列 B4(外部の導体、永久ポリマーコーティング)で、spacingB1、spacingB2、spacingB3 と並びます。条件 0〜3 と既存の出力は変わりません。

  50. bga-land-pad は、IPC-7351B と同じくボール径でランドの寸法を決めます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    ランドは、密度レベルに応じてボール径の 1.0、0.9、0.8 倍としていましたが、これはどの IPC の表にもありません。現在は IPC-7351B に従い、つぶれるボールでは、ボールのサイズに応じてボールより 25、20、15 % 小さくします。既定値では padDia が 0.55 から 0.45 mm になり、それから導かれる出力もそれに従います。IPC-7351B は BGA のランドに密度レベルを適用しないため、densityLevel 入力は廃止しました。これを送るリクエストには、値が読み取られなかったことを示す警告付きで答えます。

  51. bldc-winding:コイルは少なくとも 1 スロットにまたがります

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch

    スロット数を極数で割った値が丸めて 0 になる場合(たとえば 14 極に 6 スロット)、コイルピッチは 0、巻線係数は 0 で、actualKv と deltaEquivKv は null でした。集中巻のコイルは 1 つの歯に巻くため、ピッチは少なくとも 1 スロットになり、これらの出力は数値になりました。

  52. emi_radiated ジョブは、帯域の境界で厳しいほうの限度値を適用します

    • POST /api/py/v1/jobs

    ちょうど 88、216、960 MHz(FCC Part 15)と 230 MHz(CISPR 32)では、隣接する 2 つの限度値のうち緩いほうを使っていました。47 CFR 15.109(c) は帯域の境界では厳しいほうの限度値を適用するとし、CISPR 32 は遷移周波数で低いほうの限度値を適用します。現在はどちらもそのとおりに適用します。

  53. 31 の計算ツールの入力範囲

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}
    • POST /api/py/v1/calculate/batch
    • provenance.validRange

    30 の計算ツールの入力に最大値を設けたため(大半は線路、パッド、アンテナ、導波管など形状を扱うもの)、ページでそれらを逆算できるようになりました。また、i2c-pullup のバス容量は Fast-mode Plus の上限である 550 pF まで指定できます。API は入力の範囲を超える値を拒否しません。provenance.validRange が範囲外として報告します。

  54. 12 のセンサーの計算ツールにフロントエンドが加わりました:その電圧、ADC のコード、分解能

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}

    ntc-thermistor、rtd-temperature、pt100-resistance、thermocouple-voltage、wheatstone-bridge、strain-gauge-bridge、pressure-bridge-output、load-cell-amplifier、hall-effect-sensor、current-shunt、accelerometer-sensitivity、lvdt-sensitivity は、省略可能なフロントエンドの入力を受け取り、3 つの新しい出力を返します。入力は分圧器(fixedResistor、sensorPosition または ntcPosition)または増幅器(frontGain)と ADC(adcRef、adcBits)で、計算ツールにすでにある入力(gain、amplifierGain、adcVoltage、supplyVoltage)を再利用します。出力は、フロントエンドの電圧(dividerVoltage または amplifiedVoltage)、adcCode(ユニポーラの N ビットのコードで、0〜2^N − 1 に収めます)、resolution(その点での ADC の 1 ステップあたりの物理量)です。

    load-cell-amplifier はセルにかかる荷重(appliedLoad)を受け取り、その出力(bridgeOutputMv)を返します。accelerometer-sensitivity は acceleration を受け取り、outputVoltage を返します。

    新しい入力はどれも省略可能で、既定値では既存の出力はすべて変わりません。この変更より前に書かれたリクエストは、以前と同じ値に新しい出力が加わったものを返します。

  55. current-shunt:増幅器のゲインの既定値を 20 にしました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}

    リクエストで amplifierGain を省略した場合、current-shunt は 50 の代わりに 20 を使うようになりました。ほかの既定値(10 mΩ に 10 A、3.3 V の ADC)では、ゲイン 50 では ADC に 5 V がかかり、基準電圧を超えていました。ゲイン 20 では 2 V です。そうしたリクエストでは amplifiedVoltage と adcResolutionCurrent が変わります。amplifierGain を指定するリクエストには影響しません。

  56. hall-effect-sensor:0 以下の磁界は拒否されます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}

    hall-effect-sensor は、サイトがすでにそうしていたように、0 mT 以下の Bfield に対してエラーを返すようになりました。以前の API は、その値から計算した結果を返していました。

  57. frequency-ppm-tolerance:警告は該当するクロック許容差を引用します

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/{slug}

    frequency-ppm-tolerance の警告は、±50 ppm の UART の予算を引用し(UART が許容するのは約 2 %)、±100 ppm は USB には緩すぎるとしていました(USB はフルスピードで ±2500 ppm を許容します)。現在、±50 ppm を超える場合の警告は 100BASE-TX Ethernet と Bluetooth LE の無線クロックを引用します。±100 ppm を超える場合はすべての Ethernet のクロックを、±500 ppm を超える場合は USB 2.0 ハイスピードを引用します。50 ppm と 100 ppm のしきい値は変わらず、500 ppm のしきい値は新しく加わりました。

  58. rftools 独自の熱モデルによる、基板に合わせた配線幅と温度上昇

    • POST /api/py/v1/calculate (trace-width-current, pcb-trace-temp)
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    trace-width-current に、この基板での最小幅 widthBoardMm が、pcb-trace-temp に、その基板での上昇と最高温度 tempRiseBoard と maxTempBoard が加わり、どちらにも inModelRange が加わります。これらは rftools 独自の熱モデルによるもので、IPC-2152 とは表示しません。配線、積層板、プレーン、静止空気(対流と放射)を解くテスト専用の 2 次元有限体積ソルバーにフィッティングした閉形式の熱回路網で、公表された測定(IPC-TM-650 2.5.4.1A の条件、Brooks と Adam による IPC-2152 の図へのフィットなど)と照合し、そのうち最悪のものから上昇に 15 % の余裕を持たせています。検証済みの範囲内(配線幅 0.25–5.1 mm、基板 1.4–3.2 mm、内層の配線は幅 1.27 mm から、上昇 5–100 °C、プレーンは 0.1 mm 以上)では、フィットはソルバーと 2.81 % 以内で一致します。

    新しい入力は既定値付きで末尾に追加したため、既存のリクエストは変わらず計算されます:両方の計算ツールの boardThickness(mm、既定値 1.6)、planeDistance(銅プレーンまでの mm、0 はプレーンなし)、planeCopperWeight(oz、既定値 0.5)、そして pcb-trace-temp の isExternal。既存の出力はすべて変わりません。既定値では、widthBoardMm は 0.30212 mm(Figure 5-1 では 0.78144 mm)、tempRiseBoard は 10.2818 °C です。

    検証済みの範囲外でも結果は報告され、inModelRange が 0 になり、境界を示す警告が付きます。1.4 mm 未満の基板では、モデルと IPC-2152 が公表している厚さのデータが一致しないため、Figure 5-1 を参照するよう案内します。熱暴走の場合、基板に合わせた上昇は null を返します。この 2 つの計算ツールでは、provenance.validRange に models が加わり、フィッティングした各モデルがそれぞれの inside を持ちます:まず IPC-2152 Figure 5-1 のフィット、次に熱モデルで、どちらかが範囲外なら status は outside です。これらの計算ツールへの、電流、上昇、銅の重さ、長さが 0 または負のリクエストは、API と同様にブラウザーでも拒否され、負の電流は 500 で答えるのではなく拒否されます。

  59. 計算ツールが計算できなかった 7 つの出力を削除しました

    • POST /api/py/v1/calculate (differential-via, usb-termination, parabolic-dish-antenna)
    • POST /api/py/v1/calculate/batch
    • MCP run_calculation
    • rftools-io SDK

    differential-via は diffImpedance、commonImpedance、oddImpedance、evenImpedance、singleEndedImpedance を返さなくなりました。電磁界解析(4 つの閉形式で検証した 3 次元準静的ソルバーで、openEMS によるフルウェーブ解析と 0.4 % で照合)により、ビアのペアのインピーダンスは、それが貫通するプレーンのピッチに依存することがわかりました。これは入力にはありません。既定値では、プレーンのピッチ 0.1 mm で 85.6 Ω、1.0 mm で 96.0 Ω で、計算ツールは 44.10 Ω と表示していました。計算ツールの入力によるどの関係式も、すべてのケースで 10 % 以内に収まらず、コモンモードインピーダンスはリターン電流が流れる場所にも依存します。スタブ共振と損失は引き続き返されます。修正の項目をご覧ください。

    usb-termination は、どの USB 仕様でも定義されていない経験則である eyeOpening を返さなくなりました。parabolic-dish-antenna は noiseTemperature を返さなくなりました。これは 290·(1 − η) でしたが、アンテナの雑音温度は仰角、スピルオーバー、空に依存し、計算ツールはそのどれも受け取りません。

    これらのキーを読み取っている呼び出し元は、読み取りをやめる必要があります。キーは null ではなく、存在しません。3 つの計算ツールのその他の出力はすべて引き続き返されます。

  60. 存在しない値は、ゼロや番兵値ではなく、省略されるか null になります

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    次の出力は、量が定義されない場合、以前は数値でしたが、現在は null になります:送信器の立ち上がり時間を規定していない USB 3.0 での usb-termination の signalRiseTime(USB 2.0 では最小値 500 ps、T_HSR を読み取ります)、集中定数モデルが成り立たない弱結合の限界 (x_C + x_L)/2 = 0.1 を超えた場合の pcb-crosstalk-emc の結合の出力、密閉型のアライメントが存在しない Qts ≥ 0.707 での subwoofer-box の vbSealed と f3Sealed(2·Vas と表示されていました)、自己共振周波数以上での planar-spiral-inductor の qFactor、在庫の工具が合わない場合の aperture-diagonal のカバーするドリルとルータービット(0 と表示されていました)、抵抗がない場合の lc-resonance の qFactor(無損失回路の上限のない Q。9999 と表示され、帯域幅は f₀/9999 でしたが、現在帯域幅は 0 です)、スタブがない場合の differential-via の stubResonance(0 GHz と表示されていました)。null にはそれぞれ、理由を示す警告が付きます。

    これらの計算ツールが 0 や一部の値を返していた場合、拒否された入力は、現在はエラーとともに値を返しません:power-density、thermal-via-array、チャネルのない bga-breakout-width、h₂ ≤ 0 の dual-stripline、fresnel-zone、そして doppler-shift、reactance-calculator、broadside-coupled-pair、fusing-current、rise-time-bandwidth、current-divider、delta-wye-conversion、voltage-drop、rt60-reverberation、vfd-motor-speed のすべての拒否です。エラーの横のゼロは結果として読まれていました。

    これらの値を数値として扱っていた呼び出し元は、null か、エラーの横でキーが存在しないかを確認する必要があります。/calculate/solve は、すでにその出力がない点をスキップしています。

  61. 計算ツールを参考文献に照らして修正し、3 つの新しい入力と新しい出力を加えました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • POST /api/py/v1/jobs (emi_radiated)
    • MCP run_calculation
    • MCP simulate_emi_radiated
    • rftools-io SDK

    定数。銅の抵抗率はすべての箇所で IEC 60028 の 1/58 Ω·mm²/m です(trace-resistance は既定値で 100.217 → 100.458 mΩ。そのほかの銅の計算ツールは 0.008 %、表皮深さは 0.004 % 変わります)。マイクロストリップのエンジンは、60 の代わりに η₀/2π と正確な光速を使うため、マイクロストリップに基づくインピーダンスはすべて −0.069 % 変わります(microstrip-impedance 80.954 → 80.898 Ω、differential-pair 99.983 → 99.914 Ω、逆算した幅もそれに伴って変わります)。すべての計算ツールが、1 つの η₀ = µ₀·c(CODATA 2018)を共有するようになりました。power-density の波動インピーダンスは µ₀·c、376.730 Ω です(以前は 120π)。controlled-impedance の遅延は √εeff/0.299792458 ps/mm です(6.52995 → 6.53447)。emi_radiated ジョブは電磁界に π·µ₀/c と µ₀ を使うため、radiated-emission-estimate と一致するようになりました(以前は 0.021 dB と 0.023 dB 高く表示されていました)。

    モデル。planar-spiral-inductor は Jow と Ghovanloo の寄生成分と、その形状の配線長を使います。既定値で、自己共振は 68.0 → 601.7 MHz、100 MHz での Q は 814.5 → 116.8 になり、Q 用に新しい省略可能な入力 frequency(MHz、既定値 100)が加わりました。pcb-crosstalk-emc は Paul の両端モデルです。既存のキーは片端あたりの値(以前の値の半分)で、farEndCrosstalk が新しく加わり、既定値は 3.3 V、25 MHz のクロックです。subwoofer-box は Margolis と Small の方法でポートを調整し(20.246 → 40.273 Hz)、f3Vented を加えました。pcb-crosstalk は、新しい入力 dielectricConst(既定値 4.5。結合は 6.77 → 5.72 %)とともに結合マイクロストリップのエンジンで計算します。patch-antenna のエッジ抵抗は、正確な η₀ を使った Balanis の放射スロットモデルで、制限をかけません(306.80 → 321.22 Ω。給電抵抗と 50 Ω のインセットもそれに従います)。lc-resonance は、どちらのトポロジーでも直列抵抗を直列損失として扱い、Q = Z₀/R とします(並列モードでは R/Z₀ を計算していました)。また impedanceAtResonance_ohm を加えました:直列では R、並列では L/(C·R)。differential-via のスタブ共振は無負荷時の上限と表示され、導体損失は密なプレーンでの上限です(0.030 → 0.011 dB)。

    規則。マイクロビアのアレイは、その断面積の合計で定格を決めます(IPC-2221 の注 5。ビア 10 個で 2.762 → 1.466 A)。ビアの自己発熱は、via-voltage-drop(0.2506 → 0.0313 °C)と microvia-current-capacity で、バレルのピーク値 P·L/(8kAN) です。bga-breakout-width は最外列を数えます(escapeRows 1 → 2)。padstack-annular-ring は、アスペクト比を IPC-2222 Table 9-4 に照らして判定し(すべてのクラスで 8:1)、Table 9-6 による最小ドリル径の確認を行い、Class 3 の内層のリングは 0.025 mm です。thermal-via-array はビアを整数個で数えます。i2c-pullup と rs485-termination は抵抗値を丸めずに返します(表示では引き続き丸めます)。aperture-diagonal は新しい入力 routerBit を受け取ります。

    新しい入力のいずれかを省略したリクエストには、その既定値が使われます。

  62. どの入力でも 1 つの値しか取らなかった 4 つの出力を削除しました

    • POST /api/py/v1/calculate (balun-transformer, opamp-bandwidth, capacitor-code)
    • POST /api/py/v1/calculate/batch
    • MCP run_calculation
    • rftools-io SDK

    次の出力は、入力にかかわらず同じ値を返しており、どれも計算結果ではありませんでした:balun-transformer の vswr(1.0、"VSWR (ideal)")と insertionLoss(0.3 dB、"Typical Insertion Loss")、opamp-bandwidth の slewLimited(0。計算ツールにはないスルーレートと振幅の入力を必要とする確認のための仮の値)、capacitor-code の voltageCode(0 V。3 桁のコードが表さない定格)。これらは、拒否の横でも、返されなくなりました。

    これらのキーを読み取っている呼び出し元は、読み取りをやめる必要があります。キーは null ではなく、存在しません。それぞれの値が表していた内容は、代わりに provenance.assumptions に記載しています:balun-transformer の ideal-transformer(構造上整合しており、コアと巻線の損失はモデル化していません。フェライトバランの損失は一般に 0.1-1 dB です)と、capacitor-code の capacitance-only。3 つの計算ツールのその他の出力はすべて変わりません。

  63. loop-antenna の利得に放射効率を含めるようになりました

    • POST /api/py/v1/calculate (loop-antenna, capacitor-code)
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    loop-antenna の gain は、どの入力でも 1.76 dBi でした。これは小型ループの指向性 3/2 で、損失をまったく含んでいませんでした。現在は、その指向性に、計算ツールがすでに返している 2 つの抵抗から求めた放射効率 e = R_rad/(R_rad + R_loss) を掛けたものです:G = 10·log₁₀(1.5·e)(Balanis『Antenna Theory』第 4 版、第 2 章およびセクション 5.2)。既定値(7 MHz での直径 10 mm の銅による 1 m のループ)では −9.4043 dBi で、以前の値より 11.2 dB 低くなります。放射抵抗に比べて損失が小さいループは、引き続き 1.76 dBi に近い値になります。効率は新しい出力 radiationEfficiency(%)で、既定値では 7.6467 % です。

    API の capacitor-code は、小数のコードを偶数丸め(銀行丸め)していましたが、ページは四捨五入していたため、104.5 は API では 100 nF、ページでは 1 µF と解読されていました。現在はどちらも 1 µF です。

  64. 結果を変えていなかった 8 つの入力が結果を決めるようになり、11 の新しい出力が加わりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    以下の各入力は宣言されていましたが、どの出力からも読み取られていませんでした。現在は、既存の出力の後に追加した新しい出力を決め、その出力は計算ツールがすでに使っている関係式から計算します。どの入力でも、既存の出力は変わりません。patch-antenna:feedOffset は feedResistance_ohm、R_edge·cos²(π·y₀/L) を決めます(Balanis『Antenna Theory』第 4 版、セクション 14.2.1、式 14-20a)。既定のエッジ給電で 306.795 Ω、10 mm で 65.501 Ω です。insetFeedPosition_mm は 50 Ω になるインセットで、10.594 mm です。flyback-converter:fsw は primaryInductance(µH)を決めます。計算ツール自身の臨界モードのピーク電流に対する Vin·D/(fsw·Ipk) で、130.56 µH です。solar-panel-sizing:batteryCapacity は batteryAutonomyDays を決めます。必要容量が前提とする 50 % の放電深度での C·V·0.5/(P·24 h) で、0.25 日です。rs485-termination:baudRate は baudRateUtilisation(%)を決めます。最大 10⁸ bit·m に対するレートの割合で、11.52 % です。adc-snr:samplingFreq は nyquistZone、⌊f_in/(f_s/2)⌋ + 1 と、aliasFrequency(MHz)、|f_in − f_s·round(f_in/f_s)| を決めます(Kester、Analog Devices MT-002)。既定値ではゾーン 1 と 1 MHz、100 MSPS での 70 MHz ではゾーン 2 と 30 MHz です。bldc-thermal:continuousCurrent は ratedCurrentShare(%)を決めます。定格に対する動作電流の割合で、75 % です。bldc-winding:supplyVoltage は noLoadSpeed(rpm)、Kv·V を決め、11,406.44 rpm です。数値は各計算ツールの既定値でのものです。

    さらに 2 つの新しい出力があります:yagi-antenna の assumedBoomLength(m)は、素子間隔 0.2λ から導かれるブーム長 (N − 1)·0.2λ で、既定値では 1.6655 m です。これは廃止したブーム長の入力に代わるものです(その項目をご覧ください)。もう 1 つは loop-antenna の radiationEfficiency(%)です(利得の項目をご覧ください)。サイトでのみ、ism-coexistence のリアルタイムの規制情報ウィジェットが、bandIndex で選んだ帯域を表示するようになりました。計算結果は変わりません。

    これらの入力のいずれかを省略したリクエストには、その既定値が使われます。feedOffset のない patch-antenna と batteryCapacity のない solar-panel-sizing は、これまで 400 で答えていましたが、どちらも答えるようになりました。

  65. 結果をまったく変えなかった 12 の入力を廃止しました。それを送るリクエストには警告付きで答えます

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • MCP get_calculator_schema
    • rftools-io SDK

    次の入力は宣言されていましたが、どの値でも出力、警告、拒否を変えませんでした:smith-chart の frequency、via-calculator の signalLayer、stackup-builder の layerCount(モデルは固定の 4 層構成で、タイトルにもそう示すようになりました)、i2c-pullup の numDevices、fm-modulation-index の carrierFreq、quantization-noise の frequency、555-timer の vcc、bldc-efficiency の polePairs、opamp-bandwidth の phase_margin、battery-internal-resistance の temperature、rs485-termination の numNodes、yagi-antenna の boomLength。これらはカタログ、来歴の境界、MCP のスキーマから外れます。各計算ツールは、これらを日付とともに retiredInputs に記載しています。

    これらの入力をまだ送るリクエストには、以前と同じ値と、既存の警告 "Input '<key>' is not read by this calculator and was ignored." で答えます。拒否されることはありません。POST /calculate/solve は、宣言されていないほかの入力と同様に、これらについての逆算を拒否します。その値をどう変えても出力は動かなかったためです。boomLength のない yagi-antenna のリクエストは、これまで 400 で答えていましたが、答えるようになりました。

    次の rftools-io のリリースでは、廃止した各キーワードを残します。それを渡すと、キーと廃止日を示す DeprecationWarning が発生し、そのキーは送信されません。

  66. trace-width-current は IPC-2152 の幅を IPC-2152 Figure 5-1 から読み取り、pcb-trace-temp は IPC-2152 の上昇を報告します

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    IPC-2152 と表示されていた trace-width-current の width2152mm は、IPC-2221 の幅に外層では 0.75、内層では 0.85 を掛けたものでした。これは IPC-2152 にない係数で、2 A 以上ではどの IPC-2152 の読み取り値よりも狭くなっていました。現在は、IPC-2152 がすべての環境の内層・外層の導体に推奨している図である IPC-2152(2009)Figure 5-1 を、公表されたフィット I = 0.024·ΔT^0.44·A^0.725 で使います。どちらの層でも同じです。既定値で 0.7814 mm(以前は 0.2266 mm)、外層で 5 A、上昇 10 °C、1 oz では 7.194 mm(以前は 2.086 mm)です。Olson(2010)による Figure 5-1 の 300 sq mil と 680 sq mil の読み取り値を 5 % 以内で再現します。キーは変わりません。ラベルは "Min Width (IPC-2152 Fig. 5-1)" になりました。

    どちらの計算ツールも銅を 1 オンスあたり 35 µm とするため、width2221mm は −0.58 % 変わります(既定値で 0.3004 mm、以前は 0.3021 mm)。trace-width-current の resistance、voltageDrop、powerDiss は、IPC-2221 の最小幅ではなく、新しい入力である実際に引く配線幅に対して、IEC 60028 の 1/58 Ω·mm²/m の銅で計算します:既定値で 0.10433 Ω(以前は 0.17326 Ω)。

    新しい省略可能な入力を末尾に追加しました。省略したリクエストには既定値が使われます:trace-width-current の traceWidth(mm、0.5)。新しい出力:両方の計算ツールの inChartRange(IPC-2152 Figure 5-1 が描いている範囲内なら 1、範囲外なら 0。フィットの最大残差とともに provenance.validRange にも反映されます)、そして pcb-trace-temp の tempRise2152 と maxTemp2152。これは IPC-2221 の外層の上昇と並べて示す Figure 5-1 での上昇(k = 0.024、どの層でも)で、既定値では 5.342 °C に対して 25.815 °C です。pcb-trace-temp の既存の出力は、キーも値も変わりません。

    図の範囲外の結果は報告され、フラグが付き、拒否されることはありません。警告には、量と図の境界が示されます:Figure 5-1 の 10〜45 °C の曲線と 700 sq mil、外層での IPC-2221 の図 A の 10〜100 °C と 700 sq mil、図 B の ½〜3 oz。Figure 5-1 の範囲外では、provenance.validRange.status は outside です。

    出典:trace-width-current、pcb-trace-temp、microvia-current-capacity、via-calculator は電流の図の出典として IPC-2221B を挙げていましたが、その版(2012)にはこの図はありません。現在は、IPC-2221(1998)の図である IPC-2221A(2003)Figure 6-4 と、IPC-2152(2009)Figure 5-1 を挙げています。後の 2 つの計算ツールの値は変わりません。

  67. 12 の計算ツールが、ページと参考文献に記載されたモデルで計算するようになりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    以下の各計算ツールは、ページと参考文献が説明しているモデルの一部しか計算していませんでした。これはブラウザー、API、MCP サーバーのどれでも同じでした。現在はそれぞれ公表されたモデルで計算し、公表された事例に対してテストしています。また、パリティスイープにより、ブラウザーと API が同じ数値になることを保証しています。保存した計算は入力を保存しているので、再計算されます。同じ変更に含まれる bldc-winding には、2026-10-11 付けの独自の項目があります。

    値が変わるもの:cable-shield-effectiveness(伝達インピーダンス R_T + jωM_T と、線路インピーダンスに対するシールド効果。Hähner と Mund 1998:既定値で 64.95 dB、以前は 1 Ω に対して 30.97 dB で、0 dB の下限はありません)、ferrite-bead(Analog Devices AN-1368 の R_DC + (R_AC ∥ L ∥ C) を入力した 100 MHz のインピーダンスに合わせ、信号源と負荷の間の複素挿入損失を求めます:既定の 600 Ω のビーズは 1 GHz で 94.9 Ω、以前は 1897 Ω)、mosfet-operating-point(ドレインの負荷線上の動作点。Sedra と Smith 第 7 版、セクション 5.3。後述の互換性のない変更の項目をご覧ください)、bldc-motor(モーターとプロペラのトルクがつり合う回転数での推力。Drela 2007、C_P 0.047:既定値で 140.91 g、以前は無負荷回転数の固定 75 % で 80.43 g)、ethernet-cable(各 PHY の信号周波数 31.25、62.5、400 MHz での ANSI/TIA-568-C.2 のケーブル挿入損失:既定値で 7.69 dB、以前は 16.5 dB。Category 8 はどの速度でも 30 m のチャネル)、radar-range-equation(P_d と P_fa に対して Albersheim の式が要求する SNR での距離:既定値で 35.23 km、以前は SNR = 1 で 74.96 km。snrAtMaxRange はその SNR を報告し、以前は 0 でした)、bldc-efficiency(端子間抵抗による銅損 I²·R。Drela 2007 と maxon Formulae Handbook:既定値で 4.500 W、以前は 6.750 W)、bldc-thermal(巻線が到達する温度での巻線抵抗。maxon Formulae Handbook セクション 9.2、同じ銅損:既定値で 207.61 °C、以前は 184.47 °C。後述の互換性のない変更の項目をご覧ください)、class-d-efficiency(同時に負荷電流を流す FET による導通損失 I²·R_DS(on)·N/2:既定値で 0.625 W、以前は 1.250 W)、motor-driver-power(導通している 2 つの FET とハードスイッチングする 1 つの FET。TI SLVA504A:既定値でブリッジ 0.1440 W、以前は 0.2088 W)、そして coax-impedance と via-calculator(60 の代わりに CODATA 2018 の定数による η₀/2π = 59.9585 Ω からの Z₀:既定値で 47.990 Ω と 35.2243 Ω、以前は 48.023 Ω と 35.2487 Ω)。

    新しい省略可能な入力を末尾に追加しました。省略したリクエストには既定値が使われます:cable-shield-effectiveness の transferInductance(nH/m、0.159155。10 mΩ/m で以前の伝達インピーダンスを再現します)と lineImpedance(Ω、50)、ferrite-bead の beadInductance(µH、1.208)、parasiticCapacitance(pF、1.678)、sourceImpedance(Ω、0)、mosfet-operating-point の biasMode(0 は負荷線を解き、1 は入力した V_DS をそのまま使います。既定値 0)、radar-range-equation の pd(0.9)、pfa(1×10⁻⁶)、pulses(1、非コヒーレント積分)、motor-driver-power の transitionTime(ns、50)。

    新しい出力:mosfet-operating-point の vdsOperating、bldc-motor の loadedRpm と loadedCurrent、motor-driver-power の gateDriveLoss(2·Q_g·V·f。ゲートドライバーで消費されます)。

    キーはそのままで、意味をラベルに合わせました:motor-driver-power の conductionLoss は導通している 1 つの位置の損失(I²·R)、switchingLoss はハードスイッチングする 1 つの FET の損失、totalLossPerFet は最も高温の FET の損失で、efficiency は V·I·D に対して求め、ゲート駆動を含めます。bldc-efficiency と bldc-thermal の phaseResistance 入力は、もともとそうだったとおり、2 本のリード線の間で測った端子間抵抗と表示されます。

    Category 8 の挿入損失には、IEEE 802.3bq のチャネルモデルが TIA Category 8 について引用しているドラフトの係数(draft d0.7:100 m あたり 1.8·√f + 0.005·f + 0.25/√f dB)を使い、Category 8 のすべての結果にその旨を記載します。公表された TIA-568.2-D の表が手元にないためです。

    新しい拒否と警告:ferrite-bead は、その L と C では到達できない 100 MHz のインピーダンスを拒否し、到達できる最大値を示します。radar-range-equation は、その P_fa ではどの検出器も満たせない P_d を拒否し、Albersheim の式が示す範囲外では警告します。cable-shield-effectiveness は、ケーブルが波長の 6 分の 1 より長い場合、または結合がもはや弱くない場合に警告します。ethernet-cable は、カテゴリーが規定されている周波数を超えて評価される場合に警告します。

  68. mosfet-operating-point は既定で負荷線を解きます。bldc-thermal は巻線が熱暴走する場合に null を返します

    • POST /api/py/v1/calculate (mosfet-operating-point, bldc-thermal)
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    mosfet-operating-point は、既定で二乗則とドレインの負荷線 V_DS = V_DD − I_D·R_D を同時に解くようになりました(Sedra と Smith『Microelectronic Circuits』第 7 版、セクション 5.3、例 5.5)。そのため、動作点は vdd と rdLoad で決まり、入力した vds では決まらなくなりました。既定値では、V_DS 0.0401 V の線形領域で 11.96 mA になります。以前は 450 mA でしたが、1 kΩ の負荷では 12 V からそれだけの電流は流せません。入力した vds に依存する呼び出し元は biasMode: 1 を送る必要があります。これは以前の計算を保ち、V_DS + I_D·R_D が V_DD から 1 % 以上離れると警告します。新しい出力 vdsOperating は、どちらのモードでも動作点の V_DS を返します。

    bldc-thermal は、温度による巻線抵抗の上昇を含めるようになりました(maxon Formulae Handbook、2012、セクション 9.2)。α·Rθ·R₂₅·I² ≥ 1 の場合は定常状態がありません。温度とともに銅損が増える速さが、熱経路が熱を取り除く速さを上回るためです。その場合 tempRise、steadyStateTemp、thermalMargin、hotResistance は null になり、巻線が落ち着く電流の上限を示す警告が付きます。以前は数値でした(既定のモーターで 25 A のとき 467.97 °C。このモーターは現在 23.21 A を超えると熱暴走します)。これらを数値として読み取る呼び出し元は、null を扱う必要があります。deratedCurrent と timeToLimit は常に数値です。

    bldc-thermal の timeToLimit は、ピーク電流で巻線が上限より低い温度に落ち着き、上限にまったく達しない場合、警告付きで null になります。以前は番兵値の 9999 s で、実際の時間のように読めていました。

  69. bldc-winding:占積率は両方のコイル辺を数え、スター・オブ・スロット法による巻線係数を使います

    • POST /api/py/v1/calculate (bldc-winding)
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    fillFactor は、各スロットの両方のコイル辺を数えるようになりました:2·N·A_wire/A_slot(Pyrhönen、Jokinen、Hrabovcová『Design of Rotating Electrical Machines』、2008、セクション 2.9)。すべての歯に 1 つずつコイルを巻くと、すべてのスロットに 2 つのコイル辺が入ります。以前は 1 つしか数えていなかったため、占積率はすべて 2 倍になります。100 % での打ち切りもなくなりました。収まらない巻線は実際の値を返し、75 % と 90 % の警告は以前と同じです。

    windingFactor は、分布係数をスター・オブ・スロット法から求めます:q = S/(3P) = z/n(既約分数)に対して k_d = sin(π/6)/(z·sin(π/(6z)))(Bianchi と Dai Pré、2006)。以前は丸めて 1 になるすべての q で 1 だったため、分数スロット巻線は高く表示されていました。12 スロット 14 極は 0.93301(以前は 0.96593)、18 スロット 16 極は 0.94521(以前は 0.98481)になります。整数スロット巻線は変わりません。turnsPerCoil、actualKv、deltaEquivKv、phaseResistance もそれに従います。既定の 935 Kv の巻線は 4 ターンのままで 1027.61 Kv(以前は 992.59)になり、23 × 10 mm のステーターでの 920 Kv は 6 ターン(以前は 5)になります。

    計算ツールの maxCurrent の既定値は 5 A(以前は 10 A)になったため、既定の EMAX MT2213 の巻線が実際に巻けます:AWG 18 で 4 ターン、占積率 47.24 %。10 A では AWG 14 で 119.44 % が必要です。API は既定値を適用しないため、maxCurrent を送るリクエストは送った値で計算されます。

  70. 30 の計算ツールを、引用している関係式に合わせて修正しました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/calculate/solve
    • MCP run_calculation
    • rftools-io SDK

    以下の各計算ツールは、引用している参考文献とは異なるものを計算していました。これはブラウザー、API、MCP サーバーのどれでも同じでした。現在はそれぞれ参考文献の関係式で計算し、公表された値に対してテストしています。保存した計算は入力を保存しているので、再計算されます。

    値が変わるもの:equalizer-q-factor(定 Q のオクターブ帯域幅)、capacitor-code(乗数の桁 8 は ×0.01、9 は ×0.1)、opamp-gain(帯域幅は GBW をノイズゲインで割ったもの)、coax-impedance(平均円周による TE11 のカットオフ)、h-bridge-selection(同時に導通する FET は 2 つ)、bldc-winding(√3 の係数はスター結線のもの。既定値は実在の 12N14P モーターによるもの)、speaker-crossover(2 次のインダクターは √2·R/ω_c で以前の値の 2 倍。KiCad のエクスポートも同様)、esd-tvs-diode(IEC 61000-4-2 のレベルは規格の第 1 ピーク 3.75 A/kV を使用)、common-mode-choke(50 Ω/50 Ω 系での複素直列インピーダンス)、uart-baud-rate(マークパリティとスペースパリティは 1 ビットとして数える)、bldc-motor(静推力 C_T·ρ·n²·D⁴、C_T 0.11)、resistor-color-code(橙 ±0.05 %、黄 ±0.02 %。白の許容差の帯は拒否)、pt100-resistance(0 °C 未満での IEC 60751 の C と、完全な傾き)、torque-units、energy-units、torque-unit-converter(NIST SP 811 の正確な係数)、via-thermal-resistance(IPC-2221 のフィットによる電流容量)、thermal-via-array(めっきしたバレルは充填にかかわらず銅)、stackup-builder(L3 はストリップラインとして、L1 は銅の厚さを含めて解き、合計に銅を含める)、coplanar-waveguide(グラウンド付き CPW は幅の広い導体でも有限のまま)、i2c-pullup(2 V 以下では V_OL は 0.2·V_DD)、vibration-phase-noise(ランダムの項はオフセットとともに下がる。偏差はピーク値)、inrush-current-limiter(コールドスタートのピークは V/R_cold)、shielding-effectiveness(反射損失に η₀ を含め、多重反射を追加)、ethernet-cable(10 Gb/s での Category 5e は不合格)、ground-plane-impedance(インダクタンス µ₀·h·l/w。片面の交流抵抗)、minimum-conductor-spacing(IPC-2221B Table 6-1 を帯域ごとに。500 V を超えると 1 V あたりの割合)。

    新しい省略可能な入力:ground-plane-impedance の separation(mm、既定値 1)と、via-thermal-resistance の tempRise(°C、既定値 10)。これらを省略したリクエストには既定値が使われ、公表された計算例を再現します。

    新しい出力:inrush-current-limiter の hotRestartInrush と、shielding-effectiveness の multipleReflectionLoss。

    値を持たない出力は、以前は数値でしたが、現在は警告付きで null を返します:カットオフ未満での waveguide-cutoff の管内波長、位相速度、群速度、そして層が到達できない目標インピーダンスに対する stackup-builder の幅。

    comparator-hysteresis と pcb-trace-temp は、ラベルと記載した式だけが変わります。数値は変わりません。

    POST /api/py/v1/calculate/solve は、範囲の大きさの 1×10⁻¹² より細かい grid を、評価の前に課金なしで、400 の grid の拒否として拒否します。このようなグリッドは、タイムアウトするまでリクエストを占有するおそれがありました。

  71. radiated-emission-estimate:CISPR 32 Class B に対する余裕。限度値がない場合は null

    • POST /api/py/v1/calculate (radiated-emission-estimate)
    • POST /api/py/v1/calculate/batch
    • MCP run_calculation
    • rftools-io SDK

    余裕は、測定距離での CISPR 32 Class B の限度値に対して求めるようになりました:Tables A.4 と A.5 の、1 GHz までは √30 m 未満では 3 m の行、それ以上では 10 m の行、1〜6 GHz では 3 m の平均値の行を使い、表の距離から 20 dB/decade で換算し、帯域の境界では低いほうの限度値を使います。以前は、すべての周波数と距離で一律 40 dBµV/m でした。

    30 MHz 未満と 6 GHz 超では CISPR 32 は放射の限度値を定めていないため、そこでは margin は警告付きで null になります。以前は数値でした。margin を数値として読み取る呼び出し元は、null を扱う必要があります。

    電界は自由空間での小型ループの推定値で、現在は正確な定数 π·µ₀/c を使います。ページに記載のとおり、グラウンドプレーン上での測定では最大 6 dB 高くなることがあります。

  72. filter-designer と RF の計算ツール 6 種を修正しました

    • POST /api/py/v1/calculate
    • MCP run_calculation
    • rftools-io SDK

    filter-designer:チェビシェフのプロトタイプの値は 4 次から誤っていました(g3 は 1.5733 でしたが、現在は 2.3661)。1 次のバターワースは g1 = 1 になっていました(現在は 2)。また、バンドパスの素子値は Q = 10 で 10 分の 1 の大きさでした。値は表引きではなく計算で求めるようになりました。

    waveguide-cutoff、free-space-path-loss、rf-link-budget、fresnel-zone、link-margin、radar-range-equation は、3×10⁸ ではなく正確な光速を使います。長さは約 0.07 %、経路損失は 0.006 dB 変わります。radar-range-equation は正確なボルツマン定数も使います。

    planar-spiral-inductor は、外径以上の内径に対して NaN を返すのではなく、拒否するようになりました。

    2026-10-05 と 2026-10-06 に、新しい iot カテゴリーを含む 14 の計算ツールを追加しました。カタログを GET するか、list_calculators でご確認ください。

  73. PDN インピーダンス:収束するプレーンのモデル、導出されるポート、2 つの新しいパラメーター

    • POST /api/py/v1/jobs (pdn_impedance)
    • POST /api/py/v1/jobs/estimate
    • MCP simulate_pdn_impedance
    • rftools-io SDK

    portX_mm と portY_mm を省略すると、ポートは基板の中心ではなく 3 分の 1 の点 (a/3, b/3) に置かれるようになりました。中心は奇数の添字を持つすべての空洞モードの節になるため、既定の実行では最初の共振がまったく現れませんでした。ポートを指定するリクエストには、指定したとおりのポートが使われます。

    2 つの省略可能なパラメーター:portSize_mm(既定値 1 mm、0.25–20)は IC の電流がプレーンに入る正方形の辺の長さ、boardInductance_nh(既定値 1 nH、0–20)はレギュレーターとプレーンの間のインダクタンスで、以前は 1 nH に固定されていました。基板の端からはみ出すポートは受け付け、その鏡像を使ってモデル化します。中心が基板の外にあるポートや、基板より大きいポートは拒否されます。

    結果が変わります。プレーンのモード和は freqMax_hz に応じて打ち切られ、点ポートでは収束しなかったため、結果は掃引範囲によって動いていました。現在は収束し、最初のモードより下では掃引範囲に依存しません。既定のポートでは、プレーンの拡がりインダクタンスは約 0.2 nH だったものが約 1.5 nH になるため、プレーン単体の直列共振は約 550 MHz から約 210 MHz に下がり、推奨されるコンデンサーの組み合わせも変わります。過去の結果は再計算しません。

    判定と summary.maxZPdnDb は、基板の最初の空洞モードの 0.8 倍で終わるデカップリング帯域全体を対象とし、最悪の値はグリッド点の間で精密化します。新しい結果のフィールド:summary.band、summary.worstHz、summary.unreachable、resonances[].portCoupling、そして params の下に、使用したポート、ポートの大きさ、基板のインダクタンス。既存のフィールドはすべて残ります。

  74. 目標値からの逆算の呼び出し:目標の出力になる計算ツールの入力を探索します

    • POST /api/py/v1/calculate/solve

    POST /api/py/v1/calculate/solve は、計算ツールの出力の 1 つを目標値にする 1 つの入力の値(50 Ω になる配線幅、目標の差動インピーダンスになる間隔など)を見つけ、ちょうどその値でのフォワードの結果とともに返します:values、warnings、errors、provenance で、これらの入力に対して /calculate が返すものと同じです。利用枠に計上される 1 回の呼び出しで、クライアントが手作業で探索する場合に費やす何回ものフォワードの呼び出しを置き換えます。

    探索は、その入力に定められた範囲で、省略可能な range で狭めて行います。範囲が定められていない入力には指定が必要です。省略可能な grid は、返す値を範囲内の最も近い倍数に丸め、丸める前の解も一緒に返します。探索で目標に到達できない場合も成功として扱い、reached: false と見つかった最も近い値を返し、計上もされます。拒否(存在しない計算ツール、計算ツールが宣言していない入力や出力の名前、有限でない値、範囲のない入力で range がない場合)は、ほかの計算ツールのルートと同じく、計上されません。

    Python SDK の Client.solve()(rftools-io 0.4.0)と MCP サーバーの solve_calculation ツール(2.2.0)も、同じ呼び出しを提供します。

  75. 計算ツールのルートで利用枠を使い切った場合は 401 ではなく 402 になりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch

    計算ツールのルートは、無効なキーにも、利用枠を使い切った場合にも 401 "Invalid or quota-exceeded API key" を返していたため、スクリプトは不正なキーと利用の多い月を区別できませんでした。現在、利用枠を使い切った場合は、ジョブのルートがすでにそうしていたように 402 になり、errorKind: "rate_limited"、reason、limit、used、resetAt、upgradeUrl、overageUrl、そして Retry-After ヘッダーが付きます。

    現在、401 は、キーがない、形式が不正、不明、または失効していることだけを意味し、利用枠には触れません。キーをまったく持たないリクエストは 401 になり、無料のキーを取得できる keyUrl が付きます。

    呼び出しは計上の前に確認されます。存在しない計算ツール(404)や有限の数でない入力(400)は計上されず、失敗した計算は戻されます。バッチでは、これらの確認を通過した項目だけが計上され、計算に失敗した項目は戻されます。処理はメッセージの文言ではなく、ステータスと errorKind で分岐させてください。

  76. 月間利用枠はアカウントに属し、そのすべてのキーで共有します

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • POST /api/py/v1/jobs

    以前は各キーがそれぞれ月間利用枠を持っていたため、複数のキーを持つアカウントはキーごとに利用枠を使えました。現在、利用枠はアカウントのものです。失効したものを含め、アカウントが持つすべてのキーの呼び出しが 1 つの月間の値に計上され、UTC で毎月の初めにリセットされます。

    キーが 1 つのアカウントでは違いはありません。呼び出しは引き続きそれを行ったキーに帰属し、ダッシュボードと GET /api/py/v1/usage はキーごとに一覧表示します。

  77. 使用状況のエンドポイントと、計上対象のすべてのレスポンスに付く使用状況ヘッダー

    • GET /api/py/v1/usage
    • X-Usage-Allowance
    • X-Usage-Used
    • X-Usage-Reset
    • X-Usage-Overage

    GET /api/py/v1/usage は、キー(X-API-Key または Authorization: Bearer rfc_…)またはログイン中のセッションに対して、プラン、利用枠、使用量と残り、リセットの日時、超過利用の状態、アカウントの各キーに帰属する呼び出し回数を返します。これを読み取っても計上されません。

    計上対象のすべてのレスポンスには X-Usage-Allowance、X-Usage-Used(その呼び出しを含む)、X-Usage-Reset が付き、超過利用が計上された場合は X-Usage-Overage も付きます。ブラウザーからも読み取れます。

  78. すべての結果に計算方法が示されるようになりました

    • POST /api/py/v1/calculate
    • POST /api/py/v1/calculate/batch
    • GET /api/py/v1/jobs/{jobId}

    計算ツールの結果とバッチの各項目には、9 つのメンバーを持つ provenance オブジェクトが付きます:method、version、formulaRef、assumptions、validRange、computedAt、inputs、seed、elapsedSeconds。ジョブの結果にはすでに provenance が付いていましたが、2 つ目のオブジェクトを追加するのではなく、そこに formulaRef、assumptions、validRange、computedAt が加わります。また、version はリビジョンだけではなく worker@<revision> と書かれます。

    計算ツールの対象範囲外の入力も計算されます。validRange がその入力を示し、警告が加わります。この変更より前に保存された結果は、当時のメンバーを保ちます。存在しないメンバーは不明と解釈してください。

  79. プログラムがデバイス認可でキーを取得できるようになりました

    • POST /api/py/v1/oauth/device/code
    • POST /api/py/v1/oauth/device/token
    • /device/

    ブラウザーを持たないプログラムでも、利用者にキーを貼り付けてもらわずにキーを取得できます(OAuth 2.0 デバイス認可グラント、RFC 8628)。プログラムは /oauth/device/code にコードを要求し、利用者にそのコードとアドレス https://rftools.io/device/ を示し、指定された間隔で /oauth/device/token をポーリングします。利用者がログインしてコードを承認すると、次のポーリングで通常の API キーが 1 回だけ返されます。

    このキーはほかのキーと同じく計上、一覧表示、失効の対象で、アカウントのキーの上限に数えられます。

  80. クライアント向けのキーリンクと、キーのラベル

    • POST /api/py/v1/apikeys
    • /dashboard/?newKey=1

    POST /api/py/v1/apikeys は省略可能な {"label", "client"} のボディを受け取り、両方を返します。ボディを省略した場合は以前と同じように動作します。クライアントは利用者を https://rftools.io/dashboard/?newKey=1&client=<clientId> に案内して、そのクライアント用のラベルを付けたキーを作成させることができます。キーは 1 回だけ表示されます。

  81. 拒否には、上限とそれを超える方法が示されます

    • 429 responses
    • 402 from POST /api/py/v1/jobs
    • Authorization: Bearer rfc_…

    1 分あたりの 429 には、ほかのすべての拒否が errorKind を持つのと同様に、detail の横に errorKind: "rate_limited"、limit、windowSeconds、upgradeUrl が付きます。利用枠を使い切った場合のジョブのルートの 402 には reason、limit、used、upgradeUrl、overageUrl が加わり、fdtd_sparam の解析モードの利用枠を使い切った場合の 402 には reason: "solve_mode" が付きます。既存のフィールドは変わりません。

    計算ツールのルートは、ジョブのルートがすでにそうしていたように、X-API-Key に加えて Authorization: Bearer rfc_… としてもキーを受け付けます。

完全なリファレンスは API ドキュメント、機械可読な記述は OpenAPI プレイグラウンドと OpenAPI ドキュメントです。