SINAMICS V90 with S7-1500: Reading Current via Telegram 750

David Krause15 min read
SiemensTechnical ReferenceVFD / Drives
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Problem Statement

Engineers integrating a SINAMICS V90 PN servo drive with a SIMATIC S7-1500 controller frequently hit a structural wall: the drive ships with a fixed set of PROFIdrive telegrams, only one of which can be assigned to the primary slot used by the SINA_SPEED function block. Telegram 1 (standard positioning, 32-bit speed setpoint) handles motion control. Telegram 3 (8-bit speed setpoint with 4 PKW words for parameter access) was historically used to scrape parameter values such as motor current and alarm state, but it is incompatible with SINA_SPEED because SINA_SPEED requires the standard 32-bit setpoint layout of Telegram 1 and the cyclic data of Telegram 3 collides with its I/O map.

The follow-on symptom is reproducible: the moment the user switches the V90 slot from Telegram 1 to Telegram 3 in TIA Portal, SINA_SPEED enters a fault state (ErrorID non-zero, StatusWord bit 6 = drive inhibited), even though the drive itself remains online. Conversely, running SINA_PARA alone with Telegram 1 lets you read parameters but cannot control the motor because SINA_PARA does not provide a control word or speed setpoint channel.

The correct architecture for the SINAMICS V90 is to keep Telegram 1 on slot 0 for SINA_SPEED, add Telegram 750 as a supplementary slot for torque feedback, and run SINA_PARA in parallel on the acyclic record channel for any non-cyclic parameters (motor temperature, fault history, encoder diagnostics).

SINAMICS V90 Telegram Catalogue and Constraints

The V90 PN firmware (V1.x and V2.x branches) supports the telegrams listed below. Unlike SINAMICS S120 or G120, the V90 does not expose a free BICO interconnection editor, so users cannot assemble a custom telegram containing current actual values. This constraint drives the architecture decision.

Telegram Purpose PZD Words PKW Words Use Case
1 Standard speed control (32-bit) 2 in / 2 out 0 SINA_SPEED primary control, mandatory for motion
2 Standard speed control (32-bit) with 1 PKW 4 in / 4 out 1 Legacy, generally not used on V90
3 Speed control (16-bit) with 4 PKW 2 in / 2 out 4 Parameter access only, breaks SINA_SPEED
5 Dynamic Servo Control with DSC 9 in / 9 out 0 DSC positioning, requires higher bus cycle
7 Dynamic Servo Control with DSC and 1 PKW 10 in / 10 out 1 DSC with parameter channel
102 Speed control (32-bit) with 6 PKW 6 in / 6 out 6 Extended parameter access, breaks SINA_SPEED
105 DSC with 6 PKW 13 in / 13 out 6 DSC with parameter channel
750 Supplementary torque actual value 0 in / 1 out 0 Torque feedback via GETIO
352 Speed control with current actual value 6 in / 6 out 0 NOT supported on V90
Critical: Telegram 352 (the natural choice on SINAMICS S/G-series drives because it carries a 16-bit current actual value scaled in percent) is not available on the V90 PN. Do not waste time wiring it up; the drive will reject the configuration or report F01910 (PROFIdrive telegram invalid).

The Telegram 750 layout, per the V90 PROFIdrive supplement, is one process-data word outbound from drive to controller containing the smoothed torque actual value (r0079) referenced to p2003 reference torque. Because torque and current are proportional in the motor's field-weakening-free operating range (below base speed), r0079 gives a usable proxy for motor current when multiplied by the torque constant kt from the motor data sheet.

Why Telegram 3 Breaks SINA_SPEED Control

The SINA_SPEED function block (FB 285 in the Siemens DriveLib) maps directly onto the PROFIdrive Standard Telegram 1 frame layout. The block expects:

  • Input word 0: Control word 1 (STW1), bits per PROFIdrive state machine
  • Input word 1: Speed setpoint (NSOLL) as 32-bit signed, normalized to p2000
  • Output word 0: Status word 1 (ZSW1)
  • Output word 1: Speed actual value (NIST), 32-bit signed

