Using SINA_POS and SINA_PARA in Parallel on S7-300 with SINAMICS CU310DP
1. Overview
The SIMATIC S7-300 controller family is widely deployed with the SINAMICS S120 drive line, where the CU310DP Control Unit provides the PROFIBUS (DP) interface. Two standard function blocks from the Siemens drive library — SINA_POS (FB 284) and SINA_PARA (formerly part of the DriveES / SIMOTION SCOUT libraries) — address fundamentally different communication patterns. SINA_POS is a cyclic positioner that operates over a configured Siemens standard telegram, while SINA_PARA issues acyclic parameter read/write jobs against the drive object.
Engineers regularly ask whether both blocks can be active simultaneously on the same axis, especially when an existing project already runs SINA_POS with telegram 111 and a new requirement demands torque and current readback. The short answer is yes — both blocks can coexist. The deeper question is which block (or which telegram extension) is appropriate for the new monitoring values, and the answer depends entirely on whether you need cyclic refresh or merely a snapshot.
2. Telegram 111 and SINA_POS Fundamentals
Telegram 111 is a Siemens standard telegram for the SINAMICS S120 / CU310DP. It is asymmetric and carries 12 words of process data in each direction (PZD-12/12). The default mapping for the closed-loop controlled drive is:
| Word | Direction | Default Signal | Source / Destination Parameter |
|---|---|---|---|
| 1 | PLC → Drive | STW1 (Control word 1) | r2090.0 |
| 2 | PLC → Drive | NSOLL_B / position setpoint | depends on operating mode |
| … | … | (setpoints, mode selection, position override) | … |
| 12 | PLC → Drive | Last control word / mode selector | r2090.x |
| 1 | Drive → PLC | ZSW1 (Status word 1) | r2089.0 |
| … | Drive → PLC | Actual position, encoder status | r2521, r2523, etc. |
| 12 | Drive → PLC | Last status / mode feedback | r2089.x |
SINA_POS wraps the cyclic exchange and exposes a clean function-block interface (start, stop, mode, override, position setpoint, position actual, status bits). When you wire it in TIA Portal V13 or later, the block is connected to the telegram's hardware identifier (HWID) of the drive object — the same HWID that STARTER / Startdrive assigns to the configured telegram setpoint slot.
3. SINA_PARA Functional Model
SINA_PARA is an acyclic parameter access block. It triggers a DPV1 / acyclic record read or write on a parameter number, parameter index, and sub-index. Internally, on PROFIBUS, this is the Read Record / Write Record service; on PROFINET it is the equivalent PN IRT acyclic service. The block has a busy/done/error handshake:
- Set
REQ := TRUEto start the job. - The block writes the request into the acyclic buffer and clears
DONE/ERROR. - The CPU waits for the drive to respond; the round-trip time depends on bus load.
- When the reply arrives,
DONEis set for one cycle (or latched depending on variant), and the data appears on the output buffer. - If the drive rejects the request (invalid parameter, wrong access rights, faulty index),
ERRORis asserted and a fault code is placed onFAULT_CODE.
Key parameter inputs of a typical SINA_PARA instance:
| Input | Type | Meaning |
|---|---|---|
| REQ | BOOL | Trigger edge for the next job |
| DRIVE_OBJECT_ID | BYTE | Drive object (1 = Control Unit, 2 = drive axis 1, etc.) |
| PARAMETER_NUMBER | DINT | Drive parameter number (e.g. r0027 for actual current) |
| PARAMETER_INDEX | INT | Sub-index for array parameters |
| READ_WRITE | BOOL | 0 = read, 1 = write |
| DATA_TO_WRITE | DWORD / REAL | Value to write (ignored on read) |
| HWID | HW_IO / DWORD | Module access point HWID of the drive |
There is no continuous stream of data — one REQ edge produces one DONE with one new value. To re-read the same value you must retrigger REQ.
4. Why SINA_PARA is Suboptimal for Continuous Torque / Current Monitoring
Acyclic communication is designed for configuration, commissioning, diagnostics, and infrequent parameter access — not for closed-loop control or HMI live values refreshed at the bus cycle rate. On a PROFIBUS DP network with a CU310DP, the following limitations apply:
- Round-trip time. A single acyclic request typically takes 1–3 bus cycles plus CPU processing, often 20–100 ms or more depending on DP baud rate (1.5 Mbit/s, 12 Mbit/s) and bus load. Under heavy cyclic load, the acyclic channel can be deferred.
-
No time-deterministic refresh. If you retrigger every 100 ms but the previous job has not finished, the second request is queued or rejected depending on the block variant. You must wait for
DONEorERRORbefore issuing the next job. - Single parameter per request. To read both torque and current you must sequence two jobs, doubling the effective latency and doubling the bus load.
- No "always-fresh" value. An HMI screen polling a tag connected to the last acyclic result will see the same value held until the next job completes, which is misleading.
5. Extending Telegram 111 with Free PZD (Recommended Path)
The correct approach for reading additional SINAMICS parameters on a CU310DP is to extend the standard telegram 111 with supplementary free PZD slots. The free PZD extension uses a sub-slot — in TIA Portal you add the "Supplementary data" or "Free telegram configuration" item to the drive device and assign SINAMICS parameters (PZD) to the additional words.
To expose torque and current over the cyclic channel:
- In Startdrive / SCOUT, open the drive's Communication → Telegram configuration and keep telegram 111 selected.
- Add a Free PZD block in the drive direction. Each block consumes 1, 2, 3, 4, 5, 6, 7, or 8 PZD words as you configure.
- Assign the following SINAMICS parameters to the new PZD slots:
| Signal | Parameter | Unit / Scaling |
|---|---|---|
| Torque actual, smoothed | r0031 | Nm (drive axis) |
| Current actual, magnitude | r0027 | A rms (drive axis) |
| Active current (torque-producing) | r0078 | A rms |
| Torque setpoint, smoothed | r0079 | Nm |
| DC link voltage | r0070 | V |
| Motor temperature | r0035 | °C |
- Compile and download the drive configuration. The drive will broadcast the extended telegram.
- In TIA Portal, re-insert the drive device (or refresh the topology) so the new PZD slots appear in the I/O view.
- Either wire
SINA_POSto the original 12/12 PZD words only and useDPRD_DAT/DPWR_DATto access the additional words, or upgrade to the variant ofSINA_POSfrom a later library that exposes a UserData interface.
Because the extension lives in a sub-slot of the same module, the cyclic bus cycle is unchanged. Torque and current become available at the configured PROFIBUS cycle (typically 2–8 ms on CU310DP) and SINA_POS continues to function on its original 12 words.
6. HWID: Module Access Point vs Telegram Setpoint
This is the most common source of integration errors. A SINAMICS drive object on PROFINET or PROFIBUS exposes two distinct HW identifiers in TIA Portal:
-
Module Access Point HWID — the diagnostic / acyclic access path. Used by
SINA_PARAand by acyclic blocks such asRDREC/WRREC. - Telegram Sub-slot HWID(s) — the cyclic I/O data slots. The first sub-slot is the "setpoint / actual value" word, and any free PZD extensions are additional sub-slots with their own HWIDs.
Wiring rules:
-
SINA_POS→ must be wired to the cyclic sub-slot HWID, not the module access point. -
SINA_PARA→ should be wired to the module access point HWID, which is robust against subsequent free PZD changes. -
DPRD_DAT/DPWR_DATfor the extension → wired to the corresponding sub-slot HWIDs of the free PZD.
7. PROFIBUS DP vs PROFINET Considerations for CU310DP
The CU310DP variant is a PROFIBUS-DP slave. Several of the published Siemens application examples for SINA_POS and SINA_PARA are written for the CU310PN (PROFINET) variant. The differences that matter when porting an example from PN to DP:
| Aspect | PROFINET (CU310PN) | PROFIBUS (CU310DP) |
|---|---|---|
| Acyclic service | PN record read/write on sub-slot | DPV1 Read/Write Record on slot 0 |
| Module access point | Slot 0 sub-module 1 | Slot 0 of the DP slave |
| Max acyclic payload | 240 bytes per record | 240 bytes per record (DPV1) |
| Typical acyclic RTT | 1–3 PN cycles | 1–3 DP cycles + token handling |
| Free PZD extension | Sub-slots 2…n | Sub-slots 2…n (same concept, lower per-cycle latency) |
| SINA_PARA HWID | Sub-slot 1 (or 0) | Slot 0 / access point |
The block code in TIA Portal is identical; only the device selection and HWID resolution differ. Engineering the project from a PN example on a DP hardware will compile cleanly but the acyclic jobs will time out until the HWID is corrected to the slot 0 access point.
8. Step-by-Step Implementation
Prerequisites
- TIA Portal V13 SP1 or later with Startdrive (or SCOUT for older projects).
- S7-300 CPU with PROFIBUS master interface (e.g. CPU 315-2 DP / 317-2 DP / 319F-3 PN/DP).
- SINAMICS S120 with CU310DP Control Unit, firmware ≥ V4.5 recommended for stable free PZD.
- Drive library containing
SINA_POS(FB 284) andSINA_PARA— typically delivered with Startdrive or the DriveES blocks.
Procedure
-
Keep the existing telegram 111 configuration. The currently running
SINA_POSinstance must not be disturbed — no recompile of its HWID, no change to its process data length. -
Add free PZD to the drive. In the drive's Device view in TIA Portal, select the SINAMICS drive. Under Properties → Telegram configuration, the active telegram 111 is listed. Add a free PZD sub-slot. Configure two or more words and assign them to
r0027andr0031(or any other SINAMICS parameters you want). - Compile and download the drive project. Use Startdrive to load the new free PZD configuration into the CU310DP. The drive performs a brief initialization; the cyclic communication resumes within seconds.
-
Refresh the TIA Portal device proxy. Reopen the device view of the S7-300 station. The free PZD appears as an additional sub-slot under the drive with its own HWID. Note the HWID — it will look like
256..271in the HW identifier list. -
Wire the new free PZD to a data block. Use a global DB to receive the values. The simplest is to drop
DPRD_DAT(SFC 14) in OB1 and read the new HWID into a structure:
// STL or SCL equivalent in OB1 (S7-300/400 style)
CALL "DPRD_DAT"
LADDR := 264 // free PZD sub-slot HWID
RET_VAL:= MW 200
RECORD := P#DB10.DBX0.0 BYTE 8 // 2 words = 4 bytes; use 4 bytes for two INT
NOP 0;
-
Add SINA_PARA in parallel. Drop a new instance of
SINA_PARAin the same cyclic OB. Wire its HWID to the module access point of the CU310DP (not the free PZD). Trigger a low-priority job from a cyclic timer OB (e.g. OB35) to read non-critical parameters such as the drive's serial number, fault memory, or runtime counter. Do not retrigger the same parameter every 100 ms; wait forDONEorERROR. - Leave SINA_POS untouched. The original SINA_POS instance continues to operate on its 12/12 PZD words with the original HWID. No change required.
-
Verify cyclic update rate. In online mode, force-change the value of
r0027from Startdrive and confirm that the corresponding word in DB10 changes within one DP cycle of the OB1 scan.
9. Reading Torque and Current on HMI
Once the free PZD is read into the DB, the HMI (WinCC Professional / WinCC flexible / TIA Panel) only needs to display the tag. No further code is required. Suggested scaling on the HMI side:
| DB tag | SINAMICS source | Raw type | Display scaling |
|---|---|---|---|
| DB10.DBD0 (Current) | r0027 | REAL (float32) or INT scaled | Direct A rms |
| DB10.DBD4 (Torque) | r0031 | REAL | Direct Nm |
10. Verification and Diagnostics
After commissioning, the following checks should pass:
- Online → Telegram length. In Startdrive, the active telegram shows telegram 111 with N free PZD words. Match the configured length against the I/O length visible in the S7 hardware diagnostic buffer.
- SINA_POS status. Status word bit pattern matches the drive's actual operating state. Position actual updates each OB1 cycle.
- Free PZD readback. DB10 values change in real time when the load on the drive changes (apply a torque disturbance and observe the r0031 word increase).
-
SINA_PARA handshake. The acyclic job completes with
DONE = TRUEand a non-zeroFAULT_CODE= 0 only on intentional fault tests. - CPU diagnostic buffer. No I/O faults, no access errors. A persistent DP slave diagnostic indicates an HWID mismatch.
11. Troubleshooting Matrix
| Symptom | Likely Root Cause | Remedy |
|---|---|---|
| SINA_PARA stays BUSY indefinitely | HWID wired to a cyclic sub-slot that does not allow acyclic access | Wire HWID to the module access point (slot 0) |
| SINA_PARA returns FAULT_CODE 0x80B1 | Parameter number out of range for the addressed drive object | Check that the drive object ID is correct (1 = CU, 2 = axis 1); verify p parameter access rights |
| SINA_PARA returns FAULT_CODE 0x80B2 | Parameter write not permitted in current operating state | Bring drive to commissioning state or read-only access |
| DPRD_DAT returns RET_VAL = 0x80A0 | HWID for free PZD not refreshed after drive download | Re-open the S7 device view, compile hardware, re-link the HWID |
| Free PZD values are zero | Source parameter on drive side is not enabled (e.g. r0078 needs servo with closed-loop torque control) | Switch drive to correct operating mode; verify parameter has a non-zero value in Startdrive trace |
| SINA_POS errors after free PZD addition | SINA_POS HWID accidentally rewired to the new sub-slot | Restore SINA_POS HWID to the original 12/12 sub-slot |
| PROFIBUS diagnostic: slave not in cyclic exchange | Telegram length mismatch (DP expects 12+2 words, drive is now broadcasting 12+2) | Re-run HW configuration in TIA Portal; ensure I/O length matches drive's new PZD total |
| CPU SF LED, diagnostic buffer "IO access error on write" | OB122 not loaded and DP error occurs | Insert OB122; or fix the SINA_PARA / DPRD_DAT call |
12. Field Notes and Library Variants
Different versions of the SINA_POS / SINA_PARA library exist:
- DriveES SIMATIC V5.x / V6.x — the original S7-300/400 incarnation. Uses FB 284 for SINA_POS and FB 285 for SINA_PARA. Slightly different instance interface compared to TIA Portal versions.
- TIA Portal V13 SP1 library — blocks ported to SCL, identical behaviour, modern TIA DB-aware interfaces.
- Startdrive V14 SP1 and later — SINA_POS exists in multiple variants (SINA_POS, SINA_POS_TLG111, SINA_SPEED, SINA_PARA) inside the Startdrive toolbox.
When porting a DriveES V5 project to TIA Portal, the block instances can be replaced one-for-one because the I/O pin names are preserved. The HWID is the only thing that requires re-resolving through the new device proxy.
13. FAQ
Can SINA_POS and SINA_PARA run at the same time on the same CU310DP?
Yes. They use different mechanisms: SINA_POS consumes cyclic PZD on the telegram sub-slot HWID, while SINA_PARA issues acyclic DPV1 record reads/writes against the module access point HWID. They do not conflict as long as each block is wired to the correct HWID for its purpose.
Is SINA_PARA fast enough to read torque and current for the HMI?
For HMI monitoring, the typical bus round-trip is 20–100 ms, so values feel sluggish but usable. For control loops or fast updates, use the free PZD extension of telegram 111 and read r0027 (current) and r0031 (torque) over the cyclic channel instead.
Do I need to change the telegram 111 to add free PZD?
No. Telegram 111 stays the same; the free PZD is appended as a sub-slot and adds extra words beyond the 12/12 default. SINA_POS continues to work on the original 12/12.
Which HWID should I give to SINA_PARA on a CU310DP?
Use the module access point HWID of slot 0. Using a cyclic sub-slot HWID may also work on PROFINET but on PROFIBUS-DP it typically fails with persistent busy state because the acyclic record service is not available on sub-slots on DP.
What is the difference between r0027 and r0078?
r0027 is the absolute actual current (magnitude) in A rms, suitable for HMI display. r0078 is the active current component (torque-producing Iq) and is the more useful signal for torque control. Both are read in A rms but represent different aspects of the current vector.