一种用于FDM3D打印机的故障测试-定位方法技术领域本发明涉及3D打印机技术领域,特别是涉及一种用于FDM3D打印机的故障测试及定位方法。
背景技术:目前,各FDM3D打印机生产厂商通过在开源的固件上做修改以适应自身的机型,样机研发完成后的功能测试以传统的目测为主,即通过反复打印观察并收集其异常状态,如异常原因是由固件引起的,则通过修改固件消除。其测试流程如图1所示。该测试方法主要有以下几个弊端:1.功能覆盖率低:由于打印文件的造型和打印速度的制约,传统测试过程中的运动控制无法覆盖基于任意运动速率的任意运动路径,因此,永远无法保证打印机在打印某个之前没有打印过的文件时会出现由固件引起的异常情况。同理,单靠目测本地人机界面(以触摸屏为例)的有限状态的手动操作,也难以保证所有的人机操作都不会使控制界面进入死循环等异常情况。2.出现异常情况时无法判定是控制算法问题、电路驱动问题还是机械问题:例如Delta机中所有的运动轨迹都要通过同时驱动三个电机来完成,为了确保精确地控制,不仅三个电机的步进脉冲输出要通过固件进行精密计算后方可匹配,而且三个传输皮带间的松紧度也要很好地匹配。因此,挤出头运动过程中若出现丢步情况,无法判断其根本原因何在。以上背景技术内容的公开仅用于辅助理解本发明的发明构思及技术方案,其并不必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。
技术实现要素:本发明的目的在于提出一种用于FDM3D打印机的故障测试-定位方法,以解决上述现有测试技术存在的功能覆盖率低且无法判定出现异常情况是控制算法问题、电路驱动问题还是机械问题引起的缺陷。为此,本发明提出一种用于FDM3D打印机的故障测试-定位方法,包括:A.构建能完整描述被测对象的功能模型;B.对应各测试行为建立测试用例集,所述测试用例集中的每个测试用例至少描述一个测试行为;C.发送测试用例至所述功能模型以激励所述功能模型输出比较信息,同时发送所述测试用例至所述被测FDM3D打印机的主控电路中的单片机,所述功能模型具备与被测对象控制部件完全相同的信号输入端口、信号输出端口和信号处理部件;D.收集并处理所述数字信号和来自所述FDM3D打印机的驱动电路的模拟信号,打包成报文反馈至上位机;E.通过所述上位机对比所述比较信息和所述报文,并将比较结果编辑成log文本,用于定位故障。优选地,本发明还可以具有如下技术特征:所述步骤D中的收集和处理通过测试电路完成,所述测试电路包括用于接收所述比较信息的数据反馈编码器,用于接收所述模拟信号的模数转换电路。所述测试电路还包括用于接收各传感器信号的闭环周期计时器。所述测试用例用于实现两个极限坐标间的往复运动,并通过所述功能模型计算所述被测FDM3D打印机的挤出头在两个极限位置运动时各电机的步进数,所述步骤E中的所述对比所述比较信息和所述报文包括:1)将所述单片机输出至所述FDM3D打印机的各电机的实际步进数经线性转换得出的总位移与所述功能模型中计算出的步进数进行对比;2)将所述单片机输出至所述FDM3D打印机的各电机的实际步进数与所述FDM3D打印机中各gcode命令中相应参数累计的运动位移进行对比;3)将所述单片机输出至各电机的实际步进数与所述FDM3D打印机中各电机驱动器给电机的实际脉冲经模数转换并解码的数据进行对比;当测试通过所述2)和3)的比较但未通过所述1)的比较时,判定为机械故障或机械误差;当测试通过所述1)的比较但未通过所述2)、3)的比较时,判定为单片机的固件故障。通过所述测试用例使所述FDM3D打印机的挤出头在给定的随机坐标、随机运动半径及随机运动方向与所述FDM3D打印机的三轴相交的随机运动夹角之间作随机运动速率的往复运动,所述步骤E中对比所述比较信息和所述报文包括:1)将所述单片机输出至所述FDM3D打印机的各电机的实际步进数经线性转换得出的总位移与所述FDM3D打印机中各gcode命令中相应参数累计的运动位移进行对比;2)将所述单片机输出至各电机的实际步进数与所述FDM3D打印机中各电机驱动器给电机的实际脉冲经模数转换并解码的数据进行对比;当测试通过了所述1)的比较但没通过所述2)的比较时,判定为驱动电路功能不稳定;当测试未通过所述1)的比较但通过了所述2)的比较,则判定为固件故障。在所述FDM3D打印机工作的任意时间点随机插入至少一个传感器的极限值,并通过所述闭环周期计时器计数,直到接收到所述单片机对该极限值的响应后计数停止,再通过所述数据反馈编码器上传到所述上位机,并将计算得到的响应时间通过log文本输出。在打印机工作期间的预定时段,通过所述测试用例模拟手动、随机且快速地按压触屏各个区域,以产生报文并下发所述单片机,并将所述报文连同所述FDM3D打印机的各电机的运动反馈信息通过所述数据反馈编码器返回至所述上位机,当所述触屏显示挂死或运动异常现象,则判定为单片机的固件故障。该故障测试-定位方法还采用测试缓存来缓存所述测试用例及该FDM3D打印机的各传感器状态数据。本发明与现有技术对比的有益效果包括:解决了现有技术的测试方法功能覆盖率低且无法判定出现异常情况是控制算法问题、电路驱动问题还是机械问题引起的缺陷。附图说明图1是现有技术的测试流程图;图2是本发明一个具体实施方式的测试环境架构图;图3是一个具体实施方式的H型结构3D打印机的驱动皮带设置示意图;图4是一个实施方式的闭环周期计时器状态转换示意图。具体实施方式所述闭环周期计时器用于计算从传感器信号输出到单片机响应该信号后所用的时间。本发明提出一种用于FDM3D打印机的故障测试-定位方法,其原理图如图2所示,包括:A.构建能完整描述被测对象的功能模型101;B.对应各测试行为建立测试用例集,所述测试用例集中的每个测试用例102至少描述一个测试行为;C.发送所述测试用例至所述功能模型101以激励所述功能模型输出比较信息,同时发送测试用例至所述被测FDM3D打印机的主控电路20中的单片机201,所述功能模型101具备与被测对象控制部件完全相同的信号输入端口、信号输出端口和信号处理部件;D.收集并处理所述数字信号和来自所述FDM3D打印机的驱动电路202的模拟信号,打包成报文反馈至上位机10;E.通过所述上位机10对比所述比较信息和所述报文,并将比较结果编辑成log文本,用于定位故障。其中:所述功能模型在上位机模拟整个打印机的功能,包括但不限于如下功能:a.用于计算所述被测FDM3D打印机的挤出头在两个极限位置运动时各电机的步进数。b.用于各随机坐标往复运动时步进数的计算。c.用于计算触摸屏接收到某些输入时应当正确响应的输出;并将应当正确响应的输出和实际的输出作对比,来判断实际输出是否正确。所述功能模型可作为所述上位机中的一个软件模块,该软件模块模拟了充当下位机的打印机的所有的功能,可看作是一个虚拟的打印机。在正常情况下,当同时对打印机和所述功能模型输入同一组数据时,所述功能模型的输出应与实际打印机的输出完全相同。那么,在功能模型是完善而准确的情况下,若上述两者输出的结果存在差异,则说明打印机的功能在此处有bug或故障。所述步骤D中的收集和处理可通过测试电路30完成,所述测试电路30可为:包括用于接收所述比较信息的数据反馈编码器301,和用于接收所述模拟信号的模数转换电路302,还可进一步包括用于接收各传感器信号的闭环周期计时器303。通过所述功能模型计算所述被测FDM3D打印机的挤出头在两个极限位置运动时各电机的步进数,并通过所述测试用例实现两个极限坐标间的往复运动,所述步骤E中所述对比所述比较信息和所述报文包括:1)将所述单片机输出至所述FDM3D打印机的各电机的实际步进数经线性转换得出的总位移与所述功能模型中计算出的步进数进行对比;2)将所述单片机输出至所述FDM3D打印机的各电机的实际步进数与所述FDM3D打印机中各gcode命令中相应参数累计的运动位移进行对比;3)将所述单片机输出至各电机的实际步进数与所述FDM3D打印机中各电机驱动器给电机的实际脉冲经模数转换并解码的数据进行对比;4)当测试通过所述2)和3)的比较但未通过所述1)的比较时,判定为机械故障或机械误差;当测试通过所述1)的比较但未通过所述2)、3)的比较时,判定为单片机的固件故障。通过所述测试用例使所述FDM3D打印机的挤出头在给定的随机坐标、随机运动半径及运动方向与所述FDM3D打印机的三轴相交的随机运动夹角之间作随机运动速率的往复运动,所述步骤E中所述对比所述比较信息和所述报文包括:1)将所述单片机输出至所述FDM3D打印机的各电机的实际步进数经线性转换得出的总位移与所述FDM3D打印机中相应参数累计的运动位移进行对比;2)将所述单片机输出至各电机的实际步进数与所述FDM3D打印机中各电机驱动器给电机的实际脉冲经模数转换并解码的数据进行对比;当测试通过了所述1)的比较但没通过所述2)的比较时,判定为驱动电路功能不稳定;当测试未通过所述1)的比较但通过了所述2)的比较,则判定为固件故障。在所述FDM3D打印机工作的任意时间点随机插入至少一个传感器的极限值,并通过所述闭环周期计时器计数,直到接收到所述单片机对该极限值的响应后计数停止,再通过所述数据反馈编码器上传到所述上位机,并将计算得到的响应时间通过log文本输出。在打印机工作期间的预定时段,通过所述测试用例模拟手动、随机按压触屏各个区域,以产生报文并下发所述单片机,并将所述报文连同所述FDM3D打印机的各电机的运动反馈信息通过所述数据反馈编码器返回至所述上位机,当所述触屏显示挂死或运动异常现象,则判定为单片机的固件故障。此外,该故障测试-定位方法还采用测试缓存来缓存所述测试用例及该FDM3D打印机的各传感器状态数据。采用所述测试缓存的目的在于:控制测试数据的时序,重组测试数据的格式,将测试数据的时序与格式无缝对接单片机的数据接口等,从而实现所述上位机与单片机的更好通讯。所述FDM3D打印机用于获取状态数据的部件包括光耦、热敏电阻、热电偶及限位开关等,但不限于此,根据实际需要还可有更多。下面结合具体实施方式并对照附图对本发明作进一步详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。参照以下附图,将描述非限制性和非排他性的实施例,其中相同的附图标记表示相同的部件,除非另外特别说明。实施例1:本实施例用于具体介绍挤出头运动机械误差测试。在三个电机的驱动轴X、Y、Z上,每个轴两侧各安装1枚限位开关,共6枚,分别记为:Xmin、Xmax、Ymin、Ymax、Zmin、Zmax。根据机械设计的尺寸,计算出挤出头从Xmin运动到Xmax时各电机的应走的步进数δx(δmot1,δmot2,δmot3),并存入功能模型中。类似的,计算出δy(δmot1,δmot2,δmot3)和δz(δmot1,δmot2,δmot3),并存入所述功能模型中。编写测试用例实现任意两个极限坐标间的往复运动,其中,任意点的运动速率在限定范围内随机,如:(Xmin,Ymin,Zmin)与(Xmax,Ymax,Zmax)间往复运动(Xmin,Ymin,Zmin)与(Xmin,Ymin,Zmax)间往复运动(Xmin,Ymin,Zmin)与(Xmax,Ymin,Zmin)间往复运动(Xmin,Ymin,Zmin)与(Xmax,Ymax,Zmin)间往复运动……并将测试电路反馈到上位机的数据与功能模型的输出数据进行以下3类比较:一、类型I单片机在两坐标点间为各电机输出的实际步进数与功能模型中δx、δy、δz通过三角关系计算出的步进数作比较,若误差超过限定范围则报错。例如:对H型结构3D打印机而言:1)(Xmin,Ymin,Zmin)与(Xmax,Ymin,Zmin)间往复运动需要通过2个水平电机的同向、同速运动实现,其换算关系如下:δx=Xmax-Xmin;δy=0;δz=0;δmot1=Xmax-Xmin;δmot2=Xmax-Xmin;δmot3=0;误差限定范围为“0”。2)(Xmin,Ymin,Zmin)与(Xmax,Ymax,Zmin)间往复运动只须通过1个水平电机的运动实现,其换算关系如下:δx=Xmax-Xmin;δy=Xmax-Xmin;δz=0;δmot1=Xmax-Xmin;δmot2=0;δmot3=0;误差限定范围为“0”。再如:对delta型结构3D打印机而言:1)(Xmin,Ymin,Zmin)与(Xmin,Ymin,Zmax)间往复运动需要通过3个电机的运动匹配实现,其换算关系如下:δx=0;δy=0;δz=Zmax-Zmin;δmot1=Zmax-Zmin;δmot2=Zmax-Zmin;δmot3=Zmax-Zmin;误差范围可限定为“0”。2)(Xmin,Ymin,Zmin)与(Xmax,Ymin,Zmin)间往复运动至少需要通过1个电机的运动实现,其换算关系如下:δx=Xmax-Xmin;δy=0;δz=0;其中,l为支撑杆的长度,共三根,等长;r为打印平台的半径;δmot2=0,δmot3=0;误差范围可限定为:|Δ|≤5个步进。所谓H型结构3D打印机,是指有两个电机控制,驱动皮带10的设置如图3所示整体看为H型的3D打印机。当两个电机同向、同速率运动时,打印机挤出头的运动轨迹平行于打印机框架的一条边;当两个电机反向、同速率运动时,打印机挤出头的运动轨迹平行于打印机框架的另一条边。二、类型II两坐标点间所有gcode命令中相应参数累计的运动位移与单片机在两坐标间为各电机输出的实际步进数经线性转换得出的总位移作比较,若不匹配则报错。本实施例中,所述gcode命令主要分为:a.工作状态控制命令,b.工作状态查询命令,和c.运动控制命令三大类。其中,所述运动控制命令包含了各电机的运动位移量和运动方向等参数,即前文的“相应参数”。打印机每下发一条gcode运动控制命令,各电机产生一次位移,譬如累计下发10条gcode运动控制命令,则各电机产生的总位移数应为上述10条gcode运动控制命令中所累计的位移数的总和。三、类型III单片机在两坐标点间为各电机输出的实际步进数与各电机驱动器给电机的实际脉冲经模数转换并解码的数据作比较,若不匹配则报错。本领域技术人员理解,此类型3在信号转换过程中可能会产生微小误差,不一定是严格的绝对匹配,但误差通常没有类型1那么明显。在功能模型准确无误的情况下,若某个测试点通过了类型II和类型III的比较,但没有通过类型I的比较,则说明机械上存在误差;若该测试用例集通过了类型I的比较,但没有通过类型II的比较,则说明单片机的固件中存在功能bug(即存在固件故障)单片机中的固件首先要对gcode指令进行解码,通过一系列转换、传输,再通过相应的输出管脚输出实际步进数给电机驱动器。若固件存在bug,则有可能造成上述过程中的丢包,即输出的实际步进数与gcode命令中所要求步进数不匹配,这个bug通过类型II的测试即可测试出来。若该测试用例集没有通过类型III的比较,则说明驱动电路功能不稳定。实施例2本实施例用于具体介绍随机运动丢步测试,其是在实施例1的基础上所做进一步的测试内容。编写测试用例,给定挤出头的随机坐标(Xp,Yp,Zp),给定随机运动半径δr,给定运动方向与X、Y、Z三轴相交的随机运动夹角(θx,θy,θz),使得挤出头在坐标(Xp-δr·cosθx,Yp-δr·cosθy,Zp-δr·cosθz)与坐标(Xp+δr·cosθx,Yp+δr·cosθy,Zp+δr·cosθz·)之间作随机运动速率的往复运动,并将测试电路反馈到上位机的数据与功能模型的输出数据进行实施例1中的类型II和类型III比较。在功能模型准确无误的情况下,若某个测试用例集通过了类型II的比较,但没通过类型III的比较,则说明单片机内的固件没问题,但驱动电路功能不稳定;若该测试点没通过类型II的比较,但通过了类型III的比较,则说明驱动电路稳定性基本没问题,但固件中存在功能bug(即固件故障)。实施例3本实施例用于具体介绍传感器响应速度测试,其是在实施例1的基础上所做进一步的测试内容。该测试的目的是为了测试并记录传感器的响应速度。传感器响应速度在一定程度上影响机器执行命令的准确度,响应时间通过log文本输出给监视器供测试人员查看分析。编写测试用例集,在打印机工作期间,在任意时间点随机插入某传感器的极限值,闭环周期计时器接收到该极限值后开始计时,直到接收到单片机对该极限值的响应后计数停止,并通过数据反馈编码器上传到上位机,最终将计得的响应时间通过log文本输出,供测试人员查看分析。上述“闭环周期计时器”用于计算单片机对各类传感器的响应时间。计时方法如图4所示。未接收到任何传感器信号时,该模块处于“空闲态”;一旦接收到传感器信号,则立刻跳入“计时态”并开始计时,直到该模块接收到单片机对传感器的响应信号后才停止计时;与此同时,跳入“停止态”,并输出总的计时值;若“计时态”的计时时间超出限定范围,则跳入错误态并输出错误标志。实施例4假设实施例1、2的所有测试均通过,若触屏在该测试用例集中的某个测试用例下出现挂死或其他异常现象,则说明单片机中的固件在当前状态下运行是有问题的(即存在固件故障)。可根据该测试用例的输入条件和异常现象定位固件中的根因,并修改固件。修改后再跑该条测试用例,若依然存在异常输出,再继续修改,直到跑通为止。设计该测试的目的和用途是为了测试触屏在执行各式各样的频繁操作时是否会因为固件不够成熟稳定而出现异常现象。本实施例可按以下操作:编写测试用例集,在打印机工作期间的某个时段,模拟手动随机按压触屏各个区域时产生的报文下发单片机,并将单片机下发给触屏的显示报文连同电机的运动反馈等信息通过数据反馈编码器返回上位机分析比较。假设机械,电路均无问题,即实施例1、2中的所有测试均通过,若出现触屏显示挂死、运动异常等现象,则说明固件中存在功能bug(即存在固件故障)。本领域技术人员将认识到,对以上描述做出众多变通是可能的,所以实施例仅是用来描述一个或多个特定实施方式。尽管已经描述和叙述了被看作本发明的示范实施例,本领域技术人员将会明白,可以对其作出各种改变和替换,而不会脱离本发明的精神。另外,可以做出许多修改以将特定情况适配到本发明的教义,而不会脱离在此描述的本发明中心概念。所以,本发明不受限于在此披露的特定实施例,但本发明可能还包括属于本发明范围的所有实施例及其等同物。