Telegram 3 replaces the 32-bit NSOLL with a 16-bit NSOLL and prepends four PKW words (PKE, IND, PWE1, PWE2). When TIA Portal hands Telegram 3 to SINA_SPEED, the function block's internal decoder reads the first PKW word as STW1, decodes garbage, and never sets the OFF1/OFF2/OFF3 enable bits correctly. The drive stays in Switching On Inhibited (ZSW1 bit 6 = 1), and the block reports ErrorID = 16#0001 (PROFIdrive state machine fault).

The same logic applies to Telegram 102 and 105: any telegram that grows the PKW region or shifts the PZD region breaks SINA_SPEED because the block has no parameter for a flexible base offset.

Running SINA_SPEED and SINA_PARA in Parallel

Acyclic parameter access (the PROFIdrive DP-V1 record-data channel) is independent of the cyclic PZD channel. The PROFINET controller in the S7-1500 multiplexes acyclic requests onto the same physical connection without disturbing the cyclic I/O update. The following architecture is valid and production-proven:

S7-1500 CPU SINA_SPEED FB285 (cyclic) SINA_PARA FB286 (acyclic) GETIO (read T750) User logic / alarms SINAMICS V90 PN Slot 0: Telegram 1 (SINA_SPEED) Slot 1: Telegram 750 (torque) Record-data channel: acyclic

Implementation rules:

  1. Call SINA_SPEED in a cyclic OB (OB1 or OB30-OB38 depending on your motion cycle).
  2. Call SINA_PARA in a slower OB (e.g., OB35 at 100 ms) to poll r0031 (actual current smoothed), r0035 (motor temperature), or r0945 (fault code array). Trigger one read per cycle; do not stack multiple in-flight requests.
  3. Do not call SINA_SPEED while a SINA_PARA request is pending on the same logical connection; the Siemens DriveLib handles this internally, but excessive acyclic traffic can push the watchdog.

SINA_PARA Call Skeleton

// SCL example - acyclic read of smoothed actual current (r0031)
#SINA_PARA_Instance(REQ := #bReq,                  // pulse to start a single read
                    ID   := 16#0040,               // HW identifier of Telegram 1 (PROFINET slot 0)
                    Axis := 1,                      // axis number, 1-based
                    PNU  := 31,                     // parameter number (r0031)
                    SubIndex := 0,
                    Format := 0,                    // 0=word, 2=double word
                    Error := #wErr,
                    ErrorID := #dwErrID,
                    Value := #dwCurrentPercent);    // returns value, scaling per r0031
Latency caveat: A single acyclic record-data read on PROFINET typically takes 20-40 ms at the S7-1500 side, plus the V90's parameter-acquisition time (often 10-20 ms for a word/double-word). Acyclic polling at 100 ms intervals is realistic; faster polling will either return stale values or trigger timeout faults (F01910). If you need faster updates, route the signal via Telegram 750, not via SINA_PARA.

Telegram 750: Supplementary Torque Feedback

Telegram 750 is a one-word read-only supplementary telegram containing the smoothed torque actual value. It is added as a second slot under the V90 PN device in the PROFINET topology. The drive pushes the value every PROFINET IRT cycle (typically 1 ms), giving you a true real-time torque/current proxy.

Scaling and Conversion

The raw word in the Telegram 750 output region is a 16-bit signed integer scaled to p2003 (reference torque). Convert with:

Torque_Nm   = Telegram750_word * p2003 / 27648
Current_A   = Torque_Nm / kt     // kt from motor nameplate, Nm/A

For example, a V90 1FL6062 (6 Nm rated, 2.5 Nm/A torque constant) with p2003 = 6.0 Nm produces a raw word of 27648 at full rated torque. If the word reads 13824, the motor is delivering 3 Nm, which corresponds to roughly 1.2 A phase current.

