当前位置:首页 > 通信技术 > 通信技术
[导读]机器人目前应用十分广泛,在工业、科研、医学等领域发挥了重要作用。我们知道,机器人的指令需要我们来提供。目前,工业机器人的指令一般都是通过示教盒输入的。示教盒提供了简单的人机界面,可以帮助完成简单的示教

机器人目前应用十分广泛,在工业、科研、医学等领域发挥了重要作用。我们知道,机器人的指令需要我们来提供。目前,工业机器人的指令一般都是通过示教盒输入的。示教盒提供了简单的人机界面,可以帮助完成简单的示教任务。但在许多应用中,仅通过示教输入是无法满足要求的。在激光加工机器人系统中,要给机器人的指令多达几万条,而且指令的参数不能示教得到,是由其他测量系统提供的。在这种情况下,需要通过上位机给机器人控制器发送指令。这就需要实现机器人控制器和上位机的实时通信。机器人指令有固定格式,机器人通信有其特殊性。为了保证通信的可靠性,提高通信效率,可根据机器人通信特点,制定了相应的通信协议,并制作了专用的、更适合于工业应用的上位机通信控件。

       1 机器人主控计算机

       机器人控制器中最重要的是主控计算机。在激光加工机器人中,主控计算机采用基于PC总线S 104/486DX工业控制级嵌入式单板计 
算机,其核心是AMD 80486 DX微处理器。主控计算机提供串行接口,可以和它进行串口通信。主控计算机内部的信息处理由机器人控制器操作系统来实现。整个系统采用了实时多任务操作系统VRTXsa来实现,它具有很好的实时性和可靠性,同时具有完善的任务管理机制。


       2 激光加工机器人通信系统结构

       机器人的运动指令来自通信系统。在我们的通信系统中,主要包括上位机应用程序、串口控件、串口和机器人主控计算机(下称下位机)。上位机应用程序产生指令,通过控件访问串行端口,将指令传给下位机。下位机收到指令后,对指令进行分析处理。对于下位机来说,这些指令分两种:一种是解释执行指令,需要进入命令队列,排队执行,占用缓存;另一种是立即执行指令,不需要进入队列,不占用缓存。对于解释执行指令,下位机收到后,把指令放入队列后马上返回应答。对于立即执行指令,先执行该指令,然后才返回应答。查询指令属于立即执行指令,下位机除了返回命令在命令字外,还同时返回相应的数值。上位机根据返回的应答判断通信的状态,并进行相应的处理。


       3 通信协议

      我们的激光加工机器人通信系统具有以下特点:

      1)机器人只会按指令进行工作,如果指令有问题,将会带来不可预测的后果。所以对于我们的通信系统来说,可靠性、安全性是首要的。

       2)机器人工作环境比较恶劣,各种干扰比较大。通信的抗干扰能力、错误处理的能力非常重要。

       3)为了提高加工效率,希望机器人能以较快的速度进行工作。

       为避免机器人出现“空指令”,通信速度要跟得上。基于机器人通信系统自身的特点,上位机和它进行通信,必须满足其特定的要求。我们采用如下的通信方式:

       (1)主从方式。上位机为主机,下位机为从机。一般情况下,下位机不能主动给上位机发送信息。只有上位机给下位机发出指令后,下位机才能作出应答。这样通过上位机,我们就可以很好地控制整个通信过程。

       (2)数据帧方式。采用数据帧的方式,有利于保证数据包的完整性,便于进行数据接收和处理。在我们的通信系统中,上位机和下位机均采用相同的协议对通信数据进行打包、解包。我们自己定义帧头为eb 90 82,帧尾为9082,帧标志为f0。另外规定,有效数据中若出现90,则双写90,用以区别帧尾中的900数据帧格式如下所示:


                  {帧头一帧标志一通信数据一帧尾一校验字}


       另外,在我们的通信过程中,要处理各种不同类型的数据,包括char' , short型、float型、byte型等,在有效数据前加入标识符来识别它们。如f0 06表示6个浮点数,f3 05表示5个字符。
 (3)校验和。这是一种简单而实用的校验方式。在上位机发送指令前,自动计算数据的和,并将它附在数据帧的末端,一起发送给下位机。下位机在接收到数据帧后,先解包,然后再计算一次数据和,用它与数据帧末端的校验和进行比较。反之亦然。使用这种方式可以检验数据在传输的过程中是否发生了变异。

       (4)自动重发机制。下位机在接收到错误的数据帧时,将会把该数据帧遗弃掉,同时向上位机返回错误码报错。这时候,该帧数据需要重新发送。如果把重发任务交给应用程序,程序将变得比较复杂。我们把这个任务交给控件,可以很轻松的实现重发功能。在控件内部,当新的数据发送之前,都将数据做一个备份,直到确认接收正确了,才将其消除。如果发现有错误,将其再次发出去。

       (5)应答方式。在通信过程,下位机对上位机每一帧数据都必须做出的应答。上位机根据返回的应答判断通信状态,然后进行下一步动作。为了安全起见,规定只有在确认前一包指令正确应答之后,才可以发下一包指令。对于非查询指令(包括全部解释执行指令和部分立即执行指令),下位机收到后,返回该指令的命令字;对于查询指令,除了返回命令字之外,同时还返回查询数据,如机器人的位置、各轴转角等。如果下位机检测到数据帧有问题,如无帧头、校验和错等,则返回相应的错误码。上位机在发送指令的时候,同时记录下了该指令的命令字。在接收到下位机返回的应答后,将其中的命令字与保留的命令字比较,如果一样,则说明发送正确,可以发送下一条指令;反之,则说明指令发送有问题,根据错误码进行错误处理,并重发当前指令包。指令的发送和应答的接收过程如图1所示。

                       

 

       (6)成组指令发送方式。由于机器人的运行速度很快,为了能保证指令发送速度能跟上运行速度,因此在一个数据报里同时发送了多条指令,而下位机只需应答第一条指令。这样就减少了应答时间,提高了指令的发送速度。实际应用中,我们采用7条指令一个数据报,结果显示,速度快了大约37。为了安全和处理方便,控件只允许解释执行指令成组发送,对于立即指令,只能发送单指令数据报。 4 通信的实现

 

       4.1 下位机通信任务的实现


       在实时多任务系统中,一项工作的完成往往需要通过多个任务(中断)共同完成的。这需要各任务及中断协调动作,相互配合,甚至进行通信。VRTXsa提供了邮箱(mailbox),队列(queue)、事件标志(event flag)、信号量(semaphore)互斥体(mutexes) 5种通信机制。在下位机通信系统中,通信工作由串口2中断、时钟中断、监控任务、显示任务、执行任务等共同协调完成的。如图2所示。

                   

 

       机器人收到上位机的指令后,串口2中断发生,它的中断服务程序启动。它将设置中断同步标志,触发串口2任务程序。串口2任务将处理接收到的上位机数据,将解释指令放入命令队列中,并设置相关标志。在一个时钟周期内(16ms),所有任务执行一遍,它们根据相关标志,完成相应的工作,如读取命令队列,执行命令,给上位机返回应答。

  串口2任务程序如下:
