[发明内容]
本发明的目的是克服现有技术不足,通过整合原先两种点胶机器人的优势,即将原先一体联机式的点胶机器人改变为PC与点胶机器人通过通讯接口连接的方式,同时对示教编程器内部原有的通讯结构也进行改变;使点胶机器人与PC和示教编程器自由组合式的连接,既可全部连接,也可选择性的单独连接PC和示教编程器中的任一种,在微机、示教编程器和点胶机器人之间建立联动关系,在示教编程时微机屏幕可同步更新显示CAD模型,在修改CAD模型时点胶机器人的坐标可得到同步更新,实现所见即所得的效果,通过本方法可以提高编程效率,特别是对于复杂的三维工件可同时提高效率和精度。
为实现上述目的,设计一种用于点胶机器的联机示教处理系统,主要由点胶机器人主体、示教编程器、内嵌有CAD/CAM模型处理软件的微机构成的软硬件结合,其特征在于:点胶机器人主体内设命令解释器和主体通讯接口,微机和示教编程器中的至少一个与点胶机器人主体采用接口通讯连接形成联机编程模式或编程模式或联机模式,所述的点胶机器人主体主要由机器人手臂依次通讯连接运动控制器、命令解释器及至少两个主体通讯接口所构成;所述的示教编程器主要由人机交互界面的输出端依次连接命令发生器、转发器的一端,转发器的另一端分两路分别连接第一通讯接口的一端和第二通讯口的一端所构成;所述的微机内嵌有CAD/CAM模型处理软件,并设有另一命令发生器和微机通讯接口,微机的人机交互界面的输出端输出控制信号至CAD/CAM模型处理软件,CAD/CAM模型处理软件再依次与另一命令发生器、微机通讯接口一端通讯连接;点胶机器人主体通过主体通讯接口接收来自微机或示教编程器发出的示教指令或自动运行指令,经命令解释器解析后发送至运动控制器的存储单元内,运动控制器的存储单元再将命令发送给机器人手臂执行操作,使点胶机器人主体完成示教任务或加工任务。
所述的联机编程模式为,示教编程器的第一通讯接口和第二通讯接口分别与微机通讯接口、一个主体通讯接口连接所形成的联机编程模式。
所述的联机编程模式为,点胶机器人主体的两个主体通讯接口分别与微机通讯接口、示教编程器的第一通讯接口或第二通讯接口连接所形成的联机编程模式。
所述的编程模式为,示教编程器的第一通讯接口另一端或第二通讯口的另一端连接点胶机器人主体的一个主体通讯接口。
所述的联机模式为,微机通讯接口连接点胶机器人主体的一个主体通讯接口。
在联机编程模式时,点胶机器人主体接受微机发出的示教指令时,微机的CAD/CAM模型处理软件结合示教编程器进行如下处理步骤:(1)微机向点胶机器人主体发送“开始示教任务”的命令;(2)点胶机器人主体向微机反馈接收到“通讯确认”命令后;(3)微机的另一命令发生器经微机通讯接口向点胶机器人主体发送示教指令;(4)点胶机器人主体经一个主体通讯接口接收示教指令后,再将指令发送至命令解释器;(5)命令解释器解析指令后,再将解析后指令发送至运动控制器,使机器人手臂执行指令,同时刷新机器人手臂的位置坐标及点胶机器人主体相关状态信息,并将刷新后的执行结果信息反馈至微机;(6)微机根据执行结果更新CAD/CAM模型,并刷新微机的屏幕显示;(7)示教编程器通过第一或第二通讯接口来查询获取当前机器人手臂的位置坐标及点胶机器人主体的相关状态信息,并刷新示教编程器的屏幕显示;(8)微机向点胶机器人主体发送停止示教任务,结束示教。
在联机编程模式时,点胶机器人主体接受示教编程器发出的示教指令时,用户通过示教编程器结合微机进行如下处理步骤:(1)用户从示教编程器的人机交互界面的键盘输入示教指令,并发送至命令发生器,命令发生器再将示教指令经转发器发送至第一和第二通讯接口,第一或第二通讯接口再将示教指令发送至点胶机器人主体;(2)点胶机器人主体经一个主体通讯接口接收示教指令后,再将示教指令发送至命令解释器;(3)命令解释器再将解析后的示教指令发送至运动控制器,使机器人手臂执行示教指令;(4)机器人手臂执行指令后,刷新机器人手臂的位置坐标及点胶机器人主体的其它相关状态信息,并向示教编程器反馈执行结果;(5)示教编程器再主动查询并获取的执行结果中的机器人手臂位置坐标及点胶机器人主体其它相关状态信息,同时刷新示教编程器的屏幕显示;(6)微机再通过微机通讯接口查询获取当前机器人手臂的位置坐标及点胶机器人主体相关状态信息后,更新CAD/CAM模型,并刷新屏幕显示。
在联机编程模式时,点胶机器人主体接收示教编程器或微机中的任何一个发出的自动运行指令时,示教编程器或微机独立地周期性地查询当前的机器人手臂坐标及点胶机器人主体其它相关状态信息,在微机检测到点胶机器人开始自动运行之后,根据用户对CAD/CAM模型处理软件的设置,在微机屏上显示运行效果图,即在微机的屏幕上模拟显示CAD/CAM模型的加工过程。
本发明同现有技术相比,点胶机器人主体采用通讯接口自由的选择性连接嵌有CAD/CAM模型处理软件的微机和示教编程器,在微机、示教编程器和点胶机器人之间建立联动关系,在示教编程时微机屏幕可同步更新显示CAD/CAM模型,在修改CAD/CAM模型时点胶机器人主体的机器人手臂坐标可得到同步更新,实现所见即所得的效果,提高编程效率,特别是对于复杂的三维工件可同时提高效率和精度。
[具体实施方式]
下面结合附图对本发明作进一步的说明,本发明对本技术领域的人来说还是比较清楚的。
一、点胶机器人主体,包括构成机器人手臂的机械结构、电机、驱动器、传动机构、运动控制器,本发明中点胶机器人主体还包含一个命令解释器和至少两个主体通讯接口,其内部连接结构为点胶机器人主体的机器人手臂通讯连接运动控制器的一端,运动控制器的另一端通讯连接一命令解释器的一端,命令解释器的另一端设至少两个主体通讯接口。
点胶机器人主体可以接收来自示教编程器或微机发出的指令,并且根据指令运行到指定位置或连续自动运行,点胶机器人主体的主体通讯接口可以与示教编程器或微机连接并进行双向通讯,命令解释器负责解释从主体通讯接口接收到的指令,并执行指令,并从主体通讯接口返回执行结果的信息。
二、示教编程器,设有至少一组按键,也可设一个屏幕形成人机交互界面,人机交互界面的一通讯端连接命令发生器的一端,命令发生器的另一端分两路连接第一通讯接口的一端和第二通讯口的一端。
通过示教编程器可以向点胶机器人主体发送命令,包括控制机器人手臂移动到指定位置,记忆当前位置,和连续自动运行,示教编程器设两个通讯接口,即第一通讯接口和第二通讯接口,示教编程器中的任意一个通讯接口与微机通讯接口连接,该示教编程器的通讯接口可用于转发微机的命令到点胶机器人主体。
三、微机,采用普通PC或工控机,微机内嵌有CAD/CAM模型处理软件,并设有另一命令发生器和微机通讯接口,用户通过微机的人机交互界面向CAD/CAM模型发送指令,CAD/CAM模型处理软件再与另一命令发生器的一端进行通信,另一命令发生器的另一端连接微机通讯接口的一端;该CAD/CAM模型处理软件可以通过图形方式处理点、直线、曲线等CAD数据,包括修改CAD图形坐标、参数,并且可以向点胶机器人主体发送指令,包括控制机器人手臂移动到指定位置,记忆当前位置,和连续自动运行。
四、连接方式
1、点胶机器人主体与示教编程器和微机三者同时连接形成联机编程模式,主要有两种连接方式:
第一种,示教编程器的第一通讯接口和第二通讯接口分别与微机的通讯接口、一个主体通讯接口连接,形成一种联机编程模式;
第二种,主要由点胶机器人主体的两个主体通讯接口分别与微机通讯接口、示教编程器的第一通讯接口或第二通讯接口连接,所形成的另一种联机编程模式。
采用上述任意一种联机编程模式时,如用户从示教编程器发出的指令为示教指令时,则为示教编程模式,此时点胶机器人接受示教编程器发出的示教指令,具体为用户通过示教编程器结合微机进行如下处理步骤:(1)用户从示教编程器的人机交互界面的键盘输入示教指令,并发送至命令发生器,命令发生器再将示教指令经转发器发送至第一和第二通讯接口,第一或第二通讯接口再将示教指令发送至点胶机器人主体;(2)点胶机器人主体经一个主体通讯接口接收示教指令后,再将示教指令发送至命令解释器;(3)命令解释器再将解析后的示教指令发送至运动控制器,使机器人手臂执行示教指令;(4)机器人手臂执行指令后,刷新机器人手臂的位置坐标及点胶机器人主体的其它相关状态信息,并向示教编程器反馈执行结果;(5)示教编程器再主动查询并获取的执行结果中的机器人手臂位置坐标及点胶机器人主体其它相关状态信息,同时刷新示教编程器的屏幕显示;(6)微机再通过微机通讯接口查询获取当前机器人手臂的位置坐标及点胶机器人主体相关状态信息后,更新CAD/CAM模型,并刷新屏幕显示,参见图2和图4。
采用上述任意一种联机编程模式时,如用户从微机发出的指令为示教指令时,则点胶机器人接受微机的示教,微机的CAD/CAM模型处理软件结合示教编程器进行如下处理步骤:(1)微机向点胶机器人主体发送“开始示教任务”的命令;(2)点胶机器人主体向微机反馈接收到“通讯确认”命令后;(3)微机的另一命令发生器经微机通讯接口向点胶机器人主体发送示教指令;(4)点胶机器人主体经一个主体通讯接口接收示教指令后,再将指令发送至命令解释器;(5)命令解释器解析指令后,再将解析后指令发送至运动控制器,使机器人手臂执行指令,同时刷新机器人手臂的位置坐标及点胶机器人主体相关状态信息,并将刷新后的执行结果信息反馈至微机;(6)微机根据执行结果更新CAD/CAM模型,并刷新微机的屏幕显示;(7)示教编程器通过第一或第二通讯接口来查询获取当前机器人手臂的位置坐标及点胶机器人主体的相关状态信息,并刷新示教编程器的屏幕显示;(8)微机向点胶机器人主体发送停止示教任务,结束示教,参见图1和图3。
参见图5,采用上述任意一种联机编程模式时,如示教编程器或微机中的任何一个发出的指令为自动运行指令时,点胶机器人主体接收示教编程器或微机中的任何一个发出的自动运行指令时,示教编程器或微机独立的周期性地查询点胶机器人主体当前的机器人手臂坐标及相关状态信息,在微机检测到点胶机器人开始自动运行之后,根据用户对CAD/CAM模型处理软件的设置,在微机屏上显示运行效果图,即在微机的屏幕上模拟显示CAD/CAM模型的加工过程。
在本发明所述的联机编程模式下,点胶机器人主体作为命令接收和执行器,示教编程器和微机向点胶机器人主体发送命令并从与点胶机器人主体的通讯中获得命令执行的结果和机器人手臂的位置等信息。
2、点胶机器人主体选择性的与示教编程器或微机通过接口进行连接:
第一种为,点胶机器人主体与示教编程器通过接口连接,主要由示教编程器的第一通讯接口另一端或第二通讯口的另一端连接点胶机器人主体的一个主体通讯接口所构成,此时相当于原先的不依赖于微机独立工作的带有编程器的点胶机器人,也即编程模式;
另一种为,点胶机器人主体与微机通过接口进行连接,主要由微机通讯接口连接点胶机器人主体的一个主体通讯接口所构成,此时相当于基于PC的联机式点胶机器人,也即联机模式。
本发明中所使用的通讯接口包括但不限于USB、RS485、RS232和以太网,但所述的通讯接口在不使用时不影响点胶机器人主体的工作,并且通讯接口支持热插拔。
在点胶机器人主体与示教编程器和微机三者之外,允许有其他可发送命令的组成部分,包括但不限于点胶机器人主体的外壳或面板上的简易控制按键,可发送命令的组成部分所使用的命令与前述示教编程器和微机的命令相同。
五、本发明中微机、示教编程器和点胶机器人主体之间的通讯所使用的协议。
(一)基础通讯协议
1、为加入通讯的每一个设备分配一个地址,返回0~127,规定点胶机器人主体的设备地址为1,示教编程器的地址为2。
2、把通讯中的双方分为主机和从机,规定所有通讯由主机发起,从机只能响应,不能发起通讯,本发明中主机为微机或示教编程器,从机为点胶机器人,每一次通讯由主机向从机发一次请求和从机向主机发一次应答两部分构成,无论请求还是应答,数据均以不超过528字节的二进制数据帧发送,规定每一帧的基本格式为:
应答和请求的第一个字节“设备地址”必须相同,否则视为错误。
3、在微机或示教编程器与点胶机器人主体的通讯中,点胶机器人主体是从机,微机或示教编程器是主机。在微机与示教编程器的通讯中,微机是主机,示教编程器是从机。
4、从机只能响应设备地址等于自身地址的请求,例如示教编程器只能响应设备地址为1的请求,示教编程器则只能响应设备地址为2的请求。
5、从机收到设备地址不等于自身地址的请求,可以转发或丢弃。例如,示教编程器可以将来自微机的地址为1的请求转发给点胶机器人主体,并将点胶机器人主体的回应转发给微机。
(二)扩展协议
在功能码小于0x40用于微机或示教编程器与点胶机器人主体的通讯。功能码在0x40~0x7F的指令作为扩展协议,用于微机和示教编程器之间的通讯。0x80以上的指令码用于从机向主机返回错误代码。扩展协议从与基础通讯协议的结构完全相同,但是指令内容和回复细节由扩展协议规定。
(三)设备地址
为统一管理,方便使用,对设备地址规定如下:
(四)从机通讯流程
从机端,也即点胶机器人主体在接收到数据为自己的设备地址的那一个数据开始分析,得到合法的数据帧则处理,否则放弃。不管通过中断还是查询方式,处理流程都是相同的,参见图6。
(五)示教指令传送
点胶机器人主体接收的示教指令通过功能码为0x01,0x03,0x05,0x10的基本通讯协议进行封装,允许的最长命令为512字节,数据帧格式如下:
序号 |
描述define |
数值 |
字节数 |
BYTE0 |
设备地址 |
0x05 |
1 |
BYTE1 |
功能码 |
|
1 |
BYT E[2..n+1] |
示教指令 |
|
N |
BYTE[n+2,n+3] |
CRC校验 |
|
2 |
无论示教指令是何种格式,总能以二进制方式进行传输,因此只要指令总长度不超过512字节,上述协议总能完整的传输示教指令。
(六)超时及错误处理
通讯过程中不可避免的会出现错误或超时的情况,协议中将这两种情况分开处理,定义在指定的时间内,接收到完整的数据并且CRC校验正确则认为传输成功,否则定义为超时,也就是说超时包括没有接收到任何数据或者虽然接收到数据但是CRC校验错误,即接收到了错误的数据,当主机向从机发送消息超时,从机不做任何响应。
在传输成功的情况下,若从机无法解析主机发送的指令,则向主机报告错误,报告错误的格式如下:
如果主机没有接收到从机的任何回应,则必然是出现了超时,可能是在主机发送到从机的过程中超时,也可能是从机响应发送到主机时超时,主机在执行其他任何操作之前,先发送状态查询指令,以获得从机状态,查询指令格式如下:
从机接收到查询后,将字节2:3与上次接收到的正确CRC进行比较,如果一致则将上一条指令的响应结果,正确为0,错误为错误代码,以下面的格式返回:
如果CRC与上次响应的CRC不同,则说明主机丢失了一条指令,从机按下面的格式返回:
主机收到回复结果为正确时可以继续执行后续操作,否则应该重发上次指令;
如果主机在多次发送查询命令后仍然没有得到回复,则向用户报告超时错误,并停止后续操作。
(七)微机与示教编程器传输协议
微机通过文件传输协议和示教编程器之间进行示教文件和其他数据的上传和下载。
(八)简介
每一帧数据的基本格式如下:
BYTE[2]所指的具体功能ID包括内容:
(九)示教文件上传流程
上传过程是分为上传文件头和文件数据这两次过程来完成的,其上传流程为(1)准备传输数据StartSession;(2)查询文件头信息;(3)启动被动传输;(4)查询文件数据信息;(5)启动被动传输;(6)结束数据传输EndSession,参见图7。
(十)示教文件下载流程
下载过程不分文件头和文件数据,将文件分拆为512字节为单位的Page,每一帧传送一个Page,下载流程为:(1)准备传输数据StartSession;(2)传输文件头;(3)分次写入Page数据;(4)判断是否结束End?结束判断为否,则回到“分次写入Page数据”步骤;结束判断为是,则结束下载EndSession,参见图8。
(十一)协议详解
1、准备传输数据StartSession
功能:通知示教编程器进入联机模式,即与微机联机。
微机发送数据帧格式:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
0x01 |
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
0 |
2 |
BYTE[6..7] |
数据字节数 |
0 |
2 |
BYTE[8..9] |
CRC |
|
2 |
微机接收数据帧格式:ReplySatus(),如下表:
2、结束传输数据EndSession
功能:通知示教编程器可以退出联机模式。
微机发送数据帧格式:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
0x02 |
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
0 |
2 |
BYTE[6..7] |
数据字节数 |
0 |
2 |
BYTE[8..9] |
CRC |
|
2 |
微机接收数据帧格式同ReplySatus();
3、查询文件信息
功能:查询文件的文件名,文件大小,让示教编程器内部准备好上传文件。
微机发送数据帧格式:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
0x04 |
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
0 |
2 |
BYTE[6..7] |
数据字节数 |
0 |
2 |
BYTE[8..9] |
CRC |
|
2 |
微机接收数据帧格式:错误,参见ReplySatus();正确,如下表:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
0x04 |
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
0 |
2 |
BYTE[6..7] |
数据字节数 |
0x10 |
2 |
BYTE[8..19] |
文件名 |
|
12 |
BYTE[20..23] |
文件大小 |
|
4 |
BYTE[24..25] |
CRC |
|
2 |
4、写入文件头
功能:通知示教编程器内部新建一个文件,用来以后填入数据。微机发送数据帧格式:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
0x09 |
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
0 |
2 |
BYTE[6..7] |
数据字节数 |
0x10 |
2 |
BYTE[8..11] |
文件大小 |
|
4 |
BYTE[12..23] |
文件名 |
|
12 |
BYTE[24..25] |
CRC |
|
2 |
微机接收数据帧格式:参见ReplySatus();
5、读取数据
功能:读取文件某一页的数据。
微机发送数据帧格式:
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
|
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
pageIdx |
2 |
BYTE[6..7] |
数据字节数 |
0 |
2 |
BYTE[8..N] |
数据包 |
|
0 |
BYTE[N+1..N+2] |
CRC |
|
2 |
微机接收数据帧格式:错误,参见ReplySatus();正确,参见下表:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
|
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
pageIdx |
2 |
BYTE[6..7] |
数据字节数 |
0x200 |
2 |
BYTE[8..N] |
数据包 |
Page数据 |
0x200 |
BYTE[N+1..N+2] |
CRC |
|
2 |
6、写入数据
功能:写入文件某一页的数据,若数据长度为512则写入1页,若数据长度为0表示写入完成。
微机发送数据帧格式:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
|
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
pageIdx |
2 |
BYTE[6..7] |
数据字节数 |
0x200 |
2 |
BYTE[8..N] |
数据包 |
page数据 |
0x200 |
BYTE[N+1..N+2] |
CRC |
|
2 |
微机接收数据帧格式:参见ReplySatus();
7、下载当前示教文件到点胶机器人主体
功能:让示教编程器把当前的示教文件下载到点胶机器人主体。
微机发送数据帧格式:
微机接收数据帧格式:同ReplySatus();
8、被动上传模式
功能:让示教编程器一次性传完所有的文件数据。
微机发送数据帧格式:
微机接收数据帧格式:错误,ReplySatus();正确,文件有n个Page,发送n次以下数据:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
|
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
pageIdx |
2 |
BYTE[6..7] |
数据字节数 |
0x200 |
2 |
BYTE[8..N] |
数据包 |
Page数据 |
0x200 |
BYTE[N+1..N+2] |
CRC |
|
2 |
9、获取文件总数和当前文件序号。
微机发送数据帧格式:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
0x05 |
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
0 |
2 |
BYTE[6..7] |
数据字节数 |
2 |
2 |
BYTE[8..9] |
Reserved |
0 |
2 |
BYTE[10..11] |
CRC |
|
2 |
示教编程器回复的数据:
10、选择文件
此命令改变示教编程器的当前文件;
微机发送数据帧格式:
序号 |
描述 |
数值 |
字节数 |
BYTE0 |
设备ID |
|
1 |
BYTE1 |
扩展功能 |
0x41 |
1 |
BYTE[2] |
扩展功能码 |
0x06 |
1 |
BYTE[3] |
reserved |
reserved |
1 |
BYTE[4..5] |
地址 |
0 |
2 |
BYTE[6..7] |
数据字节数 |
8 |
2 |
BYTE[8..15] |
参看下面的描述 |
|
8 |
BYTE[16..17] |
CRC |
|
2 |
当地址BYTE[4]==0时表示按照方向选择,BYTE[8]=0向前选择,否则向后选择;
当地址BYTE[4]==1时,BYTE[8],BYTE[9]组成的WORD指出了要打开的文件的ID;
当地址BYTE[4]==2时,BYTE[8..15]以ASCII方式给出了文件名。
示教编程器回复的数据参看ReplyStatus()。