基于STM32处理器与Modbus/485协议的主轴电机温控系统设计
2020-09-04李军科孟召议
戴 明,李军科,孟召议
(无锡商业职业技术学院, 江苏 无锡 214153;江苏省无线传感系统应用工程技术开发中心,江苏 无锡 214153)
《中国制造2025》规划明确提出今后我国将逐步完成工厂的“智能制造”升级。本文设计的主轴电机温控系统,就是为了帮助企业实现智能温控。主轴电机是指转速超过10000 r/min的交流电机,可应用于切割、抛光、雕刻方面,有很大的应用市场。国外中等规格加工中心电机主轴的转速普遍已达到20000 r/min,主轴在高速旋转时,其电机温度会升高[1],当转速达到25000 r/min时,温度可达50 ℃;温度过高会使电机的运转不稳定甚至导致其不能正常工作,同时也会加剧电机绕组绝缘材料的老化,严重时会将电机烧毁。对于主轴电机生产厂家而言,在电机出厂前最重要的一步就是测试主轴电机的温度特性。目前采用的测试方法是工人手持温度测试仪进行手动测量,发现温度过高时则手动调节变频器减小电机的转速,以此降低主轴电机的温度。很显然,手动测量需要耗费人力,效率不高,特别是温度测试不精确、测试时机不佳等制约了企业的进一步发展。基于此,本系统研究并应用Modbus/485协议,利用嵌入式平台实现电机温度实时采集,构建基于工业网络的智能控制系统。
一、整体设计
基于LabVIEW虚拟仪器与Modbus/485总线协议,实现测试现场电机温度的实时监控与驱动器控制。Pt100铂电阻毫伏级电桥信号经差分仪表放大器放大后通过24位高精度四通道AD1224采集主轴电机表面温度,嵌入式处理器作为从站设备负责提供温度采集模块的Modbus通信接口,温度采集模块与上位PC机通过Modbus/485总线协议组建工业控制网络。主轴电机转速、电流、温度等参数可以在LabVIEW前面板实时显示,操作者可以设定转速/时间测试规程并对出现的异常情况作出响应,测控系统框图如图1所示。
图1 主轴电机温度测控系统框图
二、测温与数据库原理
(一)Pt100温度测试原理
Pt100铂热电阻温度传感器的主要特点是测量精度高、稳定性好。它利用其阻值与所测温度成一定函数关系来测量温度[2],温度的采集范围可以在-200 ℃~+850 ℃,测量精确度是众多温度传感器中最高的,Pt100主要用于工业过程温度参数的测量与控制。
Pt100铂电阻传感器在0 ℃的电阻阻值为100 Ω,其电阻变化率为0.3851 Ω/℃, 按照IEC751国际标准,温度系数TRC=0.003851。其温度/电阻特性的关系表达式为:
Rt=R0[1+At+Bt2+C(t-100)t3]
(-200 °C (1) Rt=R0[1+At+Bt2](0 °C (2) 式(1)(2)中Rt为t℃时的电阻值,R0为0 ℃时的电阻值。电阻Rt与温度t的函数关系可近似表示为线性函数:Rt=R0(1+At)。Pt100的线性较好,当温度在0 ℃~100 ℃时,其最大非线性偏差小于0.5 ℃。Pt100温度/电阻曲线如图2所示,Pt100部分温度与阻值关系如表1所示。 图2 Pt100温度/电阻曲线 表1 Pt100部分温度与阻值关系 LabVIEW是一种图形化编程语言,是用图标和流程图来替代编程的一种开发软件[3],可用于数据的采集与分析、测试测量等领域,系统上位机接收终端节点采集温度并读写Access本地数据库,实现历史数据查询与存储。LabVIEW访问数据库的方式有多种,结合本设计需求,采用LabSQL工具包实现其与数据库的连接。利用LabSQL实现数据库访问,其方式是调用一些特殊功能的VI模块,在使用LabSQL前,需要在Windows操作系统中的ODBC数据源中创建一个数据源名称DNS,LabSQL与数据库之间的连接建立在DNS基础上。 系统包含Pt100铂电阻温度传感器信号调理电路、ADS1224模数转换电路、TTL转MAX485电路及STM32F103VET6核心板电路。 Pt100电桥电路与信号调理电路如图3所示。三线Pt100铂电阻由J8接口引入,与R33、R34、R36组成不平衡电桥,将Pt100铂电阻转化为毫伏电压差信号,再经过仪表放大器AD620得到调理信号。AD620输入偏置电流小,精度高,外接在AD620的1脚与8脚之间的电阻R45可以设置放大电路的增益,增益为G=1+49.4K/R45。电路中四个电阻全部选用0.1%精度。REF3030提供标准的3 V桥路电压,Pt100允许通过的电流≤5 mA。 图3 Pt100信号调理电路 四路AD620仪表放大器输出信号接入ADS1224四通道模数转换电路。ADS1224是24位△-∑的模数转换器(ADC),具有低功耗、高性能等特点。图4是ADS1224模数转换外围电路,ADS1224内部系统时钟信号CLK由STM32F103VET6芯片内部定时器中断控制PA4管脚电平跳变而产生,其时钟信号SCLK、采样数据输出信号DOUT分别与处理器内部同步串行口SPI1通信,即PA5/PA6与SCLK/DOUT对应,模拟电源AVDD与数字电源DVDD分别设计为5 V与3.3 V,电压基准芯片LM336提供模数转换参考电压VREFP,PA11/PA12连接MUX0/MUX1作为输入通道选择信号线。 图4 ADS1224四通道模数转换电路 选择Modbus/485协议实现各测控节点与上位机之间通信,TTL电平转485电平电路如图5所示。R/D信号控制发送与接收使能[4]。R/D低电平,下位机等待接收主机命令,发送禁止;R/D置高电平,接收禁止,发送使能。RS485接口采用差分方式传输。485A/B之间并接120 Ω匹配电阻,减少传输线路信号回波反射现象。另外,485A/B分别通过电阻R8、R9接地、上拉,使485A端电平高于485B端电平,这样当主机不发送、网络处于空闲状态时,485芯片输出高电平处于稳定状态。本系统中STM32F103VET6作为Modbus从站通过RS485总线与上位PC主站通信。 图5 TTL转MAX485电路 STM32F103VET6内核采用ARM 32位的CortexTM-M3 CPU,其最高工作频率为72 MHz。采用单周期乘法和硬件除法的算法。STM32F103VET6核心电路由电源电路、时钟电路以及复位电路组成,主要是通过SPI口连接24位ADC采样芯片实现温度采集,同时运行Modbus从站协议实现温度与PC机、变频驱动器之间的Modbus通信。硬件电路设计中,PA9/PA10管脚设置为USART1_RX/TX功能,分别连接SP3485芯片的RX_485/TX_485管脚,与PC机进行RS485通信。PA4/5/6/7管脚设置为SPI1_NSS、SPI1_SCLK、SPI1_MISO、SPI1_MOSI 同步串行口功能,控制ADS1224高精度ADC对温度进行采集。由于篇幅所限,这里省略核心板电路,相关内容参考ST手册。 Modbus协议是Modicon公司开发的一种通信协议,采用主从问答方式工作,允许1个主机与多个从机通信[5],在自动化行业中应用十分广泛,已经成为一种通用的工业标准。所有支持Modbus协议的终端设备可以相互通信,连成工业网络。Modbus协议有两种传输方式:ASCII方式和RTU方式。本系统采用针对嵌入式平台的免费freeModbus协议栈完成STM32F103VET6平台代码移植。 CRC是一种差错校验码,可以任意选定其信息字段与校验字段的长度,通过对数据进行多项式计算,将所得结果附在信息帧的后面,接收设备也执行类似算法,从而保证数据传输的准确性与可靠性。Modbus协议采用CRC-16作为链路层数据传输的校验码。 在国际标准化组织(ISO)提出的开放系统互连OSI参考模型中,网络系统被划分为七个层次,自上而下分别是应用层、会话层、表示层、传输层、网络层、链路层、物理层。 Modbus协议是第七层应用层报文传输协议,它连接不同总线,为网络设备之间提供客户机/服务器通信。Modbus协议通信采用master/slave方式,master发出数据请求消息,而slave接收到正确消息后向master发送数据以响应请求。本系统中PC机利用LabVIEW提供的串口通信组件,根据Modbus协议设计模块化通信程序,LabVIEW具有6个串口通信节点,分别实现串口初始化、串口读、串口写、串口缓存检测、串口暂停及关闭串口功能。 图6是Modbus协议帧与字符信息传输时序,Modbus报文RTU帧由时长至少为3.5个字符时间的空闲间距以连续的字符流发送整个报文帧,两个字符时间间隔小于1.5个字符,否则报文帧被认为不完整而被接收节点丢弃[6]。采用串口中断发送、串口中断接收与定时器中断函数实现报文帧与字符时序控制。 图6 Modbus协议帧与字符信息传输时序 图7给出了freeModbus协议栈实现流程图。系统初始化阶段,执行eMBInit()函数,此函数包含Modbus数据帧类型、从站地址、串口序号、波特率以及检验方式。其次执行eMBEnable()函数,启动freeModbus协议栈。最后在主程序while循环内部,轮询eMBpoll()函数,当从机接收到主机发送的数据帧,则验证从机地址和数据帧完整性,提取功能码执行xFuncHandlers()中相应的事件处理函数。Modbus协议采用主从模式,PC主机发送04码读取STM32F103VET6温度采集模块内部输入寄存器的温度、电压模拟量以实现对电机参数的监控。 图7 freeModbus协议栈实现流程 ADS1224采样可以通过延迟法、查询法、中断法三种方法实现。图8为SPI1控制ADS1224的单次采样流程框图,采样开始后SPI1管脚功能复用,8位的SPI字长,时钟上升沿时刻将数据输出,下降沿时刻则锁存数据,无数据传输时SPI时钟为高电平。禁止SPI自发自收,使能为主机模式,禁止SPI发送接收中断,使能SPI fifo有效。设置SPI发送接收波特率。SPI发送左对齐,MSB先发,发送缓冲寄存器为16位,伪数据需左移8位后进行加载,在接收时右对齐,可直接取低8位数据。 图8 ADS1224单次采样流程 在启动转换后设置SPI1_MISO管脚为通用IO输入,通过查询法检测DOUT是否为0,若是0,则AD转换完成,SPI1_MISO重新置SPI接收功能。接着通过SPI1_MISO管脚发出3个字节伪数据,SPI时钟启动。 SPI1_MISO则在时钟下降沿依次接收24位的采样数据。在第25个时钟进行发送时,DOUT置高电平,再由SPI_DR寄存器发送伪数据,发送结束后在下一次采样接收前再恢复字长为8。第26个时钟启动ADS1224自校准。自校准期间外部模拟输入信号无须断开,内部自校准信号可自动接入。自校准完成后,DOUT信号转为低电平。 位于布尔和经典布尔选板上的布尔控件可用于创建按钮、开关和指示灯。布尔控件用于输入并显示布尔值(TRUE/FALSE)。本项目用于监控一个从站1的四路模拟量值,每通道电压采样值超过一定水平时,即发出警告。图9、图10是用来指示电机速度和电压模拟量采样结果的仪表与指示灯控件。 图9 显示电机速度仪表控件 图10 提示标签与指示灯、显示控件 测试连线连接后用万用表测量,在无短路的情况下上电测量,如果数据采集过程中某一路设备无信号输出,可以使用Modbus调试助手测试单个从站设备。基于LabVIEW与Modbus/485的电机参数测控界面如图11所示,PC机LabVIEW软件设计了参数配置、数据读写、参数趋势图等控件功能。 图11 基于LabVIEW与Modbus/485电机参数测控界面 每个温度采集模块通过ADS1224分四路对Pt100铂电阻电压信号采样,如果数据采集过程中某一路设备无信号输出,可以使用Modbus调试助手调试单个从站设备。本项目主要使用读输入寄存器04码读取温度采集模块参数,03码读取速度寄存器,06码写速度寄存器。本研究测试了单一模块中四路Pt100电阻采集的温度信号,并把结果与温度仪测试结果比较,如表2所示。数据显示与Fluk温度仪测量误差控制在0.05 ℃内,说明系统实现了多路电机温度的采集、上传与显示,能够代替手工测量,解决人工测量的不确定性问题。 表2 系统测试结果 本系统研究了一种基于STM32处理器与Modbus/485协议的主轴电机温控系统,每个温度采集模块通过ADS1224分四路对Pt100铂电阻电压信号采样,利用 Modbus 协议进行数据的测量和模拟电压的输出控制。现场实际测试结果表明,本系统能很好地采集主轴电机的温度,并将其上传到上位机LabVIEW,以便用户实时查看当前和历史温度数据,实现工业现场的主轴电机温度采集及电机转速的控制,从而实现了智能控制。(二)LabVIEW与数据库的连接
三、系统硬件电路设计
(一)Pt100信号调理电路
(二)ADS1224模数转换电路
(三)TTL转MAX485电路
(四)STM32F103VET6核心板电路
四、系统软件设计
(一)Modbus RTU协议及CRC原理
(二)32位处理器平台Modbus协议实现
(三)ADS1224单次采样流程
五、LabVIEW主站测控软件实现
六、系统测试
七、结论