图片缩略图

双电机控制与TI LAUNCHXL-F28069M发射台

版本1.3.0.0(212 KB) Antonin.
磁场定向控制与TI LAUNCHXL-F28069M, BOOSTXL-DRV8301变频器和2 PMS电机
4.5
11个评分

19下载

更新2018年7月27日

查看许可证

此示例示出了如何使用闭环磁场定向控制(FOC)算法以调节2三相永磁同步电机(PMSM)的速度和转矩。本例中使用的C28x外设模块和DMC的C28x库块从嵌入式编码支持包德州仪器C2000处理器。金宝app
对于较新版本和其他硬件设置,请在此页面上查看此示例的送货版本://www.tatmou.com/help/金宝appsupportpkg/texasinstrumentsc2000/examples/permanent-magnet-synchronous-motor-field-oriented-control.html
硬件要求:
- TI LAUNCHXL-F28069M发射台(http://www.ti.com/tool/LAUNCHXL-F28069M
-2个BOOSTXL-DRV8301带三相无刷电机和12-24V电源(http://www.ti.com/tool/boostxl-drv8301.
- 2 PMSM(即2MTR-DYNO设置http://www.ti.com/tool/2mtr-dyno
如何已创建的模型,以及如何在下面的视频中使用它们的更多信息:
http://youtu.be/ncm7n-hlkqm.

引用作为

安东尼(2020)。双电机控制与TI LAUNCHXL-F28069M发射台(//www.tatmou.com/matlabcentral/fileexchange/49109-dual-motor-control-with-ti-launchxl-f28069m-launchpad),matlab中央文件exchange。检索到

意见及评分(68

Antonin.

亲爱的r.y.s.h,
以下是对你的问题的回答:
1)驱动开关频率是多少?您的仿真模型采样频率是多少?
-我在模型中使用由ADC端转换触发的中断。adc由PWM事件触发。PWM频率为20kHz。这样就得到了50µs的采样时间,但就像视频中解释的那样,因为我控制了2个电机,所以在我超时之前,我只有25µs来为每个电机执行控制回路。
-在模型中,我使用第一个ADC中断来触发模型的基本速率。在模型的C2000配置参数中有一个特定的设置。因此基本速率设置为50µs。第二个电机是由一个异步中断触发的,所以Simulink不知道它的采样时间,但是当代码在处理器上运行时,就像视频中解释的那样,金宝app第二个中断在第一个中断执行25µs后触发。
在你的设计中,CPU需要多少周期来读取/收集数据并执行它?
- 每个电机的控制回路小于20μs。
3)是否有一种方法来检查Simulink的每个任务的处理周期数吗?金宝app
你可以使用我们的分析器来测量处理器的执行时间:
//www.tatmou.com/help/releases/r2020a/金宝appsupportpkg/texasinstrumentsc2000/ug/real-time-code-execution-profiple.html.
如果您有示波器,您还可以在不同任务的开头和结尾设置和重置GPIO引脚以测量执行。
我希望这对你有帮助,
祝你好运,
安东尼。

R.Y.SH

你好,
我想问三件事:
1)驱动开关频率是多少?您的仿真模型采样频率是多少?
在你的设计中,CPU需要多少周期来读取/收集数据并执行它?
3)是否有一种方法来检查Simulink的每个任务的处理周期数吗?金宝app

Thinh Le Duc.

嘉亚Poudel

你好,

我想征求你的意见。哪个发射台(F28379或F2827)会更好地与AB编码器和Endat编码器与TIDM-1008一起使用,以控制单电机?我看到F28379正在被使用。欢迎任何其他建议。

问候
桑杰

托本Pirwitz

特别是使用传感器会一直对我有帮助。可悲的是,这点缺失。

苏米特帕蒂尔

对拉赫曼

非常感谢你给我的指导,Antonin,这是很大的帮助!

如果我可以,我将问最后一个问题,我如何使模型适合一个10极电机?

再次感谢你们。

Antonin.

嗨,对,
最受欢迎的!
对于使用DRV8301的单个电机,您可以查看此页面:
//www.tatmou.com/matlabcentral/fileexchange/45124-motor-control-with-ti-launchpad
它的工作与F28027发射台,但你可能可以合并2个解决方案,以得到DRV8305工作在F28069发射台与您的定制电机。金宝搏官方网站
我希望这对你有帮助,
欢呼,
安东尼。

对拉赫曼

嗨,安东尼,

感谢你制作了如此丰富的视频。

这个型号是否可以与DRV8301和Thomas Power 250Z系列电机(250ZC35/24)一起使用?如果您能给我一些建议,我将不胜感激。

Krishna V.

嗨,安东尼,

感谢您的视频。是搭载了单电源供电两种BOOSTXL-DRV3801驱动板?如果是这样,什么是直流电源的最大电流要求?10 A / 20甲?假设由驱动板所需要的电压范围为6-24 V·

韦劳黄

嗨Venkatesh来说,

谢谢你的回复。
幸运的是,我昨天解决了这个问题,将Matlab版本从2015a改为2018b。成功地建立了模型。
我希望解决方案可以帮助他人。

Wentao

马纳尔Chilapur

嗨,戈德,

请连接到我们的网站:
https://in.mathworks.com/金宝appsupport/contact_us.html

谢谢,
马纳尔C

韦劳黄

嗨,安东尼,
谢谢你的视频。
我在执行过程中遇到了一个问题。在建立仿真模型时,会出现如下错误
-----------------------------------------------------------------------------------------------------------------------------------------------
###生成代码到构建文件夹:c:\ work \ c28069pmsmfocdual \ c28069pmsmfocdual_ert_rtw
###调用目标语言编译器上c28069pmsmfocdual.rtw
###使用系统目标文件:D:\ProgramFiles(x86)\matlab2015a\rtw\c\ert\ert.tlc
###加载TLC功能库
警告:数据类型“Int8”使用预期目标上不可用的单词大小。
使用此数据类型的定点信号将被放在一个较大的单词或多个单词中。使用时,
将生成额外的软件来迫使这个较大的单词或多个单词模仿较小的单词
词。当你的原型目标和最终目标时,这个模拟是有帮助的
生产目标不一样。如果较小的字大小不存在
在最终的生产目标上,然后考虑将单词大小增加到
一个被支持的。金宝app
警告:数据类型"uint8"使用了一个词的大小,这是不可用的目标。

警告:数据类型"boolean"使用的字长在预期目标上不可用。

###为定制数据生成TLC接口API
###初始传递模型缓存用户定义的代码
###缓存模型源代码
...............................................................................
...............................
###正在写入源文件c28069pmsmfocdual.c
###写标题文件C28069PMSMFocdum_private.h
###写标题文件C28069PMSMFocdual.h

###正在写入头文件c28069pmsmfocdual_types.h
###写入标题文件RTWTYPES.h
###写入源文件c28069pmsmfocdual_data.c
###写入标题文件rtmodel.h
###正在写入源文件ert_main.c

### TLC代码生成完成。
。###评估模型中指定的PostCodeGencommand
### Using toolchain: Texas Instruments C2000 Code Generation Tools v5.2.12 | gmake(64位Windows)
# # #创建的C: \ \ c28069pmsmfocdual \ c28069pmsmfocdual_ert_rtw \ c28069pmsmfocdual工作。可”……
### Using toolchain: Texas Instruments C2000 Code Generation Tools v5.2.12 | gmake(64位Windows)
# # #创建的C: \ \ c28069pmsmfocdual \ c28069pmsmfocdual_ert_rtw \ c28069pmsmfocdual工作。可”……
###大厦 'c28069pmsmfocdual':d:\ PROGRAMFILES(x86)的\ matlab2015a \ BIN \ Win64的\使用gmake -B -f c28069pmsmfocdual.mk所有
C: \ \ c28069pmsmfocdual \ c28069pmsmfocdual_ert_rtw工作> cd。
应该没有\ matlab2015a \ bin \ win64 \ gmake。
C:\工作\ c28069pmsmfocdual \ c28069pmsmfocdual_ert_rtw>如果 “” == “”(d:\ PROGRAMFILES(x86)的\ matlab2015a \ BIN \ Win64的\使用gmake -B -f c28069pmsmfocdual.mk所有)其他(d:\ PROGRAMFILES(X86)\ matlab2015a \ BIN \ Win64的\使用gmake -B -f c28069pmsmfocdual.mk)
建立模型“c28069pmsmfocdual”时遇到的错误:
###生成所有二进制输出失败。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
我试过许多方法,但都不起作用。
值得注意的是,如果选择了“只生成代码”,错误将不会发生。
我的软件资料如下:MATLAB 2015a, CCS 6.2.5, controlSUITE 3.4.7, Win10。
你能帮我解决这个问题吗?
谢谢你。

Antonin.

嗨Shaomu,
你可以将ADC计数缩放到工程单位。如果您这样做,您将不得不为单元找到正确的定点格式,并在操作信号或切换到效率较低的浮点时调整该定点格式。虽然乍一看,“单位”听起来很复杂,但它让事情变得更简单、更高效。相同的算法可以工作多个电机通过调整单位标量,定点格式可以保持相同的整个模型。中间计算结果的范围很少发生变化,一个[-1 ~ 1]的信号乘以另一个[-1 ~ 1]的信号得到的结果是[-1 ~ 1]。如果您使用工程单元,则必须切换到浮点,以避免复杂的定点格式转换。这是可行的,但在用小数量乘大数量时,性能会降低,结果可能会失去准确性。最好是学习如何使用单位,这就是我在这个例子中所展示的。
我希望这对你有帮助,
安东尼。

Antonin.

你好亚当,

c2808pmsmfoc_ert展示了如何使用我们的eQEP块解码的光学编码器信号。c2808pmsmsim也可以,如果你有一个的Simscape许可证提供的仿真模型。
当使用光学编码器时,绝对位置在启动时是未知的,直到你通过索引脉冲。下面的页面解释了如何校准关于电机的反电动势的指数脉冲。
我希望这对你有帮助,
谢谢,
安东尼。

Shaomu朱

嗨,安东尼,
如果我理解正确的话,“输入缩放”子系统的功能是将测量的ADC电流转换为单位值。如果我想使用实际值而不是测量的ADC电流的单位值,我应该怎么做?直接使用两个ADC块的输出数据是否可行?期待您的真知灼见!

亚当•德怀尔

嗨,安东尼,

我想替换滑模观测器(SMO),并从c2806x eQEP模块的输出中计算Theta和Speed,用于PMSM矢量/场定向控制(FOC)的Park和逆Park转换。一段时间以来,我一直在尝试这样做,但一直不能让它工作。任何帮助都将不胜感激。我正在使用c28069pmsmfocdual_ert中使用的相同硬件。基金的例子。
MATLAB: 2018a嵌入式编码器7.0
IDE:TI Code Composer Studio 7.4.0,控制套件3.4.9
单片机:LaunchXl-F28069M
逆变器:BoostXL-DRV8301
电机:Teknic M-2310P-LN-04K (LVSERVOMTR)

问候,
亚当

Shaomu朱

感谢文卡塔斯!

我还有一个问题。我想知道为什么要为fixdt(1,32,17)设置数据类型。我注意到TI库提供的块是为32位带符号的定点数设计的。但是为什么Q值为17很重要呢?有什么原因吗?

马纳尔Chilapur

嗨Shaomu朱,

这是一个汇聚块,意味着它可以从用户那里获取将应用到硬件的输入,并在硬件输出中获得结果。这就是这个方块现在的工作方式。在这一点上没有PWM输出的仿真能力。您可以在仿真中实现您自己的PWM生成,但请记住,这将大大降低仿真执行时间,并应保留在短时间内的物理时间观察。

HTH,
马纳尔C

Shaomu朱

嗨,安东尼,

感谢回复!
我还有一个关于ePWM座的问题。我注意到这个块没有输出。我想知道是否可以在Simulink中读取或显示这个ePWM块的输出?金宝app

Antonin.

嗨Shaomu朱,

1.我们在整个模型中使用标准化单位来表示电压、速度、电流等。因此,空间矢量发生器输出的电压范围为[-1到1]。这需要转换为[0%到100%]范围内的占空比,0映射为50%的占空比。PWM块期望在[0到PWM_Counter_Period]范围内的时钟周期比较值,最终提供[0到100%]占空比。所以,SVGenDQ的范围是[-1到1],加1后它变成[0到2],乘以PWM_Counter_Period/2后,它变成[0到PWM_Counter_Period],这将给我[0到100%]占空比,完成。

2.你描述开关逻辑的方式让我认为你试图在软件中复制PWM模块在硬件中的作用。在进一步往那个方向前进之前,您可能希望对PWM模块进行更多的研究,因为它可能会迫使您将模型的采样时间减少到一个可能不合理的值。尽管如此,如果你想强制PWM的逻辑,你可以通过设置ePWM块掩码的ePWMA和ePWMB标签上的“连续软件强制逻辑”来实现。“添加连续的软件强制输入端口”允许您增加一个输入端口到ePWM块,并根据您的算法强制逻辑。

我希望这对你有帮助,
祝你好运,
安东尼。

Shaomu朱

嗨,安东尼,

我有一些关于子系统“PWM缩放”的问题。

1.这个子系统的输入是占空比。请问为什么我们要在占空比上加1,然后再乘以PWM计数器周期的一半?

2.我已经建立了一个控制系统,mosfet是直接通过开/关信号驱动的。但是,我发现block“ePWM”是基于占空比的。是否有可能直接基于“ePWM”块的开/关信号来控制MOSFET ?或者我需要使用另一个块来实现这个?为了更清楚地说明这一点,对于传统的SVPWM,在计算占空比后,我们使用三角波形进行比较,产生mosfet的开/关信号。为什么决定输入占空比到“ePWM”块而不是最终的开/关信号?如果输入是开/关信号而不是占空比,应该做哪些配置?

谢谢你!

Antonin.

嗨康斯坦丁Giannouloudis,

我们的双电机控制例子的F28379D LaunchPad是发货的版本R2018a的MATLAB。你需要安装那个版本的MATLAB来访问它。这里是帮助页面。
//www.tatmou.com/help/releases/R2018a/金宝appsupportpkg/texasinstrumentsc2000/examples/permanent-magnet-synchronous-motor-field-oriented-control.html

在上面的链接中,用您的版本替换“2018A”以查看差异,请注意,F20379D版本仅存在MATLAB R2018A。

我们正在积极研究支持最新TI设备的CLB一部分的功能,但我金宝app们没有支持现在的BISS-C。

希望对你有帮助,祝你好运,
谢谢,

安东尼。

Konstantinos Giannouloudis

你好安东尼,

在你出色的工作恭喜!我想问你两个问题:

1.我注意到有一个实现的模型2电机控制与f28379D:

2 BOOSTXL-DRV8305 + LAUNCHXL-F28379D C2000 LaunchPad: c28379Dpmsmfocdual_cpu1_ert。基金,c28379Dpmsmfocdual_cpu2_ert.slx

在c2000的例子网页,但我无法找到他们通过Matlab的帮助打开他们。它们还可用吗?我如何访问它们?

2.是否有能够读取绝对编码器与BissC协议快速启动的可能性?处理器似乎可以,但我不能看到在Simulink启动板或块这样的输入。金宝app

谢谢!

问候
考斯塔斯。

科迪·迪林格

下面我自己的评论可以忽略不计。问题解决了:)

