APP下载

基于CANopen通信协议的数控手轮研究

2018-10-09刘正瑞洪占勇

机电工程 2018年9期
关键词:累加器手轮倍率

刘正瑞,洪占勇

(合肥工业大学 工业与装备研究院,安徽 合肥 230009)

0 引 言

随着数控系统的发展,特别是总线技术的广泛使用,使得数控机床的性能越来越好,结构越来越简单。而手轮作为数控机床的一个重要组成部分,在实现刀具微动、工件对刀、机床原点的修正等方面扮演着十分重要的角色。

但在手轮的使用中,由于操作者的轻微晃动,使得手轮脉冲发生器会产生脉冲,该脉冲的产生会导致机床进行了不必要的移动,该移动轻则导致正在加工的零件报废,重则损坏数控机床,甚至导致操作人员的伤亡。同时,在传统的手轮驱动控制过程中,由于数控系统通过识别“倍率选择”开关的选项,从而判断进给倍率,再结合手轮产生的脉冲数量,通过简单的乘积的方式得出总脉冲数量,将脉冲总数输出到运动执行部件上去,以此来完成相应得运动控制。而在这个过程中,大倍率的情况下,操作者较快速地转动手摇脉冲发生器时,控制系统在进行脉冲计数的同时,又要输出更大量的脉冲给运动执行部件,因此往往数控系统在这个过程中会出现脉冲漏计或者脉冲输出滞后,以及脉冲输出不能保持均匀化等问题,从而导致在手轮驱动机床运动时,无法满足机床加工的精度和可靠性要求[1]。

CANopen是基于CAN总线的一种总线通信协议,是一种行业标准化协议,也是一种为标准的嵌入式网络开发的具有灵活配置能力的开放式协议。

本文基于CANopen通信设计一种数控手轮,在手轮端就进行脉冲的计数和倍率的选择等处理,通过CANopen报文将运算后的进给量发送给伺服电机控制器等执行部件,从而解决传统模式下,脉冲在传递到控制系统上时计数不准确的问题,并通过CANopen通信的方式实现手轮输出进给信号均匀化。

1 手摇脉冲发生器的工作原理

手摇脉冲发生器的实质就是一个增量式编码器,在其外部刻有刻度,每格刻度的大小与内部的辐射状透光窄缝圆盘的节距相等。手摇脉冲发生器工作原理如图1所示。

图1 手摇脉冲发生器工作原理E—等节距的透光圆盘;Q1,Q2—光源;DA,DB—光电元器件,DA和DB在安装时错开90°

当旋转手轮一个刻度时,透光圆盘和旋转轴同时旋转,这时光线可以分别通过透光圆盘的窄缝打到光电元件DA和DB上去。使得得到一组相差90°相位差的正弦波信号。该正弦波信号可以通过放大器放大整形等方式得到一组相差90°的方波。通过判断是A项超前于B项90°,手轮为正向转动;A项滞后于B项90°,手轮为反向转动[2-4]。

2 CANopen通信协议

CANopen协议以通信规范CiA DS-301为基础,规定和发展了一系列的子协议。其中,通过子协议定义了对象字典的形式,通信的方式及其特点等,还为特定的设备定义了行为规范[5]。

CANopen通信的过程中需要定义4种通信对象类型:服务数据对象SDO、过程数据对象PDO、网络管理报文NMT和同步报文SYNC(或者心跳报文HEART),其功能简要介绍如表1所示。

表1 4种通信对象

CANopen通信过程中所使用的COB-ID来标示不同的设备所发出的数据内容,并且要求通信对象的接收者与该报文的发送者必须具有相同的COB-ID。CANopen协议最核心的内容是对象字典(OD),对象字典的实质就是一个有序的对象组,该对象组用于描述所对应的CANopen节点的各种参数,同时将需要通信的数据所存放的位置也列出来[6]。

3 手轮的硬件结构图

外置式数控手轮的硬件原理图如图2所示。

图2 手轮硬件结构原理框图

其中倍率选择包括3种选择分别为:×1、×10、×100分别与STM32的3个I/O口相连,坐标轴选择包含5种选择分别为:X轴、Y轴、Z轴、W轴和V轴,分别和STM32的5个I/O口相连。脉冲发生器发出的脉冲通过施耐特触发器整形后,与STM32的2个I/O口相连。STM32通过内部程序将倍率选择、坐标轴选择和脉冲信号等信号进行数据处理,然通过CAN通信接口以CANopen报文的方式发送给运动执行部件。

4 软件设计

4.1 脉冲鉴相和计数

