APP下载

基于掩码自编码器的小样本深度学习道岔故障诊断模型

2022-12-16徐长明卢佩玲董贺超史维利

中国铁道科学 2022年6期
关键词:掩码道岔编码器

李 刚,徐长明,龚 翔,卢佩玲,董贺超,史维利

(1.中国铁道科学研究院 研究生部,北京 100081;2.中国铁道科学研究院集团有限公司 通信信号研究所,北京 100081;3.中国铁道科学研究院集团有限公司 国家铁路智能运输系统工程技术研究中心,北京 100081;4.东北大学秦皇岛分校 计算机与通信工程学院,河北 秦皇岛 066004;5.河北环境工程学院 信息工程系,河北 秦皇岛 066102;6.中国铁路沈阳局集团有限公司 吉林电务段,吉林 吉林 130051)

道岔转辙机作为铁路信号系统重要的基础设备之一,其工作状态正常与否直接关系到运输效率和行车安全。根据铁路行业的统计数据,在发生故障的信号设备中道岔转辙机的故障约占39%[1],占比较高,也说明了道岔转辙机的故障率很高。目前道岔转辙机设备的日常维护和故障处理,主要依据信号集中监测系统提供的道岔动作曲线,信号集中监测系统能提供简单的预警和报警功能,但主要分析还是依靠人工浏览判断来完成,劳动强度很大,且容易出现漏判和错判情况。因而亟须设计出准确、可靠和高效的故障诊断系统,能够自动判断出故障及其原因,指导现场维修人员快速处理故障,切实提高维护效率和水平。

目前,国内许多相关学者通过道岔动作曲线对道岔故障诊断技术进行了研究。赵林海等[2]主要针对道岔转辙机典型故障下的动作功率曲线变化规律,提出1种基于灰关联的道岔故障诊断方法,通过采用Fisher准则对相应故障模式对应的特征向量进行选择,通过优化分辨系数并计算待测样本与各故障模式特征间的灰色关联度,将满足门限要求的最大灰色关联度对应的故障模式作为待测样本的故障诊断结果。张凯等[3]在分析提速道岔动作电流曲线变化规律的基础上,提出1 种基于BP 神经网络的提速道岔故障智能诊断算法,通过设计BP 神经网络对提速道岔特征向量与道岔故障类型的映射样本集进行训练及测试。杨阳等[4]针对目前我国道岔控制电路故障后难以快速准确诊断的现状,采用遗传算法优化支持向量机参数的方法完成对道岔控制电路的故障诊断。Zhang 等[5-6]提出通过人工参与的手段对曲线数据进行故障特征提取,从而建立相应的故障特征矩阵,将其转换为BP 神经网络的输入,以此进行故障识别。钟志旺等[7]提出基于主题模型PLSA 和支持向量机SVM 的道岔设备故障特征提取与诊断方法,通过分词算法将故障文档表达在词项特征空间中。谢博才等[8]介绍了一些传统机器学习手段在道岔故障诊断研究中的应用,包括特征提取方法、聚类分析研究及一些神经网络模型的使用。Shi 等[9]提出1 种基于半监督学习算法的道岔动作曲线故障状态诊断方法。池毅等[10]提出采用一维卷积捕捉空间结构实现端到端的故障诊断,降低模型的计算量、提高模型的抗噪性能。李婉婉等[11]基于GMM 聚类和PNN 进行了道岔故障诊断的研究。刘应君等[12]基于粒子群的支持向量机算法,提出1种补偿距离评估技术。郑云水等[13]针对道岔健康状态评估及故障检测,采用了基于相似度的方法,用SURF算法进行特征提取,并用Hausdorff 距离计算待识别曲线与标准曲线间的相似度。许庆阳等[14]提出了基于隐马尔科夫模型的道岔故障诊断方法。以上研究主要是基于道岔转辙机的功率曲线、电流曲线等数据对道岔转辙机进行故障预测和诊断,探索出了多种经实验室测试验证的有效故障诊断方法。但这些方法都面临着1个共同的问题:故障样本过少,部分文献报告研究所使用的故障案例数量多为每种几十条。为解决此问题,一些研究者通过加入多种多样的具体先验知识,以弥补故障数据少导致故障特征难以提取的不足。然而,大部分此类先验知识因缺乏灵活性,往往会限制模型的学习能力,尤其会限制模型的泛化能力。