科迪·迪林格

你好,
我有2mtr-dyno工具包与f28379d Launchpad和boostxl-drv8305包。我试图让我的电机旋转使用c28379Dpmsmfocdual_cpu1_ert(和cpu2) Simulink文件。金宝app这个文件的设计是立即运行,并使电机旋转只需编程到板?
我的马达发出嗡嗡声,开始抖动,振动,变暖,电源输出电流(。2A到~5A取决于供电电压)-但电机不旋转。
一些相关信息:
- 我没有仪器控制工具箱,因此我用uint16常数替换了串行接收“所需速度”输出(从0到32k的尝试值)。
- 通过在外部模式下测试(变化的SCI模块,因此它可以运行之后),我注意到,ADC输出为只有0,〜1200,1600〜,或4096,但不排除任何其它的值。只要任何显著电流流过,在4096的饱和值这是不正常的?我测试过上一个简单的Simulink模型ADC引脚和他们做工作正常,表现出0金宝app和4096之间的任意值。
- 在幅度和频率方面,EPWM块的输入是相似的波,但EPWM2输入波是不同的 - 应该是这样的吗?
-使用示波器,我可以看到有PWM波输出从MOTA, MOTB, MOTC板。
- 电源的额定功率15V,20A
任何建议吗?
谢谢你的帮助,
-cody.

