1. Problem Definition and Solution Strategy
A SINAMICS G120 connected to a SIMATIC S7-1200 via PROFINET is normally driven end-to-end from the PLC: the SINA_SPEED function block feeds control word 1 (STW1) over the PROFIdrive telegram, and the same telegram delivers the speed setpoint (NSOLL) to the inverter. In this application, however, only the digital commands (start, stop, jog, reverse) come from the PLC, while the speed reference must come from a wired potentiometer connected directly to the G120's analog input. No HMI is available, and the operator must be able to vary speed locally at the cabinet door with a 10 kΩ panel-mount pot.
The clean solution exploits the independence between the SINAMICS command source (P0700) and the setpoint source (P1000). The PLC remains the sole source of control words, while P1000 routes the speed reference to the analog input. With Standard Telegram 1 selected, SINA_SPEED only exchanges STW1 and ZSW1, and the drive uses the analog input magnitude (modulated by STW1 bit 11 for direction) as the speed reference. Telegrams 2 or 3 carry NSOLL/NIST setpoint values and would create a conflict with the analog input strategy unless they were deliberately overridden.
2. Prerequisites
| Item | Specification | Notes |
|---|---|---|
| SINAMICS G120 Control Unit | CU240E-2 PN, CU240E-2 PN-F, CU250S-2 PN, or equivalent PROFINET CU | CU240B-2 has no PROFINET port. Match the order number (e.g., 6SL3246-0BA22-1FA0) when adding the device to TIA Portal. |
| Power Module | PM240-2 or PM250 sized to motor | Match motor FLA plus 1.25× service factor |
| SIMATIC S7-1200 CPU | CPU 1214C DC/DC/DC, 1215C, or higher with PROFINET interface | Firmware ≥ V4.2 recommended; example part 6ES7214-1AG40-0XB0 |
| Potentiometer | 1 kΩ to 10 kΩ, linear (B) taper, ≥ 0.25 W, panel mount | 10 kΩ is the most common industrial value. Audio taper (A) is wrong for proportional control. |
| Shielded twisted-pair cable | 22 AWG minimum, e.g., Belden 8761 | Maximum 30 m for 0–10 V without buffer amplifier |
| TIA Portal | V16 SP1 minimum, V17 or V18 recommended | Includes SINAMICS Startdrive option |
| GSDML file | GSDML-V*-Siemens-SINAMICS_G120_*-PN.xml | Install via Options → Manage general station description files (GSD) |
| SINAMICS firmware | V4.7 SP10 minimum, V5.2 recommended | Check via r0018 in the drive |
Verify the SINAMICS firmware version online in TIA Portal: connect to the drive, open Parameters → All parameters, filter for r0018, and confirm the firmware build before proceeding.
3. Hardware Wiring of the Potentiometer to the G120 Analog Input
The CU240E-2 PN exposes a 0–10 V reference and a differential analog input on the low-voltage terminal block. Wire the potentiometer as a three-terminal voltage divider:
| CU240E-2 PN Terminal | Signal | Potentiometer Connection |
|---|---|---|
| 1 | +10 V reference output (10 mA max) | One end of resistive element |
| 2 | GND (analog ground) | Other end of resistive element |
| 3 | AI0+ (analog input 0 positive) | Wiper |
| 4 | AI0− (analog input 0 negative) | Jumper to terminal 2 for single-ended |
Use shielded twisted-pair cable between the potentiometer and the CU. Ground the shield at the CU end only (terminal 2 or the shield clamp on the control unit housing). Maximum recommended run length for a 0–10 V signal is 30 m; beyond that, switch to a 4–20 mA current loop with a 500 Ω shunt resistor to avoid voltage drop and noise pickup.
The analog input on the CU240E-2 PN has an input impedance above 100 kΩ in voltage mode, so the 10 kΩ potentiometer draws under 1 mA from the 10 V reference — well below the 10 mA terminal rating. If you must use a higher-value pot (e.g., 47 kΩ for low-power applications), increase P0757[0] and P0759[0] accordingly to match the scaled input range.
4. SINAMICS G120 Parameter Map for Analog Speed Reference
The following parameters must be written to the drive. They are accessible via TIA Portal → drive device → Parameters → Online, via the BOP-2/IOP-2, or via the SINA_PARA function block from a PLC routine.
| Parameter | Description | Value | Comment |
|---|---|---|---|
| P0010 | Commissioning parameter filter | 1 | Enter commissioning mode before writing motor data |
| P0100 | Motor frequency standard | 0 (Europe, 50 Hz, kW) or 1 (N. America, 60 Hz, hp) | Match site standard |
| P0304 | Motor rated voltage | e.g., 400 V | From motor nameplate |
| P0305 | Motor rated current | e.g., 5.0 A | From motor nameplate |
| P0307 | Motor rated power | e.g., 2.2 kW | From motor nameplate |
| P0310 | Motor rated frequency | e.g., 50 Hz | From motor nameplate |
| P0311 | Motor rated speed | e.g., 1450 rpm | From motor nameplate |
| P0335 | Motor cooling | 0 (self-cooled) or 1 (forced-cooled) | Affects thermal model |
| P0010 | Commissioning filter | 0 | Exit commissioning before drive will run |
| P0700 | Command source | 2 or 6 (firmware dependent) | Selects PROFIdrive/PROFINET for STW1 from PLC |
| P1000[0] | Main setpoint source | 2 (Analog setpoint 1) | Routes AI0 to main setpoint pipeline |
| P1070[0] | Main setpoint connector | r0755[0] (BICO: 755.0) | Connect AI0 actual to main setpoint |
| P0756[0] | AI0 type | 0 (unipolar voltage 0–10 V) | Matches potentiometer |
| P0757[0] | AI0 x1 input value | 0 V | Minimum input |
| P0758[0] | AI0 y1 output value | 0 % | Output at minimum |
| P0759[0] | AI0 x2 input value | 10 V | Maximum input |
| P0760[0] | AI0 y2 output value | 100 % | Output at maximum |
| P0761[0] | AI0 deadband width | 0 V (0.1 V for noisy sites) | Suppresses low-voltage jitter |
| P1080 | Minimum speed | 0 rpm | Lower clamp |
| P1082 | Maximum speed | 1450 rpm (motor rated) | Upper clamp; 100 % reference |
| P1120 | Ramp-up time | 10 s | Adjust to application |
| P1121 | Ramp-down time | 10 s | Adjust to application |
| P1135 | OFF3 ramp-down time | 3 s | Fast-stop ramp |
| P0971 | Save parameters to ROM | 1 | Commit changes to non-volatile memory |
When P1000[0] = 2, parameter P1070[0] defaults to r0755[0] automatically. If you previously changed P1070[0] to a non-AI source, you must re-assign it to 755.0 in the BICO editor. Without this re-assignment, the analog input is sampled but never reaches the main setpoint pipeline.
5. Configuring the Drive in TIA Portal
- Open the TIA Portal project containing the S7-1200 CPU and the SINAMICS G120 device.
- If the G120 is not yet in the project, install its GSDML first: Options → Manage general station description files (GSD), browse to the GSDML, and confirm.
- Add the SINAMICS G120 from the hardware catalog under Drives & Starters → SINAMICS → SINAMICS G120, matching the order number of your CU (e.g., 6SL3246-0BA22-1FA0).
- Drag the drive onto the PROFINET subnet of the CPU. Assign a unique IP address (e.g., 192.168.0.20) and a PROFINET device name (e.g., "g120-cu240e"). The device name must match what you assign later with the Topology Editor or PRONETA.
- Open the drive's device view. Under Device configuration → PROFINET interface → Telegram configuration, insert Standard Telegram 1 (2 PZD in / 2 PZD out). Do not insert Standard Telegram 2 or 3 — they include NSOLL/NIST, which would conflict with the analog setpoint strategy unless P1000 is re-routed.
- Compile the project (Ctrl+B) and download the hardware configuration to the CPU and the drive. Confirm the drive accepts the new name by checking the BF LED transitions from red to off.
The Standard Telegram 1 assignment delivers STW1 (2 bytes) from the PLC to the drive and returns ZSW1 (2 bytes) plus the actual speed NIST (in NIST mode) back to the PLC. The cyclic I/O exchange updates every PROFINET bus cycle, typically 1–4 ms on a 1 ms send clock.
6. SINA_SPEED Block Integration
The SINA_SPEED block (FB285 in older library versions, FB30002 in TIA V17) from the SINAMICS blocks library is the standard interface to a SINAMICS drive over PROFINET. Add it to a function block or OB in the S7-1200 program and wire the inputs as follows:
Inputs
| Input | Data Type | Wiring | Meaning |
|---|---|---|---|
| LADDR | HW_IO | HW identifier of the drive (from PLC system constants) | PROFINET logical address |
| Enable | BOOL | Run command from HMI or digital input | Drive enable / start (STW1 bit 0 via block logic) |
| FaultAck | BOOL | Rising edge from a "Reset" button | Acknowledge faults (STW1 bit 7) |
| SpeedSetpoint | REAL | 0.0 (constant) | Ignored when P1000 = analog |
| SpeedFixed[1..15] | ARRAY OF REAL | Jog speed e.g., 200 rpm | Fixed speeds via PROFIdrive (optional) |
| CtrlFlags.SlowStop | BOOL | E-STOP or coast-stop button | OFF1 / coast to stop |
| CtrlFlags.FastStop | BOOL | Fast stop button | OFF3 quick ramp |
| CtrlFlags.Reverse | BOOL | Forward/Reverse selector | STW1 bit 11 |
| CtrlFlags.EnableJogPos | BOOL | Jog forward pushbutton | STW1 bit 8 (ENA_JOG_RIGHT) |
| CtrlFlags.EnableJogNeg | BOOL | Jog reverse pushbutton | STW1 bit 9 (ENA_JOG_LEFT) |
| ConfigAxis.RefSpeed | REAL | 1450.0 (motor rated rpm) | 100 % reference for fixed speeds |
| ConfigAxis.MaxSpeed | REAL | 1500.0 | Upper clamp |
| ConfigAxis.MinSpeed | REAL | 0.0 | Lower clamp |
Outputs
| Output | Data Type | Meaning |
|---|---|---|
| AxisStatus.Enabled | BOOL | Drive is enabled and running |
| AxisStatus.Fault | BOOL | Active fault present |
| AxisStatus.ReadyToOperate | BOOL | Ready to receive ON command |
| ActualSpeed | REAL | Current speed in rpm |
| ActualTorque | REAL | Current torque in Nm |
| ActualCurrent | REAL | Current in A |
Minimum required F-block call (SCL example for OB1):
// One-time initialization in OB100 / startup
g120_sina.ConfigAxis.RefSpeed := 1450.0; // motor rated speed
g120_sina.ConfigAxis.MaxSpeed := 1500.0; // upper clamp
g120_sina.ConfigAxis.MinSpeed := 0.0; // lower clamp
// Cyclic call in OB1
g120_sina.LADDR := "G120_CU240E".HW_ID;
g120_sina.Enable := start_cmd AND NOT estop;
g120_sina.FaultAck := reset_pulse;
g120_sina.SpeedSetpoint := 0.0; // drive ignores, P1000 = analog
g120_sina.CtrlFlags.Reverse := dir_reverse;
g120_sina.CtrlFlags.EnableJogPos := jog_fwd;
g120_sina.CtrlFlags.EnableJogNeg := jog_rev;
g120_sina();
running := g120_sina.AxisStatus.Enabled;
speed_rpm := g120_sina.ActualSpeed;
fault_active := g120_sina.AxisStatus.Fault;
7. Setpoint Source Routing and Direction Control
With Telegram 1 selected and P0700 = 6 (PROFINET), STW1 from SINA_SPEED drives ON/OFF1, OFF2, OFF3, enable ramp generator, enable setpoint, ramp-function-generator enable, jog bits, and the reverse bit. The setpoint pipeline inside the drive runs as follows:
- Analog input AI0 is sampled and normalized to a percentage (0–100 %) by P0756–P0760; the live value is exposed at r0755[0].
- P1070[0] = r0755[0] routes the AI0 percentage into the main setpoint connector.
- P1000[0] = 2 confirms "Analog setpoint 1" as the main setpoint source. P1070 then defaults to r0755[0] when P1000 is set to 2.
- The setpoint passes through the ramp-function generator (P1120 ramp-up, P1121 ramp-down).
- P1080 (min) and P1082 (max) clamp the setpoint.
- Direction is taken from STW1 bit 11 (set by SINA_SPEED Reverse input). With a unipolar 0–10 V potentiometer, the magnitude is positive; bit 11 reverses the sign.
The decoupling of command source (P0700) and setpoint source (P1000) is one of the most useful features of the SINAMICS platform. It allows a SINA_SPEED-based PROFINET control loop to coexist with a fully analog speed reference — a configuration commonly found in retrofit projects where a new PLC is being added but the operator interface is being retained.
8. Speed Scaling, Ramps, and Limits
With the default AI scaling (0 V = 0 %, 10 V = 100 %), the motor speed tracks the potentiometer between P1080 and P1082. Use the formula:
n_setpoint (rpm) = P1080 + (P1082 − P1080) × (V_pot / 10 V)
Example: P1080 = 0, P1082 = 1450, V_pot = 5 V → n_setpoint = 0 + (1450 − 0) × (5/10) = 725 rpm.
Practical ramp settings:
- P1120 (ramp-up): 5–20 s for general-purpose machinery. Conveyor belts: 5 s. Centrifugal pumps: 10 s. Fans: 15–30 s.
- P1121 (ramp-down): equal to or slightly longer than P1120 to avoid regenerative faults on low-inertia loads.
- P1135 (OFF3 ramp): typically 3 s for fast-stop compliance with category 1 stops.
Set P1082 to the motor's rated speed to get a 1:1 potentiometer-to-speed ratio. If a coarser ratio is desired (e.g., to use only 50 % of the pot's rotation for full speed), scale P0760[0] below 100 % or reduce P1082. The lower clamp P1080 also doubles as a creep-speed minimum if you want the pot to never reach zero RPM.
9. PROFIdrive Telegram and Drive State Machine
The PROFIdrive profile (PNO order no. 3.172) defines the drive state machine that SINA_SPEED implements through STW1 bit manipulation. The key states for this application are:
| State | STW1 bits set | Trigger from SINA_SPEED |
|---|---|---|
| S1 (Switching on inhibited) | OFF1=0, OFF2=1, OFF3=1 | Initial; no Enable input |
| S2 (Ready to switch on) | OFF1=1, OFF2=1, OFF3=1 | After Enable=TRUE and no faults |
| S3 (Switched on) | OFF1=1, OFF2=1, OFF3=1, ON=1 | SINA_SPEED sets ON after ready |
| S4 (Operation) | All enables true, no OFF commands | Ramp-function generator active |
| Reverse during S4 | Bit 11 = 1 (no OFF) | CtrlFlags.Reverse flips bit 11 without stopping |
ZSW1 mirrors the state back to the PLC. The bit assignment in ZSW1 enables the SINA_SPEED block to populate its AxisStatus output structure without any custom decoding. Always read ZSW1 in trace mode during commissioning to confirm the state transitions follow your Enable and FaultAck inputs.
10. Commissioning and Verification
- Power up the drive. Verify there is no active fault (r2139 bit 3 should be 0). The drive's RDY LED should be solid green; the BF LED should be off.
- Establish PROFINET connection. Confirm the BF (bus fault) LED on the CU is off and the RDY LED is solid green. The LINK LED on the PROFINET port should be steady when the cable is connected.
- From TIA Portal, go online with the drive and confirm that SINA_SPEED has built a clean cyclic link:
AxisStatus.ReadyToOperateshould be TRUE afterEnableis set. - Set
Enable= TRUE from the PLC. Confirm the motor begins to turn at zero speed (P1080). Slowly rotate the potentiometer; speed should rise linearly to P1082. - Toggle
ReverseviaSINA_SPEED CtrlFlags.Reverse. Confirm the motor direction reverses while speed tracks the potentiometer. - Toggle
EnableJogPosandEnableJogNeg. Confirm the motor runs at the configured fixed jog speed. - Trigger
SlowStopandFastStop. Confirm the motor stops within the configured ramp times (P1121 for slow, P1135 for fast). - Force a fault (e.g., trip OFF2 by removing Enable while running). Confirm the drive faults, sets ZSW1 fault bit, and requires FaultAck to clear.
- When everything is verified, set
P0971 = 1to write all parameters to the drive's non-volatile memory. Wait for the acknowledgment (the BOP-2 displays "busy" briefly, then returns to the standard display).
11. Troubleshooting Matrix
| Symptom | Likely Root Cause | Verification | Fix |
|---|---|---|---|
| Drive ignores potentiometer, runs at fixed speed | P1000[0] still set to PROFIdrive | Read P1000[0] online; should be 2 | Set P1000[0] = 2, save with P0971 = 1 |
| Motor runs at 0 rpm despite Enable | OFF1 bit not set in STW1 | Monitor STW1 with trace; bit 0 should be 1 | Confirm SINA_SPEED Enable input is TRUE and FaultAck is not latched |
| Speed does not reach P1082 | AI scaling limit P0760[0] < 100 % | Read P0760[0] online | Set P0760[0] = 100 % or increase P1082 |
| Speed is erratic, jumps in steps | Shield not grounded or analog noise | Scope AI0+ to GND; check for 50/60 Hz ripple | Re-route shield to CU terminal 2 only, increase P0761[0] to 0.1–0.5 V |
| Drive faults F07900 / F30002 on start | Motor data not entered or P0010 not returned to 0 | Read P0010; should be 0 when running | Enter motor nameplate, set P0010 = 0, then P0970 = 1 to save |
| Reverse does not work | STW1 bit 11 not being set | Monitor CtrlFlags.Reverse in the PLC | Verify the tag driving CtrlFlags.Reverse updates |
| Jog does not engage | Jog bits require a specific sequence in STW1 | Read r0898 (control word status) | Use the dedicated EnableJogPos/EnableJogNeg SINA_SPEED inputs |
| BF LED on CU is red | PROFINET connection lost | Check CPU in TIA Portal online diagnostics | Verify IP address and device name match the configuration |
| Drive runs at full speed with pot at minimum | AI0+ and AI0- swapped or pot wired wrong | Measure voltage at terminal 3 vs terminal 2 | Re-wire potentiometer; verify wiper goes to AI0+ |
| F31117 / PROFIdrive telegram error | Telegram mismatch between SINA_SPEED and drive | Check drive telegram configuration | Set drive to Standard Telegram 1 matching SINA_SPEED call |
| Speed tracks pot but drive won't enable | Fault not cleared | Read r0947 (fault code) | Set FaultAck rising edge in PLC |
| Motor ramps but overshoots or oscillates | Speed controller not optimized | Check r1349 (actual torque ripple) | Run P1960 = 1 (rotating measurement) or P1910 = 1 (static measurement) |
| Pot reading noisy in TIA trace | Scan time too long | Check AI0 scan time setting (p0753) | Reduce p0753 to 4 ms and average with P0761 deadband |
FAQ
Can I keep the PLC's SINA_SPEED speed setpoint and add the potentiometer as a supplementary reference?
Yes. Configure P1000[0] = 6 (PROFIdrive) for the main setpoint and P1000[1] = 2 (Analog) for the supplementary setpoint. P1070[0] holds the main PROFIdrive value, and P1075[0] = r0755[0] sums the potentiometer. The two are added in the setpoint pipeline after the ramp generator unless you use P1076 (setpoint source main/extra).
My G120 CU has different terminals than the CU240E-2 PN. Where do I wire the potentiometer?
Look up the "Connection diagram" in the operating instructions for your specific CU. The reference terminals (+10 V / GND) and analog input numbering vary. For example, CU240B-2 PN uses terminals 1/2/3/4 but with the same polarity convention. The CU230P-2 has terminals 12/13/14/15 for AI0 and +10 V at terminal 10. The parameter set for AI scaling (P0756–P0761) is identical across the G120 family.
Why does the drive ignore the potentiometer even though P1000[0] = 2?
Check P1070[0]. If it is left at a non-r0755 source (e.g., 0 = no setpoint), the analog input is not connected to the main setpoint pipeline. Set P1070[0] = 755.0 (the SINAMICS BICO shorthand for r0755[0]). Also confirm P0010 = 0 — drive ignores setpoint changes while in commissioning mode.
Can I replace the potentiometer with a 4–20 mA signal from a separate controller?
Yes. Set P0756[0] = 1 (unipolar current 0–20 mA) for a 0–20 mA loop, or P0756[0] = 1 with P0757[0] = 4 mA and P0759[0] = 20 mA for a standard 4–20 mA loop. Wire the positive conductor to terminal 3 (AI0+) and the negative to terminal 2 (GND). AI0- (terminal 4) can be left open for a floating single-ended current loop or tied to GND. The 0–10 V reference on terminal 1 is unused in this case.
How do I prevent the motor from creeping at very low potentiometer voltages?
Set P0761[0] to 0.1–0.5 V to create a deadband. Below the threshold, the AI output is forced to 0 %, so the motor stays at P1080. Alternatively, raise P1080 to a small positive value (e.g., 30 rpm) to require a minimum setpoint before motion begins. The deadband also suppresses noise from a worn potentiometer near zero.