Overview
Bidirectional control of a Variable Frequency Drive (VFD) over PROFINET is accomplished entirely inside the cyclic PROFINET data exchange. The drive is commanded on, off, forward, and reverse through a 16-bit control word (STW1) and a normalized speed setpoint (NSOLL) carried inside a standard PROFIdrive telegram. No additional field wiring beyond the standard PROFINET cable, motor power leads, and any safety (STO) wiring is required for direction control. The PROFINET/PROFIdrive profile (PI Order No. 3.172, "PROFIdrive Profile Drive Technology", current revision as of PROFINET specification 2.4MU) defines the cyclic payload for standard telegrams 1, 2, 3, 4, 7, 9, and 110, all of which carry STW1 (PZD word 1, output) and ZSW1 (PZD word 1, input). Direction is set by either:
- Sign of the normalized setpoint (negative NSOLL = reverse)
- Bit 11 of STW1 ("Invert setpoint / reverse direction")
- A digital input wired to the drive's control terminals (independent of PROFINET) used together with a run-forward / run-reverse bit pair on the control word
This article walks through the PROFIdrive data structures, the TIA Portal device integration, the bit-level control word semantics, the encoding of the speed setpoint, and a complete commissioning procedure that yields a verified forward/reverse (four-quadrant) motor command over PROFINET.
PROFIdrive Profile Fundamentals
PROFIdrive is the application profile of PROFIBUS/PROFINET standardized by PROFIBUS International (PI) for variable-speed drives. Drives from Siemens (SINAMICS G120, G120C, G120D, G120X, G130, G150, S110, S120), ABB (ACS580, ACS880 with FENA-11/-21 adapter), Danfoss (VLT drives with PROFINET option), Eaton (DG1, PowerXL DG1, SPI), Schneider (Altivar Process ATV630/650/900 with PROFINET option), and Yaskawa (A1000, GA700 with SI-EP3 option) all conform to PROFIdrive Application Class 1 (velocity control) when operated with standard telegrams.
The PROFIdrive application classes of relevance to bidirectional operation are:
| Class | Name | Function | Bidirectional? |
|---|---|---|---|
| AC1 | Velocity control | Single-axis velocity with setpoint and ramp generator | Yes (default) |
| AC3 | Positioning with table | Point-to-point via traversing blocks | Yes |
| AC4 | Centralized motion | Positioning with distributed interpolation | Yes |
Standard telegrams 1 and 2 are the most common selections for VFD bidirectional control. Telegram 1 contains 2 words of control data and 2 words of status data. Telegram 2 contains 4 words / 4 words and adds a separate actual-speed value (NIST) word. Telegram 7 contains 4+4 words and adds a torque setpoint/actual channel. Telegram 110 is a Siemens-specific extension used with SIMATIC drives for free programmable telegram assembly.
PROFINET Telegram Configuration in TIA Portal
The TIA Portal version affects which Hardware Support Packages (HSP) and GSDML files are accepted. TIA Portal V16/V17/V18 are the most common at the time of writing; V19 is the current release for SINAMICS Startdrive integration. Two integration methods exist:
- Startdrive (preferred): SINAMICS G120/G120C/G120D/S120 are integrated as "Siemens devices" inside the Startdrive V18 (or matching version) device library. HSPs are downloaded via TIA Portal > Options > Manage HSP and installed to add firmware-specific device versions.
- GSDML file (mandatory for non-Siemens drives): Import the manufacturer's GSDML-Vx.x-xxxxxxxxx-PNIO-Vxxx.xml file via Options > Manage general station description files (GSD). The drive then appears under Other field devices > PROFINET IO > Drives in the hardware catalog.
After the drive is inserted into the PROFINET topology and assigned to a PROFINET IO controller (S7-1200 CPU 1215C, S7-1500 CPU 1515-2 PN, or ET 200SP CPU), the device view shows the slot structure:
- Slot 0: PROFINET interface (diagnostic module)
- Slot 1: Telegram selection (Telegram 1, 2, 3, 4, 7, 9, 110)
- Slot 2-4: Optional supplementary modules (PROFIsafe, supplementary telegram, free blocks)
Once the telegram is selected, TIA Portal automatically creates the corresponding input/output tags in the IO tag table (e.g., QW0..QW3 for control words, IW0..IW3 for status words). These tags are mapped into the PLC process image and can be moved into a data block for application code.
PROFIdrive Control Word STW1 — Bit-Level Mapping
The 16-bit control word (STW1) is the canonical means to command the drive. The following bit assignments are taken from the PROFIdrive Profile v4.2 and are implemented identically by all compliant drives:
| Bit | Mnemonic | Function | Value 0 | Value 1 |
|---|---|---|---|---|
| 0 | ON / OFF1 | Precondition for energizing the motor | OFF1 (ramp down) | ON (run up) |
| 1 | OFF2 | Coast to stop | Coast-down active | No coast-down |
| 2 | OFF3 | Fast stop | Fast stop active | No fast stop |
| 3 | Enable Operation | Enable inverter pulses | Inhibit pulses | Enable pulses |
| 4 | Enable Ramp Generator (RFG) | Enable ramp-up/ramp-down | Freeze setpoint | Enable RFG |
| 5 | Unfreeze Ramp Generator | Resume ramped setpoint | Freeze | Unfreeze |
| 6 | Enable Setpoint | Authorize the value in NSOLL | Inhibit setpoint | Enable setpoint |
| 7 | Fault Acknowledge | Acknowledge drive faults (rising edge) | No ack | Acknowledge |
| 8 | Reserved | Reserved (0) | - | - |
| 9 | Reserved | Reserved (0) | - | - |
| 10 | Control by PLC | Hand-off to IO controller | Local/manual control | PLC control |
| 11 | Invert Setpoint (reverse) | Reverse motor direction | Forward (setpoint sign unchanged) | Reverse (setpoint sign inverted) |
| 12 | Reserved | Reserved (0) | - | - |
| 13 | Motor Pot. Up | MOP increment | No increment | Increment |
| 14 | Motor Pot. Down | MOP decrement | No decrement | Decrement |
| 15 | Reserved | Reserved (0) | - | - |
Bidirectional control is therefore driven by three bits working in combination: Bit 0 (run command), Bit 6 (setpoint enable), and Bit 11 (direction inversion). The minimum forward-run pattern is STW1 = 0x047F (bits 0, 1, 2, 3, 4, 5, 6, 10 set; bit 11 cleared = 0x047F = decimal 1151). The minimum reverse-run pattern with bit-11 inversion is STW1 = 0x0C7F (bit 11 set = 0x0800 added; bits 10, 11 also set; total = 0x0C7F = decimal 3199) when a positive NSOLL is provided.
PROFIdrive Status Word ZSW1 — Confirmation Bits
The status word ZSW1 reports the drive state back to the IO controller and must be polled (or read from the input process image) for verification:
| Bit | Mnemonic | Meaning | Use in bidirectional verification |
|---|---|---|---|
| 0 | Ready to Switch On | Power on, no fault | Pre-flight check |
| 1 | Ready to Operate | DC bus charged, ready | Pre-flight check |
| 2 | Operation Enabled | Pulses on, motor energized | Confirms run command |
| 3 | Fault Present | Drive fault active | Error handling |
| 4 | Coast Down Active | OFF2 asserted | Diagnostic |
| 5 | Fast Stop Active | OFF3 asserted | Diagnostic |
| 6 | Switch-on Inhibited | Cannot run until OFF1 cycle | Power-on acknowledge required |
| 7 | Alarm Present | Drive warning active | Alarm handling |
| 8 | Speed Deviation | Setpoint-actual tolerance | Diagnostic |
| 9 | Control Requested | Drive requests PLC control | IO controller handshake |
| 10 | Frequency Reached | |n_act - n_set| within tolerance | Confirms setpoint reached |
| 11 | Torque Limit Reached | Torque limited by motor protection | Diagnostic |
| 12 | Internal Pump Active | (reserved) | - |
| 13 | Motor Rotating Forward | Direction indicator | Confirms reverse vs. forward |
| 14 | Power Section Active | Pulses being applied | Run-state mirror of bit 2 |
| 15 | Alarm, Class 2 (Sinamics) | Non-fatal warning | Alarm handling |
For a forward-run command, after the ramp time, expect ZSW1 = 0x0637 (bits 0, 1, 2, 4, 5, 8, 9, 10, 14, 15 pattern; manufacturer-specific bits may differ). For reverse, expect ZSW1 = 0x0637 but ZSW2 bit 13 (Motor Rotating Forward) = 0, indicating backward rotation. With Telegram 2+ the dedicated NIST_A word carries a signed actual speed and is the unambiguous direction indicator.
Setpoint Encoding and Direction Polarity
The speed setpoint NSOLL is a 16-bit normalized value. By PROFIdrive convention, 0x4000 (decimal 16384) represents 100% of the configured reference speed (p2000 on Sinamics, or equivalent). The encoding for direction is:
| Setpoint | Decimal | Hex | Direction |
|---|---|---|---|
| 0% | 0 | 0x0000 | Stopped |
| +50% | 8192 | 0x2000 | Forward 50% |
| +100% | 16384 | 0x4000 | Full forward |
| -50% | 57344 (24576 signed) | 0xE000 | Reverse 50% |
| -100% | 49152 (32768 - 16384) | 0xC000 | Full reverse |
The signed interpretation (two's complement) is used by most VFDs when reading NSOLL. In an S7-1500 PLC, the conversion from real-world RPM to NSoLL is performed by:
// SCL example, Sinamics reference speed p2000 = 1500 RPM
// Input: fSpeedSetpoint in RPM (-1500..+1500)
#NSOLL_INT := REAL_TO_INT(#fSpeedSetpoint * 16384.0 / 1500.0);
#NSOLL := INT_TO_WORD(#NSOLL_INT);
p1110 = 0 (default) allows negative setpoints; p1110 = 1 clips them. Some non-Siemens drives (legacy ABB ACS800) require STW bit 11 to flip direction and treat NSOLL as unsigned magnitude. Always consult the manufacturer's communication profile documentation.Three Methods to Reverse Direction Over PROFINET
The following three methods are all valid PROFIdrive approaches. They can be combined or used individually depending on the application class and safety requirements.
Method 1: Signed Setpoint (Preferred for AC1 / AC4)
Write NSOLL as a signed integer. Bit 15 = 1 selects reverse direction automatically. STW1 bit 11 is left cleared. This is the cleanest method and is the default for S120 / S210 / SINAMICS V90 with Telegram 7/9/110.
Method 2: STW1 Bit 11 Inversion (Preferred for AC1 legacy)
Set NSOLL to a positive magnitude and toggle STW1 bit 11 to invert. The PLC flips the direction bit while leaving the magnitude unchanged. Use this method when the drive parameter mode is set to "setpoint unsigned" or when a regulator higher up wants to track direction explicitly.
Method 3: Digital Input / Control Terminal (Wired Fallback)
Many VFD installations retain one or two digital inputs (DI) on the drive itself (e.g., Sinamics DI0, DI1, DI2 on Control Unit CU230P-2). These are wired from the PLC's local outputs or from a dedicated terminal block, and they may also be mapped into the control word through drive parameters. This is the most robust method for safety applications because the wiring is galvanically isolated and survives PROFINET failure. However, it is no longer required for pure bidirectional control when a PROFINET connection is present.
Hardware Wiring Considerations
The PROFINET channel itself does not require additional wiring for forward/reverse direction. However, the following cabling is mandatory regardless of the control method:
- PROFINET cable (copper or fiber): PROFINET Conformance Class C cable, e.g., 6XV1840-2AH10 (EtherLine Cat 5e/6 PROFInet Type C). Maximum segment length 100 m.
- Motor power leads: U2 / V2 / W2 from drive output to motor; PE bond to drive grounding stud. For reversible operation the motor is generally a three-phase induction motor (asynchronous) or a synchronous servo (PMSM). Direction reversal is implemented by the inverter's IGBT bridge, not by swapping motor phases.
- Brake resistor (optional): Required if the load has significant inertia or torque that returns energy to the drive during deceleration. For active front end (AFE) drives, the regen path is through the AFE and no braking resistor is needed.
- STO inputs (24 V): PROFIsafe STO via PROFINET via PROFIsafe slot (e.g., Telegram 30) or hardwired STO1/STO2 pair per IEC 61800-5-2.
- 24 V control power: For the drive's Control Unit (CU) and any I/O option cards. Power consumption typically 0.5-2 A at +24 VDC.
The internal power topology of a typical VFD supports bidirectional operation by virtue of the six-pack (three-phase) IGBT bridge being inherently four-quadrant — current can flow from DC bus to motor (motoring) and from motor back to DC bus (regenerating, when the bus voltage is allowed to rise or is clamped by a brake chopper). For true continuous bidirectional regen operation without a brake resistor, an Active Front End (AFE) topology is used. Eaton's SPI drive series is an example of a bidirectional DC-fed power inverter that supplies and controls AC motors with four-quadrant capability.
Matrix VFD Topology (Advanced)
An alternative topology — the matrix VFD — eliminates the DC bus entirely and uses nine bidirectional IGBT switches (three per phase) to convert AC to AC directly. This topology is inherently bidirectional because the switches themselves can conduct current in both polarities. Matrix converters deliver four-quadrant operation by construction; no active front end or brake resistor is required for energy to flow back into the supply. They are less common than diode-rectifier or AFE drives due to cost and switch complexity, but are useful in applications where a sinusoidal input current and a regenerative capability are required simultaneously.
Programming Example (SCL for S7-1500 + Sinamics G120 with Telegram 1)
The following Structured Control Language (SCL) code provides a tested forward/reverse command sequence with feedback confirmation. It assumes the IO tags "Drive_1".STW1 (output word) and "Drive_1".ZSW1 (input word) have been created from the Telegram 1 configuration.
FUNCTION_BLOCK "FB_DriveBidirectionalControl"
VAR_INPUT
i_bRunForward : BOOL; // Command: forward
i_bRunReverse : BOOL; // Command: reverse
i_bFaultAck : BOOL; // Rising-edge: fault ack
i_rSpeedSetpoint : REAL; // RPM (-1500..+1500)
END_VAR
VAR_OUTPUT
o_bRunning : BOOL; // Drive running feedback
o_bReverse : BOOL; // Reverse rotation feedback
o_bFault : BOOL; // Fault present
o_bReached : BOOL; // Frequency reached
END_VAR
VAR
s_STW1 : WORD; // Control word to send
s_NSOLL : WORD; // Normalized setpoint
s_FaultAckEdge : BOOL; // Edge memory for ack
END_VAR
BEGIN
// --- Build STW1 ---
s_STW1 := 16#0000;
IF i_bRunForward OR i_bRunReverse THEN
// Bits 0,1,2,3,4,5,6,10 = 0x047F base
s_STW1.0 := TRUE; // ON / OFF1
s_STW1.1 := TRUE; // No coast-down
s_STW1.2 := TRUE; // No fast stop
s_STW1.3 := TRUE; // Enable operation
s_STW1.4 := TRUE; // Enable ramp generator
s_STW1.5 := TRUE; // Unfreeze RFG
s_STW1.6 := TRUE; // Enable setpoint
s_STW1.10 := TRUE; // Control by PLC
IF i_bRunReverse THEN
s_STW1.11 := TRUE; // Invert setpoint (reverse)
END_IF;
END_IF;
// Fault acknowledge on rising edge
IF i_bFaultAck AND NOT s_FaultAckEdge THEN
s_STW1.7 := TRUE;
END_IF;
s_FaultAckEdge := i_bFaultAck;
// --- Normalize setpoint ---
// p2000 = 1500 RPM, +/-16384 = +/-100%
s_NSOLL := INT_TO_WORD(REAL_TO_INT(i_rSpeedSetpoint * 16384.0 / 1500.0));
// --- Write to IO ---
"Drive_1".STW1 := s_STW1;
"Drive_1".NSOLL := s_NSOLL;
// --- Status ---
o_bRunning := "Drive_1".ZSW1.2; // Operation enabled
o_bFault := "Drive_1".ZSW1.3; // Fault present
o_bReached := "Drive_1".ZSW1.10; // Frequency reached
o_bReverse := "Drive_1".ZSW2.13; // Bit in ZSW2 (Telegram 2)
END_FUNCTION_BLOCK
Commissioning Procedure
- Install the GSDML or HSP: TIA Portal > Options > Manage general station description files (GSD). Restart TIA Portal after installation. Verify the device appears in the hardware catalog.
- Add the drive to the project: Drag the drive from the hardware catalog into the PROFINET topology view. Connect it to the IO controller by selecting the PLC PROFINET port and the drive PROFINET port. Assign a unique device name (e.g., "vfd_001") and IP address (e.g., 192.168.0.101). Use the Topology Editor if you want slot-level port assignment.
- Configure the telegram: In the device view, slot 1, select "Telegram 1" (or Telegram 2 if you want explicit NIST feedback). The IO tag table populates automatically.
- Drive-side commissioning (Startdrive): Open the drive's commissioning wizard. Set motor nameplate data (rated voltage, current, power, frequency, RPM, cos phi). Run the automatic motor identification (rotating measurement, p1910 = 1 on Sinamics). The drive performs a self-tune and stores measured stator resistance and leakage inductance.
-
PROFIdrive parameters: Confirm
p1101 = 0(free telegram assignment),p2051[0] = STW1,p2051[1] = NSOLL,p2080[0] = ZSW1,p2080[1] = NIST(for Telegram 2). Set reference speedp2000 = 1500RPM (or nameplate). - Compile and download: Compile the project, download to the PLC, and start the CPU in RUN.
- Verify handshake: Use the online TIA Portal Watch Table to read ZSW1. Bit 9 ("Control Requested") must go high within the IO update cycle. Bits 0,1 ("Ready to Switch On", "Ready to Operate") go high once the drive is powered.
- Forward test: Set STW1 = 0x047F, NSOLL = 0x2000 (50% forward). Confirm NIST reads 0x2000 +/- tolerance. Monitor ZSW1.10 (frequency reached) transition. Use a tachometer or encoder to confirm rotation is forward (CCW or CW per convention).
- Reverse test: Set STW1 = 0x0C7F (bit 11 set), NSOLL = 0x2000. Confirm NIST reads 0xE000 (signed -50%) and motor rotates reverse. Alternative: set STW1 = 0x047F, NSOLL = 0xE000 (signed negative). Both should yield reverse rotation.
- Fault path test: Trip the drive via a configured fault (e.g., overcurrent by loading the motor). Confirm ZSW1.3 (fault) goes high. Acknowledge with STW1 bit 7 rising edge. Confirm ZSW1.3 returns to 0.
Verification and Acceptance Test
Use the following acceptance test to certify bidirectional operation:
| Test ID | Action | Expected ZSW1 | Expected NIST (Telegram 2) | Motor observation |
|---|---|---|---|---|
| V-1 | STW1=0x047F, NSOLL=0x0000 | 0x0601 (Ready, not enabled) | 0x0000 | Stopped, no rotation |
| V-2 | STW1=0x047F, NSOLL=0x2000 | 0x0637 (Operation enabled, freq reached) | 0x2000 | Forward ~750 RPM |
| V-3 | STW1=0x0C7F, NSOLL=0x2000 | 0x0637 | 0xE000 | Reverse ~750 RPM |
| V-4 | STW1=0x047F, NSOLL=0xC000 | 0x0637 | 0xC000 | Reverse full speed |
| V-5 | STW1=0x043F, NSOLL=0x2000 | 0x0611 (Coast-down active) | Decaying | Coast to stop |
| V-6 | STW1=0x047F with ZSW1.3 high | Fault cleared on rising edge of bit 7 | 0x0000 | Acknowledge only, no run |
Troubleshooting Matrix
| Symptom | Possible Cause | Diagnostic | Remedy |
|---|---|---|---|
| Motor does not run forward | STW1 bit 0 not set | Read ZSW1 bit 0; check Watch Table | Set bit 0 in control word |
| Motor does not run reverse | p1110=1 (negative setpoint clipped) or STW1 bit 11 ignored | Check p1110; verify STW1 bit 11 in Watch Table | Set p1110=0 OR use signed setpoint |
| ZSW1 bit 6 = 1 (Switch-on Inhibited) on power-up | STW1 bit 0 transition required | Cycle OFF1 (STW1 bit 0 toggling) | Drive requires OFF1 -> ON transition after power-up |
| F30002 fault | DC bus overvoltage during decel | Check regen / brake chopper | Increase ramp-down time, install brake resistor, or use AFE |
| F07900 fault | Motor blocked / overloaded | Check load, monitor r0034 (motor current) | Reduce load, check mechanical binding |
| ZSW1 bit 9 never goes high | PLC not in control (STW1 bit 10 not set) | Read STW1 bit 10 in Watch Table | Set STW1 bit 10 = 1 |
| PROFINET timeout, F08501 | Cable break or controller stop | PROFINET diagnostics in TIA Portal | Repair cable, restart PLC |
| Motor runs reverse instead of forward | Motor phase sequence reversed in installation | Swap any two motor leads | Swap U2/V2 |
| NIST reads 0x0000 with NSOLL non-zero | STW1 bit 6 (Enable setpoint) not set | Read STW1 bit 6 | Set STW1 bit 6 = 1 |
Topology and Data Flow Diagram
Alternate Controller / Platform Notes
The PROFIdrive approach is vendor-neutral, but each IO controller family has minor differences in how the IO tag mapping is performed:
| Controller | Integration method | Telegram choice | Notes |
|---|---|---|---|
| Siemens S7-1200 / S7-1500 | Startdrive HSP or GSDML | 1, 2, 3, 4, 7, 9, 110 | Preferred path |
| Siemens ET 200SP CPU | Same as above | 1, 2, 3, 4, 7, 9, 110 | Standalone PROFINET IO controller |
| Allen-Bradley ControlLogix | Add-on Profile (AOP) or generic I/O module | 1, 2 (via ACD file) | Use CIP Security for safe control |
| Beckhoff TwinCAT | GSDML import | 1, 2, 7 | Map STW1 / NSOLL to TwinCAT variables |
| Wago PFC200 / Edge Controller | e!COCKPIT, GSDML import | 1, 2 | IEC 61131-3 |
| Schneider M580 / M340 | EcoStruxure Control Expert, DTM/EDS | 1, 2 | Use MBP_NTP for time sync |
| Codesys-based controller | GSDML import via Codesys 3.5 | 1, 2 | Configure as PROFINET IO controller |
Safety and PROFIsafe Considerations
Direction control through PROFINET is non-safety. Safety functions (STO, SS1, SS2, SLS) must be carried by either:
- Hardwired STO inputs to the drive (e.g., two-channel 24 V on Sinamics CU230P-2 STO_A/STO_B). Simple, high SIL, no PROFINET dependency.
- PROFIsafe over PROFINET using Telegram 30. STW1_B / ZSW1_B (PROFIsafe words) and a safety control block in the F-CPU. Requires F-CPU in the PLC (e.g., CPU 1515F-2 PN).
The PROFIsafe profile is defined by PI order number 3.192 ("PROFIsafe on PROFINET"). Safety integrity up to SIL 3 / PLe per IEC 61508 / ISO 13849-1 is achievable when using the PROFIsafe slot of a certified drive.
Summary of the Bidirectional Command Flow
- PLC builds
STW1with bits 0, 1, 2, 3, 4, 5, 6, 10 set (the run pattern). Bits 11 is toggled for direction. - PLC normalizes speed setpoint to
NSOLL(signed, +/-16384 = +/-100%). - Cyclic PROFINET IO write to the drive's Telegram 1/2 output words.
- Drive evaluates STW1 and NSOLL, commands the IGBT bridge accordingly.
- Drive returns
ZSW1(state) andNIST(signed actual speed) in cyclic input words. - PLC monitors ZSW1 bit 2 (Operation Enabled), bit 10 (Frequency Reached), and bit 3 (Fault) for confirmation.
FAQ
Does PROFINET bidirectional VFD control require extra wiring?
No. Forward and reverse commands are carried entirely in the PROFIdrive control word (STW1) and the normalized speed setpoint (NSOLL) inside the cyclic PROFINET telegram. The only wiring required is the PROFINET cable, motor power leads, and any safety (STO) wiring.
Which bit of STW1 reverses the motor direction?
Bit 11 of the 16-bit PROFIdrive control word (STW1) inverts the setpoint and reverses direction. Alternatively, write NSOLL as a signed value (negative for reverse) and leave bit 11 cleared; this is the default on SINAMICS S120 and most modern VFDs with p1110 = 0.
What is the encoded value for 100% reverse speed setpoint?
Full reverse corresponds to NSOLL = 0xC000 (decimal 49152 unsigned, -16384 signed). The reference speed (100%) is defined by the drive parameter p2000 on SINAMICS or equivalent; typical values are 1500 RPM for 50 Hz motors and 1800 RPM for 60 Hz motors.
Which PROFINET telegram should I select for bidirectional control?
Telegram 1 (2 words out / 2 words in) or Telegram 2 (4 words out / 4 words in) is sufficient for AC1 velocity control. Use Telegram 2 if you need an explicit signed actual-speed value (NIST) for direction verification. Telegram 7 or 9 adds torque channels if required.
Why does the drive show fault F07900 when I command reverse direction?
F07900 is "Motor blocked" — typically caused by mechanical binding, an undersized motor for the load, or incorrect parameterization of the current/torque limits. Direction itself does not cause this fault. Verify with p1910 = 1 (motor identification) and check r0034 (motor current) versus p0640 (current limit).