void far com2_ task(void)
{刀初始化
刀装载串口2中断
sys_ load vrtx_ isr(Ox34,com- isr);
刀允许串口2中断
n8259_ inerrupt enable(4);
while(true)
 刀等待串口2中断
ev_group=sc_ fpend(group_ id,0,4,0,&erro);
刀中断到来,清中断同步标志
ev_group=sc_ fclear(gruop_ id,4,&err);
read_ CommData();//处理并读取数据
刀处理各种指令,并设置各相关标志
process_ Comm (BYTE *Buff,BYTE *cPtr);

  4.2 上位机通信控件的实现

       为了便于用户使用,把上位机的通信功能封装到ActiveX控件中。选择VC++6进行通信控件的开发,串口操作使用API函数来实现。控件中采用了多线程技术。为监控串口任务创建了一个工作线程,以免它堵塞主线程,提高了系统的响应性。通信控件采用了异步v0方式,以提高发送、接收和处理数据的效率。异步v0操作建立后会立即返回,即使操作还未完成。这样把费时的v0操作放在后台进行,线程就可以干别的事情,极大地提高了程序的运行效率。在串口通信中,有 
几种读取串口数据的方式,其中事件驱动是最有效率的方式。在监视串口的辅助线程中,当有数据到达时串口是,串口事件触发,控件开始读取串口输入缓冲区的数据。如果没有数据到达,那么使用WaitForMultipleObjects 0'数堵塞监测线程,把资源让给其它线程。在使用线程堵塞技术之后,监视串口线程占用的系统资源大大减少,同时提高了指令的发送效率。串口读写和监控是通信的最主要部分,采用了异步v0操作,使得程序复杂化。异步v0操作分两部分:一是创建该v0操作,然后返回;二是探测操作的完成。下面是读串口的部分程序清单:

void CCommCtrl::ReadChar(COMSTAT comstat)
{
while (comstat.cbInQue>0)f
C1earCommERROR(mJWomm,&dwError,&comstat);
if(!ReadFile(hcomm,&RXBuf,l,&dwRead,&m_ ov))
f //ReadFile返回FALSE,判断是出错还是没完成
if(GetLastError()==ERROR IO_PENDING) f
//没完成,需要等待
if(!GetOverlappedResult(hComm,&m- ov,
&dwRead,TRUE)) //等待读操作完成
{…}刀完成读操作,但出错
else //正确完成读操作
{…}//处理接收的字符
else(…}/赎操作出错
else //读操作在函数返回前已经完成
{…}刀处理接收的字符
}
return; //没有字符了,返回
}
写串口程序和读串口类似。监视线程的部分代码如下:
DINT CommWatch(LPVOID pParam)
{刀清缓存
PurgeComm(hcom,PURGE_ RXCLEAR I PURGE一XCLEAR I
PURGE_ RXABORTIPURGE一XABORT);
for(;;) f
bResult2=WaitCommEvent(hcom,&dwEvtMask,&m一 ov);
刀等待串口事件的发生
if(!bResult2)[//事件WaitCommEvent返回假
switch (dw=GetLastError(川
case ERROR-10-PENDING://异步I/O操作(WaitCommEvent)/
/进行中,正常情况
{break;}
default:[ // I/O操作出现错误
ProcESSErrorMessage("WaitCommEvent()");
break;}}}
else{//事件WaitCommEven岖回真,操作完成
bResult2=C1earCommError(hcom,&dw, &commstat);
if (commstat.cbInQue==0)
continue;}
刀堵塞线程,等待事件组发生。事件组包括:关闭线程事件、
刀读事件、写事件
Event=WaitForMultipleObjects(3, m- hEventArray, FALSE,
INFINITE);
switch (Event){//判断是哪个事件发生
case 0:f//关闭事件
mJbThreadAlive= FALSE;
AfxEndThread(100);//关闭线程
break;)
case 1:f//字符到达,读字符
bRead=TRUE;
bResult=TRUE;
GetCommMask(hcom, &CommEvent);
if(CommEvent&EV_ RXCHAR)(
刀通知控件句柄读取字符
::SendMessage(CommWnd,WM_ COMM_ READ,0,0);)
break;)

case 2:{//写事件
//通知控件句柄写串口
::SendMessage(CommWnd,WM_ COMM_ WRITE,0,0);)}}
刀主循环结束
return 0;}


  5 结束语

       我们根据激光加工机器人通信的特点,制定了相应的通信协议,同时采用了多种有效的编程方法,以达到安全、高效、实用的目的。经过大量的测试以及I年多工业运用表明,该通信协议及通信系统取得了很好的效果,完全达到了工业机器人通信的要求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在今年的展会上,除了展出去年11月加入尼得科集团的车床厂商“TAKISAWA”的车床之外,还会为您展示更丰富的产品阵容“面向所有工业领域的尼得科的机床产品”。以OneNidec的方式,为汽车、机器人、半导体、能源、建筑机...

