SMDU.c 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /* --------------------------- (C) COPYRIGHT 2021 Fortiortech ShenZhen -----------------------------
  2. File Name : main.c
  3. Author : Fortiortech Appliction Team
  4. Version : V1.0
  5. Edit : Leo.li
  6. Date : 2021-11-06
  7. Description : This file contains XX-XX-XX function used for Motor Control.
  8. ----------------------------------------------------------------------------------------------------
  9. All Rights Reserved
  10. ------------------------------------------------------------------------------------------------- */
  11. /********************************************************************************
  12. Header Definition
  13. ********************************************************************************/
  14. #include <MyProject.h>
  15. /* ----------------------------------------------------------------------------------------------------------------------------
  16. PI调用
  17. ---------------------------------------------------------------------------------------------------------------------------- */
  18. /* -------------------------------------------------------------------------------------------------
  19. Function Name : HW_One_PI
  20. Description : PI
  21. Date : 2021-08-08
  22. Parameter : Xn1: [输入]
  23. ------------------------------------------------------------------------------------------------- */
  24. int16 HW_One_PI(int16 Xn1)
  25. {
  26. PI1_EK = Xn1; //填入EK
  27. SMDU_RunBlock(1, PI);
  28. return PI1_UKH;
  29. }
  30. /* -------------------------------------------------------------------------------------------------
  31. Function Name : int16 HW_TWO_PI(int16 Xn1, int16 Yn0, int16 Xn2)
  32. Description : PI控制
  33. Input : Xn1--E(K)
  34. Output : PI_UK--当前PI输出值,执行时间us
  35. -------------------------------------------------------------------------------------------------*/
  36. int16 HW_TWO_PI(int16 Xn1)
  37. {
  38. PI2_EK = Xn1; //填入EK
  39. SMDU_RunBlock(2, PI);
  40. return PI2_UKH;
  41. }
  42. /* -------------------------------------------------------------------------------------------------
  43. Function Name : int16 HW_One_PI3(int16 Xn1, int16 Yn0, int16 Xn2)
  44. Description : PI控制
  45. Input : Xn1--E(K)
  46. Output : PI_UK--当前PI输出值,执行时间us
  47. -------------------------------------------------------------------------------------------------*/
  48. int16 HW_One_PI3(int16 Xn1)
  49. {
  50. PI3_EK = Xn1; //填入EK
  51. SMDU_RunBlock(3, PI);
  52. return PI3_UKH;
  53. }
  54. /* ----------------------------------------------------------------------------------------------------------------------------
  55. LPF调用
  56. ---------------------------------------------------------------------------------------------------------------------------- */
  57. /* -------------------------------------------------------------------------------------------------
  58. Function Name : LPFFunction
  59. Description : 低通滤波函数
  60. Date : 2021-08-08
  61. Parameter : Xn1: [输入]
  62. ** Xn0: [输入]
  63. ** K: [输入]
  64. ------------------------------------------------------------------------------------------------- */
  65. int16 LPFFunction(int16 Xn1, int16 Xn0, int8 K)
  66. {
  67. LPF2_K = K << 8;
  68. LPF2_X = Xn1;
  69. LPF2_YH = Xn0;
  70. SMDU_RunBlock(2, LPF);
  71. return LPF2_YH;
  72. }
  73. /* ----------------------------------------------------------------------------------------------------------------------------
  74. Atan调用
  75. ---------------------------------------------------------------------------------------------------------------------------- */
  76. /* -------------------------------------------------------------------------------------------------
  77. Function Name : Atan_Us_MDU
  78. Description : XX-XX-XX
  79. Date : 2021-11-06
  80. Parameter : Xn1: [输入/出]
  81. ** Xn0: [输入/出]
  82. ** K: [输入/出]
  83. ------------------------------------------------------------------------------------------------- */
  84. int16 Atan_Us_MDU(int16 Xn1, int16 Xn0)
  85. {
  86. SCAT1_COS = Xn1;
  87. SCAT1_SIN = Xn0;
  88. SCAT1_THE = 0;
  89. SMDU_RunBlock(1, ATAN);
  90. return SCAT1_RES1;
  91. }
  92. /* ----------------------------------------------------------------------------------------------------------------------------
  93. 除法调用
  94. ---------------------------------------------------------------------------------------------------------------------------- */
  95. /* -------------------------------------------------------------------------------------------------
  96. Function Name : Atan_Us_MDU
  97. Description : XX-XX-XX
  98. Date : 2021-11-06
  99. Parameter : Xn1: [输入/出]
  100. ** Xn0: [输入/出]
  101. ** Yn: [输入/出]
  102. ------------------------------------------------------------------------------------------------- */
  103. int16 DivQ_L_MDU(uint16 Xn1, uint16 Xn0, uint16 Yn)
  104. {
  105. DIV0_DAH = Xn1;
  106. DIV0_DAL = Xn0;
  107. DIV0_DB = Yn;
  108. SMDU_RunBlock(0, DIV);
  109. return DIV0_DQL;
  110. }
  111. /* ----------------------------------------------------------------------------------------------------------------------------
  112. Sin-Cos调用
  113. ---------------------------------------------------------------------------------------------------------------------------- */
  114. /**
  115. * @brief 计算Is
  116. * @param[in] i_alp: alp轴电流
  117. * @param[in] i_bet: bet轴电流
  118. * @return is
  119. * @date 2022-07-29
  120. */
  121. uint16 Sqrt_alpbet(int16 i_alp, int16 i_bet)
  122. {
  123. SCAT2_COS = i_alp;
  124. SCAT2_SIN = i_bet;
  125. SMDU_RunBlock(2, ATAN);
  126. return SCAT2_RES1;
  127. }