近年来,研究人员在深度学习方面的研究取得了长足的进步。尤其是2015年以来,谷歌、微软等企业在自然语言、图像等领域中,通过采用模型的预训练方法[15]推动深度学习技术取得了跨越式发展,著名的BERT[16]和GPT-3[17]等模型在各知名大数据集上的评测结果提升明显。预训练方法有3个关键技术:基于注意力机制的变压器[18]、基于掩码的自监督[19]以及微调技术。深度学习技术的快速发展,为研究道岔故障诊断技术提供了新的途径。

本文提出1 种无须具体先验知识的端到端[19-20]的基于掩码自编码器的小样本深度学习[21-22]模型,可基于常识性约束和结构化约束[23-24]等多个约束实现端到端的联合优化,解决小样本故障诊断问题。

1 道岔电流曲线及故障类型

1.1 电流曲线

研究对象为ZYJ7 型转辙机,信号集中监测系统采集的正常ABC三相动作电流曲线如图1所示。

图1 ZYJ7型转辙机三相动作电流曲线

道岔转辙机执行1 次动作的完整过程可大致分为以下9 个阶段。(1)T1—T2 阶段:道岔1 启动继电器(1DQJ)吸起,道岔1 启动复示继电器(1DQJF)未吸起,此时还监测不到电流。(2)T2—T3阶段:1DQJ与1DQJF均被吸起,道岔2启动继电器(2DQJ)未转极,即启动电源加在了表示电路上,曲线上形成了小的台阶,但时间持续很短。(3)T3—T4 阶段:2DQJ 转极后,接通道岔启动电路,电机上电,曲线上形成了1 个电流峰值。(4)T4—T5 阶段:转辙机解锁,该段曲线称作道岔解锁曲线。(5)T5—T6 阶段:道岔转换过程,三相电流大小基本一致。(6)T6—T7 阶段:道岔锁闭。(7)T7—T8 阶段:自动开闭器接点断开,启动电路接通表示电路,三相电流值均出现1个小的下降过程。(8)T8—T9 阶段:在1DQJ 缓放时间内,启动电源A相与B相或C相,加在了表示电路上,形成了电流约0.5 A,长度小于1 s的小台阶曲线。(9)T9—T10 阶段:1DQJ 由前接点断开到后接点接通,1个完整的道岔动作过程就完成了。

1.2 故障类型

运行中的道岔转辙机设备出现故障属于偶发个例,故障道岔电流曲线数据也就非常少见。通过在多个车站长期搜集,记录到了一些道岔转辙机故障电流和电压曲线数据。结合现场专家经验,对发生概率较高的故障案例进行了总结,归纳出6 种ZYJ7 型交流转辙机的典型故障类型,分别用类型F1—F6表示,为方便处理,其余故障一概归为类型F7,详见表1。6 种典型故障案例所对应的曲线故障形态如图2 所示。后续随着运用积累,故障类型还可以不断扩充。

表1 ZYJ7交流转辙机典型故障

图2 典型故障案例曲线

2 基于掩码自编码器的小样本深度学习模型

为解决道岔故障曲线样本少的问题,提出基于掩码自编码器的小样本深度学习模型,在编码器结构中借鉴预训练变压器的位置编码技术,以便捕获曲线形态的位置信息;在神经网络训练中采用掩码技术对数据进行扩充,从而满足深度学习对数据量的基本要求;同时,也增加自监督信号,以便强制还原被掩码的数据,迫使神经网络学习电流曲线数据中的结构知识。

2.1 数据预处理

ZYJ7 型转辙机正常转换1 次时间大约为6 s 左右,每个正常的动作电流曲线数据可以由3×150型矩阵描述。其中,3 表示它由A,B,C 三相电流曲线构成,150 表示它沿时间轴延伸了150 维(150 个时刻,信号集中监测系统每40 ms 采集1 个数据点)。而在故障发生的情况下转换时间最长可以达到20 s 左右,这时数据维度高达500维,因此,统一设定样本数据为500维,对不足500 维的原始曲线数据进行补0 处理,同时将500 维的道岔动作电流曲线均匀地划分为50个分段。

2.2 模型结构

