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.
工具与软件:
尊敬的支持者和工程师:
我目前使用"C:\ti\mspm0_sdk_2_02_00_05\examples\nortos\LP_MSPM0G3507\motor_control_PMSM_sensorless_foc\sensorless-foc_DRV8329"示例、使用 LP-MSPM0G3507和 DRV8329AEVM 来旋转电机。 但是、测量这些值时遇到了几个问题。
代码中需要修复的事项:
-通过 LIN 通信接收目标 RPM 并控制电机转速
-改善电机电流波形(失真的电流波形需要改进为类似正弦波的波形。
-停止电机运行,并在发生过压、过流、过热、开路/短路等故障时设置故障标志
-通过 LIN 通信发送高电压、电机电流、当前速度和故障状态
我所面临的问题
1.我不能按照定义跳转到特定的函数。 无法打开以下功能:
updateConfigsInit()
updateConfigs()
ApplicationConfig (void * GPMC_App)
appReset (void * GPMC_App)
ApplicationLowPriorityRun (void * GPMC_App)
getMCAppSize ()
※我需要了解测量方法并更新g_pMotorInputs 中值的周期。
2.我想知道我能做些什么来改进电流波形
我采取了以下行动:
在 ISR 中更改了 pUserInputRegs->systemParams.currLoopKp =3.42。 c 到 pUserInputRegs->systemParams.currLoopKp =1、并将 pUserInputRegs->systemParams.currLoopKi = 3678更改为 pUserInputRegs->systemParams.currLoopKi = 0。
因此、在2000 RPM 时我会感觉略有不同。
currLoopKp = 3.42、 currLoopKi = 3678
currLoopKp = 1且 currLoopKi = 0 (但波形不断变化。)
不过、该波形会严重震动、并不是作为一个一致的波形出现。 同时、低 RPM 时的波形与高 RPM 时的波形也大不相同。 我想知道无论 RPM 如何、为了始终获得一致的正弦波波波、我应该更改哪些参数或算法。
如果您需要任何其他信息、请回复。
谢谢你。
大家好、Donguk、
对于函数定义、您在哪里定义了这些函数、还在构建项目? 您还使用哪个版本的 CCS?
通常、您需要编译工程、然后跳转到定义应该可行。 此外、某些早期版本的 CCS Theia 在执行跳转到定义函数时会遇到问题。 您可能需要更新到最新版本。
对于波形、您能否通过探测哪个信号来了解此波形? 我假设这是来自电机驱动器栅极的电流? 您是否仅通过将电流表与电机相位串联来收集屏幕截图?
尊敬的 Dylan:
我不知道定义它的位置、因为我在 C:\ti\mspm0_sdk_2_02_00_05\examples\nortos\LP_MSPM0G3507\motor_control_PMSM_sensorless_foc\sensorless-foc_DRV8329中使用了示例文件。
项目已经被建立并且使用闪存控制电机。
CCS 版本为 Code Composer Studio 12.8.1、 它没有一个函数可用于转至定义(仅转至声明)、但在大多数情况下、我可以通过 Ctrl +右键单击来转至定义。
我希望波形类似于正弦波。 我使用电流探头测量了电机的三个相位之一。
因此、正如我之前所问的、我需要跳转到示例中具体功能的定义、并在示例中采取进一步措施来改善电机算法中的电机参数或电流。
请告诉我推荐的修改参数或算法。
大家好、Donguk、
我可以看到、您提到的所有6个函数都在 isr.c 文件中定义、并在 ISR.h 文件中声明。 您可以使用 CTRL + F 找到它们。CCS Theia 和 CCS Eclipse 都有搜索功能、您也可以使用该功能查找声明和定义。 最后、如果突出显示这些函数并右键单击它们、则可以选择跳转到函数的定义或声明。 我刚刚在 CCS Theia 1.5中打开了项目、可以跳转到这些部分。 我建议您将 CCS20用于此工程、因为我们建议将最新的 SDK 与最新版本的 Code Composer Studio 配对。
至于电机电流、我鼓励您在负载未连接时检查每个相位上的电压、以便查看控制器的输出是否为完美的正弦。 随着时间的推移、负载可能会影响电流、但在我们未连接负载的情况下看到相位输出之前、很难确定是哪个分量导致了粗略/不太理想的正弦输出。
尊敬的 Dylan:
什么是 ISR。 c 请参阅?
请检查"C:\ti\mspm0_sdk_2_02_00_05\examples\nortos\LP_MSPM0G3507\motor_control_PMSM_sensorless_foc\sensorless-foc_DRV8329\isr.c"是否正确。
如果您看一下图片、就会发现它似乎未定义。
我们将尝试其他各种方法来改善电流波形、稍后再询问。 在此论坛中、首先要做的是找到函数的定义。
大家好、Donguk、
我已联系了我们的软件团队成员、他们构建了此示例、以帮助了解此处的情况。 我将在接下来的几天内开始度假、因此如果我需要几天以上的时间来回复、请对该主题执行 ping 操作、以确保我能够得到您的回复。 我从下周开始到1月6日不在办公室。
现在我要添加的是、构建日志显示的内容与"调用未声明的函数..."相同 已粘贴的错误。
与此同时、我强烈建议您更新到最新版本的 CCS (CCSv20)、因为这些 SDK 的最新版本已经过优化、无法做到这一点。 我不能说这可以解决您的问题、但它至少意味着您正在开发该工具的最佳和最新版本。
尊敬的 Dylan:
对于 SDK、我同时使用了 mspm0_sdk_2_03_00_07和 mspm0_sdk_2_02_00_05、但电机在 mspm0_SDK_2_03_00_07中不工作、另一位 TI 工程师建议我推迟使用它。
请参考该链接。
CCS20已在使用、但它仍然没有太大影响。
您能告诉我定义的功能的图片、位置或定义吗? 虽然电机控制方面的大多数问题都已经解决、但我们仍然面临着新的问题。
在 ISR 中定义的 FOC_TIMG0_INST_IRQHandler 中断函数中。 C、applicationLowPrimorityRun (g_PMC_App);该函数似乎导致 LIN 通信出现问题。 要解决这个问题、 applicationLowPrimorityRun (g_PMC_App);我们需要查看函数内部的内容。
大家好、Donguk、
我想 Helic 只是在说您可以继续使用以前的 SDK 和包含的库、那么您不必担心最新 SDK 版本中的更改。 如果您更喜欢继续使用同一版本、那就没问题。
我可以说我已经找到了"未声明功能..."的来源 问题-这些都是在预编译库 FOC_Lib.A 中定义的、因此 IDE 对该定义不可见。 不过、在某个时候、软件团队确实决定在 SDK 源代码中包含 FOC_Lib 函数的定义。 您可以通过参考 [SDK 安装路径]\source\ti\motor_control_pmsm_foc\sensored_modules\appLib\application\source\application.c 来查看上述所有函数的定义
这应该可以帮助您了解在函数中发生的情况。
根据您看到的行为的更多详细信息、为您的 LIN 问题创建一个新主题可能会有所帮助、以便团队可以帮助解决该问题。
尊敬的 Dylan:
那么、是否有办法更改该函数中的内容? 我想修改函数中的内容。
尊敬的 Dylan:
请在下方回答"是"或"否"
大家好、Donguk、
您可以自行编辑源代码、然后重新构建它。 您还应该通过调整项目属性来确保您的项目没有使用预编译库、FOC_Lib.A。 您可以通过从 Includes 中删除预编译库来确保不会使用该库。
尊敬的 Dylan:
感谢您的答复。
我不理解正确、但您是说要在 FOC.lib 中添加所有 C 和 H 文件、并排除预编译的 FOC.lib 吗?
如果这是您的意思、那么我不知道 FOC.lib 中包含什么。
我想要编辑内容的原因是电机的电压、电流、转速等信息与实际信息不同。 打开一个单独的论坛,而不是尝试自己编辑它会更好吗?
是的、这就是我的意思。
您可以在上面提到的文件路径中看到由 FOC.lib 使用的文件- [SDK 安装路径]\source\ti\motor_control_PMSM_foc\sensored_modules\appLib\application\source\application.c
这是最近添加到 SDK 的、因此请确保您使用的是正确的 SDK 版本。
尊敬的 Dylan:
在 C:\ti\mspm0_sdk_2_03_00_07\source\ti\motor_control_PMSM_foc\sensored_modules\appLib\application\source\application.c 内部、头文件中还包括在其他 C 函数中声明的外部函数和外部变量。
如上图所示、MSPM0的无传感软件配置。
因此,在有传感器软件的情况下, foc 库的内容被放置在一个叫做 algolib 的位置,所以 focib.a 没有被单独添加。
然而、在无传感器的情况下、algolib 没有被单独添加、所以 focrib.lib 被添加为一个预先定义的库。
因此、我认为名为 foc.lib 的库内容并不只是对应于 application.c
此外、foc.lib 包含各种 C 和 H 文件、C 文件的内容根据无传感器或有传感器而有所不同。
因此、我们想知道只是从预定义中排除 foc.lib 并添加 algolib、AppConfig 和存在有传感器中的应用程序是否会显示与之前相同的结果。
B.R.
DU
如果项目中包含预编译库、我认为链接器会使用预编译库中的定义、而不是使用您包含的文件。
由于您使用的是无传感器版本(抱歉之前提到了有传感器的版本)、我认为您只需从项目中删除预编译的库、向其中添加源代码、编辑源代码、然后重新构建以重新定义这些函数即可。
或者、您可以重新构建库文件并在工程属性中提供新版本。
Re -与软件团队一起阅读我的消息-我相信 focc_lib.lib 文件是使用 C:\ti\mspm0_sdk_2_03_00_07\source\ti\motor_control_universal_foc\modules\appLib\application\source\application.c 中所示的源代码构建的
请检查一下、我意识到最初我一直在为您指出传感版本的源。
大家好、Donguk、
我联系了我们的软件团队以确保上述内容、他们向我表明通用版本的源代码与为项目的无传感器版本构建库所使用的源代码之间存在一些差异。 所以上面的最后几点并不完全正确。
我向我们的软件团队咨询、以了解我们是否可以手动向您提供某些函数定义。
对于上述错误信息、我们深表歉意。
尊敬的 Dylan:
我们在驱动电机时仍然面临两个问题。
因此、我们仍然仅在开环中运行、在近距离循环中无法正常运行。
在此状态下、如果按照上面建议的方式操作、我可以看到函数定义和电机在开环中运行。
如果电机驱动算法与无传感器有任何区别、敬请告知。
在此之前、我将使用此代码。
B.R.
Donguk