6ES7513-1FL02-0AB0参数详细
TMC428是TRINAMIC公司新开发的步进电机运动控制器,它可减少电机控制软件设计的工作量,降低开发成本。以它为核心(包括TMC236型步进电机驱动器)构成的3轴步进电机驱动控制系统具有尺寸小、控制简单的优点,可控制3个两相步进电机。
1、主要性能特点
TMC428是小尺寸、高性价比的二相步进电机控制芯片。它带有二个独立的SPI口,可分别与微处理器和带有SPI接口的步进电机驱动器相连以构成完整的系统。其控制指令可由微处理器通过SPI接口给定。TMC428提供了所有与数字运动控制有关的功能,包括位置控制、速度控制及微步控制等步进电机常用的控制功能。这些功能如果让微处理器来完成,则需占用大量的系统资源,它的使用可将微处理器解放出来,以把资源用在接口的扩展和对步进电机的更高层次的控制上。TMC236也是TRINAMIC公司开发的带有串行接口的步进电机驱动器。3个TMC236连结构成的菊花链(Daisychain)结构便是一种基于串行通讯的网络结构,可以使多个具有串行通信接口的设备以接力的方式传递数据。TMC428可以通过SPI接口与它们相连接,以控制3个二相步进电机。
TMC428的主要特点如下:
·根据不同的应用提供有SSOP16、SOP24、DIL20三种封装可选形式。
·可以对3个二相步进电机进行控制,所有电机可独立工作。
·根据微处理器给定的电机运动参数(位置,速度、加速度),依照梯形或三角形的速度由线产生驱动脉冲波形和顺序,来对电机进行位置和速度控制。它有4种工作模式。其中位置控制有RAMP模式和SOFT模式,速度控制有VELOCITY模式和HOLD模式。
·可微步控制。采用6位分辨率的微步细分。包括满步、半步直至64细分。每个电机可分别选择其需要的微步分辨率。满步频率高达20kHz。
·通过可编程电流比例捉控制,可以使电机在不同的工作状态下采用大小不同的工作电流。控制电机工作可在8个档次上,分别是大电流的12.5%、25%、37.5%、50%、62.5%、75%、87.5%、。
·可以对多种参数进行设置,包括大加速度、大速度、加速运行和位置保持时电机线圈的电流大小、微步细分分辨率、波形发生器和脉冲发生器的参数等20个多个参数。
·可在线改变运动参数(位置、速度、加速度)。
·带有4线串行SPI接口,串行通信使用32bit数据长度的简单协议。使用简单。
·可通过另一个SPI口与电机驱动器连接,其数据传输率高达1Mbit/s。
·低功耗(1.25mA,4MHz),时钟输入范围宽且时钟频率高可达16MHz。
·3.3V或5V的CMOS/TTL兼容电平供电。
2、引脚功能
图1 TMC428的引脚排列
图1所示为TMC428采用SSOP16封装时的引脚排列,各个引脚的功能如下:
1,2,3脚(REF1,2,3):参考开关输入1,2,3,可以外接限位开关,以引发TMC428内部中断功能。本文没有使用该功能。
4脚(TEST):测试脚。使用时接地,接地应尽可能在引脚附近。
5脚(CLK):时钟输入。
6脚(nSCS_C):SPI控制接口的片选信号输入,低电平有效。
7脚(SCK_C):SPI控制接口的时钟输入。
8脚(SDI_C):SPI控制接口的数据输入。
9脚(SDO_C):SPI控制接口的数据输出,高阻。
10脚(SDO_S):驱动SPI接口的数据输出。
11脚(SCK_S):驱动SPI接口的时钟输出。
12脚(nSCS_S):驱动SPI接口的片选信号输出。
13脚(V5):+5V电源。
14脚(V33):+3.3V电源,应外接470nF电容器。
15脚(GND):地。
16脚(SDI_S):驱动SPI接口数据输入,应接上拉或下拉电阻器。
3、内部结构和工作原理
TMC428的内部结构如图2所示。TMC428是由各个单元的寄存器和片内RAM构成的。其内部包括二个外部串行接口、波形发生器和脉冲发生器、微步单元、多口RAM控制器和中断控制器。
图2 TMC428的内部结构
TMC428一般从微处理器获得控制指令,微处理器则通过发送和接收固定长度的数据包对TMC428寄存器和RAM进行读写操作。TMC428的寄存器和片内RAM的功能有所不同。寄存器用于存储电机总体配置参数和运动参数,而片内RAM用于存储 驱动串行接口的配置和微步表。电机总体参数是指对驱动器菊花链中TMC236的配置。运动参数包括各电机的当前位置、目标位置、大速度、大加速度、电流比例、波形发生器和脉冲发生器参数以及微步细分分辨率等。片内RAM包括64个地址的数据空间,每个地址可存储24位宽的数据,前32位地址数据是对驱动器菊花链串行通信数据包的配置,后32位地址的数据为微步细分表。
初始化以后,TMC428即可自动发送数据包到菊花链的每个TMC236,也就是说,驱动串行接口经过初始化后便可以自动工作,而不需要微处理器的参与。只要把位置、速度写进指定的寄存器就可以控制电机。TMC428的多口RAM控制器可管理数据的存取时序。这样,微处理器就可以在任何时间读写寄存器和片内RAM的数据。
通过波形发生器可以处理存储在寄存器里的运动参数并计算电机运动速度曲线。脉冲发生器则根据波形发生器计算得到的速度来产生步进脉冲。步进脉冲产生时TMC428的驱动串行接口将自动发送数据包给步进电机驱动器菊花链以驱动步进电机。当采用微步控制时,微步单元即开始处理根据脉冲发生器产生的步进脉冲,根据选择的微步分辨率来产生全步、半步和微步脉冲,并通过驱动串口送给驱动器菊花链。
驱动串行接口是TMC428与驱动器菊花链之间的通信接口。从TMC428到驱动器之间的串行数据包的长度是可配置的,以适应由不同类型和厂家的电路构成的SPI环形结构,大数据长度为64bit。初始化后,TMC428与步进电机驱动器之间的通信是自动完成的。不同类型的带有SPI接口的驱动器都可以混合构成菊花链结构与TMC428进行连接。
4、应用
4.1 兼容性
TMC428与大多数厂商生产的步进电机驱动电路兼容。它可以直接连接带有SPI口的步进电机驱动器,也可以通过附加的器件连接常用的并口驱动器。甚至带有步进、方向输入的步进电机驱动器也可以由TMC428来控制。将步进电机驱动电路TMC236非常简单地连接成串行菊花链结构,用TMC428构成3轴步进电机控制系统进行控制可更好地发挥TMC428的特点。
4.2 状态检测
实时监测电机运行状态对整个系统的安全和控制是很重要的,TMC428就提供有状态检测功能。每次每处理器发送数据包给TMC428的TMC428会返回数据给微处理器。大部分带有串行口的电机驱动电路都提供有不同的状态位(工作,不工作等)和错误标志(短路,开路,温度过高等)。这样,TMC428就可以在任何时候提供当前电机的运动参数和工作模式以及各状态位。从电机驱动菊花链返回给TMC428的数据包有48bit长。TMC428将其放在二个24bit的寄存器中。这样,微处理器就可以直接读取这些寄存器里的信息。
5、系统构成的应用
笔者采用DSP作为系统的微处理器,结合TMC428和TMC236构成步进电机驱动控制系统。TMC236内部集成了HVCMOSFET构成的双全桥驱动电路,它采用恒流斩波驱动方式来驱动双极性二相步进电机,并具有功耗低、效率高的特点。图3所示就是3个TMC236构成3轴电机驱动器并由TMC428进行控制的原理电路图。
图3 基于TMC428的3轴步进定级驱动控制系统电路
由图3可见,采用专用步进电机运动控制器和驱动电路组成的系统具有外围电路简单、系统抗干扰能力强和可靠性高等优点,可减少控制电路的开发成本。整个系统除了电源之外只有5个IC,体积小,控制简单,特别适用于3轴步时电机的驱动。实验证明该驱动器控制的步时电机定位精度高,加、减速性能良好,启停、反转性能也很优良。
步进电机是一种将电脉冲信号转换为线位移或角位移的电机,但步进电机的控制通常都采用汇编语言或C语言进行软件开发,本文结合SC3步进电机控制器及平移台的控制开发为例,介绍了一种如何在bbbbbbs平台下利用Visual C++6.0提供的串行通信控件MSComm来实现PC机与步进电机控制器之间的数据通讯,终实现由PC机直接控制步进电机的方法,并详细介绍了编写串行通信程序的基本步骤和方法。调试结果表明:设计的控制程序简单、易懂,工作可靠,且具有友好的人机交互界面。
步进电机是一种将电脉冲转化为角位移的机电式数模转换器,在控制系统中具有十分广泛的用途,但传统的步进电机的控制通常都采用汇编语言或C语言进行软件开发,本文利用VC++提供的串行通信控件MSComm实现PC机与步进电机控制器之间的串行通信[1]。与 DOS下串行通信程序不同的是,bbbbbbs不提倡应用程序直接控制硬件,而是通过bbbbbbs操作系统提供的设备驱动程序来进行数据传送。串行口在Win32中是作为文件来进行处理的,而不是直接对端口进行操作,对于串行通信,Win32提供了相应的文件I/O函数与通信函数,通过了解这些函数的使用,可以编制出符合不同需要的通信程序。
实现串行通信[2]一般有3种方法[3]:使用VC++提供的串行通信控件MSComm[4];在单线程中实现自定义的串口通信类;多线程下实现串行通信。结合实际情况,本系统采用VC++提供的串行通信控件MSComm来进行软件编程,可以很方便地管理与控制计算机串口。
1、系统组成
由PC机控制步进电动机的系统如图1所示。
图1 PC机控制步进电机系统框图
本系统的电机控制采用通用的RS 232[5]串口的异步通信。由于RS 232早期是为促进公用电话网络进行数据通信而制定的标准,其逻辑电平对地是对称的,与TTL、MOS逻辑电平完全不同。逻辑0电平规定为+5~+15 V之间,逻辑1电平规定为-5~-15 V之间,RS 232驱动器与TTL电平连接必须经过电平转换。
2、控制软硬件的技术参数
本系统采用卓立汉光仪器有限公司生产的SC3步进电机控制器及平移台,实现平移台的三维控制(x,y,z)。利用RS 232串口异步通信完成对步进电机的单步和连续移动控制,并且把电机的实际位置数据反馈给PC机处理。
电控平移台的机械指标如下:
(1) 精密电控旋转台:型号RSA200用于x轴。转动范围>±40°;传动比180∶1;小步距0.000 312 5°;台面直径Φ200;分辨率0.001 25°;重复定位精度<0.005°;大速度25/s;中心大负载60 kg。
(2) 重载型电控平移台:型号TSA300B,用于z轴。小步距0.003 15 mm;重复定位精度<0.005 mm;加固定平移台有效行程为150 mm。
(3) 超薄型电控平移台:型号TSA30C,用于y轴。小步距为0.002 mm;重复定位精度<0.005 mm;有效行程30 mm。SC3步进电机控制器设有手动和联动方式,手动能设置的操作有:速度设定、归零操作、方向设定、位移量设定等,联机方式可以使电机的运动直接受应用软件控制。由于是进行二次开发,应用程序必须嵌入原控制器的控制指令及协议。
该指令系统主要有以下几条:
联络指令指令格式:“?R" & CHR$(13)
该指令发出200 ms以内SC3回送:“OK”& CHR$(10),表示联络成功。
查询指令指令格式:“?V”& CHR$(13)
SC3接到该指令后回送:“V number” & CHR$(10)。其中number为ASC码表示的SC3当前速度值。范围0~255。
坐标查询指令指令格式:“?X”& CHR$(13) 或“?Y”& CHR$(13)或“?Z”& CHR$(13)
SC3接到该指令后回送:“X+number” & CHR$(10),或“Xnumber” & CHR$(10),其他轴类似。其中number为以ASC码表示的SC3当前坐标值,正负号代表当前位置在开机位置(0位)的正负方向的位置。
速度设置指令指令格式:“V”& number & CHR$(13)
其中number为以ASC码表示的速度设置值。范围0~255。
归零指令指令格式:“HX”& CHR$(13) 或“HY”& CHR$(13) 或“HZ”& CHR$(13)
SC3接到此类指令后进行归零操作。完成归零操作后回送:“OK”& CHR$(10),表示SC3归零完毕。
零状态查询指令指令格式:“?H”& CHR$(13)
SC3接到此类指令后回送:“H000” & CHR$(10)
其中000的含义:
位数值:1表示z轴归零成功,0表示z轴未归零。
第二位数值:1表示y轴归零成功,0表示y轴未归零。
第三位数值:1表示x轴归零成功,0表示x轴未归零。
运行指令指令格式:“Xdirectionnumber”& CHR$(13)或“Y directionnumber”& CHR$(13)或“Z directionnumber”& CHR$(13)
3、软件实现
3.1 利用VC++提供的串行通信控件MSComm实现串行通信
在VC++[5]的对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project→Add toProject→Components and Control插入即可,再将该控件从工具箱拉到对话框中。此时,你只需要关心控件提供的对bbbbbbs通信驱动程序的API函数的接口,即只需要设置和监视MSComm控件的属性和事件。
在ClassWizard中为新建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置,MSComm控件共有27个属性,其中主要包括:
Commport:设置并返回通信端口号,缺省为COM1。
Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口。
bbbbb:从接收缓冲区返回和删除字符。
Output:向发送缓冲区写入字符串。
bbbbbLen:每次设置bbbbb读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内容。
InBufferCount:返回接收缓冲区中已接收到的字符数,将其置0可以清除接收缓冲区。
bbbbbMode:定义bbbbb属性获取数据的方式(为0:文本方式;为1:二进制方式)。
RThreshold和SThreshold属性,表示在OnComm事件发生之前,接收缓冲区或发送缓冲区中可接收的字符数。
以下是通过设置控件属性对串口进行初始化的实例:
打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,事件驱动是处理串行端口交互作用的一种非常有效的方法。使用OnComm事件和CommEvent属性捕捉并检查通信事件和错误的值。发生通信事件或错误时,将触发OnComm事件,CommEvent属性的值将被改变,应用程序检查CommEvent属性值并作出相应的反应。在程序中用ClassWizard为CMSComm控件添加OnComm消息处理函数:
3.2 系统初始化
在执行应用程序时必须进行初始化,其初始化程序框图如图2所示。
图2 初始化程序框图
运行程序时,视图执行初始化操作函数OnInitialUpdate(),该函数内要先打开串口1,通过设置对象m_ContrCom各成员函数,设置好各通信参数:
经过一个位置选择对话框,通常选“保持原来的位置”,就发出询问各轴的坐标值的指令。流程如图2所示。除x轴是直接发送坐标询问指令获得坐标数据外,其他2个轴都是通过连续的2个定时器来询问坐标的,定时器响应后执行图3的程序。此后就进入待操作画面。
3.3 运行操作的编程
在电机运动操作区的各文本框内输入某一轴向的位移值、速度值,按下“运行”按钮,则程序会把位移值转化为字符型的实际要运行的步数,通过串口送到SC3步进电机控制器,控制对应的轴的电机运行相应的步数。运行结束后,SC3会返回一个“OK”字符至串口,PC机接受到这个字符后,就知道电机运行结束,向串口发送坐标询问指令,SC3会回送有关坐标数据,PC机接到这些数据后进行处理运算并在文本框中显示出来。这样就结束了一个完整的运行操作。
所有主要的PC机和SC3控制器的有关数据通信程序都在MSComm控件内。包括所有的接受、识别返回字符,各轴向坐标的运算和显示。
当步进运动完毕后,返回到PC机的数据为步进电机已经运行的步数,根据这个步数要计算相应的坐标,必须知道各轴的脉冲当量。步进电机每走一步,电移台的位移等于脉冲当量,即分辨率。
坐标值=初始坐标+运行步数*脉冲当量
平移台脉冲当量=丝杠导程mm*步距角/(360*细分数)
旋转台(x轴)的脉冲当量(度)=步进电机步距角/(传动比*细分数)
其中细分数是由控制器后面板拨码开关设置的。
步进电机的步距角都为1.8°,纵轴的丝杠导程为1 mm,横轴为4 mm,旋转轴传动比为180∶1,细分数为2,则根据以上公式可得出:
纵轴(z)脉冲当量=1/100
横轴(y)脉冲当量=1/400
旋转轴(x)脉冲当量=1/200
4、结语
在PC机和单片机之间实现串行通信控制是近几年很受欢迎、较为流行的方法。本文介绍的运用MSComm控件来编制的由PC机对步进电机直接控制的应用软件具有友好的人机交互界面,且编程简便、工作可靠,是一种切实有效的方法。这种串行控制方法和技术还可运用于相应的工业控制场合。