Overview
The Siemens SIMATIC S7-200 (CPU 222, 224, 224 XP, 226) and ABB ACS800 industrial drive can be integrated over a serial fieldbus without requiring a dedicated Siemens PROFIBUS/USS stack when the application is point-to-point PLC-to-drive. The two most field-proven paths for an S7-200 talking to a third-party drive such as the ACS800 are:
- Modbus RTU on RS485 using the ABB RMBA-01 Modbus RTU Adapter and the Siemens Modbus Master library (MBUS_CTRL / MBUS_MSG subroutines) loaded into the S7-200 with STEP 7 Micro/WIN.
- PROFIBUS DP using the ABB RPBA-01 PROFIBUS DP Adapter on the drive and the EM277 PROFIBUS DP slave module on the S7-200 (a configuration that effectively turns the S7-200 into a PROFIBUS slave and pairs it with a PROFIBUS master, which is rarely the right choice for a single PLC-to-drive link).
For a one-PLC-to-one-drive link, Modbus RTU is almost always selected because it requires no extra hardware on the S7-200 beyond the on-board Port 0 (or Port 1 on CPU 224 XP/226), and the ACS800 only needs the RMBA-01 plugged into Slot 1 of the drive's DDCS chain. The same hardware topology also works for an S7-200 driving an Allen-Bradley PowerFlex, Schneider Altivar, Yaskawa A1000, or Danfoss VLT 5000/6000 — only the register map changes.
Communication Architecture Options
| Option | S7-200 hardware | ACS800 hardware | Cable / connector | Max nodes | Typical cycle | Recommended use |
|---|---|---|---|---|---|---|
| Modbus RTU (recommended) | On-board Port 0/1 RS485 | RMBA-01 in Slot 1 | Shielded twisted pair, daisy-chain, 120 Ω terminations both ends | Up to 31 slaves per segment | 20–100 ms per transaction | Single PLC to 1–4 drives, low data rate |
| PROFIBUS DP | EM277 on right side bus | RPBA-01 in Slot 1 | PROFIBUS cable, 9-pin D-sub, 9.6 kbps to 12 Mbps | Up to 125 slaves | 1–10 ms | PROFIBUS already in use on the machine |
| DeviceNet | Not native to S7-200 | RDNA-01 | DeviceNet trunk / drop | Up to 63 | 5–50 ms | North-American machine builders |
| CANopen | Not native to S7-200 | RCAN-01 | CANopen trunk | Up to 127 | 1–10 ms | European motion / safety projects |
| USS | Port 0/1, USS library | Not supported on ACS800 | RS485 2-wire | Up to 30 | 30–150 ms | Use MicroMaster / SINAMICS V20/G110 only |
The USS protocol is Siemens-proprietary and is NOT available on the ACS800; this is the single most common mistake when migrating from a MicroMaster-based line to an ACS800-based line. Do not load the Siemens USS_INIT / USS_CTRL libraries and try to address an ACS800 — the drive will never respond.
S7-200 Communication Port and Protocol Capabilities
The S7-200 family ships with one or two RS485 ports that can each be configured in STEP 7 Micro/WIN (V4.0 SP9 or later recommended) for one of four modes:
- PPI (Siemens point-to-point, default)
- MPI (multi-point, Siemens master/slave)
- Freeport (user-defined protocol, ASCII or RTU)
- Modbus RTU master/slave (via library instructions)
For Modbus RTU master, the S7-200 uses two subroutine calls from the Modbus Master library:
| Subroutine | Purpose | Called |
|---|---|---|
| MBUS_CTRL | Initialize the port, set baud rate, parity, mode (0=RTU, 1=ASCII), timeout | Once, on first scan |
| MBUS_MSG | Trigger a single Modbus read or write transaction to one slave | Per transaction, can be triggered cyclically |
Per the SIMATIC S7-200 Programmable Controller System Manual (6ES7298-8FA30-8BH0), the on-board RS485 ports support baud rates 1.2k, 2.4k, 4.8k, 9.6k, 19.2k, 38.4k, 57.6k, and 115.2 kbps with half-duplex 2-wire connection. Modbus RTU master mode is supported on Port 0 and Port 1.
ABB ACS800 Fieldbus Adapter Options
The ACS800 was supplied from 1995 to roughly 2014 and uses the DDCS (Distributed Drives Communication System) optical/serial backplane. Each ACS800 can accept one of the following optional adapter cards in Slot 1 (and an additional one in Slot 2 in some firmware versions):
| Adapter code | Fieldbus | Order code suffix | Handbook reference |
|---|---|---|---|
| RMBA-01 | Modbus RTU on RS485 | +K454 | 3AFE64498833 |
| RPBA-01 | PROFIBUS DP | +K454 | 3AFE64504215 |
| RDNA-01 | DeviceNet | +K457 | 3AFE64504223 |
| RCAN-01 | CANopen | +K458 | 3AFE64504231 |
| RDCO-01 | DDCS fiber (for drive-to-drive and panel link) | Standard on ACS800 | 3AFE64492253 |
Fieldbus option modules are documented in the ABB Drives Library under the ACS800 product family. The relevant handbooks are linked from the ABB ACS800 product page and the RPBA-01 PROFIBUS DP Adapter User's Manual (3AFE64504215). For Modbus RTU, the RMBA-01 manual is 3AFE64498833.
Hardware Wiring — Modbus RTU Path (RMBA-01)
Both the S7-200 Port 0 (or Port 1) and the RMBA-01 use a 9-pin D-sub female with the same RS485 2-wire pinout (A = D−, B = D+ on the Siemens side; the equivalent on the RMBA-01 is also marked A/B, with shield on Pin 1 / housing). Cable recommendations follow the Modbus over serial line specification Modbus_over_serial_line_V1_02.pdf:
- Shielded twisted pair, characteristic impedance ≈120 Ω, capacitance < 100 pF/m, e.g. Belden 3106A or Lapp ETHERLINE 6XS.
- Maximum length without repeater: 1000 m at ≤ 19.2 kbps, 600 m at 38.4 kbps, 200 m at 115.2 kbps.
- 120 Ω termination resistor at BOTH physical ends of the trunk; ABB typically ships a termination jumper on the RMBA-01 that is enabled for the end-of-line drive.
- Shield grounded at one end only (drive end) to avoid ground loops.
| S7-200 Port 0/1 pin | Signal | RMBA-01 pin (X2) | Color (Belden 3106A) |
|---|---|---|---|
| 3 | B (D+) | B | Clear / blue |
| 8 | A (D−) | A | Black / white |
| 5 | Logic GND | Common | Drain / shield |
| 1, housing | Shield | Pin 1 / housing | Shield |
ACS800 Communication Parameter Configuration
With the RMBA-01 fitted and the drive powered, navigate to the control panel (ACS-CP-A or similar CDP / DCS panel) and set the following parameters. Refer to the ACS800 Firmware Manual (3AFE64671194) for canonical definitions and full parameter list.
| Parameter | Name | Recommended value | Meaning |
|---|---|---|---|
| 98.02 | COMM MODULE | FIELDBUS (or NO = NONE if not yet configured) | Activates the fieldbus adapter in Slot 1 |
| 98.04 | COMM PROFILE | GENERIC (or ABB DRIVES / CSA 2.8/3.0) | Selects the Modbus register profile |
| 51.01 | MODBUS NODE | 1 (or 2…247) | Modbus slave address, must match the MBUS_MSG Slave parameter |
| 51.02 | BAUDRATE | 9600 (or 19200) | 9600 bps is the safe default |
| 51.03 | PARITY | 2 (= 8E1, even parity, 1 stop) | Must match the S7-200 MBUS_CTRL parity |
| 51.04 | MODBUS TIMEOUT | 10 | 10× heartbeat cycle |
| 51.05 | WRITE TIME-OUT | 5 | 5 s write disable |
| 10.01 | EXT1 START/STOP/DIR | COMM.CW | Allows start/stop from the fieldbus control word |
| 10.02 | EXT1 DIR LOCK | REQUEST | Direction commanded by control word bit 11 |
| 10.03 | EXT1 REF SELECT | COMM.REF | Reference 1 sourced from fieldbus |
| 10.04 | EXT2 START/STOP/DIR | NOT SEL (if not used) | Disables EXT2 unless needed |
| 11.02 | EXT1/EXT2 SEL | EXT1 | Use EXT1 (fieldbus) |
| 13.01 | MINIMUM AI1 | 0.000 | Keep analog input as backup only |
| 21.01 | START FUNCTION | AUTO (or CNST DC MAGN for flying start) | Direct-on-line, no DC pre-magnetization |
| 21.02 | STOP FUNCTION | COAST (or RAMP) | COAST lets the fieldbus hold the run signal |
Modbus Register Map for ABB ACS800
With the profile ABB DRIVES (the default and most widely deployed profile) selected, the ACS800 exposes a standard 16-word process data area plus parameter access on Modbus holding registers. The convention follows Modicon-compatible 4xxxx addressing; PLCs typically send the address as 4xxxx-40001 = zero-based in the MBUS_MSG block.
| 4xxxx reg | Zero-based | Direction | Name | Width | Description |
|---|---|---|---|---|---|
| 40001 | 0 | M→D | Control Word | 16-bit | Start, stop, fault reset, ramp hold, etc. |
| 40002 | 1 | M→D | Reference 1 | 16-bit | Speed ref 0–20000 ≡ 0–100 % of 11.05 REF1 MAX (default 1500 rpm) |
| 40003 | 2 | M→D | Reference 2 | 16-bit | Process ref (e.g. PID setpoint) |
| 40004 | 3 | M→D | Reserved | 16-bit | — |
| 40005 | 4 | D→M | Status Word | 16-bit | Run, ready, fault, at setpoint |
| 40006 | 5 | D→M | Actual 1 | 16-bit | Output frequency or speed, 1 = 0.01 Hz or 1 rpm (per 4.01 / 4.02) |
| 40007 | 6 | D→M | Actual 2 | 16-bit | Motor current, motor torque, etc. |
| 40008 | 7 | D→M | Actual 3 | 16-bit | Selected by 4.03 |
| 40009–40016 | 8–15 | D→M | Actuals 4–11 / diagnostics | 16-bit | Configurable via parameters 4.04–4.11 |
| 40017… | 16+ | M↔D | Drive parameters | 16-bit | Parameter access; address = parameter_number*100 − 1 + group_offset (vendor-specific) |
The Control Word is the master→drive command set. Bits per the ABB Drives profile:
| Bit | Name | Function |
|---|---|---|
| 0 | ON | 0 = stop with ramp per 22.02, 1 = start |
| 1 | OFF2 | 0 = coast stop (override ramp), 1 = ramp allowed |
| 2 | OFF3 | 0 = emergency stop (max decel per 22.04), 1 = no e-stop |
| 3 | FAULT RESET | 0→1 rising edge resets an active fault |
| 4 | HOLD ACC/DEC | 1 = freeze ramp |
| 5 | RAMP2 | 1 = use accel/decel pair 2 (22.05/22.06) |
| 6 | REF2 SEL | 1 = use reference 2 instead of reference 1 |
| 7 | — | Reserved (0) |
| 8 | JOG1 | 1 = jog at 11.06 JOG SPEED |
| 9 | JOG2 | 1 = jog at 11.07 JOG2 SPEED |
| 10 | RAMP BYPASS | 1 = direct from ref to output, no ramp |
| 11 | DIR | 0 = forward, 1 = reverse (only if 10.02 = REQUEST) |
| 12 | — | Reserved (0) |
| 13 | — | Reserved (0) |
| 14 | — | Reserved (0) |
| 15 | — | Reserved (0) |
The Status Word returned by the drive (reg 40005):
| Bit | Name | Meaning |
|---|---|---|
| 0 | RDY_ON | Ready to switch on (no fault, charge ok) |
| 1 | RDY_RUN | Ready to receive run command (no off2, no off3) |
| 2 | RDY_REF | Drive is in remote control, references valid |
| 3 | TRIPPED | Fault present |
| 4 | OFF2_STA | 0 = OFF2 active |
| 5 | OFF3_STA | 0 = OFF3 active |
| 6 | SWC_ON_INHIB | Switch-on inhibited (e.g. STO or run enable missing) |
| 7 | ALARM | Warning active |
| 8 | AT_SETPOINT | Output = reference (within tolerance) |
| 9 | REMOTE | Drive in remote (fieldbus) control |
| 10 | ABOVE_LIMIT | Actual above parameter 20.07 MAX SPEED LIMIT |
| 11 | EXT2_ACT | External control location 2 active |
| 12 | RUNNING | Inverter is modulating (motor energized) |
| 13 | — | Reserved |
| 14 | REVERSED | Output frequency negative |
| 15 | — | Reserved |
S7-200 Modbus Master Programming
The Modbus Master library is shipped with STEP 7 Micro/WIN as the example project "Modbus Master". It consists of two instruction blocks to be called from a Main OB1 cycle. The library pre-allocates 1 KB of V-memory for the stack (default VW0…VW1023); relocate it to a free range with V-memory Overview.
Initialization (Network 1, first-scan only):
NETWORK 1 // Initialize Modbus Master on Port 0
SM0.1 MBUS_CTRL
Mode: 1 // 0 = PPI, 1 = Modbus RTU master
Baud: 9600 // 9.6 kbps
Parity: 2 // 0=none, 1=odd, 2=even, 3=no parity (2 stop)
Timeout: 1000 // ms response timeout
Done: VB100.0
Error: VB100.1
Cyclic command to write Control Word + Reference 1 (Network 2, called every 50 ms via a timer):
NETWORK 2 // Start command + reference to drive at address 1
T37 (50 ms pulse) MBUS_MSG
First: 1 // first call, 0 for subsequent
Slave: 1 // Modbus address of the ACS800
RW: 1 // 1 = write multiple (FC16), 0 = read (FC03), 2 = write single (FC06), 3 = read input (FC04)
Addr: 0 // 4xxxx register 40001 minus 40001 (zero-based)
Count: 2 // write 2 words: Control Word + Reference 1
DataPtr: &VW200 // pointer to holding buffer in V memory
Done: VB101.0
Error: VB101.1
Build the two-word payload in V memory BEFORE calling MBUS_MSG. In a separate network, move the control-word pattern and the scaled reference into VW200 and VW202:
NETWORK 3 // Build control word 0x047F (Run enable, no off2/off3, ramp2, no jog, dir = fwd)
LDB= V10.0, 1 // V10.0 = "RunRequest" from HMI/operator
MOVW 16#047F, VW200
// Hex 047F = bits: ON=1, OFF2=1, OFF3=1, /RESET=0, HOLD=0, RAMP2=1, REF2=0, JOG=0, DIR=0
// Bit 5 (RAMP2) = 1 selects accel pair 2; bit 6 (REF2) = 0 uses REF1
// Bit 0 (ON) = 1 starts the drive after a 0→1 transition with no fault active
NETWORK 4 // Build reference: 1500 rpm * 20000 / 11.05 default 1500 = 20000 dec
MOVW +20000, VW202 // 20000 ≡ 100 % of 11.05 REF1 MAX (default 1500 rpm)
Read-back of Status Word + Actual 1 (Network 5, called once every 100 ms):
NETWORK 5 // Read Status Word and Actual 1 from slave 1
T38 (100 ms pulse) MBUS_MSG
First: 1
Slave: 1
RW: 0 // FC03 read holding registers
Addr: 4 // 4xxxx reg 40005 minus 40001 = 4
Count: 2 // read SW + ACT1
DataPtr: &VW210
Done: VB102.0
Error: VB102.1
After Done, the S7-200 has 16-bit Status Word in VW210 and 16-bit Actual 1 in VW212. Actual 1 is interpreted per parameter 4.01 SELECT ACTUAL 1 in the drive (default 0 = SPEED, scaled 1 = 1 rpm; default 4.02 = MOTOR SPEED FILTERED).
Fault reset is performed by toggling bit 3 of the control word. The typical sequence in S7-200 ladder:
NETWORK 6 // Edge-trigger fault reset when operator pushes reset
EU V10.1 // "ResetRequest" from HMI
// XOR the current control word with 0x0008 to invert bit 3 for one cycle
MOVW VW200, VW204
XORW 16#0008, VW204
MOVW VW204, VW200 // overwrite for next write transaction
Alternative PROFIBUS Path (RPBA-01 + EM277)
If PROFIBUS is mandatory because the rest of the machine already runs DP, the ACS800 can be equipped with an RPBA-01 PROFIBUS DP Adapter. The S7-200 does not natively act as a PROFIBUS master — only the S7-300/400/1200/1500 do. To still drive an RPBA-01 from an S7-200, the typical workarounds are:
- Add an EM277 PROFIBUS DP slave module to the S7-200 and pair it with an S7-300/400 or a third-party PROFIBUS master such as a Siemens S7-1200 CM 1243-5 master; the S7-200 then becomes a DP slave and exchanges V-memory with the master, while the master is the one talking RPBA-01.
- Add a third-party PROFIBUS master card to a PC, which defeats the purpose of having a S7-200.
If the S7-200 is the only controller on the machine, PROFIBUS is the wrong choice — switch to Modbus RTU instead. The cost of the EM277 plus a DP master easily exceeds the cost of an RMBA-01 plus a Modbus scanner for any S7-300/1200 replacement that may come later.
Common Fault Codes and Diagnostics
The ACS800 reports faults on its CDP panel and in status word bit 3. The most common faults encountered during S7-200 commissioning:
| Fault code | Name | Likely cause during S7-200 commissioning |
|---|---|---|
| FF01 | OVERCURRENT | Acceleration time too short, motor stalled |
| FF02 | DC OVERVOLT | Deceleration too short, regen load, line surge |
| FF03 | DEV OVERTEMP | Cooling fan failed, blocked air flow, ambient too high |
| FF04 | SHORT CIRCUIT | Motor cable insulation failure, VFD output short |
| FF05 | DC UNDERVOLT | Line drop-out, soft-charge not complete |
| FF06 | AI < MIN | Analog input below parameter 13.01; not relevant in fieldbus mode but still active |
| FF07 | AI LOSS | Analog reference lost; not used if 10.03 = COMM.REF but check 10.04 if EXT2 |
| FF08 | FLT MOTOR PROT | Motor thermal model tripped, check 30.01..30.04 |
| FF11 | FIELDBUS COMMUN | Modbus RTU timeout, bad wiring, baud mismatch, slave address wrong |
| FF12 | COMM MODULE | RMBA-01 missing or not recognised; check 98.01–98.02 |
| FF13 | EXTERNAL FAULT | DI3 / 8.03 external fault input triggered |
| FF14 | EARTH FAULT | Sum of phase currents too high; insulation check needed |
| FF15 | PRECHARGE | Soft-charge circuit failed; line or contactor issue |
| FF17 | LINE CONV | Active front end or line-side converter fault |
| FF18 | ID RUN FAIL | Identification run was not completed at first start |
| FF32 | FAN | Cooling fan tachometer feedback lost |
| FF41 | IGBT OVERTEMP | Output stage thermal overload |
| FF45 | STO | Safe Torque Off circuit open (XSTO connector) |
| FF48 | PARAM CRC | Parameter checksum failed after firmware update |
The Modbus side error codes returned by MBUS_MSG Error word (V-memory per library documentation):
| Dec | Hex | Cause | Fix |
|---|---|---|---|
| 0 | 0x0000 | No error | — |
| 1 | 0x0001 | Parity / framing error (line quality) | Check termination, shielded cable, ground |
| 2 | 0x0002 | Overrun on Port 0 / 1 | Reduce poll rate or move to Port 1 |
| 3 | 0x0003 | CRC / LRC error from slave | Re-check baud and parity |
| 4 | 0x0004 | Illegal Modbus function code in reply | Slave firmware mismatch |
| 5 | 0x0005 | Illegal data address | Verify address against drive profile |
| 6 | 0x0006 | Illegal data value | Reference out of range, count out of range |
| 7 | 0x0007 | Slave failure response (drive busy, e.g. during ID run) | Retry after 1 s |
| 8 | 0x0008 | Response time-out (no reply within Timeout ms) | Wiring, slave address, baud rate |
| 9 | 0x0009 | Port busy (previous MBUS_MSG still in flight) | Gate MBUS_MSG on previous Done |
| 10 | 0x000A | Library not initialized (no MBUS_CTRL call) | Call MBUS_CTRL on SM0.1 |
| 11 | 0x000B | Library internal buffer overflow | Reduce transaction count per cycle |
Commissioning Verification Procedure
- Disconnect the motor from the drive output terminals (U2, V2, W2) or lock the mechanical load out. Move parameter 21.03 to STOP=COAST if you want a safe coast on Stop.
- With the drive in local panel control (LOC mode on CDP), confirm the drive starts and runs the motor locally. This isolates motor + drive wiring from fieldbus issues.
- Set 10.01 = COMM.CW and 10.03 = COMM.REF. Save with 16.07 = 1, then re-power the drive to activate the fieldbus profile (98.02 must be FIELDBUS).
- Connect the S7-200 Port 0 to the RMBA-01 X2. Pull the connector and re-seat it to verify a good contact.
- From the S7-200 program, force MBUS_CTRL Mode=1, Baud=9600, Parity=2, Timeout=1000, and monitor VB100.1 Error. If Error is 0, the link is alive.
- Run a single MBUS_MSG to read register 4 (Status Word) with Count=1. If Status Word is non-zero, the drive is responding. A common starting value is 0x0467 (Ready_On + Ready_Run + Ready_Ref + Remote).
- Run a single MBUS_MSG to write register 0 (Control Word) with Count=1, Data = 0x047F (or 0x047E for coast; 0x047E means ON=0, OFF2=1, OFF3=1). Monitor Actual 1 to confirm the drive is at zero speed and the status word transitions.
- Write 0x0000 to the Control Word, then 0x047F to command a start. Actual speed should ramp from 0 to Reference 1 with accel per 22.02 (default 10 s for ACS800 standard macros).
- Write 0x0000 to the Control Word to ramp stop, or 0x047E to coast. Watch the Status Word bit 0 and bit 12 transitions on the HMI.
- Re-attach the motor and run a no-load spin check before coupling the load.
- Run a full ID run (parameter 99.10 = ID MAGN or ID RUN per the motor nameplate) so the drive learns the motor model. Without it, torque and current loops are not optimised and nuisance over-current faults are common on first production runs.
- Document the working program and lock the parameters with 16.08 PARAM LOCK = 1 if required by the end user.
Notes and Best Practices
- For multi-drive applications (one S7-200 controlling two or more ACS800 units on the same RS485 trunk), set 51.01 MODBUS NODE to a unique value per drive (1, 2, 3 …) and use the S7-200 ladder to multiplex the Slave parameter of MBUS_MSG through a routine. Total cycle time is roughly (N × 50 ms) for a typical 4-word read/write, so for 4 drives keep the poll rate above 200 ms per drive to avoid stack overflow in the S7-200.
- If the application is high-speed (e.g. winder dancer / unwinder tension control with closed-loop PID), the 50–200 ms latency of Modbus RTU is too slow. Migrate the controller to an S7-1200/1500 with PROFINET and a Yaskawa GA500 / Sinamics S120 / ABB ACS880 with PROFINET adapter (RPNT-01 / FENA-11).
- Use a USB-to-RS485 isolator such as the FTDI USB-RS485-WE for PC-side commissioning, with ABB's DriveWindow Light or Drive Composer entry tool. Never connect the drive's RS485 directly to a non-isolated PC port during commissioning — the ground potential difference will damage the RMBA-01.
- If the S7-200 is a CPU 224 XP or 226 with Port 1 free, use Port 1 for Modbus and Port 0 for programming/HMI. This decouples the fieldbus traffic from the Micro/WIN upload.
- For S7-200 replacement: the modern Siemens replacement is the S7-1200 (CPU 1214C / 1215C) with the Modbus_Comm_Load and Modbus_Master instruction blocks, or the S7-1500 with Modbus_Master in the user library. The ACS800 register map remains identical.
- The S7-200 is at end-of-life as of 2017, and Siemens officially stopped support on 1 Oct 2023. For new installations consider the S7-1200/S7-1500 + ACS880 platform.
Frequently Asked Questions
Can I use the Siemens USS library (USS_INIT / USS_CTRL) to talk to an ABB ACS800?
No. USS is a proprietary Siemens protocol implemented on MicroMaster, SINAMICS V20/G110/G120, and SIMOVERT drives. The ACS800 is a third-party drive and does not support USS. Use the Modbus RTU library (MBUS_CTRL/MBUS_MSG) with the RMBA-01 adapter instead.
What is the simplest S7-200 program to start the ACS800 over Modbus RTU?
Two instructions: MBUS_CTRL with Mode=1, Baud=9600, Parity=2, Timeout=1000; then MBUS_MSG to write holding register 0 (Control Word) with two words — the control word (0x047F for Run) and Reference 1 (e.g. 1500 for 1500 rpm if 11.05 = 1500). Watch Status Word bit 12 (RUNNING) go to 1 to confirm start.
The S7-200 reports Modbus error 8 (time-out) — what is the first thing to check?
Verify in this order: (1) drive parameter 98.02 = FIELDBUS, (2) 51.01 node address matches MBUS_MSG Slave, (3) 51.02 baud and 51.03 parity match MBUS_CTRL, (4) cable is wired A → B, B → A (note the cross), (5) 120 Ω termination present at both ends. A common trap is using a 2-wire/4-wire adapter that swaps A/B.
How many ACS800 drives can a single S7-200 control over RS485?
Up to 31 drives on a single RS485 segment at 9600 bps, limited in practice by the Modbus scan time. For 1–4 drives, 100 ms per drive is realistic (40 ms per MBUS_MSG transaction plus the library inter-frame delay). Beyond 8 drives, switch to an S7-1200/1500 with two RS485 ports or migrate to PROFINET with an RPNT-01/FENA-11.
Do I need an ID run on the ACS800 before S7-200 control?
Yes. Run parameter 99.10 ID RUN (= ID MAGN for standard induction motors) before the first production run. Without it the drive uses default motor parameters, which may cause torque ripple, oscillation at low speed, or nuisance overcurrent trips when the S7-200 commands a fast ramp.
Is the S7-200 / ACS800 combination supported by Siemens and ABB today?
The S7-200 reached end-of-life on 1 October 2023 (per Siemens Industry Online Support), and the ACS800 is in life-cycle phase Limited / Obsolete on the ABB Drives portfolio. Spares and firmware remain available, but new projects should migrate to S7-1200/S7-1500 with an ACS880 drive on PROFINET.