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.)