Antonin.

嗨wannadear,

看起来,在用于下载的路径中有一个空间是CCS的dss工具不喜欢的。它来自于E:\驱动器,路径以E:\Program开始(可以是E:\Program Files\…)
我建议您删除该文件夹中的空格。或者在没有空格的路径中重新安装一些工具,或者在没有空格的路径中保存模型,这应该可以解决这个问题。

Wanndear Nawae.

我想解决这个问题。
警告:构建属性供应商部分TI缺失
“C: / ProgramData / MAT金宝appLAB / SupportPackages / R2017a /工具箱/目标/ SupportPackages
/ tic2000 / rtlib / IQmath_fpu32.lib < IQ17atan2PU。Obj >":兼容性不可用
确定
警告:构建属性供应商部分TI缺失
“C: / ProgramData / MAT金宝appLAB / SupportPackages / R2017a /工具箱/目标/ SupportPackages
/ tic2000 / rtlib / IQmath_fpu32.lib < IQ17cosPU。Obj >":兼容性不可用
确定
警告:构建属性供应商部分TI缺失
“C: / ProgramData / MAT金宝appLAB / SupportPackages / R2017a /工具箱/目标/ SupportPackages
/ tic2000 / rtlib / IQmath_fpu32.lib < IQ17sinPU。Obj >":兼容性不可用
确定
警告:构建属性供应商部分TI缺失
“C: / ProgramData / MAT金宝appLAB / SupportPackages / R2017a /工具箱/目标/ SupportPackages
/ tic2000 / rtlib / IQmath_fpu32.lib < IQmathTables。Obj >":兼容性不可用
确定
“# # #创建:. . / c28069pmsmfocdual.out”
###调用postbuild工具“Hex Converter”on“../ c28069pmsmfocdul .out”…
C: / ti / ccsv7 /工具/编译器/ TI-CGT ~ 1.6 / bin / . . / c28069pmsmfocdual hex2000 -我”。“o”. . / c28069pmsmfocdual。hex" -order MS -romwidth 16 -q
“###完成调用PostBuild工具”Hex Converter“...”
“###成功地生成所有的二进制输出”。

