数控组合机绝对值的实现方法

2012-09-04 10:30孙建业李法光王朝伟
沈阳理工大学学报 2012年3期
关键词:数控系统驱动器编码器

孙建业,李法光,王朝伟

(沈阳理工大学辽宁省高速切削工程技术研究中心,辽宁沈阳110159)

组合机床是大批量生产机械产品的设备,具有高效率和经济性,应用领域广泛。组合机床一般采用多轴、多刀、多工序、多面或多工位同时加工的方式,生产效率比通用机床高几倍至几十倍。组合机床具有多个加工工位,同时对一个工件进行加工,通常几十秒可完成一个复杂零件的加工。多工位组合机每次开机回零,不仅浪费时间而且过程繁琐,为此采用运动控制卡控制绝对值伺服电机。绝对值编码器是一种直接编码、绝对测量的检测装置,与增量脉冲编码器不同,它是通过读取绝对编码盘、编码尺的代码信息指示绝对位置,电源断电后,没有积累差,所以位置信息不会丢失,不仅避免接线带来的故障,提高机床的可靠性,而且减少辅助时间,具有高效性。

1 组合机系统与绝对值驱动器的硬件搭建

组合机专用数控系统为PC机与PMAC相结合形成并行双CPU开放式数控系统。MOTECα系列伺服驱动器本身具备数据显示、数据监控、报警等基本功能,有两个独立的通讯接口,9针RS232/485串口JP3与控制器相连接,6针RS485串口JP4用于多个驱动器之间的连接,如图1所示。

图1 控制器与多个驱动器连接图

MOTECα系列伺服驱动器通信端口(9Px)RS485方式接线如表1所示。

表1 MOTECα(9Px)RS485方式接线

2 Moubus通信协议及数据格式

Modbus协议支持传统的 RS-232、RS-422、RS-485和以太网设备等。ModBus协议有ASCII、RTU两种模式,RTU模式因传输效率高而在工业领域中应用较广。RTU模式对数据进行校验时,串行协议中除有奇偶校验外,还要采用16位CRC校验[2]。Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可诊断发现,当故障修复后,又可自动接通。因此,Modbus协议的可靠性较好。

MOTECα系列伺服驱动器底层软件内嵌标准 ModBus通信协议。具有常用的01、02、03、05、06、0F、10号通信协议功能。当伺服驱动器与ModBus控制器成功连接后,控制器则很方便地利用通信协议对伺服驱动器进行参数设置和驱动器状态收取等,同时可采用RS-485方式进行多机联机控制。

Modbus RTU协议有24种命令,α系列伺服驱动器只支持其中最常用的7种命令,这7种协议可满足大多数控制器对伺服的控制。具体功能码见表2。

表2 常用功能码及其含义

3 系统软件设计

本系统程序采用VB编写,采用自上而下的模块化设计方法,整个程序包括各种设备驱动程序、通讯子模块等[3]。Modbus协议要求区分设备的主从,主设备PC机与PMAC相结合的并行双CPU开放式组合机床数控系统作为上位机,从设备绝对值式驱动器作为下位机,Modbus协议中包含CRC计算与验证、信息帧的编制和分解[4]。

通过RS485串口JP4用于多个驱动器之间的连接,现以一个伺服驱动和绝对值电机为例,介绍工控机和伺服驱动之间的信息交换,详细说明编码器位置的读取方法。MOTECα系列伺服驱动器通信数据格式为:半双工方式、8个数据位、1个停止位、无校验位。通信波特率为 9600Bps、38400Bps、57600Bps、115200Bps 可选。为 方便Modbus控制器对伺服驱动器进行参数读取和修改,α系列伺服驱动器将参数号定义为地址,如参数PA60对应参数地址为0x60,参数PA70对应参数地址为0x70,其它参数同样定义,即对伺服驱动器地址如0x60的数据操作结果关联到PA60号参数上,等同于对参数的操作。

(1)读参数格式

发送:机号+功能码+地址高8位+地址低8位+字个数高8位+字个数低8位+CRC低8位+CRC高8位

回发:机号+功能码+字节数+数据高8位+数据低8位+CRC低8位+CRC高8位

例:通过Modbus RTU 03号功能码在α系列伺服驱动器中读取参数,例当前驱动器参数PA50参数值为32,则读取此参数通信格式为

发送:0x01 0x03 0x00 0x50 0x00 0x01 0x84 0x1B

回发:0x01 0x03 0x02 0x00 0x20 0xB9 0x9C

(2)写参数格式

发送:机号+功能码+地址高8位+地址低8位+字个数高8位+字个数低8位+字节数+字的值+CRC低8位+CRC高8位

回发:机号+功能码+字节数+数据高8位+数据低8位+CRC低8位+CRC高8位

例:Modbus RTU 06号功能码为写单个寄存器功能协议,10号功能码为写多个寄存器功能协议,在α系列伺服驱动器中多数控制器采用10号功能码进行寄存器修改参数,例将驱动器PA50参数值修改为50,则写取此参数通信格式为

发送:0x01 0x10 0x00 0x50 0x00 0x01 0x02 0x00 0x32 0x2B 0xD5

回发:0x01 0x10 0x00 0x50 0x00 0x01 0x01 0xD8

3.1 VB编写串行通信程序

利用VB创建一个串口调试界面,如图2所示。

图2 串口调试界面

首先设置好串口、波特率、停止位、校验位等,定义发送和接收的格式都为16进制格式。该绝对值电机为多圈电机,圈数和单圈脉冲数分别存放在不同的地址0x8037、0x8026中,机床运动的实际位置是电机运动圈数乘以电机每转的脉冲数再与单圈脉冲数求和的值。根据协议发送和接收的都是十六进制的字符串,首先要在接收的字符串中提取电机转数和单圈编码器的十六进制值,再转化成十进制值进而计算得到机床实际的运动位置。

