ci-server-engineer/knowledge/manuals/IM36K10L36-01EN.md
cliu f24e617a70 Add phase 5 equipment and ITEM Service summaries
- Summaries of IM 36K10L40 (EQUIPMENT utilities), L41 (EQUIPMENT
  configuration: lines, stations, conversion types, Modbus master/slave,
  driver table), L35 (ITH) and L36 (ITM), checked against the installed
  start scripts, setup files and datasets
- tuning-checks: read-only itmdbg / eqpdbg via piped answers
- New ISS-021 (STATION_STAT empty), ISS-022 (itmval -f crashes),
  ISS-023 (install differs from ITEM manuals, closed); ISS-006 updated

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:15:14 +10:00

81 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
manual: IM 36K10L36-01EN
title: ITEM Service Engineering - ITM
edition: 3rd Edition, Sep. 2023
version: R1.03
status: from docs; itm.sup, item_start.cmd and itmdbg statistics checked on the test system (2026-09-30); itmval -g/-p verified in phase 1; itmval -f crashes (ISS-022)
---
# ITEM Service Engineering - ITM (R1.03)
ITM is the real-time item database (item common, shared memory). Section numbers refer to the
manual.
## 1. Processes (§1.1–1.2)
| Process | Role |
|---|---|
| `ITM` | item handler, message interface |
| `ITMTIM` | sends buffered item events; recalculates integrators |
| `ITMCPM` / `ITMCPS` | item copy master / slave for distributed items between nodes (buffered, compressed; after a lost MDUR link it rescans all or only changed master items in limited batches). Restart `ITMCPM` after deleting a distributed group. |
| `ITMLIMUPD` | copies limit/deadband changes to other nodes |
| `ITMREM` | cleans up event requests of processes that disappeared |
| `itmval` | command-line get/put |
`itmtim [<period ms, default 100>] [<integration step ms, default 1000>] [<save count>]`:
save count = integrators saved to disk per recalculation. **Installed** `item_start.cmd`
starts `itmtim 100 1000 1 200 1` (five arguments; the last two are not documented). Also
started: `itmaah`, `intitmini`, `itmlimupd`, `itmrem`.
## 2. `itm.sup` (§1.3)
| Setting (keyword) | Manual default | Test system |
|---|---|---|
| Queue size (`queue_size`) | 200 KB | 200 |
| Save items (`item_save`): ITEM_BASE (per item's *remember last value*), ALWAYS, NEVER | ITEM_BASE | ITEM_BASE |
| Max item groups (`max_groups`) | 255 | 255 |
| Max items per group (`max_number`) | 65534 (255 × 65534 = 16,711,170 items) | 65534 |
| Max application info per item (`max_appl_info`) | ≤ 20 bytes always fits | 0 |
| Max update info per item (`max_upd_info`) | 512 | 512 |
| Item pool size (`pool_kbytes`), guide `0.07 × groups × items + appl KB × groups × items + 10` | **50000 KB** | **650000** |
| Integration granule (`itm_int_secs`), system-wide integrator time unit | 1 s | 1 (60 tested, ISS-010) |
| Lock timeout (`lock_timeout_secs`) | 60 s | 60 |
| Save to disk (`disk_save`) | YES | yes |
| Not regained (`not_regained`): after start, mark possibly stale values until the first update; hidden in trends | not described | no (default block) |
## 3. `itmval` (§1.4)
```
itmval -g [-l] -n <item>
itmval -p [-l] -n <item> [-v <value>] [-s <status>] [-q <quality>] [-o] [-t [<date>] <time> [GMT|LST]]
itmval -f <file> <vsqo> [-l] -n <item>
```
`-l` = use this node instead of the host; `-o` = overwrite a blocked item; `-t` = update time
(default local time). `-f` should append an `itmval -p …` restore line with the chosen parts
(value, status, quality, options) to a command file, but on the test system it **crashes**
(segmentation fault / access violation) and writes nothing (ISS-022). The manual's
space-separated name form (`-n <inst> <unit> <tag>`) is rejected ("no (extra) command line
arguments allowed"); use the dotted full name. Practiced: skill `system-management`, task
`read-write-item.md`.
## 4. `itmdbg` (§2)
Start `itmdbg`, then a code; answers can be piped, e.g. read-only statistics:
`printf '2\n-1\n' | itmdbg`.
| Code | Shows / does |
|---|---|
| 1 | main info (root pointers, criterion and event request bits) |
| 2 | statistics: common size/free/fragments, configured limits, **nr of items**, integration secs, save mode, counters (item/sub-item updates, gets, buffered events, automatic saves, flow control) since system start and since debugger start |
| 3 / 4 | item / sub-item info by group and sequence number (value, status, options, limits, update times, name) |
| 5–11 | action blocks, main actions, task table (event requesters), event buffers, mask info (criterion bits: 1 FIRST, 2 EACH, 4 VAL, 8 STA, 10 DEL, …), item pointers, last update |
| 12 | unlock item data area (after a killed process; if pointers were being changed, restart ITEM Service) |
| 13 | save all item info to disk (before a shutdown, for a clean warm restart) |
| 14, 15, 17, 18 | flow control, integrator list, locked items, group–node relation |
| 16 | **delete item** from the in-core database (test/repair only) |
| 19 / 20 | most frequently updated items (10–1000) / reset those counters |
Test system (`itmdbg` code 2): common 665,600,000 bytes, free 665,307,508, 203 items,
integration 1 s, save mode item base. The same numbers appear in the automatic snapshots
`smd_*_itmdbg_all.log` (skill `system-management`, task `tuning-checks.md`).