For alarm logic on a rubber-roller pressure application, the typical workflow is:

  1. Establish a baseline torque reading at known good roller condition.
  2. Compute TorqueThreshold = 0.7 * TorqueBaseline (adjustable).
  3. If TorqueActual < TorqueThreshold for > 2 s, raise operator alarm.
  4. Add hysteresis (e.g., reset threshold at 0.85 * baseline) to avoid chatter.

TIA Portal Integration: GSD vs. HSP

There are two paths to place the V90 in the TIA Portal device view. Telegram 750 is supported by both, but the configuration steps differ slightly.

Aspect GSD File Hardware Support Package (HSP)
Installation Import GSDML-Vxx-Siemens-Sinamics-V90PN-xxxxxx.xml via Options → Manage General Station Description Files Install HSP via Options → Support Packages; appears under Siemens AG → Drives → SINAMICS V90 PN
Device view Generic PROFINET device, no Siemens faceplate Siemens faceplate, integrated parameter view
Slot configuration for T750 Add submodule: "Telegram 750, supplementary torque actual value" Add submodule from drive's slot list
HW identifier range Slot 0 (T1) and slot 1 (T750) each get distinct HW IDs Same structure
Minimum TIA version TIA V14 SP1 or later TIA V16 or later for V90 V2 firmware

HSP Path (TIA V16, recommended for V90 V2 firmware)

  1. Open Options → Support Packages → Install; select the SINAMICS V90 PN HSP for your TIA version.
  2. Add the V90 PN device from the hardware catalog under Siemens AG → Drives → SINAMICS V90 PN.
  3. Drag the V90 into the PROFINET network; assign the IP and device name.
  4. Open the device view; slot 0 will already contain the V90 head module.
  5. Click on the empty slot 1; from the catalog add Telegram 750, supplementary torque actual value.
  6. Compile the configuration and download to the CPU.

GSD Path (fallback for older TIA or V90 V1 firmware)

  1. Download the current GSDML from the Siemens support portal (search for the V90 PN entry under PROFINET GSD files).
  2. Import via Options → Manage General Station Description Files.
  3. Insert the V90 PN as a generic PROFINET IO device.
  4. In the slot list, set slot 0 to Telegram 1 and slot 1 to Telegram 750.
  5. Assign the IP, name, and download.
Known limitation: Some TIA Portal V16 service packs exposed only one telegram slot in the V90 head module when using the older HSP. If your TIA build only lets you pick one telegram, upgrade to the latest V16 update (Update 9 or later) or to V17/V18, both of which display the supplementary slot correctly. The two-telegram configuration is officially supported per the Siemens application example for V90 torque feedback.

Reading Telegram 750 with the GETIO Function Block

The GETIO (distributed I/O read) FB is the simplest way to read the one-word Telegram 750 input region without disrupting SINA_SPEED. You do not need SINA_PARA for this signal because Telegram 750 is cyclic, not acyclic.

// SCL example - read Telegram 750 raw word
#GETIO_Instance(REQ     := TRUE,                    // continuous read
                ID      := %QWxx:T750SlotHWID,      // HW ID of Telegram 750 slot
                LADDR   := #wT750InputAddress,      // input start address (e.g., IW 256)
                LEN     := 2,                       // one word = 2 bytes
                STATUS  := #wStatus,
                ERROR   := #bError);
// Result appears at %IW256 on the CPU side

Once the raw word is in a standard input address, your SCL/ST program scales it to engineering units:

#TorquePct := INT_TO_REAL(%IW256) / 27648.0 * 100.0;
#TorqueNm  := #TorquePct / 100.0 * #p2003;
#MotorCurrent := #TorqueNm / #kt;

If you prefer symbolic I/O, leave the GETIO call out and reference the Telegram 750 input directly via the symbolic name assigned in the device view (e.g., "V90PN_1_Slot1_T750".TorqueActual).