该模型包含数据预处理、掩码处理和深度神经网络3 个部分,模型总体结构如图3 所示。图中:w1和w2分别为编码器和解码器对应的网络权重参数;w3—w5分别为故障诊断网络中的各子网络权重参数;Zm为自编码器中间层m维空间隐变量;X∈Rd表示输入层与输出层均为实数R的d维空间数据;P∈Rn表示故障诊断网络的输出结果为n维的实数向量。

图3 基于掩码自编码器的小样本深度学习模型

由图3 可以看出:首先,对经过数据预处理的曲线原始数据进行掩码处理,即对曲线的50 个分段进行掩码,掩码处理模块右侧的图形为掩码后的曲线示意图,灰色方块代表相对应的曲线分段被遮盖;其次,经过掩码后的曲线数据被送入位置编码层,位置编码层每次都对曲线的50 个分段分别叠加,组成曲线数据点的数值保持不变,从而形成彼此之间各不相同的50个6维位置编码;然后,经过位置编码后的曲线数据被送入自编码器,自编码器由编码器(Encoder)和解码器(Decoder)组成,编码器的输出除了送给解码器以便重建输入曲线之外,还作为故障诊断网络的低维输入,自编码器右侧的图形为重建后的输入曲线示意图;网络输出了被掩码处理去除部分的曲线段,损失函数会约束输出使其尽量还原成对应的输入部分(图中未被灰块遮盖部分);故障诊断网络由多层全连接层、故障分类子网络和故障位置子网路组成,分别负责曲线故障类型和故障时刻诊断;由于采用了并列输出的模型结构,编码器同时影响了解码器、故障分类子网络及故障位置子网络,这些输出上的损失也将会反向传播回编码器,不断优化编码器网络;最终,整个训练过程是以上多个约束共同作用的联合优化过程。

2.2.1 掩码处理

掩码处理能把原始故障样本处理成更多的新样本,也能给正常样本添加额外的约束,从而更好地降噪和获得数据本身的深层结构信息。掩码的一般处理过程如图4所示。

图4 掩码处理过程示意图

将500维的道岔动作电流曲线均匀地划分为50个分段,并将其输入到掩码处理层,掩码处理层随机掩码50 个分段中的1—2 个分段。在输入端,被掩码的分段数据替换成0,和未被掩码的分段一起送入神经网络。在输出端,被掩码的原始分段将作为解码器输出的监督信号。

通过随机掩码处理,小样本故障数据扩充成大量样本。例如,通过设置G组不同的随机掩码方式,对n条故障曲线数据的不同数据段进行随机遮盖,由此可以产生n×G组不同的结果。通过这种简单的变换,小样本的故障曲线数据可以成倍添加至训练集中,更好地完成模型的学习与训练。

此外,利用掩码变换还相当于让模型从多个角度看待同一条原始数据,反复在不同的输入中向网络回放相同的正常特征和故障特征。通过让网络在部分输出端重构输入数据,约束网络尽早学会提取数据分段之间的结构关系,获得原始数据良好的低维嵌入表示,进而全面提升网络的预测和泛化能力。

2.2.2 位置编码层

位置编码层负责为曲线的50 个分段分别进行位置编码。文献[16]提出了1 种基于三角函数的位置编码算法,本文模型也采用该算法对位置进行编码,表达式为

式中:P为进行位置编码后得到的d维向量;pos为分段曲线序列数据的次序号,pos=1,2,…,50;2i和2i+1 分别为分段曲线d维位置编码中各个偶数分量和奇数分量的次序号,i=1,2,…,d/2。

式(1)和式(2)表明,特征向量的偶数位置元素用正弦函数计算,奇数位置的元素用余弦函数计算。

在位置编码层,为经过随机掩码后的每个曲线分段增加了1 个6 维的位置编码。具体过程为:将进入位置编码层的50 个分段曲线,通过50 个彼此独立无关的非线性变换转换成6维,再与计算得到的位置编码P相加,就完成了位置编码。

被掩码的分段曲线设置为0 向量,由于位置编码非0,神经网络依然可以区分哪1 段曲线从输入中被去除了。

2.2.3 自编码器

自编码器包含编码器和解码器2 部分。编码器是为了将输入信息映射到某个更低维度的空间,生成包含重要特征的编码Zm,可用函数h=f(x)表示(h为编码器函数,x为输入变量);解码器是将特征编码重构为尽量能还原出原输入的结果,用函数r=g(h)表示(g为解码器函数)。自编码器的目的就是尽量使g(f(x))=x。