C:\ ti \ ccsv7 \ tools \ compiler \ ti-cgt-c2000_6.4.6 \ c28069pmsmfocdual_ert_rtw>退出/ b 0
将程序下载到目标硬件...
为模型###构建的过程:“c28069pmsmfocdual”中止由于一个错误。
部署到硬件板期间发生以下错误:

调试服务器脚本(DSS)错误:js:不能打开文件"E:\程序"。

我该如何解决这个问题?

Antonin.

嗨,巴拉

随着传感器算法,实际上你可以插入任何随机组合电机的3个阶段,你的马达会旋转。如果你不喜欢旋转方向,交换电机两相。
如果你使用位置传感器,相位顺序是很重要的,就像我们在德州仪器C2000处理器的嵌入式编码器支持包中提供的其他例子一样。金宝app
放大视频将向您展示我们如何使用提供的连接器插上我们的电机。
我希望这对你有帮助,
谢谢,

安东尼。

罗文客纳罕

@ balaji火灾;我会尝试使用给定的“从Molex mini-fit到编码器头和相位线的接线适配器”,然后将彩色线连接到助推器包,黑色连接到c,白色连接到B,红色连接到A。

你自己承担风险。我觉得你会这么做的。我使用相同的套件,但是有不同的发动机。所以不能下结论说男人。只是我的想法

巴拉大火

有人知道如何连接这些电机到drv8301吗?我使用的是f28069发射台和drv8301助推器,但我不知道如何连接发动机到助推器…

请帮我一下。
谢谢提前

劳伦斯Steijger

排序…

劳伦斯Steijger

嗨,Antonin和/或团队。

好的视频,谢谢你的好运!快速提问:在视频中,相位偏移值(TBPHS)似乎为零,但是在示例代码中,第二阶段的相位延迟为2.5 usec,第三阶段为5 usec。为什么?

谢谢,劳伦斯

Daniel Magnano.

你好,

我有模型工作良好的2 PMSM,我想旋转一个电机,有流体动力轴承。我已经实现了
1.锁和对齐
2.开环频率斜坡
3.闭环
功能。电机在开环中旋转精细,但是当我切换到SMO闭环时,泵停止。我已经拍摄了由开环频率斜坡产生的角度的曲线,并且在短时间内,Smo和角度非常相似。我不确定为什么电机停止,不能单击打开到闭环。有任何想法吗?

谢谢

马纳尔Chilapur

你好,

请验证编码器输出I.E正交信号EQEPA&EQEPB是否可用,并且在相位中排出90deg。
请注意,eQEP外设接受输入的正交信号eQEPA和eQEPB,并在其他选项中生成QPOSCNT。在馈电给微控制器之前,请验证这些信号的正确性,并正确配置eQEP。您还可以考虑使用不适合您的模型与Mathworks技术支持联系。金宝app

Zahra Mayahi

嘿马纳尔,谢谢你的回复,我已经试过eQEP但它不显示位置或柜台当我连接或显示块的输出范围,然而,当我将它连接到gpio34可以看到led灯打开或关闭,我只需要查看波形编码器的仿真软件的范围。金宝app

马纳尔Chilapur

你好,

请参阅相应控制器下的C2000和EQEP块的库块。
当您添加这个块并双击时,您有许多配置选项。
默认情况下,位置计数器从块输出。

问候,
马纳尔C

Zahra Mayahi

嗨Antonin.
我正在连接我的编码器和微控制器,我想在simulink上显示eQEPA和eQEPB(转子位置和计数器)的输出,有一个特殊的块做这个工作吗?金宝app

Daniel Magnano.

嗨,安东尼,

再次抱歉,2天后,我在GND和GPIO之间使用的电阻尺寸太高了。谢谢你的帮助

谢谢

Antonin.

嗨,丹尼尔,

很高兴你能解决同步问题。供你参考,我们在运动控制中使用了死带来防止穿刺术,如果你想让信号完美同步,这可能会阻碍你。

如果DRV8301(或DRV8305)上的故障触发,则清除它的唯一方法是通过SPI消息到DRV8301 / 05芯片或DRV芯片的电源循环。主CPU重置(您可以使用我们的看门狗块)不会清除DRV8301 / 05上的故障。
在以下文档的7.6.2.4节中,你必须通过SPI命令设置寄存器“IC Operation”(0x9)的第1位来清除错误。
http://www.ti.com/lit/pdf/SLVSCX2

您可以使用SPI传输块来执行此操作。在F28069M Launchpad上,您必须使用Spia用于顶部助推器包插槽和底部的Spib。

对于SPIA,配置参数中SIMO、SOMI、CLK和STE引脚分别设置为GPIO 16、17、18和19(默认)。

对于SPIB, SIMO, SOMI, CLK和STE引脚必须分别设置为GPIO 24, 25, 14和27。

SLVSCX2文档的7.5节解释了需要通过SPI传递的值。
只需传递一个uint16常量值到SPI传输,值应该是0x6822(写入寄存器0x9值0x22)。
只有当您确定要重新设置错误时才这样做。
可以使用触发子系统只在需要时启动SPI传输。
您还可以使用SPI读取从DRV芯片获得更多信息,比如故障的性质。
我知道这听起来有点复杂,但实际上很简单。
我希望这对你有帮助,

祝你好运

安东尼。

Daniel Magnano.

嗨,安东尼,

我的电机1和2的PWM阶段恰好在阶段中完全180度,我在同步配置中有一些错误。我猜我唯一的问题现在是关于重置设备如果它触发了故障。你有什么建议吗?

谢谢丹

Daniel Magnano.

嗨,安东尼,

