#include "..\..\..\SDK\SDK_ApossC.mc"
#define PWM_AXIS_MODE 0
#define PWM_USER_MODE 1
#define PWM_MODE PWM_AXIS_MODE
#define ESCON_AXIS_NO 0 // Axis number (zero based) → PWM_AXIS_MODE
#define ESCON_PWM_USER_PARAM 1 // User parameter number → PWM_USER_MODE
#define ESCON_PWM_DIGOUTPUT_NO 0 // Digital output for PWM cmd value (zero based)
#define ESCON_ENABLE_DIGOUTPUT_NO 1 // Digital output for ESCON enable (zero based)
#define ESCON_PWM_FREQUENCY 50 // PWM frequency [Hz]
#define ESCON_PWM_CYCLE_RANGE 80 // PWM cycle range 10-90%
#define ESCON_PWM_POLARITY HWPWMGEN_POLARITY_POSITIVE
#define ESCON_AI_FEEDBACK_NO 0 // Analog input number (zero based)
#define ESCON_AI_SPEED_MIN_VOLTAGE 0 // 0 voltage → -5000 rpm
#define ESCON_AI_SPEED_OFF_VOLTAGE 2000 // offset: 2 voltage → 0 rpm
#define ESCON_AI_SPEED_MAX_VOLTAGE 4000 // 4 voltage → 5000 rpm
#define ESCON_AI_SPEED_MIN_RPM -5000 // 0 voltage → -5000 rpm
#define ESCON_AI_SPEED_MAX_RPM 5000 // 4 voltage → 5000 rpm
long cvel = 0;
long dutyCycle = 0x7FFF;
long main(void)
{
#if PWM_MODE == PWM_USER_MODE
ESCON_PWM_DIGOUTPUT_NO,
ESCON_PWM_FREQUENCY,
ESCON_PWM_CYCLE_RANGE,
ESCON_PWM_POLARITY);
#else
ESCON_ENABLE_DIGOUTPUT_NO,
ESCON_PWM_DIGOUTPUT_NO,
ESCON_PWM_FREQUENCY,
ESCON_PWM_CYCLE_RANGE,
ESCON_PWM_POLARITY);
#endif
ESCON_AI_SPEED_MIN_VOLTAGE,
ESCON_AI_SPEED_MAX_VOLTAGE,
ESCON_AI_SPEED_OFF_VOLTAGE,
ESCON_AI_SPEED_MIN_RPM,
ESCON_AI_SPEED_MAX_RPM);
#if PWM_MODE == PWM_USER_MODE
DigOutput(ESCON_ENABLE_DIGOUTPUT_NO+1,0);
Delay(50);
DigOutput(ESCON_ENABLE_DIGOUTPUT_NO+1,1);
#else
AxisControl(ESCON_AXIS_NO, ON);
Acc(ESCON_AXIS_NO,100);
Dec(ESCON_AXIS_NO,100);
Cvel(ESCON_AXIS_NO,cvel);
AxisCvelStart(ESCON_AXIS_NO);
#endif
while(1)
{
#if PWM_MODE == PWM_USER_MODE
#else
Cvel(ESCON_AXIS_NO,cvel);
AxisCvelStart(ESCON_AXIS_NO);
#endif
print("ESCON Feedback: ",AnalogInput(ESCON_AI_FEEDBACK_NO + 1)," Rpm");
print("");
Delay(2000);
}
}