关键字: 机器人 半导体 能源

AI+机器人领域已经成为当下最热门且最受关注的前沿科技领域之一,在中国,也已经有不少企业开始在AI+机器人领域深入探索,其中就包括长期专注于B端垂直领域的AI机器人+行业智慧服务解决方案服务商「小笨智能」。

关键字: AI 机器人

一直以来,编码器都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来编码器的相关介绍,详细内容请看下文。

关键字: 编码器 工业控制 机器人

人工智能机器人行业的前景看起来非常广阔且充满机遇。随着技术的不断进步,人工智能机器人已经在多个领域得到了广泛应用,并且其应用范围和深度还在不断扩大。

关键字: 人工智能 机器人

北京——2024年3月25日 在今年1月份落幕的达沃斯世界经济论坛2024年年会上,一场名为“生成式人工智能:第四次工业革命的蒸汽机”的科技论坛引起了业界广泛关注。与会者纷纷表示,人工智能技术赋能了产业的革新,而生成式A...

关键字: 生成式AI 机器学习 机器人

2024年3月22日 – 专注于推动行业创新的知名新品引入 (NPI) 代理商™贸泽电子 (Mouser Electronics) 很高兴宣布赞助第22届“创造未来”设计大赛。这项国际赛事吸引了世界各地的工程师和创客,各...

关键字: 机器人 自动化

日前,戴盟(深圳)机器人科技有限公司发布了其新品“Sparky 1”,这是该团队继仿人搬运机器人后推出的又一款突破性“巧手”产品。据悉,该机器人采用新一代视触觉传感+灵巧操作技术,旨在帮助人类完成更多任务挑战。“心灵手巧...

关键字: AI 机器人

中国,2024年3月20日,–全球领先的胶粘剂专家Bostik波士胶将在2024慕尼黑上海电子生产设备展(Productronica China 2024)上展示其针对消费电子行业的全系列创新工程胶粘剂解决方案。

关键字: 传感器 机器人 智能仓储

在迄今为止最大规模的 GTC 大会上,NVIDIA 创始人兼首席执行官黄仁勋带来 NVIDIA Blackwell、NIM 微服务、Omniverse Cloud API 等发布。

关键字: 机器人 生成式 AI 处理器

Isaac 机器人平台现可为开发者提供全新的机器人训练仿真器、Jetson Thor 机器人计算机、生成式 AI 基础模型和由 CUDA 加速的感知和操作库

关键字: 机器人 生成式 AI SoC
关闭
关闭