ci-server-engineer/knowledge/manuals/IM36K10L30-01EN.md
cliu 83af63ab53 R1.05 re-check batch 2: graphics, history, portal, system-management, items
Full manual diffs (C50, R30, C60, L20, C40, L35, R10, R20, J10, L30, L50,
P30, G10, C10) and read-only checks on the shared R1.05 test server where
the permission system allowed them. Skills and summaries moved to R1.05.
Issues ISS-092..129 (gaps 104-107, 114-115, 130-131 unused); ISS-074
closed (manual and software agree), ISS-091 corrected by ISS-119.
version-differences: unlisted manual changes and installed-only changes.
r105-verification: V5-V9 and new not-tested rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 19:29:15 +11:00

140 lines
9.6 KiB
Markdown
Raw Permalink 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 36K10L30-01EN
title: BUS Service Engineering
edition: 4th Edition, Feb. 2026 (R1.05); first written from the 3rd Edition, Sep. 2023 (R1.03). Revision table: contact information only; full text diff: only §10 (`durwfp` return value) reworded, same meaning
version: R1.05 (first written for R1.03)
status: from docs; R1.03 (2026-10-01): installed tools, setup files (dur.sup, durm_1_udp.sup, time_table.sup, fmfprt.sup, durutl.sup) and durm_start.cmd checked read-only; durwfp verified; umhman, umhtestprog, umhmsg verified after a fresh start (ISS-030). R1.05 (2026-10-08, read-only on the test server): dur.sup, durm_1_udp.sup, durutl.sup and start scripts compared with R1.03; durwfp and umhman verified
---
# BUS Service Engineering (R1.05)
BUS Service is CI Server's messaging layer ("DUR", Dynamic User Region): every CI Server
process attaches to a shared memory area and gets a **queue** (mailbox) under its DUR name;
processes talk by messages. It also does error-text management (UMH), node-to-node links
(MDUR), time handling, printer management and process control utilities. Section numbers refer
to the manual.
## 1. Processes (§1.2)
| Process | Role |
|---|---|
| `durini` | Initialises DUR at start, then exits |
| `durtim` | Runs every second: system time, summer/winter time, queue time-outs, checks that processes still exist (`DUR-W-REM_PROC, Process <x> exited unexpectedly`), clock queue |
| `durprt` | Writes intercepted messages to `tls\lst\DURPRT.out` (debugging; leave running) |
| `umh` / `umhlog` | Build error texts from codes (`tls\dat\messages.umh`) and write them to the message log (`umhlog.log`) |
| Optional | `dur` (DUR display utility, interactive), `durbat` (start processes on request, also remote), `durclq` (finer clock-queue resolution: `durclq 50` = 50 ms), `durdbg`, `durutl` (logical addresses, node time sync), `durecs` (external clock), `dursim`, `durstp`, `durwfp`, `umhcr`, `umhlogtoo`, `umhman`, `umhmsg` |
Process names: fixed (e.g. `UMH`), `PID<n>` when none given, or set with `-n <name>` (most
CI Server executables, e.g. `opxuas -n opxuas`).
## 2. Messages and nodes (§2–§4)
- Requests are asynchronous; CI Server makes them synchronous with a *reply required* flag. The
**server** converts data between different computer architectures.
- **MDUR** (§3): one `durm_<line>` process pair per network line (`durm_udp` + `durm_udp_slv`
on Windows), started by `tls\com\durm_start.cmd`, configured in
`tls\sup\durm_<line>_udp.sup`: `line`, `quality` (lower = preferred line), `io_timeout`
(default 8000 ms, 8 checks), `portnr` (same on all nodes of one line; > 17000 advised),
`max_snd`, `cluster`, `compress`, `connect_delay`, `max_poll_int`, `our_host_name`,
`remote_set` (up to four nodes sharing one node number = redundant set). Redundant nodes
only over TCP/IP. `durmdbg -q <durm> -f <file>` traces a line; always stop with `-s`.
- `dur.sup`: node number, `host_node`, `rout_type` (ENDPOINT or ROUTER for multi-node
routing), sizes (`pool_kbytes`, `dur_max_proc`).
- **Logical addresses** (§4): node −1 in an address = look up a table (`durlnm.dat`), distributed
by `durutl` from a master node listed with `lnm_node = …` in `durutl.sup`.
**Installed (single node)**: `dur.sup` `host_node 0`, `pool_kbytes 250000`, `dur_max_proc 250`,
`rout_type 2 ENDPOINT`; `durm_1_udp.sup` `line 1`, `quality 500`, `io_timeout 8000`,
`portnr 17001`, plus keywords not in the manual: `sndportnr 17101`, `ip_adr_method IPv4`,
`ENABLE_DURMS N, 0` (host-host encryption, §13); `durm_1` is running although there is no
second node; `durutl.sup` has no active lines.
**R1.05 (installed, 2026-10-08):** `durm_1_udp.sup`, `durutl.sup` and `time_table.sup` settings as
on R1.03 (`durm_1_udp.sup` and `durutl.sup` byte-identical). `dur.sup` has one new keyword,
`GATEWAY_CORE` (*Gateway Core*, default and installed `No`) for a CI Core with a gateway licence,
described in IM 36K10J10 §3.2.6, not in this manual. `bus_start.cmd` and `durm_start.cmd` end by
calling `?*_bus_start.cmd` / `?*_durm_start.cmd` extension scripts.
## 3. Messages and the message log (§5, §6)
- Codes look like `FAC-S-ACRONYM` (S = S/I/W/E/F). Text comes from `messages.umh`; dynamic
values are inserted by name; several codes can form one history entry.
- `umhlog` writes to `tls\log\umhlog.log` (R1.05: rolls over to `umhlog.old` at about 40 MB;
the system monitor starts its logging with size `l40`, R1.03 `l4`); `-d <node>` also logs centrally on another node,
`-q <printer queue>` prints too.
- Tools: `umhtestprog` (tests the message path), `umhmsg <hex code> [<var> <value>]…`
(issue a message from a script), `umhman` (look up a hex code, interactive),
`umhlogtoo` (copy of all messages to a terminal). **Verified** after a fresh start: `umhman`
with piped input, `umhmsg` (message appears in `umhlog.log`) and `umhtestprog` work; late in an
unlicensed session they crashed or reported "license expired" (ISS-030).
- A message shown as `UMH Message Text Error: Message number <hex> (…)` means the text could
not be formatted (e.g. a `%` in a PRINT text, ISS-025).
## 4. Time (§7, §8, §11)
- `time_table.sup`: `AUTOMATIC` (installed) = BUS Service takes summer/winter times from
Windows at start (scans ±15 years); otherwise `LST_OFFSET` (minutes, **positive = west**),
`LST_NAME`, `LCT_NAME`, `CHANGE` lines; month/day abbreviations. Reload via the DUR display
utility. Installed file still has the Central European example values (−60, MET/MEST); they
are ignored while `AUTOMATIC` is set.
- Node time sync with `durutl` on the master: `tms_params = <interval s>, <limit1>, <limit2>,
<limit3>, <step2>, <step3>` and one `tms_node = <n>` per slave; beyond limit3 the slave is
set at once and an error is logged. External clock (serial Wharton/Trimble/Arbiter) with
`durecs` and `durecs.sup` (`ecs_params`). On Windows normally use Windows time
(`system-check`, `w32tm`).
## 5. Process control utilities (§10)
| Command | Use |
|---|---|
| `durwfp -p <name> [-t <s>] [-e]` | Exit 0 if the process is attached (waits up to `-t`, default 60; `-t 0` = check now); `-e` waits for it to go away. Verified on R1.03 and R1.05: `umh`, `opcman` → 0, unknown name → 1. The manual (reworded in the R1.04 edition) says the result is 1 when attached and 0 otherwise — the opposite of the process exit code (ISS-120) |
| `durstp -m -p <name>` | Send a stop message (clean stop). `-k` kills, `-m -k` = stop, then kill after `-t` s; `-f` kills even with the common area locked (dangerous); `*` wildcard (`-p alm\*`). Never `durstp -k -p \*` |
| `durbat` | Starts processes on request from other processes (also remote) |
`durstp` stops CI Server processes: use only with the user's approval.
## 6. Printer management (§12)
`FMFPRT` (printer manager, one per node) and one `FMFP_<device>` process per device (first 8
characters of the device name must be unique). **Destinations** (logical, e.g.
`SCREEN_CAPTURE`, `ALARMS`, `MESSAGES`, `DEFAULT`) map to **devices** (instances of an output
type) with an optional backup device. Configured in `fmfprt.sup`; devices and destinations in
datasets `PRINTER_DEV_DF`, `PRINTER_DEST_DF`, `PRINTER_TYPE_DF`, `PRINTER_OPER_DEST_DF`
(job/device lists `PRINTER_JOB_OVV`, `PRINTER_DEV_OVV`).
**Installed `fmfprt.sup`**: `QUEUE_LIFE 1800` s (stalled job expires), `MAX_JOBS_SHOWN 10`,
`DEVICE_POLL 5` s, `MAX_BUSY 60` polls; output types `HARDCOPY` (`fmfphc`, Windows printing,
Courier New 8 pt, 72 lines, landscape), `FILE` (`fmfpfl`, file name
`TLS_%time:DDMMYY%_%seq:03%.lst` in `tls\lst`), `APPLICATION` (`fmfpap`, program set to
Internet Explorer); fixed destinations `ALARMS`→`ALDPRT`, `AUDIT_TRAIL`→`ADTLOG`,
`MESSAGES`→`UMHLOG`, `PRINTER_1`→`RPTMAN`, `SCREEN_CAPTURE`→`CWSSHOT`. `NODE_SHARE = <node|-1>`
shares printers between nodes. Logging processes do not print by default (enable per process:
`aldprt.sup LOGPRT`, `adtsys.sup PRT_DEV`, `umhlog -q`).
The CI Service account must have the printers; `DEFAULT` uses that account's default printer.
Clean-up after a crash: stop CI Server, empty `tls\lst\printing`, delete
`tls\sav\fmf_prt_last_id.sav`, `fmfprt.sav` and `tls\dat\printer_job_ovv.*`, start.
## 7. MDUR encryption (§13)
Host-host encryption (AES-256, certificates) between CI Cores: every node must use it; no
enterprise configurations. Keys: `gen_key is_ca=1` once (CA key), `gen_key is_ca=0` on each
node → `%TLS_ALLUSERS_PATH%\pki\mel\dur\key`; certificates with the interactive `cert_write`
(CA certificate to `…\pki\mel\dur\crt\ca\ca.crt` on every node, node certificate to
`…\crt\own`; create the folders first; log `tls\log\cert_write_log.log`). Then tick *Enable
HostHost encryption* in each `durm_x_udp.sup` (installed keyword `ENABLE_DURMS`). Keep the CA
key off the servers. Not practiced (single node; `tls\pki\mel` does not exist yet).
## 8. Adaptive queues (§14)
Each process has a fixed queue (the *adaptive minimum*); for processes listed on the
*Adaptive queues* tab of `dur.sup` (`ADAPTIVE_QUEUE_SETS = <process>, <percent>`), DUR may
grow the queue temporarily by up to that percentage of the total queue area, avoiding overflows
during bursts. Add node queues for multi-node systems and new processes (extra executors,
DSS servers, equipment managers). In the performance monitor *Minimum KB*/*Maximum KB*/*Current
KB* and a high-queue of 100 % show that a queue needed more space → raise its size. Total area
exhausted → `DUR_F_NO_SPACE`.
**Installed**: `ALM` 10, `ALH` 10, `WFLGDI` 20, `WFLCDI`/`WFLIDI`/`WFLADI`/`ITHEIX`/`ITHSER` 2,
`DSSSDA*`/`DSSEVT*`/`OPCEXE` 1 %; R1.05 adds `ADTSTO` 1 %. Note: `OPCEXE` does not match the
installed executor names `OPCEXE1`…`4` (no wildcard) — see ISS-026; unchanged on R1.05.