- New skill equipment with task modbus-station: line, station, scan type, points and connected items by quick load, tested against CI Server's own Modbus slave mirror (eqpmdcmem + eqpmdcslvtcp) - CI-Eng-Sample: section PLC1, station CIENG_PLC with write/read-back items, load/remove steps and mirror start/stop scripts - ISS-024: the TCP slave answers Open Modbus/TCP, not RTU (closed) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 KiB
| manual | title | edition | version | status |
|---|---|---|---|---|
| IM 36K10L41-01EN | EQUIPMENT Service Engineering - Configuration | 3rd Edition, Sep. 2023 | R1.03 | from docs; general parts (§1–3.5) and Modbus (§3.6–3.7) summarized in detail, other drivers as a table; Modbus datasets, eqpmdc.sup and save files checked read-only on the test system (2026-09-30) |
EQUIPMENT Service Engineering - Configuration (R1.03)
How CI Server exchanges data with PLCs, RTUs and other systems: lines, stations, scan types,
points and conversion types, then one chapter per protocol. Section numbers refer to the
manual. Utilities (forced scan, statistics, debugger): IM36K10L40-01EN.md.
1–2. Architecture
- Needs BUS, DATABASE and ITEM Services running; USER Service to define stations, items and scan types.
- One plug-in per protocol: an equipment manager process (e.g.
EQPMDCfor Modbus master), its setup file, shared libraries and datasets for line, station, scan type and point. - Defining a line copies the protocol's template setup file (e.g.
eqpmdc.sup) and starts an equipment manager instance. The name is free but must start witheqp. - Each manager keeps two private save files in
%TLS_SAV_PATH%:<process>_MAIN.sav(lines/stations) and<process>_ITEM.sav(points), only to start fast. Deleting them loses the runtime configuration; repair withdsschk. (Test system:eqpmdc_main.sav,eqpmdc_item.savplus.d01/.k01files.)
3.1 Line types
| Type | Addresses | Main parameters |
|---|---|---|
| Serial | LINE_1_DEVICE / LINE_2_DEVICE = com1: (\\.\com10 from COM10) |
baud rate, 7/8 bits, parity, stop bits, XON |
| TCP/IP | <IP>[:<port>], can be overruled per station |
DEAD_TIME (s without data → reconnect, default 30), REPEAT_CONNECTION_DELAY (default 30 s), recover script, source address, splitter, switch time, carrier on/off delay for radios |
| DUR | [<node>:]<process> (other CI Server processes) |
timeout rounded to seconds, default 3000 ms |
| UDP | <IP>[:<port>] |
— |
Common to all: HEART_BEAT (manager cycle, ms; must be ≤ fastest scan; ~100 ms typical),
PERIODIC_TIME (s; re-checks BURST LIM filters for event-based inputs), TIMEOUT (ms; for
terminal servers include both network and serial times). Line 2 is the optional backup line.
3.2 Common station parameters
Name, description, station id (0 = assigned automatically), on scan, line, redundant line, suppress outputs, output method (On change / On change and connect), preferred line (None, Line 1, Line 2), and status items:
STATUS_ITEM: 1 = station reachable, 0 = not (status OFFSCAN when off-scan);LINE_1_ITEM,LINE_2_ITEM: per line 1/0;SELECT_ITEM: line number in use. Typeless sub-items on these show sub-line states (Modbus over TCP/IP only; values 0–3, see C10 summary §4). Dynamic scanning (e.g. STARDOM FCX): a normal and a fast rate, fast while a tag is on an open display; may need a larger manager queue.
3.3 Standard conversion types (field value ↔ item)
| Type | Field signal | Key parameters / behaviour |
|---|---|---|
| Digital | 1 bit | INVERS, NO_ZERO (never send 0), AVE_UPD_INTERVAL + BURST_LIMIT (too many changes → status BURST LIM for limit × interval s) |
| Binary | integer, no scaling | BITS, HAS_SIGN, SWAP_BYTES, SWAP_WORDS |
| Linear | integer, scaled | ELEC_LOW/HIGH → PHYS_LOW/HIGH (extrapolated; outside electrical range → UNDERRANGED/OVERRANGED), DELTA_LIMIT (→ DELTA), AVE_UPD_INTERVAL + MAX_INSENS (adaptive change filter), bits/sign/swaps |
| Dual-bit | 2 bits | value 0–3, status DB NONE/RIGHT/LEFT/BOTH; TMO_NONE/TMO_BOTH → DB NONE T / DB BOTH T |
| Unary | bit array, one bit set | value = lowest set bit (−1 if none); none/several → BAD VALUE |
| Float | 32/64-bit float | FLOAT_TYPE Intel, Motorola, Tandem, Dec; STEP, OFFSET (item = field × step + offset); swaps |
| String | ASCIIZ ≤ 80 incl. \0 |
CHARS; longer output is truncated without \0 |
| Linear-BCD | 1–8 BCD digits | DIGITS, STEP, OFFSET, OVERFL_DET (counts roll-overs) |
| Time | 7-byte IEC or 32-bit POSIX | TIME_ZONE (LCT, LST, GMT, relative), TIME_REPRES |
Stations may force status/quality codes on top of these.
3.4 Specific conversion types
One per protocol where the standard ones do not fit: ProSafe-PLC, BSAP digital/float, TIE command, STARDOM FCX (history id, special conversions of alarm/valve/batch/calc/counter/mode status words into CI Server statuses such as HIGH, IOP+, MAN, AUT, CAS), Host-host, DNP3, VNET, AB-CIP, Fisher ROC, Hex repeater (binary/float/relay), IEC 101/103/104 output, IEC 103 analog, IEC 61850, AC-Gateway, Wireless, Bachmann, Beckhoff ADS. Details stay in the manual.
3.5 Common setup-file parameters (eqp<name>.sup)
- General:
queue_size(KB; more for many dynamic tags),crit(hex criterion mask for output events, defaultD= first + value + status),logging_size(MB, protocol log in the list folder, 0 = off; up to twice the size used). Installedeqpmdc.supalso hasstart_offline = <Y|N>(not described). - Behaviour:
updown = <slave>, <line>(log station / line up-down messages),timestamp = Y(use the RTU/manager ms time stamp for alarms and event history instead of the item-table second),offline = <inputs off on loss>, <inputs on at recovery>, <outputs off on loss>, <outputs on at recovery>. Default: inputs go offline on loss and online at their next value; outputs stay online. Test systemeqpmdc.sup:queue_size = 20,crit = D,updown = Y,N,timestamp = Y,offline = N,N,N,N.
3.6 Modbus master (EQPMDC)
Modbus ASCII, RTU (serial, or TCP/IP to a serial converter) or Open Modbus/TCP. Steps: line → setup file (created automatically) → stations → scan types → points.
Datasets (test system, via dssqld -f): MODBUS_LINE_DF, MODBUS_STATION_DF,
MODBUS_SCAN_TYPE_DF, MODBUS_POINT_DF; the general views LINE_DF, STATION_DF,
SCAN_TYPE_DF, POINT_DF list all protocols.
Station, Options tab: PROTOCOL (Ascii, RTU, Open Modbus/TCP — default), SUB_STATION_ID
(Modbus unit id), ADDRESS_INCREMENT (JBUS: addresses on the wire start at 1),
RECOVER_TIME (s between reconnect tries, default 10; a try can block the manager for a
timeout), RECOVER_TRIES (default 2), WRITE_WAIT (ms before each write), SIGNAL_GAP
(bytes of unused addresses read to merge requests, default 20), SIGNALS (max bytes per
request, ≤ 240), FAR_END_CHECK, ALIVE_CHECK_METHOD (function 7 by default; 8 or 1–4),
ALIVE_CHECK_REGISTER_START, SEQUENCE_CHECK (Modbus/TCP transaction ids, default on).
General tab: LINE_1_DEVICE / LINE_2_DEVICE = <IP>[:<port>][;<IP2>[:<port>]], default
port 502.
Scan types: name + positive interval (ms), e.g. Fast 1000, Slow 10000.
Points (IO_ADDRESS, EXTERNAL_RELATION Input / Output / Input+Output, SCAN_TYPE,
CONV_TYPE):
| Address | Element | Function codes | Direction |
|---|---|---|---|
DO:<n> |
coil 1–65536 | 1, 5 | in/out |
DI:<n> |
input status (give 1… not 10001…) | 2 (15) | in |
RO:<n>[,<bit>] |
holding register (1… not 40001…), bit 0–15 | 3, 6, 16 | in/out |
RI:<n>[,<bit>] |
input register (1… not 30001…) | 4 | in |
ES:<n> |
exception status bit 1–8 | 7 | in |
LO:<n>[,<bit>] |
Daniel 4-byte register 1–32768, bit 0–31 | 3, 6, 16 | in/out |
Bits in registers are written read-modify-write. Floats are usually Intel, swap words on, swap bytes off.
Troubleshooting: protocol error (function x, error 2) = RTU refuses part of the address
range (unused addresses read because of the signal gap, or DI/DO blocks not on 8-bit
boundaries: start at 1, 9, 17 …) → define the gap registers or set the gap to 0. Slow
communication: gaps of up to ~15 bytes are cheaper to read than an extra request; use
WRITE_WAIT if the RTU needs time after a reply. TCP/IP: ping first; switch off sequence
check if the station does not support it. Protocol logging marks errors with /ERROR.
External interface (for programs): send a raw request to an RTU, force a reconnect.
3.7 Modbus slave (Windows only)
CI Server can serve third-party Modbus masters through a "mirror":
EQPMDCMEM: universal slave memory; per station id 64K registers (input and holding registers are the same area) and 64K status bits (coils and inputs the same); starts at 0; answers function codes 1–7, 15, 16. No setup file.EQPMDCSLVSER: serial slave (one per port; setup file copied fromeqpmdcslvser.sup, tabs General, Terminal server, Direct port, Serial line).EQPMDCSLVTCP: Modbus RTU over TCP slave,eqpmdcslvtcp -n <name> [-p <port>](default 502), several connections per instance, no setup file.- Start them from the equipment start sequence; then define a normal Modbus master line
and stations in CI Server pointing at the slave's address (output method On change and
connect). CI Server items then read and write the same registers the third party sees.
Installed on the test system:
eqpmdcmem.exe,eqpmdcslvser.exe,eqpmdcslvtcp.exe; none running. Verified 2026-09-30 with CI-Eng-Sample stationCIENG_PLC: the TCP slave answered only with station protocol Open Modbus/TCP, not RTU as the manual says (ISS-024); skillequipment, taskmodbus-station.md. On R1.03equipment_start.cmdruns everytls\com\eqp*start.cmd, so a separate start file is enough (see L40 summary).
3.8–3.40 Other drivers
| § | Driver | Connection | Notes |
|---|---|---|---|
| 3.8 | MQTT | TCP/IP via a broker | CI Server is an MQTT client |
| 3.9 | ProSafe-COM (MULCOM/MODCOM) | serial or TCP/IP | extended Modbus |
| 3.10 | ProSafe-PLC | APACS API (Windows only) | time sync, SOE |
| 3.11 | STARDOM FCX | TCP/IP | FCX preparation, message interface, SOE, dynamic scanning, history buffer |
| 3.12 | VNET | Vnet/IP | needs Vnet/IP set up (not on Windows 10 test PC) |
| 3.13 | Host-Host Coupling (EQPHHC) |
MDUR to another CI Core | read/write points of a remote CI Server |
| 3.14 | FA-M3 | TCP/IP | |
| 3.15 | MELSEC | EZSocket (TCP/IP, UDP, serial) | EZSocket must be installed |
| 3.16 | DAQSTATION | TCP/IP | DX, CX, MW100, GX/GP/GM |
| 3.17 | Beckhoff BK8100 | serial / terminal server | |
| 3.18 | Allen Bradley PLC5 | DH+ via ControlLogix DHRIO, or DF1 serial/terminal server | BCC checksum only |
| 3.19 | Allen Bradley CIP | TCP/IP to ControlLogix Ethernet module | connected messaging |
| 3.20 | Siemens 3964R | serial | |
| 3.21 | Siemens SAPI-S7 | API software | |
| 3.22 | Bristol Babcock BSAP | serial / terminal server | RTU preparation, external interface |
| 3.23 | Fisher ROC | serial / terminal server | FloBoss 100/407/500, ROC300/800, RegFlo |
| 3.24 | DNP3 | TCP/IP or serial | authentication option |
| 3.25 | HART router | serial in, terminal server out | re-issues HART commands to a multiplexer |
| 3.26 | Hex repeater | terminal server | RTU models in hxr_model.sup |
| 3.27 | TIE 870-5 | serial | |
| 3.28–3.31 | IEC 60870-5-101 / 102 / 103 / 104 | serial or TCP/IP (104: TCP/IP) | |
| 3.32 | IEC 61850 | TCP/IP | scan reads; direct write and control models |
| 3.33–3.34 | WITS level 0 slave / master (EQPWITS, EQPWITSWR) |
serial / terminal server | drilling data |
| 3.35 | STX-Bachmann | Modbus to STX PLC | event buffer extension |
| 3.36 | DTS | Modbus TCP + (S)FTP WITSML | stores in history group DTS_DATA; EQPDTSDBG |
| 3.37 | AC-Gateway | ASCII subset (BK, SI, FG, FS) | |
| 3.38 | Bachmann | M1COM library | |
| 3.39 | Omron FINS | UDP | CIO, WR, HR, AR, DM areas |
| 3.40 | Beckhoff ADS | TwinCAT 3 router |
Test system (read-only, 2026-09-30)
The author's AID project has line MODSIM_LINE (TCP/IP, manager EQPMDC, heart beat 100,
timeout 3000, dead time 30) with Modbus/TCP stations MODSIM_STATION (localhost) and
WRPS_PLC (host dev-ubuntu), scan type MOD_SCAN 500 ms and 69 points (e.g. RI:01
Linear 0–100); nothing listens on port 502, so both stations are down. Line LINE_MQTT uses
EQPMQTT.