本研究用软件对手摇脉冲发生器发出的脉冲进行鉴相和计数时,将手摇脉冲发生器发出的A、B相经过施耐特触发器进行整形后,接入到两个I/O口,即A端口和B端口。然后通过读取这两个端口的信息进行脉冲信号的获取。其具体实现思路如下:

(1)使能B端口的外部中断通道,当B端口有上升沿信号时,触发该外部中断的服务程序;

(2)接着检测A端口的电平情况,当A端口为高电平时,说明这时A相超前于B相,即表明手轮正传,这时将正传标志参数赋值1;当A端口为低电平时,说明这时A相滞后于B相,给表明手轮反转,这时将反转标志参数赋值-1;

(3)接着检测倍率选择端口,为高电平即为选中轴,将选择轴所对应的倍率M和正反转标志位相乘,得到总脉冲量,当数控机床处于手动操作状态时,将这个总脉冲量累加到累加器上去,即:S(新)=S(原)+正转标志参数(或者反转标志参数)×M。例如当倍率选择为×10时,手轮正转,则累加器S的值就增加了1×10;当手轮反转时,累计器S的值就减少了1×10。

(4)当检测到累加器S不为0时,说明手轮有脉冲信号需要发出,这时通过CAN口发送一个CANopen报文给运动执行部件,并且每发送一个报文就对累加器S进行加1或减1。

4.2 CANopen通信

CANopen通信的整体流程如图3所示。

图3 CANopen通信的整体流程

(1)硬件初始化。硬件初始化主要是定时器、CAN接口和串口的初始化。为了防止受到干扰,应当关闭所有的中断再进行初始化,然后通过函数TgtInitTimer()、TgtInitCanIsr()和TgtInitSerial()进行初始化,初始化完成后,要及时地使能已经关闭的所有中断。

(2)CANopen协议栈初始化。在执行CcmInitCanopen()函数进行CANopen协议栈的初始化的过程中,主要进行了通过识别拨码开关的选择,确定node-ID和对照预先设定的波特率表格设置波特率。

CcmInitCanopen()通过调用TgtGetCanBase()将CAN控制器的基地址输入进结构中,定义了回调函数(AppCbNmtEvent())用于处理NMT状态机的状态变化。通过ObdInitRam()进行OD中的内部数据结构初始化[7]。

(3)处理CANopen事件。对于数控手轮,在正常工作过程中上电完成以后,其通信数据主要是通过PDO传输给运动控制器,通过接受控制面板发送的带有控制信号(手动模式还是机动模式)的SDO来确定是否发送带有进给信号的PDO。

SDO即服务数据对象,是一种用来建立两个CANopen设备之间的客户端/服务器关系的。在一个CANopen网络中,主节点可以通过SDO对其他节点进行参数配置。PDO即过程数据对象,具有很高的优先级,因此被用来传输实时短帧数据。使用PDO传输数据时,每一个报文中的数据必须少于或等于8个字节。PDO的触发模式可以分为3种:事件驱动、定时驱动和远程请求驱动。在手轮驱动中,为保证驱动的实时性应当选择事件驱动。基于事件驱动的PDO传输类型可以分为两种,一种是同步传输,另一种是异步传输。异步传输即当满足触发条件以后,CANopen节点立刻向CAN总线上发送PDO报文。因此手轮的PDO传输选用事件异步驱动模式。

PDO报文包含正反转信息和坐标轴选择信息;当S小于0时,发送带有反转信息的PDO报文,并且每发送一个PDO报文,就使得S增加1,当S大于0时,每发送一个PDO报文,就使得S减少1[8-9]。

由于手轮驱动时总线几乎没有其他通信需求,这时可以通过将PDO发送时间间隔设置为0,来实现PDO报文的实时均匀发送,即当发送完一个报文后,当累加器仍然表示还有进给信息需要发送时立即发送下一个报文。

5 实验及结果分析

实验测试实物图如图4所示。

图4 实物图

安装好外壳后,可以通过两个旋钮开关和手摇脉冲发生器进行操作。实验所获得的测试结果图如图5所示。

图5 通信测试图

测试结果中,包含CANopen通信数据和串口通信数据。结合CANopen通信数据和串口通信数据可以看出,将手轮与PC机相连后,开始实验,这时CAN接口和串口均收到通信数据,这时表示CANopen手轮完成初始化并且CANopen通信正常,串口打印正常。

这时转动手摇脉冲发生器可以看出串口有打印,但是CAN接口无CANopen报文发送。这表明手轮能够正确进行脉冲鉴相和计数,但不能进行CANopen通信,即手轮未能收到上位机指令(数控机床的手动操作指令)。

