Temposonics
R-Series Powerlink V2
®
Operation Manual
Source Code "SdoAccessCyclic.c"
/********************************************************************
* COPYRIGHT --
********************************************************************
* Program: SdoAccess
* File: SdoAccessCyclic.c
* Author: SSchumacher
* Created: November 18, 2014
********************************************************************
* Implementation of program SdoAccess
********************************************************************/
#include <bur/plctypes.h>
#ifdef _DEFAULT_INCLUDES
#include <AsDefault.h>
#endif
void
_CYCLIC SdoAccessCyclic(void)
{
if
(fbSdoRead.status != ERR_FUB_BUSY && fbSdoWrite.status != ERR_FUB_BUSY)
{
//currently there is no SDO operation in progress
//initiate SDO operation
switch
(iState)
{
case
STATE_SEARCH_FOR_NODE:
case
STATE_SET_NODE_ID:
case
STATE_RESET_NODE:
case
STATE_CHECK_NODE_ID:
default:
}
}
//execute SDO read if enabled
EplSDORead(&fbSdoRead);
//execute SDO write if enabled
EplSDOWrite(&fbSdoWrite);
}
if
(u32VendorId == 0x40)
{
//go to next step
u8NodeFoundAt = u8NodeId;
iState++;
break;
}
else
{
//search at next ID
u8NodeId++;
if
(u8NodeId > 239)
u8NodeId = 1;
}
fbSdoRead.pDevice
= "SS1.IF1";
fbSdoRead.node
= u8NodeId;
fbSdoRead.index
= 0x1018;
fbSdoRead.subindex
= 1;
fbSdoRead.pData
= &u32VendorId;
fbSdoRead.datalen
= sizeof(u32VendorId);
fbSdoRead.enable
= 1;
fbSdoWrite.enable
= 0;
break;
fbSdoWrite.pDevice
= "SS1.IF1";
fbSdoWrite.node
= u8NodeFoundAt;
fbSdoWrite.index
= 0x1f93;
fbSdoWrite.subindex
= 3;
fbSdoWrite.pData
= &u8NodeIdToSet;
fbSdoWrite.datalen
= sizeof(u8NodeIdToSet);
fbSdoWrite.enable
= 1;
fbSdoRead.enable
= 0;
iState++;
break;
fbSdoWrite.pDevice
= "SS1.IF1";
fbSdoWrite.node
= u8NodeFoundAt;
fbSdoWrite.index
= 0x1f9e;
fbSdoWrite.subindex
= 0;
fbSdoWrite.pData
= &u8NmtResetNodeCmd;
fbSdoWrite.datalen
= sizeof(u8NmtResetNodeCmd);
fbSdoWrite.enable
= 1;
fbSdoRead.enable
= 0;
iState++;
break;
fbSdoRead.pDevice
= "SS1.IF1";
fbSdoRead.node
= u8NodeIdToSet;
fbSdoRead.index
= 0x1f93;
fbSdoRead.subindex
= 3;
fbSdoRead.pData
= &u8NodeId;
fbSdoRead.datalen
= sizeof(u8NodeId);
fbSdoRead.enable
= 1;
fbSdoWrite.enable
= 0;
iState++;
break;
fbSdoRead.enable
= 0;
fbSdoWrite.enable
= 0;
break;
//interface sensor is connected to
//node id of sensor
//index of vendor ID
//subindex of vendor ID
//variable to store value to
//size of the variable to store value to
//enable the read operation
//disable write operation
//interface sensor is connected to
//node id of sensor
//index of node ID
//subindex of node ID
//variable containing value to set
//size of the variable containing value to set
//enable write operation
//disable read operation
//go to next step
//interface sensor is connected to
//node id of sensor
//index of nmt reset
//subindex of nmt reset
//variable containing value to set
//size of the variable containing value to set
//enable write operation
//disable read operation
//go to next step
//interface sensor is connected to
//node id of sensor
//index of node ID
//subindex of node ID
//variable to store value to
//size of the variable to store value to
//enable the read operation
//disable write operation
//go to next step
//disable read operation
//disable write operation
I 36 I
Need help?
Do you have a question about the Temposonics Powerlink V2 R Series and is the answer not in the manual?