我有一些关于Simulink编程的F28069M的查询,其中两个Booster DRV8301。金宝app我正在尝试运行两个PWM输出180度,彼此不相位。我已经设置了1,2,3的第二组EPWM,是倒置版的epwmxa。当连接每个驱动器的物理阶段A时,我获得信号的近180度相位偏移。但是当我放大DSO时,在第一阶段A上有一个确切的2US延迟。我不确定如何消除这个吗?您能提供一些建议,我是否需要禁用保护切换特性?

还有一个问题,关于如何通过Simulink模块复位设备,如果故障保护已经跳闸,LED是亮的。金宝app我不知道这种情况下该如何重置设备?它是否像禁用和重新启用GPIO 52或GPIO 50一样简单,取决于哪个失败了?

希望你能帮助我。如果可以的话,我可以把我修改过的。slx发给你

谢谢

Daniel Magnano.

嗨,安东尼,

我为第二个电机驱动器反向PWM,当我在Simulink中scope它,PWM信号是完美的180度相异。金宝app但是,当我将物理驱动器的PWM连接到DSO时,PWM信号仍然是相的。我是不是错过了什么,或者我应该使用ePWM块设置来设置相位为180度,而不是逆变的Ta/Tb/Tc信号之前的PWM缩放。

谢谢

音流奎瓦斯

嗨Antonnin,

我正在使用Model F28069M和2 DRV8301,当我尝试在Simulink中编译程序时,我会在矩阵的大小中获得错误。金宝app文本错误如下:

--------------------------------------------------------------------

在执行Model'C28069PMSMFoCDUM的后,遇到的错误遇到错误:索引超过矩阵尺寸。

引起的:
索引超出矩阵维度。

--------------------------------------------------------------------------

你觉得这个问题是什么?我需要进行任何修改吗?

那你推荐给我,包括更多,因为我的项目包括控制3个电机MAXON EC电机397172无电刷,依次连接到效果霍尔传感器手腕康复的外骨骼。

谢谢,
派别

Daniel Magnano.

嗨,安东尼,

看来我的第一个信息没传达过来。我正在运行一个泵,它有两个定子和一个转子,其中定子是180度从相位彼此(一个是热冗余)。所以我猜PWM频率需要是180度的相位。但我认为我可以运行它作为一个电机,不需要有第二个ADC,但有一个逆增益块上的PWM信号,并将它们路由到第二个定子的第二lot的PWM。

你认为这是否行得通呢?

谢谢

Daniel Magnano.

嗨,安东尼,

我猜我不需要采样第二个“电机”的ADC,我可以运行3逆增益块PWM和输出到第二个定子?

谢谢
丹尼尔

Antonin.

嗨,丹尼尔,

你是说机械学位吗?电度?或者与PWM频率相异?
换句话说,你想让第一个电机的轴与第二个电机的轴相差180度吗?如果是这种情况,你必须做位置控制。你需要在当前控制环上添加一个控制环,类似于我们对速度控制环所做的,但基于位置。那将是一个很好的例子。
我在该视频中解释的是如何脱离PWM信号,使得第一电动机和第二电动机的处理顺序地发生,它不会对2电动机的轴的位置产生影响。
我希望能回答你的问题,另请告诉我。
谢谢,

安东尼。

Daniel Magnano.

嗨,安东尼,

我的双重示例对于F28069M和Boostxl-DRV8301上的一个电机运行非常好。我想尝试两个电机,完全没有280°的阶段。我看过epwm设置,他们有点令人困惑。我想知道您是否有关于在它们之间使用180°的阶段运行的两个电机都有建议。我对该示例进行了许多更改以接收电机变量,速度变量和ki,kp和kd变量。但我陷入了阶段的两个电机,并正确运行。

谢谢,

Antonin.

嗨Sowmya,

CCSv7可以用来代替CCSv6(或v5),但是您必须假装您正在使用CCSv6。
运行:
> > targetupdater
当提示时,选择您正在使用CCSv6,但指向安装在CCSv7文件夹中的编译器或安装在CCS之外的编译器,在这种情况下,工具会询问CCS路径,指向CCSv7。
在创建模式,在配置参数,选择在硬件实现合适的处理器后,选择在代码生成CCSv6,我们的工具将使用CCSv7加载。
注意,在R2017a中,我们只使用CCS将编译后的代码加载到处理器上,以及用于项目生成。考虑到这种非常有限的依赖性,从Simulink的角度来看,CCS版本并没有太大的区别。金宝app
QEP和CAN模块可以在这个模型中使用。
我希望这对你有帮助,
安东尼。

Sowmya Akella

继续我以前的Ques,
我想要QEP块和CAN块。这些可以添加到模型中吗?

Sowmya Akella

嗨,安东尼,

目前我的系统上安装了CCSV7。这个演示还能用吗?

亚当•德怀尔

嗨,安东尼,

非常感谢您的回复。我非常感谢您花时间和精力回答我的问题。

最好的问候,

亚当

Antonin.

你好亚当,

我们的支金宝app持包支持所有F28069设备,您必须选择正确的链接器命令文件,以适应F28069,F28069M和F28069F设备之间的内存差异。
我解释了如何在T = 6m00s中为F28069M设备选择正确的链接器(https://youtu.be/ncM7N-hLKQM?t=6m00s)。
我们使用的是LAUNCHXL-F28069M发射台,据我所知,没有LAUNCHXL-F28069。
我确认不存在内存问题,如果你选择正确的链接器命令文件。
我们也有一个航运例如旋转的F28069的电机,其可作为的controlCARD(http://www.ti.com/tool/tmdscncd28069iso.),如果你对这个装置感兴趣。该controlCARD可以插在DRV8312工具包和发货示例模型“c28069pmsmfoc_ert。下面列出的Slx "支持硬件设置。金宝app
//www.tatmou.com/help/金宝appsupportpkg/texasinstrumentsc2000/examples/permanent-magnet-synchronous-motor-field-oriented-control.html

我希望这对你有帮助,

谢谢,

安东尼。

亚当•德怀尔

嗨,安东尼,
你能确认你用的是LAUNCHXL-F28069吗?这将是一个没有InstaSPIN-MOTION的发射台F28069,我无法找到与TI列出的InstaSPIN-MOTION。

因为出现使用F28069M MCU用Matlab时是内存问题我很感兴趣F28069 MCU。

最好的问候,

亚当

Antonin.

你好,

抱歉回复晚了。
1)我添加了+1以确保我们将避免出现CMPA = PRD for PWM的情况,因为它为计数器上和下的匹配事件创建了特殊的场景。我同意你的观点,它增加了所需的时间,因此不是理想的。我应该重新审视这个问题,看看是否有更好的解决方案。
2)你是对的,我在拍完视频没有更新后更正了这个错误。我只是在zip文件中添加了一个文档,里面有校正过的图片。谢谢你通知这个问题,如果你发现了更多,让我知道