编码器依据曲线序列数据通过位置编码后的有效值提取特征,并输出相应的曲线特征向量到解码器。解码器则根据这些特征向量,重构曲线时间序列数据,同时将掩码处理层进行随机掩码后的曲线序列进行还原,至此模型学到重要特征之间的联系。

在掩码处理层完成对样本的部分特征随机掩盖操作后,利用样本的部分特征预测被掩盖掉的曲线特征以训练自编码器。这样可以让自编码器尽量保留样本结构特征信息,在后续联合故障诊断网络实现共同优化,形式化表达式如式(3)。在自编码器部分采用MAE[25]的网络结构。

式中:z为编码网络输出的样本编码;xmask为解码器输出的预测原样本被掩码位置的部分信息表达;Encoder()和Decoder()分别为基于mask 思想的编码器和解码器。

通过最小化预测的掩码信息、原始样本掩码信息的距离及后续故障诊断网络的损失函数(损失函数将在2.7节给出),共同指导自编码器的训练。

2.3 故障诊断网络

故障诊断网络是把隐变量z作为输入,用多层前馈网预测z在嵌入空间得到各个故障时刻的概率分布。分别从故障分类和故障时刻2 个方面的拟合操作去指导自编码器对样本的信息提取过程。故障诊断网络是由多层全连接层、故障分类子网络和故障位置子网络组成。把经过位置编码的样本输入编码网络得到的低维特征表示输入故障诊断网络,得到1个共同的样本编码;然后将这个共同的样本编码分别传入故障分类子网络和故障位置子网络。故障分类子网络是输出维度为故障类型数量维度的编码器,其输出经过模型判定后曲线分别属于F0—F6故障类型的概率分布,F0—F6概率分布的总和为1(其中,F0为正常曲线数据,F1—F6为待诊断的故障类型),其中预测结果中最大的概率值即表示模型对该条曲线进行故障诊断后的预测结果。故障位置子网络是输出维度为50 维的编码器,这50 维分别对应原始样本的50 段发生故障的概率分布,每段分布的概率用0 或1 表示。即在该种故障类型下,曲线最有可能是哪段时刻(0—49 段)发生了故障。在做到故障诊断分类问题的同时,快速诊断出故障时刻。形式化表达式为

式中:Estk()为子评估网络,k∈[1,3];zlatent为编码器输出的隐变量;p1和p2分别为2 个子网络预测的样本编码。

本文搜集了ZYJ7 转辙机的6 类常见故障,如果新增M类故障,修改神经网络的输出层为M+6维,在新数据集上进行训练即可。如果M较大,可以适当修改网络的拓扑结构,以相对复杂的网络模型进行训练。

2.4 损失函数

故障诊断网络通过联合掩码表达的损失函数,共同引导自编码器从位置结构和拟合类别分布特征角度训练优化。损失函数由4 部分构成,用L(x,w)表示要学习的变量x关于参数w的损失函数,表达式为

式中:L1为曲线重构阶段的损失函数;x为原输入曲线特征;x'为模型输出重构后的曲线特征;w1和w2为自编码器部分的权值矩阵;L2为故障诊断网络中故障分类子网络预测阶段的损失函数;w1,w3和w4分别为该网络中的权值矩阵;L3为故障诊断网络中故障位置子网络预测阶段的损失函数,其权值矩阵对应分别为w1,w3和w5;L4为w1,w2,w3,w4和w5这几组参数联合构成的正则化损失函数。

模型通过端到端联合优化的方式,通过预测的样本和实际的样本产生的误差反向传播指导网络参数学习,共同作用使得损失函数L达到最小。

3 试验验证

3.1 试验环境和试验数据

在上节所提模型基础上构建试验验证环节,无须GPU 服务器等特殊的硬件条件,仅在普通个人计算机上即可训练,并可以实时作出预测。代码在PyTorch1.7 框架下编写和调试。试验数据为某站ZYJ7型转辙机实际运行数月所产生的7 905条正常道岔电流数据和40 条故障道岔电流数据,40 条故障数据涵盖了6类故障。把数据划分成50段,每段包含10个时刻的三维电流曲线。首先,按照图4把曲线进行掩码处理;然后,再把全部相同的曲线进行去重操作,最终将故障曲线数据变为4 800条,其中600 条数据每条有1 段被掩码,另外4 200 条数据每条有2 段被掩码。正常数据随机掩码其任意2段,掩码后的数据量还保持7 905 条不变。为了保证各类故障数据的分布均衡,将正常数据和各类故障数据进行分层抽样,划分成训练集和测试集。具体为:正常数据按照9∶1的比例划分,9份用于训练,1 份用于测试;每种故障类型的数据分别按照5∶1 抽样,5 份用于训练,1 份用于测试。最终,数据集中各类数据的划分结果见表2。

