Overview
The Grundfos CIM 500 is a Communication Interface Module that exposes a Grundfos E-pump, MAGNA, CR, TP, or controller to industrial Ethernet networks. The same hardware supports PROFINET IO, Modbus TCP, BACnet/IP, and EtherNet/IP; the active protocol is firmware-selected. This article focuses on the PROFINET IO configuration path with a Siemens S7-1200 controller programmed in TIA Portal.
The CIM 500 is identified in PROFINET through a GSDML (Generic Station Description Markup Language) file. After the file is installed, the device appears in the TIA Portal hardware catalog with a set of pre-defined slots. Each slot reserves a contiguous range of input and/or output bytes in the CPU process image. Those reserved bytes are the only mechanism by which TIA Portal can move data to and from the pump - there is no separate Modbus register layer to read from the PROFINET side.
The CIM 500 product number is 98301408 and is documented in the Grundfos Product Center. The protocol-agnostic CIM 500 Ethernet manual is published at Grundfosliterature-6910240 and lists the four supported Ethernet protocols, including PROFINET IO.
Prerequisites
- Hardware: S7-1200 CPU with PROFINET interface (CPU 1211C, 1212C, 1214C, 1215C, 1217C, or 1500-series), CIM 500 installed on a supported Grundfos pump, PROFINET cable, and 24 VDC supply for the CIM.
- Software: TIA Portal V15.1 or later (V16+ recommended). Older STEP 7 V13 SP1 / V14 projects can still load the Grundfos GSDML but newer firmware features may be hidden.
- Firmware: CIM 500 firmware supporting PROFINET IO (consult the PROFIBUS and PROFINET for Grundfos pumps functional profile for the current revision). The CIM 500 also supports PROFINET conformance class A and basic diagnostics.
- GSDML file: Downloaded from the Grundfos product page (Tab Downloads → Section Support files → GSDML for CIM 500).
- Functional profile PDF: Grundfosliterature-6012957 is the canonical reference for module slot descriptions and data semantics.
CIM 500 PROFINET Specifications
| Parameter | Value |
|---|---|
| Product number | 98301408 |
| Supported protocols | PROFINET IO, Modbus TCP, BACnet/IP, EtherNet/IP (one active at a time) |
| PROFINET conformance | Conformance Class A (CC-A), real-time (RT) communication |
| Baud rate | 10/100 Mbit/s, full duplex, auto-negotiation |
| Connection count | 1 PROFINET IO AR (Application Relationship) plus standard TCP/IP services |
| Process data size | Per module, see slot table in functional profile; up to 64 bytes input / 64 bytes output per module |
| IP assignment | DCP (PROFINET naming) or static via the CIM 500 service tool |
| Default PROFINET device name | Empty - must be assigned by the IO controller |
| Vendor ID | 0x0177 (Grundfos) - check the GSDML VendorID tag |
| Device ID | Defined in GSDML; visible in TIA Portal after GSDML install |
The functional profile and the CIM 500 Ethernet manual are the authoritative sources for slot count, slot semantics, and supported data types. Always cross-check the module selection against the PDF revision that matches the installed GSDML.
Installing the GSDML File
- Open the TIA Portal project that owns the S7-1200 station.
- Switch to the Project view and open Devices & Networks.
- Open the Options → Manage general station description files (GSD) dialog.
- Browse to the folder that contains the extracted Grundfos GSDML archive (the file ends in
.xml, typically namedGSDML-Vxxxx-Grundfos-CIM500-xxxxxxxx.xml). - Select the file and click Install. TIA Portal validates the schema and the device appears in the hardware catalog tree under Other field devices → PROFINET IO → Grundfos → CIM 500.
- Close the dialog. The CIM 500 is now usable as a PROFINET IO device.
Hardware Configuration in TIA Portal
- Add the S7-1200 CPU to the project (or open an existing station).
- Connect the CPU's PROFINET interface (X1) to the PROFINET subnet. TIA Portal will offer to create a new PN/IE_1 subnet if none exists.
- Drag the Grundfos CIM 500 from the hardware catalog onto the PROFINET subnet. The device is created as an IO device and assigned to the CPU's IO controller.
- Open the Device view of the CIM 500. You will see the slot rack with Slot 0 (the device itself) populated and Slots 1..n empty.
- Select the PROFINET interface in the device view and open Properties → Ethernet addresses. Assign a unique PROFINET device name (e.g.,
pump-cim500-01) and an IP address inside the configured subnet. The CPU must be selected as the IO controller. - Compile the device configuration (Hardware (rebuild)) so that TIA Portal reserves the process image addresses.
If TIA Portal reports Device configuration: not assigned or Device name mismatch, use Online → Accessible devices → Assign PROFINET device name after downloading the project. Without a matching name, the AR will not establish.
Inserting PROFINET Modules
The CIM 500 is empty after insertion: there are no data modules assigned to slots. Each module corresponds to a functional block on the pump (e.g., control word, status word, actual value, setpoint, energy, flow, head).
- Open the Device view of the CIM 500 and click the empty slot in the Device overview pane.
- Switch to the Hardware catalog on the right side. Expand Grundfos → CIM 500 → Modules.
- Drag the desired module (for example ControlModule, StatusModule, ActualFlow, ActualHead, Setpoint, Energy) onto the slot. The exact module names depend on the GSDML revision - the functional profile PDF maps each module name to the corresponding data field.
- Click Properties → IO addresses for the new module. TIA Portal auto-assigns input/output bytes; you may override the Start address to any value that does not collide with other IO.
- Repeat for each additional module. The total input length is the sum of the input bytes of all input modules; the total output length is the sum of output bytes of all output modules.
I/O Address Assignment
Each module reserves a contiguous range of process image addresses. Example layout for a typical pump integration:
| Slot | Module | Direction | Length (bytes) | Default start address |
|---|---|---|---|---|
| 0 | CIM 500 (device) | - | 0 | - |
| 1 | Control module (control word, setpoint) | Output | 4 | QB64 |
| 2 | Status module (status word, actual value) | Input | 4 | IB64 |
| 3 | Actual flow | Input | 4 | IB68 |
| 4 | Actual head | Input | 4 | IB72 |
| 5 | Energy / power | Input | 8 | IB76 |
The exact slot count, byte count, and data semantics are defined in the GSDML and the Grundfos functional profile PDF. The example above uses the address range 64..83 so the process image lines up with the screenshot the user shared in the field report. The start address can be edited by clicking the module slot and entering a new value in Properties → IO addresses → Start address.
Functional Profile Reference
The PROFIBUS and PROFINET for Grundfos pumps functional profile document is the definitive reference for module definitions. It contains:
- Module IDs and their position in the GSDML catalog.
- Bit-level description of the control word and status word (start/stop, reset, remote/local, reference value scaling).
- Scaling factors for analog values (flow in m³/h, head in m, power in W or kW, energy in kWh or MWh).
- Diagnostic bit definitions (warning, alarm, setpoint out of range, sensor failure).
- Slot count limits and maximum cyclic data length per pump family.
The functional profile is not a separate integration step inside TIA Portal. It is the documentation that explains what the GSDML-implemented modules mean. After installing the GSDML, the modules are usable directly; the PDF is for interpretation of the resulting data.
Reading Data in the PLC Program
With the IO addresses assigned, the S7-1200 updates the process image on every PROFINET cycle. The data is accessible through symbolic names created from the hardware configuration or directly through the absolute addresses.
Symbolic IO via TIA Portal tags
After compile, TIA Portal generates PLC tags in the Default tag table with the names <DeviceName>~<ModuleName>~IO (for example Pump_1~StatusModule~IO). Use these tags directly in SCL or LAD/FBD.
Reading an input module in SCL
// Pump_1 is the IO device name; StatusModule occupies 4 input bytes
"Pump_1".StatusModule.StatusWord.%X0 := TRUE; // bit-level access is invalid here
// Correct: read the 16-bit status word as a single tag
IF "Pump_1".StatusModule.StatusWord.%X0 THEN
// bit 0 set: pump running
END_IF;
// 32-bit analog value (REAL) at the start of the input slot
#ActualFlow_m3h := "Pump_1".ActualFlow.Value;
Reading raw bytes with absolute addressing
// Manual byte access for 4 bytes starting at IB68
#FlowRaw.%B0 := %IB68;
#FlowRaw.%B1 := %IB69;
#FlowRaw.%B2 := %IB70;
#FlowRaw.%B3 := %IB71;
#ActualFlow_m3h := DWORD_TO_REAL(#FlowRaw) / 100.0; // scaling per functional profile
Controlling the pump from the PLC
// Write 4 bytes of control data to QB64
#ControlWord.%X0 := TRUE; // start command (per functional profile)
#ControlWord.%X1 := FALSE; // stop
#SetpointRaw := REAL_TO_DINT(85.0 * 10.0); // example: 85 % of max
"Pump_1".ControlModule.ControlWord := %QW64;
"Pump_1".ControlModule.Setpoint := %QW66;
The bit numbering of the control word and the scaling of the setpoint vary by pump family and GSDML revision. Always validate against the functional profile PDF and the actual pump response.
Verification
- Download the project to the S7-1200 (Online → Download to device).
- Assign the PROFINET device name to the CIM 500 via Online → Accessible devices. The status LED on the CIM 500 should switch from red/alternating to solid green within a few seconds of the AR establishing.
- Open Online & diagnostics on the CIM 500. Confirm that the IO controller field shows the S7-1200 and that the Connection status is Established.
- Open the Watch table created from the IO tags. Force the control word and confirm that the pump reacts (e.g., start command, setpoint change).
- Compare the reported actual value (flow, head, power) against the Grundfos pump display or the Grundfos GO app. Values must match within the documented scaling precision.
- If the values are zero or do not update, check the Diagnostics buffer of the CPU for PROFINET station failure alarms.
Diagnostics and Troubleshooting Matrix
| Symptom | Likely cause | Resolution |
|---|---|---|
| CIM 500 not visible in hardware catalog | GSDML not installed or wrong file | Re-install via Options → Manage general station description files (GSD); verify XML extension |
| Device view of CIM 500 shows no slots | No data modules inserted | Drag modules from catalog to slot rack; recompile hardware |
| IO addresses show greyed-out start address | CPU process image overlapping | Change start address in module properties; recompile |
| PROFINET AR does not establish | Device name mismatch | Use Online → Accessible devices → Assign PROFINET device name with the configured name |
| AR establishes but input data is 0 | Module in slot is not supported by pump firmware | Consult functional profile; reduce slot count to only supported modules |
| Pump ignores control word | Pump in local mode (hand-on) | Switch pump to Remote / Controlled via fieldbus on the pump HMI |
| CPU diagnostics: Station failure | Wiring, IP conflict, or power-loss on CIM | Verify 24 V, PROFINET cable, switch port status; clear diagnostics buffer |
| Values readable but wrong scaling | Wrong scaling factor applied | Cross-check with functional profile; verify endianness (CIM 500 is little-endian / Intel byte order) |
| CIM 500 powers up with wrong protocol | CIM configured for Modbus TCP or BACnet | Reconfigure CIM 500 protocol to PROFINET IO via Grundfos PC Tool or pump display |
Notes on Endianness, Scaling, and Bit Layout
PROFINET IO uses little-endian (Intel) byte order on the wire. When the S7-1200 reads a 32-bit REAL value from a CIM 500 input slot, the bytes are already in the order the CPU expects, so no byte swap is required. Bit 0 of the status and control words is the least-significant bit of the first byte at the slot's start address.
Analog values are scaled integers unless the module exposes a REAL type directly. The functional profile lists the unit and the divisor (e.g., flow in 0.01 m³/h, head in 0.01 m, power in 1 W, energy in 1 kWh). Divide the raw DWORD by the published scale factor to obtain engineering units.
The CIM 500 must be configured for PROFINET IO at the protocol level before PROFINET ARs will establish. If a different protocol was active, the device is reachable on its IP for configuration but no PROFINET data is exchanged. Use the Grundfos PC Tool or the pump HMI to select PROFINET IO, then power-cycle the CIM for the change to take effect.
FAQ
Do I need the functional profile PDF in addition to the GSDML?
Yes. The GSDML exposes the modules and their byte lengths, but the functional profile PDF is the only source for control-word bits, status-word bits, scaling factors, and per-pump-family support. Without it the bytes are meaningless numbers.
Can I read Modbus-style registers directly from the S7-1200 once the CIM 500 is on PROFINET?
No. PROFINET IO exchanges cyclic process data through the slots defined in the GSDML. The CIM 500 is the only entity that can talk Modbus to the pump. If you need the pump's full Modbus register map, use the CIM 500 in Modbus TCP mode and add a Modbus TCP client to the S7-1200 instead.
How do I turn the pump on and off from the PLC?
Insert the ControlModule (or equivalent per GSDML revision) on an output slot, set the start bit in the control word, and write the setpoint bytes. The pump must be in remote / bus-control mode for the fieldbus to take precedence over local HMI commands.
Why does the device view show empty slots after I dropped the CIM 500?
Dropping the device on the subnet only places the PROFINET interface. You must drag individual modules from the hardware catalog into the slot rack for each data block you want to exchange. Empty slots do not reserve any process image.
What start address should I use for the input and output bytes?
Any address that does not collide with other IO on the S7-1200. A common convention is to place pump IO at the end of the CPU process image (e.g., starting at IB64 / QB64 for a CPU 1214C) so it does not clash with onboard or signal-module IO. Always recompile after changing a start address.