ApossC SDK  V01.15
CAN_1Ax_DS402_ProfilePositionMode-ppm-Test.mc
#include "..\..\..\SDK\SDK_ApossC.mc"
// Bus settings
#define SLAVE_CAN_BUSID 1
void errorHandler();
void faultMonitoring();
long main(void)
{
long handle;
long actState=0;
//Reset CAN Bus 1
handle = DefCanOut(0, 2);
CanOut(handle, 0, 0x8100);
//Reset CAN Bus 2
handle = DefCanOut(100000, 2);
CanOut(handle, 0, 0x8100);
//Wait until the node has been resetted
Delay(2000);
ErrorClear();
//set errorHandler for master
InterruptSetup(ERROR, errorHandler);
//Monitior the Fault bit in the status word of the slave, all 25ms
InterruptSetup(PERIOD, faultMonitoring, 25);
//----------------------------------------------------------------
// Application Setup
//----------------------------------------------------------------
//Set the mode of operation to PPM
actState = sdkDS402_GetActDriveState(SLAVE_CAN_BUSID);
{
}
//Set acceleration, deceleration and velocity
sdkDS402_SetProfileMovementParameter(SLAVE_CAN_BUSID, 1000, 1000, 500);
//Set the deccelation for quick stop
sdkDS402_SetQuickStopDeceleration(SLAVE_CAN_BUSID, 5000);
//----------------------------------------------------------------
// End of Application Setup
//----------------------------------------------------------------
//Transition to drive state 'Operation enabled'
Delay(2);
sdkDS402_Print_StatusWord(SLAVE_CAN_BUSID);
while(1)
{
//Start absolute positioning to pos 100000 qc
//Wait until the target position has been reached
sdkDS402_PPM_WaitTargetReached(SLAVE_CAN_BUSID, -1);
//Start relative positioning of -100000 qc
sdkDS402_PPM_PosRelStart(SLAVE_CAN_BUSID, -100000, DS402_PPM_IMMEDIATELY);
//Wait until the target position has been reached
sdkDS402_PPM_WaitTargetReached(SLAVE_CAN_BUSID, -1);
}
return(1);
}
void faultMonitoring()
{
long statusWord = sdkDS402_ReadStatusWord(SLAVE_CAN_BUSID);
if(statusWord.i[DS402_SW_BIT_FAULT])
{
errorHandler();
}
}
void errorHandler()
{
long axeNbr = ErrorAxis();
long errNbr = ErrorNo();
long errInfoNbr = ErrorInfo();
long statusWord, sdoAbortCode;
//Stop all nodes
sdkDS402_QuickStop(SLAVE_CAN_BUSID);
print("-----------------------------------------------------------");
printf("Error %d: ",errNbr);
print();
print("...Info: ",errInfoNbr, " AxisNo: ", axeNbr);
print("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -");
print();
switch(errNbr)
{
case F_CANIO:
printf("SDO Abort Code 0x%lX: ", sdoAbortCode );
print();
print("Check Can baudrate & Can bus id");
}
if(axeNbr == 0xFF && errNbr != F_CANIO)
{
//The error is not releated to a certain axis
statusWord = sdkDS402_ReadStatusWord(SLAVE_CAN_BUSID);
if(statusWord.i[DS402_SW_BIT_FAULT])
{
print();
printf("Bus Id %d, Slave device is in fault state\n", SLAVE_CAN_BUSID);
{
print("...Following Error");
}
//Reset the fault
sdkDS402_ResetFault(SLAVE_CAN_BUSID);
}
}
ErrorClear();
print();
print(" There is no error handlig → Exit()");
print("-----------------------------------------------------------");
Exit(0);
}
sdkDS402_Print_StatusWord
void sdkDS402_Print_StatusWord(long busId)
Print the status word.
Definition: SDK_Amplifier_DS402_StateMachine.mc:588
sdkDS402_ReadStatusWord
long sdkDS402_ReadStatusWord(long busId)
DS 402 State-Machine functions.
Definition: SDK_Amplifier_DS402_StateMachine.mc:33
sdkDS402_ResetFault
void sdkDS402_ResetFault(long busId)
Reset fault.
Definition: SDK_Amplifier_DS402_StateMachine.mc:574
sdkDS402_PPM_PosRelStart
long sdkDS402_PPM_PosRelStart(long busId, long pos, long startImmediately)
Start relative positioning.
Definition: SDK_Amplifier_DS402_StateMachine.mc:819
DS402_DRIVE_STATE_SWITCH_ON_DISABLED
#define DS402_DRIVE_STATE_SWITCH_ON_DISABLED
Definition: SDK_Amplifier_DS402_StateMachine.mh:61
sdkDS402_GetActDriveState
long sdkDS402_GetActDriveState(long busId)
Get the actual drive state.
Definition: SDK_Amplifier_DS402_StateMachine.mc:83
SYS_CANOM_SDOABORT
#define SYS_CANOM_SDOABORT
Last CANopen SDO abort code.
Definition: SdoDictionary.mh:491
sdkDS402_TransitionToState
long sdkDS402_TransitionToState(long busId, long newState)
Transition to another state.
Definition: SDK_Amplifier_DS402_StateMachine.mc:230
sdkErrorPrint_SdoErrorDescription
void sdkErrorPrint_SdoErrorDescription(long errorCode)
Prints a error description for SDO abort codes.
Definition: SDK_Error_Description.mc:290
sdkDS402_SetProfileMovementParameter
void sdkDS402_SetProfileMovementParameter(long busId, long acc, long dec, long velocity)
Set quick stop deceleration DS402_QUICK_STOP_DECELERATION(0x6085)
Definition: SDK_Amplifier_DS402_StateMachine.mc:488
sdkDS402_SetQuickStopDeceleration
void sdkDS402_SetQuickStopDeceleration(long busId, long dec)
Set quick stop deceleration DS402_QUICK_STOP_DECELERATION(0x6085)
Definition: SDK_Amplifier_DS402_StateMachine.mc:476
sdkDS402_PPM_WaitTargetReached
long sdkDS402_PPM_WaitTargetReached(long busId, long timeout)
Wait until target is reachd.
Definition: SDK_Amplifier_DS402_StateMachine.mc:853
DS402_PPM_IMMEDIATELY
#define DS402_PPM_IMMEDIATELY
Definition: SDK_Amplifier_DS402_StateMachine.mh:192
DS402_SW_BIT_FAULT
#define DS402_SW_BIT_FAULT
Definition: SDK_Amplifier_DS402_StateMachine.mh:100
DS402_OP_PPM
#define DS402_OP_PPM
Definition: SDK_Amplifier_DS402_StateMachine.mh:120
sdkDS402_PPM_PosAbsStart
long sdkDS402_PPM_PosAbsStart(long busId, long pos, long startImmediately)
Start absolute positioning.
Definition: SDK_Amplifier_DS402_StateMachine.mc:797
SYS_PROCESS
#define SYS_PROCESS(parno)
System Process Data: Setter.
Definition: SdoDictionary.mh:271
DS402_DRIVE_STATE_OPERATION_ENABLED
#define DS402_DRIVE_STATE_OPERATION_ENABLED
Definition: SDK_Amplifier_DS402_StateMachine.mh:64
DS402_DRIVE_STATE_READY_TO_SWITCH_ON
#define DS402_DRIVE_STATE_READY_TO_SWITCH_ON
Definition: SDK_Amplifier_DS402_StateMachine.mh:62
DS402_SW_PPM_BIT_FOLLWING_ERROR
#define DS402_SW_PPM_BIT_FOLLWING_ERROR
Definition: SDK_Amplifier_DS402_StateMachine.mh:111
sdkDS402_QuickStop
void sdkDS402_QuickStop(long busId)
Execute quick stop.
Definition: SDK_Amplifier_DS402_StateMachine.mc:544
sdkErrorPrint_ApossIdeErrorDescription
void sdkErrorPrint_ApossIdeErrorDescription(long errorCode)
Prints a error description for ApossIDE errors.
Definition: SDK_Error_Description.mc:25
sdkDS402_SetOpartionMode
void sdkDS402_SetOpartionMode(long busId, long operationMode)
Profile Mode functions.
Definition: SDK_Amplifier_DS402_StateMachine.mc:508
sdkDS402_WaitTransitionToState
long sdkDS402_WaitTransitionToState(long busId, long targetState, long timeout)
Wait transition to another state.
Definition: SDK_Amplifier_DS402_StateMachine.mc:347

Data Sheets | Released Software | Software Manuals | Hardware Manuals | Maxon Shop

Maxon Support Center