表2 样本数据 条

训练时,批的大小设定为256 个样本;总训练迭代次数为300次。

3.2 试验结果

在训练集上模型各部分损失函数、准确率及混淆矩阵的变化如图5 所示(各图分别出自模型第10,50,150,300 次迭代过程)。图中:混淆矩阵中每行之和,代表各类数据的总条数;第i行第j列元素为第i类故障被误认为是第j种故障的数量。

图5 训练集上模型的表现

由图5 中不同次数迭代后损失函数及准确率变化曲线可以看出:(1)随着训练次数的增加,模型的损失函数很快达到收敛;(2)绿色曲线一开始方差较大,但下降很快并持续下降接近0,后期的方差也变小了,这表明模型诊断故障的能力持续提升,并最终稳定在高水平;(3)蓝色曲线开始下降很快,并维持损失不变,表明自编码器很早就学会了原始数据较为恰当的低维表示;(4)红色曲线始终维持较小的损失,表示故障位置子网络的预测很准确,这与故障曲线中故障发生的时间有明显且简单的规律性有关;(5)代表总损失的黄色曲线也在持续下降,表明网络在训练集上收敛较快,大概在迭代150 次左右就已经达到了很低的数值,第150次之后的进步,从曲线中很难读出,但是可以在随后介绍的混淆矩阵中看得很清楚;(6)诊断准确率曲线在震荡上升,前期方差较大,后期方差变小,说明学习过程稳定且收敛。

由图5 不同次数迭代后混淆矩阵可以看出:除F4和F5类故障外,其他类型故障都被很好地进行了分类,造成这一现象的原因是模型区分F4和F5类故障的关键特征被遮蔽掉了,而曲线未被遮蔽掉的其余部分特征表明当前故障为F4类或F5类故障;在混淆矩阵对角线上是故障被正确分类的条数;对角线上的个数值越大,表示预测效果越好。混淆矩阵展示了神经网络学习逐渐改正错误的过程。网络最开始倾向于把故障曲线预测为占绝大多数的正常曲线类别,经过一定次数的迭代之后,才逐渐分类正确。如前文所述,在损失函数和准确率曲线变化不明显时,混淆矩阵能够展示更多细节。例如,对于迭代150 次的F1类故障,仍然有15 条被错误预测为F6类故障,但到了第300次,则全部F1类故障都被准确识别出来。

各故障类型的识别准确率见表3,表中F00为故障类型F0被正确识别的概率。由表3可知:模型在训练集上的总体准确率达到了98.9%,优于文献[1]中采用CNN-GRU方法的95%的准确率。

表3 训练集上的识别准确率

在测试集上模型各部分损失函数、准确率及混淆矩阵的变化如图6 所示。由图6 可以看出:在测试集上3 类损失函数曲线均接近0,表明模型在测试集上表现优异,具有稳定的泛化能力;各类型的曲线基本集中在了混淆矩阵的主对角线上,表明模型预测效果很好。

图6 测试集上模型的表现

模型在测试集上的准确率见表4。由表4可知:模型在测试集上的总体准确率达到98%以上,与在训练集上的表现接近,表明模型泛化能力强。

表4 测试集上的识别准确率

T-SNE 降维算法不具有预测能力,但具有较好的解释性,采用该算法来说明用于试验的训练集样本的分布特征。对经过掩码后的所有训练集样本采用T-SNE 算法进行降维,其二维可视化结果如图7所示。图中:每个不同颜色的散点数字代表该故障类型的1 个或多个样本(可能重叠);红色代表正常样本;绿色、紫色和橙色分别代表故障类型F3,F4和F5。由图7 可以看出:代表正常样本(红色)的0聚集程度较好,但分散半径较大说明正常样本的个体也有较大差异,因此,正常样本总体质量较好,但存在不同程度的噪声;异常样本则较为分散,一些异常样本聚集程度比较明显,例如故障类型F3(绿色);前文试验中混淆矩阵中显示难以划分的故障类型F4和F5曲线,在二维可视化图中也出现了重叠(中上方位置紫色的4 和橙色的5),说明其确实难以辨别。