我希望这对你有帮助,

安东尼。

迭戈

嗨,安东尼,

感谢您对这个例子,我的需求是非常有用的。

我有两个问题:

1)为什么您在EPWM定时器周期字段中设置pwm_counter_period + 1值?F28069参考手册说(PAG。252),上下计数TPWM = 2 * TBPRD * TTBCLK,而向上或向上计数TPWM =(TBPRD + 1)* TTBCLK,所以似乎只需要+1后两种情况。

2)你展示在分11:00时间图,是PWM信号4/5/6错?因为似乎PWM 1/2/3是活性高和PWM 4/5/6还可以,但后三个被示出为低电平有效。

鑫王

T D

有人使用BOOST-DRV8711和f28069发射台单独控制h桥吗?

保罗

不错的工作

西蒙肖德

大家好,Antonin和/或C2000_expert团队的成员们

我试图在我的TI Launchpad f28069m上运行测试程序,但我遇到了checkenvsetup函数的问题。点1到3是正确的,但在4和5中我无法做任何调整。我如何达到正确的展示贴?

> > checkEnvSetup(“ccsv5”、“f28069”,“设置”)

1.检查CCSv5 (Code Composer Studio)版本
要求版本:5.0或更高版本
要求:代码生成
您的版本:5.5.0
###设置环境变量“TI_DIR”为“C:\ti\ccsv5”

2.正在检查CGT(德州仪器C2000代码生成工具)版本
所需版本:5.2.1至6.0.2
需要:代码生成
您的版本:6.0.1
###设置环境变量“C2000_CGT_INSTALLDIR”为“C:\ti\ccsv5\ccsv4\tools\compiler\c2000”

3.检查DSP / BIOS(实时操作系统)版本
要求版本:5.33.05 ~ 5.41.11.38
需要:代码生成
您的版本:5.41.11.38
###设置环境变量“CCSV5_DSPBIOS_INSTALLDIR”为“C:\ti\bios_5_41_11_38”

4.检查XDC Tools (eXpress DSP Components)版本
要求版本:3.16.02.32及以上版本
需要:代码生成
你的版本:未找到
$(xdcroot)中找不到所需的XDC工具版本

5.检查CCS (Code Composer Studio)版本
所需版本:4
要求:自动化和代码生成
你的版本:未找到
在C: ti\ccsv5\ cc\bin中找不到所需的CCS版本

6.检查2806x C/ c++头文件版本
需要版本:1.20
需要:代码生成
您的版本:1.20
###设置环境变量“dsp2806x_installdir”到“c:\ ti \ controlsuite \ device_support \ f2806x \ v12金宝app0”

7.检查Flash工具(TMS320F2806x Piccolo(TM) Flash API)版本
需要版本:1.00
需要:Flash编程
您的版本:1.00
###设置环境变量"FLASH_2806X_API_INSTALLDIR"为"C:\ti\controlSUITE\libs\utilities\flash_api\2806x\v100"

Aishwarya利润率

mw_c28xx_boardc ", line 1: fatal error: cannot open source file "F2806x_Device.h"
1“MW_C28XX_BOAD.C”中检测到检测到的灾难性错误。
编译终止。

>>汇编失败
gmake:*** [mw_c28xx_board.obj]错误1

C:\Users\Apte\Desktop\Launchpad_Motor_Control\c28069pmsmfocdual_ert_rtw>echo make命令返回错误值为2
make命令返回的错误值为2
你好安东尼
使用TI F28069M构建双电机控制的PMSMFOC示例时,我正在收到此错误
C:\用户\阿普特\桌面\ Launchpad_Motor_Control \ c28069pmsmfocdual_ert_rtw> An_error_occurred_during_the_call_to_make
' an_error_occurs _during_the_call_to_make'不能被识别为内部或外部命令,
可操作的程序或批处理文件。

tiaan乌修仁

大家好,Antonin和/或C2000_expert团队的成员们

我使用TI Launchpad F28069M和BOOSTXL-DRV8301 RevB来尝试和实现无传感器双电机控制。

我已经在Matlab和CCSv5之间正确地设置了所有文件,并且可以轻松地从Simulink编程到目标板而没有问题,我通过改变闪烁的LED频率来确认这一点,同时在目标板上确认金宝app。

我曾在YouTube上观看关于为F28027 Launchpad的Simulink模型(单电机控制),以及金宝app用于在F28069M快速启动主板上的双马达控制视频两个视频。

我有以下BLDC / PMSM:

1.极对:11(22极/2)
2.Rs = 15欧姆(相对相或7.5欧姆/线圈)
3.Ls = 5mH(相对相或2.5mH /线圈)
4.Ke = 35v/Krpm(电压常数,按峰值电压测量,而不是均方根值)
5.Kt = 0.23 N.m/Amp(扭矩常数)
6.Max_motor_rpm = +- 500RPM(由Ke计算并与其他三相驱动器实验确认)
7.最大预期电流= + - 1.1a(取决于调制方法我假设)
7.DC_bus_supply = 18.4伏直流

我有麻烦设置所有的变量在Matlab中的c28069pmsmfocdual模型。我不确定我是否正确地输入了所有变量。当我为目标编程时,电机保持静止,换句话说,它锁定转子位置恒定的几百毫安电流由直流电源提供。

我为变量输入了以下内容:

%处理器频率
CPU_frequency = 90 e6;%(赫兹)

1 ..............................
%PMS电机对
Pole_pairs = 11;
马达。rs = 7.5;%定子电阻(欧姆)
motor.rr = 0;%转子电阻(欧姆)
motor.ls = 0.0025;%定子电感(H)
motor.lr = 0;%转子电感(H)
motor.lm = 0;%磁化电感(h)
motor.base_voltage = 11;%基峰相位电压(伏),最大可测量的直流总线(18.4V)/ SQRT(3)
马达。base_current = 1.1;基极峰值相电流(安培),最大可测量峰值电流

