- 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>
81 lines
4.5 KiB
Markdown
81 lines
4.5 KiB
Markdown
---
|
||
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`).
|