Skip to main content

Kollmorgen Support Network

Using Siemens PD_TEL9_DrivePos with Telegram 9 for Positioning with AKD2G Profinet RT | 19 Dec 2023 | |

Using Siemens PD_TEL9_DrivePos with Telegram 9 for Positioning with AKD2G Profinet RT

Testing S7-1200 PLC and AKD2G Profinet with Siemens Telegram 9 Function Block

This article is extracted from the attached PDF.

This document provides test results when using Siemens PD_TEL9_DrivePos function block with AKD2G Profinet Telegram 9.

Download the Siemens TG9 FB (PD_TEL9_DrivePos) from the web. It will be in the format of a
compressed library.

Open the compressed library in TIA Portal. It will be extracted and added to the global libraries.

Drag the FB from the library to the Program Blocks in the tree or directly to the ladder.

When putting the FB in the ladder, TIA will prompt to create a corresponding data block. Use the
default suggested type and name.

The function block looks like the following after creating tags for the inputs and outputs. I created all
tags as “Global Memory”.

Configure FB for submodule (AKD2G telegram 9).

Tag table:

Testing FB functionality

FB Inputs

on: enable drive

rejectTraversingTask: stop/cancel, 1=allow move, 0=stop/terminate move

intermediateStop: stop/pause, 1=allow/continue, 0=stop/pause

acknowledgeError: clear faults

jog1: starts jog in position mode using AXIS#.PROFINET.JOG1V (drive units), 1=start, 0=stop

jog2: starts jog in position mode using AXIS#.PROFINET.JOG2V (drive units), 1=start, 0=stop

If jog1 is running and then jog2 is activated, jog2 will not execute until jog1 is deactivated. Once jog1 is
deactivated, the motor will ramp to the jog2 speed without stopping first. And the same for jog2 to
jog1.

startHomingProcedure: start homing procedure

(Homing will not execute while a task in in progress.)

traversingTaskSelection: select motion task #, (MT0 is useable)

activateTraversingTask: start motion task, (setting back to zero doesn’t stop the move)

submode: selects between 0=motion task and 1=MDI

targetPositionMDI: position of MDI, in Profinet units based on feed and gear ratio

velocityMDI: velocity of MDI, scaled in drive units

accellerationOverrideMDI: MDI accel in % of reference

decelerationOverrideMDI: MDI accel in % of reference

1.0 = 1.0% of 65536 rpm/s = 655 rpm/s

10,000 rpm/s = 15.2% of 65536

If zero, uses some default value.

positioningModeMDI: 0=relative, 1=absolute

directionPositiveMDI: Supposed to set the modulo direction. It either doesn’t work, or modulo is not
active in the PLC. There is no FB input to turn on modulo.

directionNegativeMDI: same as positive.

MDI move profile does not show up in Motion Task 0.

FB Outputs

operationEnabled: True when the drive is enabled (operation enabled state)

(the state is 41-Positioning-Idle)

switchingOnInhibited: True when the drive is hardware disabled or faulted (state: 1-Switch On Inhibited)

faultActive: True when the drive (axis) is faulted

warningActive: True when the drive (axis) has a warning

homePositionSet: True when the axis has been homed

targetPositionReached: True when the move is complete (ZSW1 bit 10)

(I don’t know if this is related to AXIS1.SETTLE.P. Changing the value doesn’t affect when the bit goes
high.)

driveStopped: True when axis is stopped (idle), False when moving

traversingTaskAcknowledged: True when drive executes a motion task or MDI move

actualPosition: position feedback in Profinet scaling

activeTraversingTask: Motion Task # being executed, or 32768 for MDI

error: True when a function block error exists

status: error status of the function block

diagid: contains error code from cyclic data transfer functions

(Continually getting FB error status 0x8600 (Error while writing the telegram data). But it writes
everything just fine. It all seems to work even while the error is active.)

About this Article

toddevans01