通过PC机给手轮发送一个CANopen报文(模拟数控机床的手动操作指令)后,通过比较可以看出CAN接口有CANopen报文发送,串口有数据打印,这表示手轮能够进行正常的CANopen通信。

正常通信后,CAN接口不断发送2位的16进制的数据。当坐标轴选择和倍率选择不变,转动方向不变时,这2位16进制的数据中第一位数据总是保持不变,而第二位数据总是变化的。这是因为每个PDO包含一个8位数据,在实验的过程中为读取方便,显示为2位16进制的数据。PDO报文数据结构如图6所示。

图6 CANopen报文组成

这个数据中,第0~2位用来表示对5个坐标轴的选择结果,第3位用来表示正反转。当单向转动手轮时系统通过检测倍率选择端口的值,计算出进给量并将这个值累加到累加器S上。在本研究中设置的CANopen的PDO报文的发送是由于事件(报文的数据内容变化了)触发的,当累加器的值不为0时,表明有进给信息需要发送,这时通过改变第4~7位的数据(该实验中为了方便显示,只通过将第6、7两位逐次加1,第4、5两位保持不变),再与第0~3位不变的数据结合在一起,组成了一个8位的数据,该数据即为PDO的报文数据,该报文数据的变化从而触发了PDO的传输。这时通过上位机软件可以读取到总线上的数据,再以16进制的方式显示,即可得到一个2位的16进制数。由图6可知当手轮收到上位机的模拟手动操作指令后,转动手轮,上位机陆续收到数据0×08->0×48->0×88->0×C8->0×08,将数据化2进制可以看出,第0~3位的数据没有变化,第7、8位逐次加1。反向转动手轮后,上位机收到数据0×40->0×80->0×C0->0×00,这时化为二进制可知第3位数值变为0然后保持不变。

上位机在整个过程接收到的数据流是:0×08->0×48->0×88->0×C8->0×08->0×40->0×80->0×C0->0×00,只看第2位数据可以看出:数据流为0->4->8->C->0->4->8->C->0,即数据在0>4>8>C中循环。在应用的过程中,只需要将收到的数据和上一次收到数据进行比较即可知道是否有进给信号遗漏。本研究为了显示的方便只将第6、7位逐次加1,实际应用的过程中可以将4~7位逐次加1,这时通过将上位机收到本次的数据和上次收到的数据相减即可得出漏计的进给信号的个数,通过其他方式进行纠正补偿,即可得到精确的进给信号量。

而当累加器不为0时,即可通过改变PDO报文内容从而触发,则PDO报文的发送间隔即为软件处理数据的时间间隔,由于软件处理数据的非常的快,而且时间间隔基本相同,这时上位机即可得到较为均匀的进给信号报文,从而匀速地驱动电机转动。

6 结束语

针对数控系统中手轮驱动问题,本文对手轮驱动的信号采集、信号处理和信号传输等问题进行了研究,提出了一种采用CAN总线的高层协议CANopen协议,并进行了方案设计。通过实验结果可知:基于CANopen通信的数字化数控手轮能够很好地进行判向、计数和发送进给信息,将其应用于数控系统中是可行的。该方案与传统手轮驱动相比有很大优势:

(1)基于CANopen通信的数控手轮驱动方式,在手轮端进行数据处理降低了脉冲信号漏记的可能性;上位机通过连续两个报文之间的数据关系可以判断是否出现报文漏记,并通过简单的计算即可得到漏记报文的数量,从而通过相应的方式进行补偿;

(2)传统驱动的过程中,倍率选择较大,摇动速度又不快时,脉冲当量较大,频率较低,容易造成驱动脉冲不均匀,呈现波动状态[10]。而基于CANopen通信的数控手轮驱动方式,将脉冲信号和倍率选择信号处理以后,以报文的方式发送给上位机,每一个报文的进给量都是一样的,报文间隔基本一致,从而实现了步进电机的均匀化驱动。

随着现场总线技术在数控系统中应用的深入,该种方案将会成为手轮驱动的一种可行的选择。

猜你喜欢

累加器手轮倍率
西门子TCS-TOFFON功能的应用
密码累加器研究进展及应用
数控机床进给倍率修调的实现
数控机床电子手轮工作原理及故障分析
阀门手轮应力模拟分析
具有旋摆功能变幅小车自动变倍率系统的研究
简析80C51单片机的数据传送类指令
Fpga的信号发生器设计原理
一种智能加工系统中的机床倍率控制方法
基于霍夫变换的工位点识别算法设计与实现