## Kisellenállás-mérési párok rögzítése és számítása

A `blank-readings.csv` valós adatok és környezetük megőrzésére szolgál; a `FILL_REAL_ID` helyére mintazonosító kerül. A `demo-readings.csv` három sora kitalált, nem MTTJ-mérés vagy átvételi minta. A `kelvin_pair_calc.py` előjeles áram-/feszültségpárok ellenállását és offsetjét számítja.

Python offline fut a standard könyvtárral, további csomag nélkül. Nem vezérel műszert, nem ellenőriz száraz áramkört és nem dönt átvételről. A feltevéseket és előírást a cikk szerint külön igazolja.

## A 16 bemeneti oszlop

A neveket őrizze meg. Négy mért oszlopból számít; a többi környezetként megmarad, értékellenőrzés nélkül.

| Oszlop | Jelentés és egység |
| --- | --- |
| `sample_id` | A sor mintazonosítója |
| `sample_state` | Méréskori állapot |
| `spec_revision` | Használt specifikációrevízió |
| `sense_A_B_drawing_ref` | Sense A/B-rajzhivatkozás |
| `fixture_id` | Vizsgálókészülék-azonosító |
| `method` | Rögzített módszer; sablonban `four_wire_current_pair` |
| `range` | Műszertartomány |
| `source_limit_mV` | Rögzített forrásfeszültség-korlát mV-ban |
| `sample_history` | Előélet, korábbi mechanikai, környezeti vagy elektromos próbákkal |
| `i_plus_mA` | Mért pozitív áram előjellel mA-ban; számításhoz 0-nál nagyobb |
| `i_minus_mA` | Mért negatív áram előjellel mA-ban; számításhoz 0-nál kisebb |
| `v_plus_uV` | `i_plus_mA`-hoz tartozó előjeles feszültség μV-ban |
| `v_minus_uV` | `i_minus_mA`-hoz tartozó előjeles feszültség μV-ban |
| `sampled_plus_at` | Pozitív mérés ideje szövegként |
| `sampled_minus_at` | Negatív mérés ideje szövegként |
| `note` | Eredeti sorral megőrzött megjegyzés |

Őrizze meg az előjeleket. Nulla feszültség szám, az üres mező hiányzó mérés. Hiányzó, üres vagy csak üres karaktereket tartalmazó értéket a négy mező egyikében sem pótol nullával. Üres környezeti mező is üres marad.

## Számítás és négy kimenet

Minden teljes érvényes párra:

`R = (V+ − V−) / (I+ − I−)`

`E = V+ − I+ R`

A második képlet a `V = IR + E` offsetjét adja. μV és mA bemenetből `R` mΩ, `E` μV. Lineáris ellenállás és pár alatti stabil offset feltevés; eredményük nem ellenőrzi ezeket. Legfeljebb 12 értékes számjegy kerül ki.

| Kimenet | Jelentés |
| --- | --- |
| `r_pair_mohm` | Ellenállás mΩ-ban; hiányos vagy érvénytelen párnál üres |
| `offset_pair_uV` | Offset μV-ban; hiányos vagy érvénytelen párnál üres |
| `calculation_status` | `calculated`, `missing` vagy `invalid` állapot |
| `calculation_note` | Állapot és feltevések magyarázata |

| Állapot | Mikor írja |
| --- | --- |
| `calculated` | Négy véges szám, pozitív áram 0 felett, negatív 0 alatt és két véges kimenet. Eredeti szöveg: `Assumes a linear resistor and stable offset. No acceptance judgment.` Linearitást és stabilitást feltételez, átvételi döntés nélkül. |
| `missing` | Hiányzó vagy üres adat; két üres számkimenet. `Missing readings; no zero imputation.` hiányt jelez nullával pótlás nélkül. |
| `invalid` | Nem numerikus vagy nem véges adat, hibás áramelőjel vagy nem véges eredmény. Üres számkimenetek, a szöveg megadja az okot. |

Eredeti hibaszövegek: `Readings must be numeric.`, `Require finite readings and Iplus>0, Iminus<0.` vagy `Non-finite calculated output.` Számot, véges adatot és megadott előjelet kérnek, vagy nem véges kimenetet jeleznek. Az állapot számítási, nem átvételi.

## A kitalált példák olvasása

| Sor | I+ / I− (mA) | V+ / V− (μV) | `r_pair_mohm` (mΩ) | `offset_pair_uV` (μV) | `calculation_status` |
| --- | --- | --- | ---: | ---: | --- |
| `DEMO_STABLE` | +10 / −10 | +110 / −90 | 10 | 10 | `calculated` |
| `DEMO_DRIFT` | +10 / −10 | +110 / −86 | 9.8 | 12 | `calculated` |
| `DEMO_UNEQUAL` | +12 / −8 | +130 / −70 | 10 | 10 | `calculated` |

A drift 10-ről 14 μV-ra változtatja a feltételezett offsetet: 9.8 mΩ és 12 μV adódik. A `calculated` nem észleli vagy szünteti meg a driftet. Az eltérő áramú példa +12 és −8 mA-val 10 mΩ-ot ad. Üres adatokból két üres kimenet és `missing` lesz.

## Offline futtatás és bemenetmegőrzés

Helyi fájlokkal: `python kelvin_pair_calc.py demo-readings.csv result.csv`. Valós adatnál kitöltött sablon és más kimenet kell. Az azonos feloldott bemeneti és kimeneti útvonalat a szkript elutasítja, az eredeti megmarad.

A bemeneti oszlopokat őrzi és négy számítottat hozzáad. Ha azonos nevű kimeneti oszlopok már vannak, új eredménnyel helyettesíti. Bájt-sorrendjeles UTF-8 CSV-t ír. Hiány üres marad, megfelelt/nem felelt meg döntés nélkül.