2 .....................................
motor.base_freq = 20;%基电频率(Hz)

3 ....................
% PWM设置
PWM_frequency = 20 e3;%(赫兹)
PWM_Counter_Period = CPU_frequency / PWM_frequency / 2;%(PWM定时器计数)

4 ...................
%的速度标量
Speed_rpm_scaler = 60 * CPU_frequency / Pole_pairs / 2;%(Speed_rpm_scaler/速度计数数= RPM)
speed_per_unit_scaler = 200;%(+/- 600rpm <=> +/- 1以q格式)
Max_ideal_measurable_speed = 200;
Speed_loop_delay =地板(60 * PWM_frequency / Pole_pairs / 2 / Max_ideal_measurable_speed);
max_measurable_speed = 60 * pwm_frequency / pole_pairs / 2 / speed_loop_delay;
speed_loop_to_pu_scaler = max_measurable_speed / speed_per_unit_scaler;

5 ....................
%霍尔传感器偏移
Hall_position_offset = 0.57;%(单位格式:1 <=>一次电气转数)

6 ................................
SMO_params.Fsmopos = EXP(-motor.rs/motor.ls/PWM_frequency);
SMO_params。Gsmopos = motor.base_voltage / motor.base_current / motor.rs * (1-SMO_params.Fsmopos);
SMO_params。Kslide = 0.15;% 0.15;滑动控制增益
SMO_params。Kslf = 0.1;%滑动控制滤波器增益
SMO_params。E0 = 0.5;

在“1”节中列出的变量我“相信”设置正确吗?其他我不确定的变量…

您能将变量解释给我,以及如何如何确定我的特定电机的正确值?

感谢您花时间构建这个simulink模型,使CCS和嵌入式编码器在simulink金宝app中的集成变得轻而易举!

Sumith Sekharan.

你好Serkan Karadag,

从错误消息来看,您似乎没有成功完成安装步骤。请在MATLAB命令窗口中运行targetupdater,选择您所安装的CCS版本的工具路径。
希望它可以帮助。
Sumith

Serkan Karadag

你好,Antonin,我有一些问题:

我在我的Diagnostiv查看器中获得了这些问题:

###生成代码到构建文件夹:C:\ Users \ Karadag \ Desktop \ hiwi-tätikeit\ 02_matlab_beispiel2 \ c28069pmsmfocdual_ert_rtw
###调用目标语言编译器上c28069pmsmfocdual.rtw
###使用系统目标文件:c:\ program files \ matlab \ r2015a \ rtw \ c \ ert \ ert.tlc
###加载TLC功能库
警告:数据类型“Int8”使用预期目标上不可用的单词大小。
使用此数据类型的定点信号将被放在一个较大的单词或多个单词中。使用时,
将生成额外的软件来迫使这个较大的单词或多个单词模仿较小的单词
词。当你的原型目标和最终目标时,这个模拟是有帮助的
生产目标不一样。如果较小的字大小不存在
在最终的生产目标上,然后考虑将单词大小增加到
一个被支持的。金宝app
警告:数据类型"uint8"使用了一个词的大小,这是不可用的目标。

警告:数据类型"boolean"使用的字长在预期目标上不可用。

###为定制数据生成TLC接口API
###初始传递模型缓存用户定义的代码
###缓存模型源代码
...............................................................................
...............................
###正在写入源文件c28069pmsmfocdual.c
###写标题文件C28069PMSMFocdum_private.h
###写标题文件C28069PMSMFocdual.h
###正在写入头文件c28069pmsmfocdual_types.h

###写入标题文件RTWTYPES.h
###写入源文件c28069pmsmfocdual_data.c
###写入标题文件rtmodel.h
###正在写入源文件ert_main.c
### TLC代码生成完成。
###创建项目标记文件:rtw_project .tmw
..###评估模型中指定的PostCodeGenCommand
### Using toolchain: Texas Instruments C2000 Code Generation Tools v5.2.12 | gmake(64位Windows)
# # #创建C: \用户桌面\ HIWI-Tatigkeit \ \ Karadag \ 02 _matlab_beispiel2 \ c28069pmsmfocdual_ert_rtw \ c28069pmsmfocdual。可”……
### Using toolchain: Texas Instruments C2000 Code Generation Tools v5.2.12 | gmake(64位Windows)
# # #创建C: \用户桌面\ HIWI-Tatigkeit \ \ Karadag \ 02 _matlab_beispiel2 \ c28069pmsmfocdual_ert_rtw \ c28069pmsmfocdual。可”……
### build 'c28069pmsmfocdual': C:\ programa ~1\MATLAB\R2015a\bin\win64\gmake -B -f c28069pmsmfocdual. exe:可所有的
C:\Users\Karadag\Desktop\ HIWI-T”tigkeit \ 02 _matlab_beispiel2 \ c28069pmsmfocdual_ert_rtw > cd。