图7 故障诊断分类可视化结果

在普通的个人计算机上(CPU:AMD Ryzen7 5800U;主频:1.90 GHz;内存:16 G;64位操作系统),算法的代码实现基于PyTorch1.7框架。迭代训练300 次需要105 s,神经网络模型预测的速率大约为3×104条·S-1电流曲线,具有很强的实时性。

3.3 试验方案的优势和不足

机器学习的目的在于对从未见过,但与训练数据服从相同分布的数据进行很好的预测,即在所有可能的测试集上的期望误差,即泛化误差要小。根据误差分解理论:泛化误差=偏差+方差+噪声。其中,拟合能力强的模型,偏差较小;当数据集较小的情况下,更换数据集导致数据分布发生剧烈变化,测试集上的误差的方差较大,表明泛化能力差;噪声是不可学习的,噪声大代表所学习的任务难度大。

由于缺乏一致认可的基准数据集,各研究均采用含有私有数据的非公开数据集,因此评价指标仅在一定的置信区间下表现出统计意义。需要指出,绝大多数关于道岔故障诊断的研究,所采用的数据集都是小样本(几十条、上百条数据),这会导致评价指标的方差很大,即更换成不一样的数据集以后,评价指标大概率会发生较大变化。

在鲁棒性上,本文试验方案显著优于现有方法。主要体现在:采用的深度学习模型参数相对多、模型复杂、拟合能力强、偏差小;通过掩码进行了数据扩充,增加了训练数据量,扩充后的训练集数据多达11 114条,测试集数据达到了1 591条,会显著降低方差;噪声不可学习,如果模型拟合了噪声就一定会过拟合,直接使用少量数据训练出来的模型难免会过拟合,而深层的神经网络模型在对抗过拟合方面有很大优势。

本文试验方案也存在不足,主要体现在以下2个方面。

一方面,可能存在“一定程度”的数据泄露。在本文中,测试集中的每条数据都是由训练集中的数据的特征片段拼接而成,在一定程度上训练数据向模型泄露了测试集上的信息。为了缓解“特征泄露”的影响,在训练时,给训练集数据的输入上加入了高斯白噪声。具体地,在输入数据的每个维度上都加入噪声分量ε~N(0,σ2),σ=0.1。

另一方面,掩码可能导致一部分关键特征丢失。图5 和图6 的F4和F5故障类型比较接近,但是由于随机掩码,掩码后的数据和标签之间缺乏典型的函数映射关系,使数据标签看起来具有随机性,这就人为地在标签上引入了噪声。后续将考虑设计相应的算法改善掩码可能带来的不确定性。

4 结论

(1)模型在道岔故障诊断领域的实际应用表明,通过现场采集的真实数据,无须预训练海量的道岔电流曲线数据,仅需要少量的故障曲线数据及人工标签即可完成模型的训练,并得到了98%以上故障诊断分类准确率,同时也达到了对曲线故障发生位置作出快速定位的目的。

(2)在现场实际应用及测试过程中,诊断结论可靠,模型具有及时性强、准确性高等特点,可以满足现场实时分析道岔电流曲线的应用需求,符合铁路电务修护的未来发展方向。

(3)所提出的模型具有良好的鲁棒性及可扩展性,对于未知的均不能划分至F1-F6故障类型中的故障曲线,可以统一划分至F7中。并且对于今后可以总结并归纳成另外1 种全新的典型故障类型,考虑将其增加并扩充至模型的训练过程中。

猜你喜欢

掩码道岔编码器
融合CNN和Transformer编码器的变声语音鉴别与还原
中低速磁浮道岔与轮轨道岔的差异
低面积复杂度AES低熵掩码方案的研究
场间衔接道岔的应用探讨
既有线站改插铺临时道岔电路修改
基于布尔异或掩码转算术加法掩码的安全设计*
解析网络掩码
基于双增量码道的绝对式编码器设计
应用旋转磁场编码器实现角度测量
基于数字信号处理的脉冲编码器