CAN总线在汽车摇窗电机综合测试系统中的应用
2018-03-30包佳东
包佳东,韩 强
(东华大学 机械工程学院,上海 201620)
汽车摇窗电机是1个永磁、两极直流电动机,电动机内部有减速装置[1],一般由涡轮蜗杆来实现,其测试性能繁多,包括机械特性、起动性能、齿间隙、自锁性能、反向起动、转速同步性、耐久性等,因此进行各类性能测试时需要涉及角度、扭矩、转速、电流及电压等测试数据,且在测试过程中需要对各类数据进行实时更新。因此如何保证测试过程中的测控信号的正确性和同步性尤为重要。
CAN总线能够进行分布式控制,并且实时监控串行通讯网络,具有可靠性高,抗干扰能力强,纠错能力强等特点[2]。通过PC与多个MCU形成分布式控制,并基于CAN总线报文收发、各节点状态的实时监控,设计了摇窗电机综合测试方案,以系统稳定性和可靠性的特点设计了满足数据同步采集和实时传输的通讯控制方案,制定了适宜的CAN总线应用层通讯协议,提高了摇窗电机测试的可操作性和可靠性,得以实现PC对多台摇窗电机进行测试。
1 系统测控方案
摇窗电机综合测试系统采用分布式控制,通过CAN总线,PC对多个摇窗电机测试控制机箱进行集中管理和控制。每个嵌入式系统负责1台摇窗电机测试,其系统组成如图1所示,由PC,恒温箱、嵌入式测控单元、摇窗电机电源、摇窗电机、各类传感器、负载电机、负载驱动器、正反转控制模块等组成,通过在CAN总线上并联相同的嵌入式系统建立多个节点。
图1 摇窗电机测试系统框图Fig.1 Window lifter motor testing system block diagram
测试过程中,需要检测电流、电压、角度、转速、转矩等数据,如图所示的传感器主要有霍尔电流传感器、绝对式光电编码器、扭矩传感器、霍尔非接触式开关等。
摇窗电机综合测试系统的节点以STM32F103 ZET6作为主控芯片,该芯片为基于ARM Cortex-M3内核的32位高性能微控制器[3]。外接电路分别由A/D 模块、DI模块、DO 模块、SSI采集模块、RS232和CAN通讯模块、高速计数模块、外部存储模块等组成。其节点结构框图如图2所示。
图2 CAN总线节点结构框图Fig.2 Structure block diagram of CAN bus node
A/D模块实现对测试电机电流、电压数据采集。DI模块用来接收固定位置的霍尔行程开关信号。DO模块用于控制正反转控制模块的信号通断,实现对摇窗电机正反转的隔离控制。SSI采集模块通过将绝对编码器(角度传感器)的串行数据变为并行数据来进行数据采集。RS232模块负责与负载驱动器通讯,继而控制负载大小。高速计数模块实现对扭矩传感器周期性电平信号的高速响应来采集扭矩值。外部存储模块用以存储操作参数。
PC通过CAN接口卡连在CAN总线上,CAN接口卡采用研华的PCI-1680U。PCI-1680U能通过自动重发功能实现总线仲裁和差错检测功能,极大地降低了数据丢失几率,保证了系统可靠性。然而,由于在实际测试中,有些测试项目需要稳定的实时性,在保证CAN高速通信速率上,需要CAN模块并联120 Ω的终端电阻来作为阻抗匹配,以减少回波反射[4],如图3所示。
图3 CAN总线分布控制示意图Fig.3 CAN bus distributed control diagrammatic sketch
通过以上设计,使各个摇窗电机测试单元能够独立地进行测试试验,一般来说摇窗电机耐久试验占用时间长。因此,该测试系统当有若干节点进行耐久试验的时候,剩下空闲节点可以进行诸如机械特性、起动性能、齿间隙等试验。
2 测控同步性
每个摇窗电机测试节点,有2路霍尔开关信号,电压、电流16 b数字信号,扭矩16 b数字信号,角度18 b数字信号,转速16 b数字信号。由于数据帧的数据域至多8 B,需要通过发送2帧才能传递完整的数据信息。
某摇窗电机测试系统需要对6台摇窗电机进行同步测试,采样率最高达50 Hz,由于每次采样需要2帧数据,即每个节点每秒需要传输100帧数据。2帧允许的时间间隔可以通过式(1)计算得到,经过计算理论上2帧允许时间约为1.6 ms。
式中:f为数据采集率;n为采集节点数目;m为每次的采样帧数。
对于长20 m,截面积0.25~0.34 mm2的导线,根据经验公式可得知波特率能到达1 Mb/s[5]。为保证数据传输正确性,且PCI-1680U通信卡给出的波特率选项为 1 Mb/s,800,500 K,250,125,100 kb/s等,取最高理论速率25%,故而拟定传输波特率fb=250 kb/s。
根据CAN协议规范,标准数据帧由7个不同的位域组成,即帧起始、仲裁域、控制域、数据域、CRC域、应答域和帧结束。数据域可以为0,数据帧的组成[6]如图4所示。
图4 标准数据帧的组成Fig.4 Standard data frame composition
根据式(2),可计算出1帧的数据总位数大小,即
式中:N为数据域长度。当N=8时,1帧的数据总位数为108 b,且由于数据帧彼此之间有3个隐性位,并在考虑位填充和存在错误帧的情况下,位填充最多21 b,错误帧最多12 b。传输1帧所需的最大时间为[7]
通过上述计算可知,2帧传输需要的最大时间间隔为576 μs,小于允许时间间隔1.6 ms,能够满足实时要求。由于CAN总线通信按优先级进行仲裁,即仲裁场ID越小的节点,越优先发送数据,而优先级低的只能在总线空闲的情况下才能发送数据。为保证每个节点都能有发送数据的机会,当个节点回应主站数据的时候,所占用的时间不得超过发送最大时间的2倍即1.2 ms。
3 系统应用层协议
CAN总线规范仅定义了模型的最下面2层:数据链路层和物理层[8]。故摇窗电机综合测试系统在应用过程中需要为此制定对应的应用层协议。
对应用层协议的要求如下:①实现一主多从的多节点分布式控制;②指令控制及参数设置;③读取被测参数信息;④测试模式选择;⑤节点故障监控。其中,整个摇窗电机测试系统有6个节点,因此每个节点都需要1个固定的地址,而为了代码操作的高效,分别将ID2—ID7置位来对应每个节点的地址,从站通过ID1的清零和置位用于区分对主站写回应帧、读回应帧,并以通过ID0的清零和置位来区分节点读回应帧的第1帧和第2帧,ID标识分配见表1。
表1 ID标识符分配Tab.1 Distribution of ID identification symbol
主站发送数据域的协议格式为:起始符+功能码+寄存器/测试模式+参数+结束符。由表2可知,起始符为0xFF,结束符为0xEE。第2字节(功能码)分为读、写和系统复位3种模式,分别为0x03,0x06,0x09。第3字节为寄存器/测试模式,寄存器对应DO和RS232模块,范围在0x01—0x02;测试模式对应机械特性、起动性能、齿间隙、自锁性能、反向起动、转速同步性、耐久性等试验,范围在0x03—0x09。第4字节操作码对寄存器/测试模式使能、操作、禁止等3种功能。第5~7字节用于操作参数配置。
表2 主站发送协议Tab.2 Host send protocol
例如,设定负载时,需要使用RS232模块,由于负载的设置是通过RS232模块对负载驱动器发送协议指令来控制负载电机的驱动电流大小。PC通过检测的扭矩值与期望的扭矩值进行比较,进而调整驱动电流大小,以形成反馈控制。当设置3,5节点的负载电流-1A时,ID配置为0x48,数据域:0xFF(起始符),0x06(功能码),0x02(寄存器),0x02(操作码),0xFF(参数),0x9C(参数),0x00(参数),0xEE(结束符)。第5,6字节组成有符号16位short类型,以范围-1500~1500来表达负载电流-15~15 A,0xFF9C表示十进制的-100,即配置负载电机电流为-1 A,第7位保留。
主站对从站发送0x06的写协议,从站(ID1置位)通过数据域第1字节对消息进行回复,分别为操作成功、功能码错误、寄存器/测试模式错误、操作码错误、配置参数错误、响应失败、禁止操作等。
主站对从站发送0x03的读协议,从站(ID1清零)的数据域的协议格式见表3,回应帧为2帧。回应第2帧数据域的最后2个字节,用以记录从站系统的故障情况,比如未进行测试模式配置、各类外接传感器的线路情况、节点故障预警等。
表3 从站写回应协议Tab.3 Write response protocol from station
4 软件与试验
从站节点是基于STM32F103ZET6芯片开发的嵌入式子系统,下位机程序采用C语言进行编程,由主程序、定时程序、AD采集程序、高速计数程序、SSI程序、CAN通讯程序、RS232通讯程序等组成。嵌入式软件设计方面,采用模块化设计,将应用程序划分多个子任务[9],使从站节点系统具有互换性,各个模块相对独立,系统更加稳定。其中,当节点发生故障预警,子系统利用窗口看门狗进行自动复位,不过初始化操作会造成数据丢失,则需要利用EPPROM对操作数据存储和读取[10]。主站只需发送0x03类指令,即可实现对从站各个模块的控制,如图5所示。
图 5 节点响应模式Fig.5 Node response model
上位机程序采用VC++进行编写,PC调用PCI-1680U通信卡提供的接口函数来进行打开或关闭CAN接口卡,接受数据,获得当前接收缓冲数据的帧数量等操作。图6为摇窗电机的耐久性试验界面。其中包含有6台从站测试子系统,程序内容包括:测试模式的流程控制,操作变量的编辑,参数配置文件的存储和读取,每台摇窗电机测试参数的实时查看,测试参数的周期性存储,等。图中,进度条用于模拟摇窗电机的升窗、降窗过程;指示灯用于表示试验的所在状态。
图6 摇窗电机的耐久性试验界面Fig.6 Durability test interface for window lifter motor
5 结语
设计了一种以PC作为主站,从站以STM32 F103ZET6为核心的摇窗电机综合测试系统。在分析了CAN总线的特点后,研究了CAN总线的结构,并为此设计了一套可行的应用层协议。该摇窗电机综合测试系统通过CAN总线进行分布式控制,并易在此基础上开发多变的测试流程,便于PC编程进行二次开发。通过PC与下位机的控制策略,能很好地保证摇窗电机的测试过程,提高了摇窗电机各类测试的效率。经过试验,测试系统性能稳定,获得可靠数据,实现了多台摇窗电机同步测试,可在监控画面反映CAN总线运行状态,使系统更加人性化。
[1]王荣吉,王冰.基于虚拟仪器的汽车电动摇窗机测试系统[J].机电工程,2005,22(1):16-18.
[2]王跃飞,侯亮,刘菲.基于FPGA的汽车CAN网络实时管理系统设计[J].电子测量与仪器学报,2013,27(8):721-728.
[3]王爱林,刘荣华,严顶.基于STM32的CAN-USB转换模块[J].仪表技术与传感器,2012,42(6):69-70.
[4]李会,王宣怀,王磊.基于CAN的数据无损代码更新方法设计与应用[J].电子技术与应用,2016,42(1):40-43.
[5]佟为明,高洪伟,陈培友.CAN总线传输延时特性的研究[J].仪器仪表学报,2007,28(4):295-297.
[6]张培仁.CAN总线设计及分布式控制[M].北京:清华大学出版社,2012:22-23.
[7]杨华伟,万正权.CAN总线在船舶结构安全监测系统中的应用[J].电子测量与仪器学报,2014,28(5):553-559.
[8]孙铁兵,鞠宁.CAN总线及其高层协议[J].微处理机,2006,27(1):24-26.
[9]张德民,李莲.基于CAN Bus的电梯物联网监控系统设计[J].自动化与仪表,2012,27(8):38-41.
[10]李正军.基于CAN总线的分布式测控系统智能节点的设计[J].自动化仪表,2003,24(6):25-28.