#include <types.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <utils.h>
#include <cmd_proc.h>
#include <cpu_def.h>
#include <pxmc.h>
Functions | |
pxmc_state_t * | cmd_opchar_getreg (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_opchar_getreg - selects the right axis | |
int | cmd_do_reg_go (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_reg_go - checks the command format validity and calls pxmc_go. | |
int | cmd_do_pwm (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_pwm - checks the command format validity and calls pxmc_set_const_out. | |
int | cmd_do_reg_hh (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_reg_hh - checks the command format validity and calls pxmc_hh (home hardware). | |
int | cmd_do_reg_spd (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_reg_spd - checks the command format validity and calls pxmc_spd. | |
int | cmd_do_reg_spdfg (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_reg_spdfg - checks the command format validity and calls pxmc_spdfg. | |
int | cmd_do_stop (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_stop - checks the command format validity and calls pxmc_stop. | |
int | cmd_do_release (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_release - checks the command format validity and calls pxmc_set_const_out(mcs,0). | |
int | cmd_do_clrerr (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_clrerr - checks the command format validity, clears the error flag. | |
int | cmd_do_zero (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_zero - checks the command format validity, sets axis position to 0. | |
int | cmd_do_align (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_align - checks the command format validity, sets offset between table and IRC counter to 0 . | |
int | cmd_do_reg_rw_pos (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_reg_rw_pos - read or write function, param is converted in 'long' and shifted | |
int | cmd_do_reg_short_val (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_reg_short_val - read or write function, param is converted in 'integer' | |
int | cmd_do_reg_long_val (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_reg_long_val - read or write function, param is converted in 'long' | |
int | cmd_do_axis_mode (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_axis_mode - checks the command format and busy flag validity, calls pxmc_axis_mode | |
int | cmd_do_regptmod_short_val (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
int | cmd_do_reg_type (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_reg_type - no code written, will set controller structure | |
int | cmd_do_reg_dbgset (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
cmd_do_regsfrq - sets or returns smapling frequency | |
int | cmd_do_reg_dbgpre (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
int | cmd_do_reg_dbghis (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
int | cmd_do_reg_dbggnr (cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) |
Variables | |
cmd_des_t const | cmd_des_go |
cmd_des_t const | cmd_des_pwm |
cmd_des_t const | cmd_des_hh = {0, CDESM_OPCHR,"HH?","hard home request for axis",cmd_do_reg_hh,{}} |
cmd_des_t const | cmd_des_spd = {0, CDESM_OPCHR,"SPD?","speed request for axis",cmd_do_reg_spd,{}} |
cmd_des_t const | cmd_des_spdfg |
cmd_des_t const | cmd_des_stop |
cmd_des_t const | cmd_des_release |
cmd_des_t const | cmd_des_zero |
cmd_des_t const | cmd_des_align |
cmd_des_t const | cmd_des_clrerr |
cmd_des_t const | cmd_des_ap |
cmd_des_t const | cmd_des_st |
cmd_des_t const | cmd_des_axerr |
cmd_des_t const | cmd_des_regp |
cmd_des_t const | cmd_des_regi |
cmd_des_t const | cmd_des_regd |
cmd_des_t const | cmd_des_regs1 |
cmd_des_t const | cmd_des_regs2 |
cmd_des_t const | cmd_des_regmd |
cmd_des_t const | cmd_des_regms |
cmd_des_t const | cmd_des_regacc |
cmd_des_t const | cmd_des_regme |
cmd_des_t const | cmd_des_regcfg |
cmd_des_t const | cmd_des_ptirc |
cmd_des_t const | cmd_des_ptper |
cmd_des_t const | cmd_des_ptshift |
cmd_des_t const | cmd_des_ptvang |
cmd_des_t const | cmd_des_pwm1cor |
cmd_des_t const | cmd_des_pwm2cor |
cmd_des_t const | cmd_des_axis_mode |
cmd_des_t const | cmd_des_reg_type |
cmd_des_t const | cmd_des_reg_dbgset |
cmd_des_t const | cmd_des_reg_dbgpre |
cmd_des_t const | cmd_des_reg_dbghis |
cmd_des_t const | cmd_des_reg_dbggnr |
cmd_des_t const * | cmd_stm_default [] |
int cmd_do_align | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_align - checks the command format validity, sets offset between table and IRC counter to 0 .
it also stop the rotation calling pxmc_set_const_out(mcs,0) and sets axis position to 0.
int cmd_do_axis_mode | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_axis_mode - checks the command format and busy flag validity, calls pxmc_axis_mode
if pxmc_axis_mode returns -1, cmd_do_axis_mode returns -1.
int cmd_do_clrerr | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_clrerr - checks the command format validity, clears the error flag.
it also stop the rotation calling pxmc_set_const_out(mcs,0)
int cmd_do_pwm | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_pwm - checks the command format validity and calls pxmc_set_const_out.
int cmd_do_reg_dbggnr | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
int cmd_do_reg_dbghis | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
int cmd_do_reg_dbgpre | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
int cmd_do_reg_dbgset | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_regsfrq - sets or returns smapling frequency
int cmd_do_reg_go | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_reg_go - checks the command format validity and calls pxmc_go.
if pxmc_go returns -1, cmd_do_reg_go returns -1.
int cmd_do_reg_hh | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_reg_hh - checks the command format validity and calls pxmc_hh (home hardware).
if pxmc_hh returns -1, cmd_do_reg_hh returns -1.
int cmd_do_reg_long_val | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_reg_long_val - read or write function, param is converted in 'long'
if the command typed is a write function, records the value, if it is a read function returns the value asked.
int cmd_do_reg_rw_pos | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_reg_rw_pos - read or write function, param is converted in 'long' and shifted
if the command typed is a write function, records the value, if it is a read function returns the value asked.
int cmd_do_reg_short_val | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_reg_short_val - read or write function, param is converted in 'integer'
if the command typed is a write function, records the value, if it is a read function returns the value asked.
int cmd_do_reg_spd | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_reg_spd - checks the command format validity and calls pxmc_spd.
if pxmc_spd returns -1, cmd_do_reg_spd returns -1.
int cmd_do_reg_spdfg | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_reg_spdfg - checks the command format validity and calls pxmc_spdfg.
if pxmc_spdfg returns -1, cmd_do_reg_spdfg returns -1.
int cmd_do_reg_type | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_reg_type - no code written, will set controller structure
int cmd_do_regptmod_short_val | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
int cmd_do_release | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_release - checks the command format validity and calls pxmc_set_const_out(mcs,0).
int cmd_do_stop | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_stop - checks the command format validity and calls pxmc_stop.
int cmd_do_zero | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_do_zero - checks the command format validity, sets axis position to 0.
it also stop the rotation calling pxmc_set_const_out(mcs,0)
pxmc_state_t* cmd_opchar_getreg | ( | cmd_io_t * | cmd_io, | |
const struct cmd_des * | des, | |||
char * | param[] | |||
) |
cmd_opchar_getreg - selects the right axis
pxmc is designed for multi axis motion control, so each axis must be identificated. This done by a capital letter. The first axis must be A, the 2nd B, etc.
cmd_des_t const cmd_des_align |
{0, CDESM_OPCHR, "ALIGN?","align commutator",cmd_do_align,{}}
cmd_des_t const cmd_des_ap |
{0, CDESM_OPCHR|CDESM_RD, "AP?","actual position",cmd_do_reg_rw_pos, {(char*)pxmc_state_offs(pxms_ap), 0}}
cmd_des_t const cmd_des_axerr |
{0, CDESM_OPCHR|CDESM_RD, "AXERR?","last axis error code",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_errno), 0}}
cmd_des_t const cmd_des_axis_mode |
{0, CDESM_OPCHR|CDESM_WR, "REGMODE?","axis working mode",cmd_do_axis_mode, {}}
cmd_des_t const cmd_des_clrerr |
{0, CDESM_OPCHR, "PURGE?"," clear 'axis in error state' flag",cmd_do_clrerr,{}}
cmd_des_t const cmd_des_go |
{0, CDESM_OPCHR|CDESM_RW, "G?","go to target position",cmd_do_reg_go,{}}
cmd_des_t const cmd_des_hh = {0, CDESM_OPCHR,"HH?","hard home request for axis",cmd_do_reg_hh,{}} |
cmd_des_t const cmd_des_ptirc |
{0, CDESM_OPCHR|CDESM_RW, "REGPTIRC?","number of irc pulses per phase table",cmd_do_regptmod_short_val, {(char*)pxmc_state_offs(pxms_ptirc), (char*)4,(char*)10000}}
cmd_des_t const cmd_des_ptper |
{0, CDESM_OPCHR|CDESM_RW, "REGPTPER?","number of elmag. revolutions per phase table",cmd_do_regptmod_short_val, {(char*)pxmc_state_offs(pxms_ptper), (char*)1,(char*)100}}
cmd_des_t const cmd_des_ptshift |
{0, CDESM_OPCHR|CDESM_RW, "REGPTSHIFT?","shift (in irc) of generated phase curves",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_ptshift), 0}}
cmd_des_t const cmd_des_ptvang |
{0, CDESM_OPCHR|CDESM_RW, "REGPTVANG?","angle (in irc) between rotor and stator mag. fld.",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_ptvang), 0}}
cmd_des_t const cmd_des_pwm |
{0, CDESM_OPCHR|CDESM_RW, "PWM?","direct axis PWM output",cmd_do_pwm,{}}
cmd_des_t const cmd_des_pwm1cor |
{0, CDESM_OPCHR|CDESM_RW, "REGPWM1COR?","PWM1 correction",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_pwm1cor), 0}}
cmd_des_t const cmd_des_pwm2cor |
{0, CDESM_OPCHR|CDESM_RW, "REGPWM2COR?","PWM2 correction",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_pwm2cor), 0}}
cmd_des_t const cmd_des_reg_dbggnr |
{0, CDESM_OPCHR|CDESM_WR, "REGDBGGNR","controller response to HIST course",cmd_do_reg_dbggnr,{}}
cmd_des_t const cmd_des_reg_dbghis |
{0, CDESM_OPCHR|CDESM_WR, "REGDBGHIS","read history course",cmd_do_reg_dbghis,{}}
cmd_des_t const cmd_des_reg_dbgpre |
{0, CDESM_OPCHR|CDESM_WR, "REGDBGPRE","store reference course",cmd_do_reg_dbgpre,{}}
cmd_des_t const cmd_des_reg_dbgset |
{0, CDESM_OPCHR|CDESM_RW, "REGDBG?","sets debug flag",cmd_do_reg_dbgset,{}}
cmd_des_t const cmd_des_reg_type |
{0, CDESM_OPCHR|CDESM_RW, "REGTYPE?","unused",cmd_do_reg_type,{}}
cmd_des_t const cmd_des_regacc |
{0, CDESM_OPCHR|CDESM_RW, "REGACC?","maximal acceleration",cmd_do_reg_long_val, {(char*)pxmc_state_offs(pxms_ma), 0}}
cmd_des_t const cmd_des_regcfg |
{0, CDESM_OPCHR|CDESM_RW, "REGCFG?","hard home and profile configuration",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_cfg), 0}}
cmd_des_t const cmd_des_regd |
{0, CDESM_OPCHR|CDESM_RW, "REGD?","controller derivative gain",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_d), 0}}
cmd_des_t const cmd_des_regi |
{0, CDESM_OPCHR|CDESM_RW, "REGI?","controller integral gain",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_i), 0}}
cmd_des_t const cmd_des_regmd |
{0, CDESM_OPCHR|CDESM_RW, "REGMD?","maximal allowed position error",cmd_do_reg_rw_pos, {(char*)pxmc_state_offs(pxms_md), 0}}
cmd_des_t const cmd_des_regme |
{0, CDESM_OPCHR|CDESM_RW, "REGME?","maximal PWM energy or voltage for axis",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_me), 0}}
cmd_des_t const cmd_des_regms |
{0, CDESM_OPCHR|CDESM_RW, "REGMS?","maximal speed",cmd_do_reg_long_val, {(char*)pxmc_state_offs(pxms_ms), 0}}
cmd_des_t const cmd_des_regp |
{0, CDESM_OPCHR|CDESM_RW, "REGP?","controller proportional gain",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_p), 0}}
cmd_des_t const cmd_des_regs1 |
{0, CDESM_OPCHR|CDESM_RW, "REGS1?","controller S1",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_s1), 0}}
cmd_des_t const cmd_des_regs2 |
{0, CDESM_OPCHR|CDESM_RW, "REGS2?","controller S2",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_s2), 0}}
cmd_des_t const cmd_des_release |
{0, CDESM_OPCHR, "RELEASE?","releases axis closed loop control",cmd_do_release,{}}
cmd_des_t const cmd_des_spd = {0, CDESM_OPCHR,"SPD?","speed request for axis",cmd_do_reg_spd,{}} |
cmd_des_t const cmd_des_spdfg |
{0, CDESM_OPCHR,"SPDFG?", "fine grained speed request for axis",cmd_do_reg_spdfg,{}}
cmd_des_t const cmd_des_st |
{0, CDESM_OPCHR|CDESM_RD, "ST?","axis status bits encoded in number",cmd_do_reg_short_val, {(char*)pxmc_state_offs(pxms_flg), 0}}
cmd_des_t const cmd_des_stop |
{0, CDESM_OPCHR, "STOP?","stop motion of requested axis",cmd_do_stop,{}}
cmd_des_t const cmd_des_zero |
{0, CDESM_OPCHR, "ZERO?","zero actual position",cmd_do_zero,{}}
cmd_des_t const* cmd_stm_default[] |