C:\ users \ karadag \ desktop\ HIWI-T " tigkeit\02_Matlab_Beispiel2\c28069pmsmfocdual_ert_rtw>if "" == " (C:\ programa ~1\MATLAB\R2015a\bin\win64\gmake -B -f c28069pmsmfocdual. \mkall) else (C:\ programa ~1\MATLAB\R2015a\bin\win64\gmake -B -f c28069pmsmfocdual. exe)可)
/bin/cl2000——compile_only——large_memory_model——clge_su金宝apppport = cl0——silicon_version=28——define="LARGE_MODEL" -i"/~SupportFiles/DSP280x_headers" -i"/~SupportFiles/DSP280x_headers/include" -i"/include" -v28 -ml——float_support=fpu32 -DMODEL=c28069pmsmfocdual -DNUMST=3 -DNCSTATES=0 -DHAVESTDIO -DONESTEPFCN=1 -DTERMFCN=1 -DMAT_FILE=0-DMULTI_INSTANCE_CODE = 0 -DINTEGER_CODE = 0 dmt = 1 -DCLASSIC_INTERFACE = 0 -DALLOCATIONFCN = 0 -DTID01EQ = 0 -D__MW_TARGET_USE_HARDWARE_RESOURCES_H__ -DRT -DSTACK_SIZE = 1024 -DONESTEPFCN = 1 -DTERMFCN = 1 -DMAT_FILE = 0 -DMULTI_INSTANCE_CODE = 0 -DINTEGER_CODE = 0 dmt = 1 -DCLASSIC_INTERFACE = 0 -DALLOCATIONFCN = 0 -DTID01EQ = 0 -DRT -DSTACK_SIZE = 1024-DMODEL = c28069pmsmfocdual -DNUMST = 3 -DNCSTATES = 0 -DHAVESTDIO ": /用户/ Karadag /桌面/ HIWI-Tatigkeit / 02 _matlab_beispiel2 / c28069pmsmfocdual_ert_rtw ": /用户/ Karadag /桌面/ HIWI-Tatigkeit / 02 _matlab_beispiel2 ": / PROGRA ~ 1 / MATLAB / R2015a /走读生/包括":/ PROGRA ~ 1 / MATLAB / R2金宝app015a /模型/包括":/ PROGRA ~ 1 / MATLAB / R2015a / rtw / c / src": / PROGRA ~ 1 / MATLAB / R2015a / rtw / c / src / ext_mode /常见的":/ PROGRA ~ 1 / MATLAB / R2015a / rtw 金宝app/ c / ert ": / MATLAB / SupportPackages / R2015a / texasinstrumentsc2000 /工具箱/目标/ SupportPackages / tic2000 / src ": / PROGRA ~ 1 / MATLAB / R2015a /工具箱/目标/扩展/处理器/ tic2000 /包括":/ PROGRA ~ 1 / MATLAB / R2015a /工具箱/ rtw /目标/共同/可以/块/ tlc_c-IC:/MATLAB/金宝appSupportPackages/R2015a/texasinstrumentsc2000/toolbox/target/ SupportPackages/ tic2000/inc -I/F2806x_common/include -I/F2806x_headers/include -IC:/ programa ~1/MATLAB/R2015a/toolbox/shared/can/src/scanutil——output_file="MW_c28xx_board. "obj”“C: /用户/ Karadag /桌面/ HIWI-Tatigkeit / 02 _matlab_beispiel2 / c28069pmsmfocdual_ert_rtw / MW_c28xx_board.c”
这个系统可以被找到。
gmake:*** [mw_c28xx_board.obj]错误1

C:\Users\Karadag\Desktop\HIWI-T " tigkeit\02_Matlab_Beispiel2\c28069pmsmfocdual_ert_rtw>echo make命令返回错误值为2
make命令返回的错误值为2

C:\Users\Karadag\Desktop\ HIWI-T”tigkeit \ 02 _matlab_beispiel2 \ c28069pmsmfocdual_ert_rtw > An_error_occurred_during_the_call_to_make
der befehl“an_error_occurred_during_the_call_to_make”IST Endweder Falsch Geschriben Oater
我今天晚上去吃饭。

你能帮忙吗?

马丁Kocur

你好安东尼,
关于simulink方案的编写,我有一些问题想请教您。金宝app它总是以这样的语句结束:调试断言失败!
程序:C:\ ti \ ccsv5 \ tools \ compiler \ c2000_1 \ bin \ ci2000.exe
文件:ISCTYPE.C.
: 56

表达式:(无符号)(c + 1) < = 256

然后是诊断型的观众,他们总是告诉我同样的事情:
错误提示:C:/ti/ccsv5/tools/compiler/c2000_1/bin/cl2000 aborted while
处理文件C: / ti / c28069pmsmfocdual / c28069pmsmfocdual_ert_rtw / MW_c28xx_board.c

这是一个严重的问题。请联系客户
金宝app支持此消息和输入文件的副本
并帮助我们继续使这些工具更加强大。

gmake:*** [mw_c28xx_board.obj]错误2

我很确定,我已经正确地完成了所有的安装和验证步骤,但我就是不能解决这个巨大的障碍。你能帮我一下吗?非常感谢你的回答。
马丁
ps:我正在使用matlab r2015a

Antonin.

亲爱的Myroslav Shysh,

是的,可以同时控制和监控多个启动板。
你必须一个一个地给它们编程。一旦完成了这些,你就可以把它们都放在一起了。它们中的每一个都应该给你一个不同的COM端口,你可以用它来与各自的板通信。
这将使用串行通信(通过USB)。发射台上的FTDI芯片允许F28069的波特率为5.625Mbps, F28027的波特率为3.75Mbps。
在这些速率下,你可以发送和可视化更新到20kHz的信号。您可以通过以下链接进行操作:

http://in.mathworks.com/matlabcentral/fileexchange/45124-motor-control-with-ti-launchpad

问题是,主机模型只能提供大约30毫秒的刷新率。为了能够在20khz可视化数据,在主机模型的串行接收块上一次性读取600个值,采样时间为30ms。将这个向量作为一帧来告诉Simulink这些值是按顺序出现的,并在作用域上金宝app显示帧。这允许您可视化的数据变化@20kHz通过串行通过USB电缆插到您的板。一旦有时间,我将发布一个例子,因为我意识到这有点棘手。与此同时,你可以发邮件到c2000_expert@mathworks.com,我可以发送展示这个技巧的模特。
我希望这对你有帮助,
安东尼。

Myroslav Shysh

嗨,安东尼!
我有几个问题:

1.是否有可能控制和monitore多于一个TI F28069或F28027启动板连接到PC从MATLAB / Simulink的(例如:以控制4个或6驱动器)?金宝app
2.在这种情况下将使用哪种通信方式?
3.是否有可能从Simulink“实时”中直接更新和发送所需的值(速度/位置/等)?金宝app

哈桑raza

很好的例子

更新

1.3.0.0

修正了速度计算中2个因素的错误

1.2.0.0

用硬件部件编号和到供应商页面的链接更新了描述

1.2.0.0

将PWM图转换为pdf

1.2.0.0

将视频链接添加到描述中。

1.1.0.0

切换到MLL作为本示例,可以在以后作为发货示例使用

MATLAB版本兼容性
创建R2014b
兼容任何版本的R2014b
平台兼容性
窗户 苹果系统 Linux.
社区

c28069pmsmfocdual