首先进行串口初始化:

VB6.0MSComm控件是高级语言编写的串行通信程序和PC串口之间的桥梁,在应用程序中嵌入MSComm控件,可完成串口的通信。使用MSComm控件时,对输入缓冲区或输出缓冲区的数据进行处理,可以是字符(comInputModeText)或Hex(comInputModeBinary)发送,字符方式是以Unicode码发送,Hex是以二进制流发送[5]。Mod-Bus RTU模式为十六进制,发送接收都为 Hex(comInputModeBinary)方式,程序如:

图3为以Hex方式进行发送与接收时对应程序流程图[6]。

图3 Hex方式进行发送与接收时对应程序流程图

comInputModeBinary方式将Inputlen设为0,即全部读入输入缓冲区的内容,对缓冲区中所有字节进行计数,将收到的字符进行甄别,如果小于128数,则不再读入下一个字节,如果大于128字节的数,则继续读入下一个字节,将前后两个字节当作一个字符处理,输入的高字节放前,低字节放后。

通过StrHexToByteArray函数将字符串表示的十六进制数据转化为相应的字节串,并返回转化后的字节数。

通过MSComm1控件的OnComm函数将伺服驱动回发的内容显示在接收区文本框。

3.2 组合机床绝对位置读取

首先设置串口调试窗口与绝对值式驱动器相同的波特率,并将驱动器PA90参数机器编号设定与代码中机号相同。在发送区按Modbus协议发送一组规定的数据格式十六进制数值,接收区回收到相应的一组十六进制值,按照格式发送一组十六进制数,读取寄存器0x8026中单圈编码器值,机号为1,采用03号功能码读取字地址,读取从0x8026起的两个字节值,CRC校验码为0x000C。

如:发送区:0x01 0x03 0x80 0x26 0x00 0x02 0x0C 0x00

接收区:0x01 0x03 0x04 0x00 0x01 0x5F 0x90 0x8A 0x28

从接收区数据0x01 0x03 0x04 0x00 0x01 0x5F 0x90 0x8A 0x28看出单圈编码器相对位置为0x00015F90,0x288A为CRC校验码。

同样对1号伺服驱动器,用03号功能码读取地址0x8037的值,计算得到校验码为0x041C。

如:发送区:0x01 0x03 0x80 0x37 0x00 0x01 0x1C 0x04

接收区:0x01 0x03 0x02 0x00 0x07 0xF9 0x86

从接收区数据0x01 0x03 0x02 0x03 0xE8 0xB8 0xFA看出多圈数为0x03E8,即自从上次驱动器清零后电机总共转了0x03E8圈,0xB8FA为校验码。

这是对一个伺服驱动器读取编码器绝对位置的方法,实际上包括多圈0x8037的值和单圈编码器相对值0x8026,同理可用相同方法对其它伺服驱动器的编码器绝对位置进行读取。

3.3 组合机床无回零加工

通过VB编写的串口调试界面可以顺利读取驱动器绝对位置,而组合机床数控系统开机时就应读取到电机的绝对位置,所以把对伺服驱动器读取编码器绝对位置的程序段,植入到组合机床数控系统主界面的加载程序中,即系统开机时首先读取绝对值位置。

组合机床数控系统的电机实际位置都存在PMAC卡的Mx62变量中,以1号电机为例,在系统启动时对伺服驱动器读取编码器绝对位置并赋予变量M162中,使系统记忆当前位置,即实现了电机1开机无需回零,即可从当前记忆的绝对值位置开始加工。

在系统启动时读取编码器绝对位置的程序段[7-8]:

在系统主界面坐标系显示实际绝对值位置:

同样方法,可实现其它工位的电机开机读到绝对值位置,并保存到系统变量Mx62地址中,完成组合机床自动化加工。

4 结论

组合机床采用自上而下的模块化设计方法,使主设备PC机与PMAC相结合的并行双CPU开放式数控系统作为上位机,从设备绝对值式驱动器作为下位机,完成上位机对下位机的绝对位置数值的读取,并加载到系统加工程序中,实现了组合机床的无回零自动化加工,进一步提高了组合机床的效率及可靠性。

[1]王立红.基于PLC的步进电机行程控制[J].组合机与自动化加工技术[J],2008(11):44-46.

[2]潘洪跃.基于MODBUS协议通信的设计与实现[J].计量技术,2002(4):37-38.

[3]李江全,汤智辉,朱东芹.VisualBasic数据采集与串口通信测控应用实战[M].北京:人民邮电出版社,2011.

[4]王念春.基于Modbus协议的PC与下位机PLC间的通信程序[J].自动化仪表,2001,22(8):44-46.

[5]罗朝盛,余文芳.Visual Basic6.0程序设计基础教程[M].北京:人民邮电出版社,2005.

[6]张辉,李荣利,王和平.Visual Basic串口通信及编程实例[M].北京:化学工业出版社,2011.

[7]DELTA TAU Data System Inc.PCOMM32PRO[M].USA:DELTA TAU Data System Inc,2003.

[8]DELTA TAU Data System Inc.PMAC SOFTWARE REFERENCE MANUAL[M].USA:DELTA TAU Data System Inc,2004.

猜你喜欢
数控系统驱动器编码器
藏起驱动器号确保数据安全
基于FPGA的同步机轴角编码器
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
基于双增量码道的绝对式编码器设计
数控系统中GUI软件平台设计和实现
压电陶瓷驱动器的迟滞特性
JESD204B接口协议中的8B10B编码器设计
SiC基和Si基永磁同步电动机驱动器的比较