FiledWeaken.c 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /* --------------------------- (C) COPYRIGHT 2020 Fortiortech ShenZhen -----------------------------
  2. File Name : FiledWeaken.c
  3. Author : Fortiortech Appliction Team
  4. Version : V1.0
  5. Date : 2020-10-15
  6. Description : This file contains flux_weakening function used for Motor Control.
  7. ----------------------------------------------------------------------------------------------------
  8. All Rights Reserved
  9. ------------------------------------------------------------------------------------------------- */
  10. #include "FU68xx_5.h"
  11. #include <Myproject.h>
  12. #if (FiledWeakenCompEnable==1)
  13. FieldWeakeningTypeDef xdata mcFieldWeaken;
  14. void FiledWeakenControl(int16 Ud, int16 Uq, uint16 Dcbusk, int16 Is)
  15. {
  16. //获取Us和Udc。
  17. SCAT1_COS = Ud;
  18. SCAT1_SIN = Uq;
  19. SMDU_RunBlock(1, 5);
  20. mcFieldWeaken.FieldWeakenActualUS_Q15 = SCAT1_RES1;
  21. mcFieldWeaken.FieldWeakenActualDcbus_Q15 = Dcbusk;
  22. //获取Is的角度。
  23. PI1_EK = mcFieldWeaken.FieldWeakenActualDcbus_Q15 - mcFieldWeaken.FieldWeakenActualUS_Q15;
  24. SMDU_RunBlock(1, 7); //调用MDU运算单元0中的PI模式(7)
  25. mcFieldWeaken.FieldWeakenIsTheta = PI1_UKH;
  26. //获取D轴电流和Q轴电流参考值。
  27. SCAT1_COS = Is;
  28. SCAT1_THE = mcFieldWeaken.FieldWeakenIsTheta;
  29. SCAT1_SIN = 0;
  30. SMDU_RunBlock(1, 4);
  31. mcFieldWeaken.mcIdref = SCAT1_RES2 ;//sin的结果
  32. mcFieldWeaken.mcIqref = SCAT1_RES1;//cos的结果
  33. }
  34. ///* -------------------------------------------------------------------------------------------------
  35. // Function Name : GetFieldWeakenUsAndUdc_Q15
  36. // Description : 获取Us和Udc。
  37. // Date : 2020-10-15
  38. // Parameter : Ud: [输入]
  39. //** Uq: [输入]
  40. //** Dcbus: [输入]
  41. //------------------------------------------------------------------------------------------------- */
  42. //void GetFieldWeakenUsAndUdc_Q15(int16 Ud, int16 Uq , uint16 Dcbus)
  43. //{
  44. //// mcFieldWeaken.FieldWeakenRunUD = Ud;
  45. //// mcFieldWeaken.FieldWeakenRunUQ = Uq;
  46. //// mcFieldWeaken.FieldWeakenActualDcbus = Dcbus * mcFieldWeaken.FieldWeakenHwBoardVoltMax / 32767.0;//求出实际母线电压
  47. ////
  48. //// // mcFieldWeaken.FieldWeakenRunUS = mcFieldWeaken.FieldWeakenRunUD* mcFieldWeaken.FieldWeakenRunUD + mcFieldWeaken.FieldWeakenRunUQ * mcFieldWeaken.FieldWeakenRunUQ;//
  49. //// mcFieldWeaken.FieldWeakenActualUS_Q15 = sqrt(mcFieldWeaken.FieldWeakenRunUD * mcFieldWeaken.FieldWeakenRunUD + mcFieldWeaken.FieldWeakenRunUQ * mcFieldWeaken.FieldWeakenRunUQ) * mcFieldWeaken.FieldWeakenActualDcbus / 1.732 / mcFieldWeaken.FieldWeakenHwBoardVoltageBase;// sqrt(mcFieldWeaken.FieldWeakenRunUS) / 1.732 / mcFieldWeaken.FieldWeakenHwBoardVoltageBase;
  50. ////
  51. //// mcFieldWeaken.FieldWeakenActualDcbus_Q15 = Dcbus * mcFieldWeaken.FieldWeakenDcbusK;
  52. //
  53. // SCAT2_COS = Ud;
  54. // SCAT2_SIN = Uq;
  55. // SMDU_RunBlock(2, 5);
  56. // mcFieldWeaken.FieldWeakenActualUS_Q15 = SCAT2_RES1;
  57. // mcFieldWeaken.FieldWeakenActualDcbus_Q15=DcbusK;
  58. //
  59. //
  60. //}
  61. ///* -------------------------------------------------------------------------------------------------
  62. // Function Name : GetFieldWeakenUsAndUdc_Q15
  63. // Description : 获取D轴电流和Q轴电流参考值。
  64. // Date : 2020-10-15
  65. // Parameter : Is: [输入]
  66. //------------------------------------------------------------------------------------------------- */
  67. //void GetFieldWeakenIdRefAndIqRef_Q15(int16 Is)
  68. //{
  69. //// mcFocCtrl.IqRef = Is * cos(mcFieldWeaken.FieldWeakenIsTheta);
  70. //// mcFocCtrl.IdRef = Is * sin(mcFieldWeaken.FieldWeakenIsTheta);
  71. //
  72. // SCAT3_COS = Is;
  73. // SCAT3_THE = mcFieldWeaken.FieldWeakenIsTheta;
  74. // SCAT3_SIN = 0;
  75. // SMDU_RunBlock(3,4);
  76. // mcFieldWeaken.mcIdref = SCAT3_RES2 ;//sin的结果
  77. // mcFieldWeaken.mcIqref = SCAT3_RES1;//cos的结果
  78. //
  79. //}
  80. ///* -------------------------------------------------------------------------------------------------
  81. // Function Name : GetFieldWeakenIsTheta_Q15
  82. // Description : 获取Is的角度。
  83. // Date : 2020-10-15
  84. // Parameter : None
  85. //------------------------------------------------------------------------------------------------- */
  86. //void GetFieldWeakenIsTheta_Q15(void)
  87. //{
  88. // mcFieldWeaken.FieldWeakenIsTheta = mcFieldWeakenPI(mcFieldWeaken.FieldWeakenActualUS_Q15 ,mcFieldWeaken.FieldWeakenActualDcbus_Q15) ;
  89. //}
  90. ///* -------------------------------------------------------------------------------------------------
  91. // Function Name : mcFieldWeakenPI
  92. // Description : 功率环PI函数
  93. // Date : 2020-09-16
  94. // Parameter : feedbackvalue: [输入]
  95. //** referencevalue: [输入]
  96. //------------------------------------------------------------------------------------------------- */
  97. //int16 mcFieldWeakenPI(int16 feedbackvalue, int16 referencevalue)
  98. //{
  99. // PI1_EK = referencevalue - feedbackvalue;
  100. // SMDU_RunBlock(1 , 7); //调用MDU运算单元0中的PI模式(7)
  101. // return PI1_UKH;
  102. //}
  103. #endif