搞电机的朋友多少都遇到过这种对话群里扔过来一个型号或者一串字符后面跟着一句“ax by cz 怎么划分的是按垂直轴线划分的吗”刚入行的时候我也被绕得头晕后来摸清了门道才明白这问题背后其实是两套坐标系概念在打架。今天就把这块彻底捋清楚顺便把我踩过的坑也一并写出来。先说结论“ax by cz”这个词本身并不是电工行业里的标准术语它更像是一段流传在爱好者圈子里的缩写口诀用来描述直流无刷电机BLDC工作时三相绕组对应的轴线关系。真正干活的时候你会更频繁地听到A相、B相、C相或者α轴、β轴、d轴、q轴这些说法。但既然这个问题能成为热词说明确实有很多人在做电机控制或者选型时卡在了坐标划分上尤其是“垂直轴线”这个表述容易让人把机械空间和电气空间搅在一起。1. 先把“ax by cz”的出处和含义定性1.1 这个名字到底从哪来的我查了很多资料也翻了几个老工程师的笔记可以说“ax by cz”最早出现在一些国外电机测试台架和编码器调试软件的寄存器命名里意思是把电机的三相分别标记为A轴、B轴、C轴对应的物理量比如电流、反电动势、磁链都投影到这三个轴向上。后面三个字母x、y、z不是额外的东西而是指每一相上的瞬时值分量。简单说ax就是A相在x方向的投影by是B相在y方向的投影cz是C相在z方向的投影。但这种写法没有统一标准不同厂商的固件里可能含义完全不同。1.2 为什么这个词容易引起误解正常讲三相电机我们说的都是A、B、C三相角度互差120度这是空间分布上的关系。可一旦有人把a、b、c和x、y、z并排写在一起新手就会误以为它们是一一对应的坐标轴于是自然产生疑问这仨轴是不是垂直的实际上x、y、z在数学上通常是三维笛卡尔坐标系的三个正交轴而A、B、C是电气三相轴几何上并不垂直。问题就出在这两套完全不同的坐标体系被塞进了同一个缩写里。这种缩写更多的是一种思维模型不是为了表达物理坐标。就好比你写“abc”不代表英文字母表写“xyz”也不代表数学坐标轴。把“ax by cz”当作一个整体代码来理解就行。1.3 实际工程中如何正确使用这种命名我在调试无刷电机驱动板时习惯把三相驱动桥的输出标记为AH/AL、BH/BL、CH/CL对应高端和低端MOS管。固件里如果要定义电流采样通道就会写成ia、ib、ic。如果有人把工程文件里的ia改名成axib改名成byic改名成cz只要内部映射关系不变代码照样能跑。问题的关键从来不在于名字本身而在于你脑子里那张映射表是不是清晰的。2. 直流无刷电机的轴线划分——机械空间 vs 电气空间2.1 空间几何轴和电气轴的根本区别回到热搜词里那个问题“是按照垂直轴线划分的么”。我先给结论直流无刷电机的三相轴线在机械空间不是互相垂直的它们是互差120度分布的。但如果你从电气角度看在d-q坐标系里d轴和q轴就是互相垂直的。很多人在这一步懵掉就是因为没有区分“转子上已经物理存在的轴线”和“控制器里虚拟出来的轴线”。机械空间里一台表贴式永磁同步电机或无刷直流电机的定子有三个绕组槽位均匀分布在圆周上相邻间隔120度。转子上的永磁体产生磁极N极和S极交替排列。这时候如果你把N极中心线定义为d轴那么超前90度电气角的位置就是q轴。一个机械圆周是360度机械角但电气角等于机械角乘以极对数。比如一台4极电机一对极占据180度机械角电气上就是360度。所以d轴和q轴的“垂直”是电气意义上的垂直是在一个旋转坐标系里人为定义出来的不是定子绕组在空间上真的分了四个象限。2.2 三相绕组与“ax by cz”的对应关系用最简单的两两导通方式驱动无刷电机时六个换向状态对应六个空间电压矢量。每个状态下只有两相导通另一相悬空。如果你把三个绕组分别标为ax、by、cz那么一次换向比如AB导通、C悬空就可以理解为电流从a轴流向b轴产生的合成磁动势方向落在某个扇区。这时候如果把三个字母拆成三对ax表示A相在x方向上的分量by表示B相在y方向上的分量cz表示C相在z方向上的分量完全是为了数学上合成空间矢量的方便。我实际做过这样的操作用Matlab搭建一个BLDC仿真模型电机模块里三相电压就是写成Va、Vb、Vc然后做Clark变换变成Vα、Vβ再做Park变换变成Vd、Vq。如果你非要把输入变量命名为ax、by、cz只需要在Clark变换矩阵里对应好顺序结果完全一样。所以这个命名问题的本质是你要在哪个坐标系里做控制。2.3 为什么说“垂直轴线”只在d-q坐标系里成立做过FOC磁场定向控制的朋友应该都有体验你花了半天调PI参数调的就是d轴和q轴的电流环。d轴负责励磁q轴负责转矩这两个电流分量在转子坐标系里是完全解耦的控制上可以独立调节。所以从控制算法层面看d、q轴必须垂直否则两个环就互相耦合调起来会让人崩溃。而在静止的三相坐标系里把ABC三相写成互差120度的三个矢量它们本身就不是正交基所以谈不上垂直。这里还有一个反直觉的坑就是当转子转动时d轴和q轴也跟着转你的坐标变换矩阵里的电角度一直在变化。这时候你再回头看三相坐标下的ax、by、cz它们相对定子是静止的。同一个物理量站在不同坐标系里看表达方式完全不同这就是为什么很多教程强调“先想清楚自己站在哪个坐标系里”。3. 如何在实际无刷电机系统中建立正确的坐标映射3.1 从电机引线开始梳理三相顺序拿到一台无刷电机最基础的任务是先分清楚哪根线是A相、哪根是B相、哪根是C相。电机出厂时一般会标U、V、W国内也有标A、B、C的还有一些厂商直接标1、2、3。不管标什么你需要做的第一件事就是用万用表测三根线之间的电阻正常情况下两两之间电阻应该一致。然后用手转动电机轴用示波器看任意两相之间的反电动势波形三组波形互差120度这时候你就能确定相序了。我建议你拿到电机后花十分钟做个简单的表格把引线颜色、标记名、你在代码里用的变量名一一对应记下来。很多人出问题不是电机坏了而是换了一台电机后线序没重新确认结果驱动波形对不上电机就嗡嗡响不转。这里有个背锅重灾区霍尔传感器。无刷电机里霍尔元件的顺序必须和三相绕组顺序匹配否则换向逻辑全乱。我踩过一次坑是某国产电机厂商的霍尔线和功率线颜色体系和常规习惯不一样结果我按照上一台电机的接线方法插上去电机死活不转后来查霍尔波形才发现顺序反了120度。3.2 Clark变换与Park变换中轴名怎么定义做FOC时三相电流ia、ib、ic经过Clark变换得到iα、iβ这一步是把三相静止坐标变成两相静止坐标。变换矩阵里有个系数等于2/3或sqrt(2/3)取决于你是否做功率不变约束。我实际用的公式是iα 2/3 * (ia - 0.5ib - 0.5ic)β轴同理。变换完以后α轴和β轴互相垂直这可以理解为一种数学手段而非物理实体。接着做Park变换把iα、iβ乘上旋转矩阵得到id和iq。旋转矩阵的角度来自编码器或霍尔传感器给出的转子电角度。这时候坐标系和转子固定在一起d轴在转子磁极方向q轴与它垂直。到这里你可以看到真正的“垂直轴线”出现在两次变换之后的d-q坐标系里而不是最初的三相线路上。很多新手做仿真时喜欢直接用幅值不变系数2/3然后用同样的PI参数去带真实电机结果电流环发抖。我后来才弄清楚问题不在于2/3还是sqrt(2/3)而在于你在仿真里用的角度定义和实际编码器方向是否一致。如果电机转向反了电角度就一直在累加或递减PI调节器跟着疯掉眼看电流波形像锯齿。3.3 怎样用换向表验证轴序是否匹配无刷电机方波控制里有个核心概念换向表。六步换向法里根据霍尔传感器的三个信号组合决定哪两相通电。很多人会直接把网上找来的换向表抄进工程里但电机相序不同、霍尔安装位置不同表是完全可能不一样的。正确做法是把霍尔信号和反电动势波形放在一起标记出每个换向点的位置。我常用的验证方法是手动缓慢转动电机轴在示波器上同时看三路霍尔信号和一路反电动势。当转子转到某个位置霍尔信号发生跳变时对照当时的反电动势相位就能推出正确的通电顺序。这里要留个心眼示波器探头本身的相位延迟不可忽略尤其在高转速下差个几微秒就可能在换向边界上错误判断。实测下来用10MHz带宽限制功能能减少不少高频噪声干扰。3.4 一个完整的坐标映射实操案例我去年做一台36V、150W的无刷减速电机控制器电机引线颜色是黑绿白霍尔线是红蓝黄。我先用直流电源简单测试任意两线接12V看电机是否转动确定三根功率线的相序。然后把霍尔线依次交换组合测出六组霍尔信号与反电动势波形之间的正确配对。最终在代码里定义phase_map数组顺序是black-Agreen-Bwhite-C然后把霍尔值映射到换向状态表。这里如果三相顺序写错最典型的结果是电机电流冲击大噪音明显甚至出现堵转。这种场景下如果有人问我ax by cz怎么划分我会直接告诉他你在代码里把它当成三个传感器通道的代号就行方法和物理相序的虚实对应性没有必然关联。关键是你的变换矩阵和换向表必须要和实际物理接线一致这才是真正的“划分方式”。4. 常见问题与排查技巧实录4.1 为什么三相电机某两相电阻异常偏大有次调试一块旧驱动板接好电机后上电电机一抖一抖的电流很大。我测了三相电阻A-B是2.5欧B-C是2.5欧但A-C是5欧。这个时候第一个怀疑对象不是电机而是线束或者驱动板上的接线端子。我用万用表笔直接戳电机三根引出线测出来的电阻都是2.5欧那问题就转移到了控制板到电机的连线中间很可能有接触电阻或者端子氧化。把接线端子换新后故障消失。这类问题如果不先测裸电机很容易误判成电机线圈烧了。4.2 霍尔换向位置不准电机高速丢步如果你做的是方波控制霍尔信号在边沿处有抖动或噪声高速时换向就会丢步。这时候硬件上要在霍尔信号线上加滤波电容软件上要做去抖处理。我常用的软件方案是检测到边沿后先判断信号稳定时间超过某一阈值再认为换向有效但这个阈值不能太大否则高速下延迟太多。霍尔边沿抖动超过几十微秒时多半是信号线受到功率管开关噪声干扰这时候优先检查接地和布局而不是一味调软件参数。4.3 编码器角度与电机转子不对齐用FOC做高精度控制时编码器的零位必须与转子d轴对齐。很多电机厂商会在电机轴上刻一个标记安装编码器时要保证编码器索引位置和d轴位置重合。如果编码器装偏了固定补偿角度就能解决但前提是你知道偏了多少。我用的办法是给q轴电流一个较小的值看电机能否停在某个确定角度然后微调编码器角度偏移量直到电机停稳且转向正确。这个过程有点玄学但实测非常管用。你要盯住id反馈是否为零不为零就说明dq轴还没对正。4.4 电流环调不稳id和iq互相干扰说到FOC就绕不开电流环调试。刚开始调的时候我直接把id设定为0然后只调iq结果速度上去后电流波形乱跳。后来才明白d-q轴虽然数学上解耦但在实际离散化算法里有交叉耦合项转速越高dq轴之间耦合越明显。解决办法是在控制器里加入解耦项把当前转速下的电感耦合电压补偿进去。这个操作就是拿转速乘以电感得到补偿电压分别加到d、q轴PI输出上。加完之后电流波形才真正稳定下来。4.5 转速计算抖动导致速度环震荡如果编码器分辨率不够或者采样周期不匹配转速计算结果会像台阶一样跳动。用这种转速去跑速度环容易造成速度环震荡。我一般不用差分法直接算速度而是用M法或T法组合或者加一阶低通滤波。滤波时间常数需要根据转速范围和负载动态特性折中滤波太狠会迟钝太轻又抖。有一次我为了省事把滤波系数调到几乎不过滤结果速度环在小转速下持续振荡后来改到截止频率20Hz左右才正常。5. 按垂直轴线划分的误解还有哪些5.1 常常混在一起的“磁极轴线”与“绕组轴线”很多文章里提到dq轴会说d轴是磁极轴线q轴是转矩轴线。你没有真正拆过电机的时候看到“磁极轴线”四个字会以为在电机内部有一条几何上画出来的线。其实磁极轴线指的是转子永磁体N极中心所在的位置随着转子旋转这个位置在空间里不断变化所以d-q轴是一个旋转坐标系。而三相反电动势轴线固定在定子上永远是静止的。这两者之间是通过转子电角度建立联系的。5.2 把“垂直”误解成物理90度物理空间里的垂直和电气空间里的正交差别非常大。一个8极电机机械上相邻两个磁极间隔45度但电气角相隔180度。所以在电机内部你永远找不到d轴和q轴在空间上呈90度夹角的位置除非你站在转子参考系里看等效磁场矢量。这也是很多画图软件让人困惑的地方你把d-q坐标系画在定子圆周上q轴永远不在机械90度的角度上。5.3 命名混乱对调试的影响有多大做电机控制项目时代码里经常出现三个字母的缩写比如foc.h里的abc_to_alpha_beta函数、beta_to_dq函数。这些函数如果注释写得不好后来接手的人很容易被“ax by cz”这类命名带偏。我见过一个项目源码里把三相电流命名为alpha电流、beta电流、gamma电流结果新来的同事拿着它跟硬件原理图对线半天对不上因为原理图上标的还是U、V、W、ia、ib、ic。后来我定了个规矩所有软件里的变量命名必须和原理图硬件标注保持一致至少要在头文件里写清楚映射关系这才算把这个坑填上。5.4 网上零散资料带来了更多误导这年头自学资料一大把但质量也是鱼龙混杂。很多个人博客文章里作者自己没把坐标系理清楚就写“A相轴线在x轴上”这种话单独看没毛病可一旦和后面“q轴垂直”放在一起新手就直接懵了。我的建议是只看几篇权威性高的应用笔记把三套坐标系三相静止、两相静止、转子旋转的变换关系亲手推导一遍。你真正推导完以后任何关于“ax by cz怎么划分”的问题都不会再有疑惑因为你会明白所有的轴都是自己定义出来的工具重要的是让它们在数学上自洽。6. 工程实现的几条落地建议6.1 先画一张坐标系关系图做任何电机驱动项目第一步不要急着写代码千万不要急着写代码。先拿张纸把电机定子、转子、三相绕组、霍尔位置、编码器零位都画出来标好角度关系。然后在这张图上把三相静止坐标、α-β静止坐标、d-q旋转坐标都标出来写清楚它们之间靠什么角度关联。这张图花二十分钟但后续调试能帮你省下至少一下午。6.2 用惯用的变量命名规范固定映射我在自己的代码库里一直使用以下命名规范实测对团队协作友好物理三相输入ia、ib、icClark变换输出i_alpha、i_betaPark变换输出i_d、i_q电角度theta_e机械角度theta_m角速度omega当你把每个变量名背后代表哪个坐标系写进代码注释里就不会再有人在群里问“ax by cz怎么划分了”。很多时候这个疑问本质上是代码可读性差导致的误会。6.3 用离线数据回放验证你的变换正确性我强烈建议大家在调板之前先离线跑一遍坐标变换。怎么做用示波器采集一段电机运行时的三相电流波形存成CSV文件。然后在Matlab或Python里加载这段数据做Clark和Park变换。因为此时你已经知道电机实际运行的方向和电角度数据你可以核对变换后的d-q分量是否合理。如果变换程序有顺序错误离线很快就能暴露出来比上电调试安全得多。这个流程我每次做新平台都要走一遍百试百灵。6.4 把“轴”当作逻辑概念而非物理概念最后想强调的一点是工程里的“轴”首先是一种数学工具。你写矩阵变换其实是解耦的需要物理绕组还是那三根线不会因为控制器里多了一个“q轴”就改变它在电机里的位置。所以当你看到任何有关ax、by、cz的讨论第一反应应该是“这里是不是有人把坐标系混着用了”而不是“我的电机是不是少了一根轴”。理解这一点以后再从“垂直轴线”的问题回头看你会发现答案已经不重要了因为你已经知道真正重要的是你在哪个坐标系下思考问题以及你的控制算法是否和实际的引线相序匹配。这才是直流无刷电机控制里最核心、也最容易被忽略的基础工程素养。
阅读完成 · 觉得有帮助?