Application Context: Rubber Roller Pressure Monitoring

A common application driving this question is monitoring the contact pressure of a rubber roller against a driven drum. The torque required to keep the drum at constant speed is a direct function of the friction coefficient between roller and drum. As the rubber ages or loses surface tack, friction drops, motor torque drops, and current drops proportionally.

Recommended Alarm Logic

// Track baseline at machine commissioning
IF #bLearnMode THEN
    #TorqueBaseline := #TorqueBaseline * 0.9 + #TorqueNm * 0.1;  // low-pass
END_IF;

// Alarm detection with debounce and hysteresis
#bBelowThreshold := (#TorqueNm < #TorqueBaseline * 0.7);
IF #bBelowThreshold THEN
    #iDebounce := #iDebounce + 1;
    IF #iDebounce > 200 THEN                          // 2 s at 100 ms
        #bRollerAlarm := TRUE;
    END_IF;
ELSE
    #iDebounce := 0;
    IF #TorqueNm > #TorqueBaseline * 0.85 THEN       // hysteresis
        #bRollerAlarm := FALSE;
    END_IF;
END_IF;

For finer resolution, also alarm on the rate of change of torque: a sudden > 20% drop within one second usually indicates roller contamination, not gradual wear.

Implementation Checklist

  1. Confirm V90 PN firmware version (V1.x vs V2.x) before selecting HSP or GSD.
  2. Configure Telegram 1 on slot 0, Telegram 750 on slot 1 in TIA Portal device view.
  3. Wire SINA_SPEED to the Telegram 1 HW identifier; verify control word bits toggle correctly (DriveLib example project provides a watcher).
  4. Use GETIO or direct symbolic read to pull the Telegram 750 word.
  5. Scale to Nm using p2003; convert to A using motor-specific kt.
  6. For non-cyclic parameters (r0031, r0035, r0945), use SINA_PARA in OB35 at 100 ms minimum interval.
  7. Establish baseline torque at known-good roller condition during commissioning.
  8. Add debounce and hysteresis to the alarm logic.

Verification and Commissioning Checks

Check Expected Result Failure Indicator
SINA_SPEED.ConfigAxis matches V90 axis number Block enters Commissioning state, then Operation Block stays in Configuration; check Axis parameter
Online → Diagnostics for Telegram 1 Status word bits 0, 1, 2 set; bit 6 cleared when running Bit 6 stuck = control word not reaching drive
Online → Diagnostics for Telegram 750 Input word updates every PROFINET cycle Word frozen at 0 = slot not assigned in drive
Compare Telegram 750 word to r0031 via SINA_PARA Torque and current move together (factor = kt) Constant ratio mismatch = wrong p2003 or kt
Drive fault log (r0945) No F01910 entries after commissioning F01910 = telegram configuration rejected by drive
Alarm debounce in steady state Alarm false at known-good roller Alarm true = baseline too high, learn mode not run

Troubleshooting Matrix

Symptom Likely Cause Corrective Action
SINA_SPEED reports fault after switching to Telegram 3 Telegram 3 incompatible with FB285 Revert to Telegram 1; use T750 + SINA_PARA for current
Motor runs but SINA_PARA freezes Acyclic request never re-triggered Reset REQ after Done bit; call once per OB35 cycle
Telegram 750 not visible in slot catalog Old TIA version or V90 V1 firmware with stale GSD Upgrade TIA to V16+ and re-import latest GSDML from Siemens support
Telegram 750 word reads zero even when motor is loaded p2003 not set, or V90 in torque-limited mode Set p2003 to rated motor torque; verify r0079 nonzero in drive trace
Drive reports F01910 (PROFIdrive telegram invalid) Mismatch between controller config and drive param p0922 Set p0922 = 999 (free telegram configuration) or use TIA's "Apply configuration" function on the drive webserver
Telegram 750 input address not visible in PLC tags Submodule not assigned to a watchdog/IO controller In device view, ensure Telegram 750 slot is assigned to the S7-1500 IO controller
Torque signal noisy / jittery p0045 smoothing time too low Increase p0045 to 5-10 ms for stable readings
GETIO returns STATUS <> 0 HW identifier or input address wrong Check HW ID from device view properties of T750 slot; verify input range in PLC tags

