This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Instaspin-foc implementation Dual sensorless PMSM motor synchronization

Other Parts Discussed in Thread: MOTORWARE

now I need  to implement synchronous control of two sensorless PMSM motors (connected on one axis) and  the motor often  operates at high speed .

I plan using the Instaspin-foc .

One motor  operates in speed loop mode (lab05b) and the other  motor in current loop mode (lab05a).

The motor operating in speed loop mode will use a  speed controller to generate  the current reference iq_ref.

and I sent the iq_ref to the motor work in the current loop mode via CAN bus .

1.Whether the program is feasible?

2.how to extract the iq_ref  in speed loop mode ? I can not find it in the motor  variable struct .

There is a motor Torque_Nm in the variable, which should be the Toeque in the FAST observer.

I  use this value divided by the motor torque coefficient to get the motor current value?

iqref(A) = Torque_Nm/Ke(Nm/A)

3. The latest  motorware:Lab 10d – Dual Motor Sensorless Velocity InstaSPIN-FOC?

Thanks~

  • 1.Whether the program is feasible?
    A: Yes, you can use a speed PI regulator to get a referen torque current for the rotation axis, and use half value of the reference torque current for both motors using only torque control.

    2.how to extract the iq_ref in speed loop mode ? I can not find it in the motor variable struct .
    A: Please refer to the function, PID_run_spd(PID_Handle handle,const _iq refValue,const _iq fbackValue,_iq *pOutValue) in motorWare. Refer to the use of this function, you can define a variable for Iq_ref, and assign the address of Iq_ref to pOutValue.

    3. The latest motorware:Lab 10d – Dual Motor Sensorless Velocity InstaSPIN-FOC?
    A: The lab project only show that control dual motor independently using single chip, not support synchronization as you required.
  • The following CTRL_getSpd_out_pu is the speed controller output ? then how to change  the pu value into  real current value (A) in order to sent to the other motor via CAN bus.

    //! \brief Gets the output speed value from the controller
    //! \param[in] handle The controller (CTRL) handle
    //! \return The output speed value, pu
    inline _iq CTRL_getSpd_out_pu(CTRL_Handle handle)
    {
    CTRL_Obj *obj = (CTRL_Obj *)handle;

    return(obj->spd_out);
    } // end of CTRL_getSpd_out_pu() function

    Thanks~

     

  • I define the variables.

    _iq speed_out_iqref = 0;
    _iq speed_out_iqref_address = 0;

    and then 

    speed_out_iqref = CTRL_getSpd_out_pu(ctrlHandle);
    speed_out_iqref_address = *CTRL_getSpd_out_addr(ctrlHandle);

    I find out that they are in the same .

    at last  I sent the speed_out_iqref to the other motor which works in current mode .

    ECanaMboxes.MBOX5.MDL.byte.BYTE2 = (uint16_t)(speed_out_iqref/16777.216); //mA

    and I change the speed_out_iqref value from mA to A  unit,and set it  as the other motor's current  reference.

    Am I right?

    and I do not think that I should use half value of the reference current .Because the two motors work at the same time

    Am I right?

    Thanks~