Notes on Related Telegrams and Future Firmware

Siemens periodically extends V90 telegram support via firmware updates. Confirm the firmware version on the drive nameplate and review the release notes for any new supplementary telegrams (for example, future revisions may add an encoder-actual-value supplementary telegram analogous to 750). The current V2 firmware supports Telegram 750 as documented above; Telegram 352 remains unsupported and should not be configured.

For users who prefer entirely acyclic access (no Telegram 750), the workable ceiling is roughly 20-50 ms update rate using SINA_PARA with hand-shaken REQ/DONE logic. This is adequate for slow thermal monitoring (r0035, r0036) but marginal for fast load alarms. For roller-pressure monitoring with a debounced alarm, SINA_PARA alone is sufficient; for closed-loop reaction within one controller cycle, Telegram 750 is the correct path.

Can I run SINA_SPEED and SINA_PARA on the V90 at the same time?

Yes. SINA_SPEED operates on the cyclic PZD channel (Telegram 1) and SINA_PARA operates on the acyclic record-data channel. The two channels are independent on PROFINET and do not interfere. Issue a single SINA_PARA read per OB35 cycle (100 ms minimum) and re-trigger the REQ input after each DONE bit.

Why does Telegram 3 break SINA_SPEED on the V90?

SINA_SPEED (FB285) is hard-coded to the PROFIdrive Standard Telegram 1 layout. Telegram 3 replaces the 32-bit NSOLL with a 16-bit setpoint and prepends four PKW words, shifting the control-word and setpoint positions that SINA_SPEED expects. The block reads garbage into its internal state machine and never enables the drive.

Is there a Telegram 352 equivalent on the V90?

No. Telegram 352, which carries a 16-bit current actual value on SINAMICS S/G-series drives, is not implemented on the V90 PN. Use Telegram 750 (one-word torque actual) plus SINA_PARA acyclic reads of r0031 for current feedback. Scale the Telegram 750 word using p2003 and the motor torque constant kt to derive motor current.

How do I add Telegram 750 in TIA Portal V16?

Install the SINAMICS V90 PN HSP via Options → Support Packages. Insert the V90 in the device view, then click on the empty slot 1 and add the "Telegram 750, supplementary torque actual value" submodule from the catalog. Compile and download the configuration. Older TIA service packs may hide the supplementary slot; upgrade to TIA V16 Update 9 or later, or move to V17/V18.

What scaling should I apply to the Telegram 750 word?

The raw 16-bit word is normalized to p2003 (reference torque, default = rated motor torque). Convert with Torque_Nm = Word / 27648 * p2003, then Current_A = Torque_Nm / kt where kt is the motor's torque constant in Nm/A from the nameplate. For the 1FL6062 at 2.5 Nm/A, p2003 = 6 Nm, a raw word of 13824 equals 3 Nm and roughly 1.2 A.

Can I use GETIO instead of symbolic I/O for Telegram 750?

Yes. Call GETIO with LEN = 2 (one word) and the HW identifier from the Telegram 750 slot's properties. The raw word appears at the configured input address (for example %IW256) each PROFINET cycle. Symbolic I/O is simpler; GETIO is useful when you want to read the value into a separate data block on demand without consuming a tag in the standard I/O image.

How fast can SINA_PARA read r0031 on the V90?

A single acyclic record-data read typically takes 20-40 ms controller-side plus 10-20 ms drive-side acquisition time. Polling r0031 via SINA_PARA faster than 50-100 ms risks timeouts or stale values. For faster updates of the same physical signal, route via Telegram 750 which is cyclic at the PROFINET IRT cycle (typically 1 ms).

Back to blog