一种单线程机械臂实现多线程处理的方法及机械臂与流程

文档序号:20788622发布日期:2020-05-19 21:57阅读:527来源:国知局
一种单线程机械臂实现多线程处理的方法及机械臂与流程

本发明属于机械臂技术领域,特别涉及一种单线程机械臂实现多线程处理的方法及机械臂。



背景技术:

目前市场上大多数单任务模块机械臂(即单线程机械臂)用于码垛、搬运,组装拆卸等工作,所涉及工况基本上都是顺序执行(即通过程序指令逐步向下执行),不存在较大技术瓶颈。然而,利用机械臂自主打磨,自主焊接等涉及实时取点、实时计算的工况则需要命令机械臂在执行本身程序的同时附加另一个多任务模块协助完成多线程处理功能(单任务只能完成路径规划),目前仅通过单任务模块无法实现上述功能。

目前工业上单任务模块机械臂编程有很大的局限性,不能同时使用多个线程导致无法实时回传相应数据,即单线程机械臂在运行过程中无法实时跳离主程序去运行其它程序模块。

参照图1,现有的机械臂多线程处理方法是通过安装多任务模块来实现的,例如现有的机械臂只有一个单线程即线程一,为了实现多线程工作,在机械臂上新增线程二、线程三和线程四,从而实现四个线程同时工作,安装多任务模块不仅需要额外的花费,并且会占用机械臂处理器本身的运行内存,导致机械臂控制系统处理速度变慢。



技术实现要素:

针对上述问题,本发明提出一种单线程机械臂实现多线程处理的方法,机械臂执行主程序过程中接收逻辑控制器发送的中断信号;

机械臂基于中断信号触发中断,机械臂扫描中断程序;

机械臂完成一次扫描中断程序,机械臂发送触发完成脉冲信号至逻辑控制器;

逻辑控制器基于触发完成脉冲信号恢复到待发送中断信号状态;

逻辑控制器判断有无接收到终止信号,若没有接收到终止信号,逻辑控制器继续发送中断信号,若接收到终止信号,逻辑控制器终止发送中断信号。

优选地,中断任务执行完成后,机械臂发送终止信号到逻辑控制器;

逻辑控制器基于终止信号终止发送中断信号。

优选地,机械臂发送触发完成脉冲信号至逻辑控制器具体为:

机械臂扫描中断程序产生触发完成脉冲信号,触发完成脉冲信号反馈至逻辑控制器。

优选地,所述方法还包括:

机械臂实时采集外部数据;

机械臂基于外部数据发送开始信号至逻辑控制器;

逻辑控制器基于开始信号发送中断信号至机械臂。

优选地,机械臂检测上升沿触发中断。

优选地,机械臂检测下降沿触发中断。

优选地,触发完成脉冲信号时长为t1,待发送中断信号状态延续时长为t2,t2≥2*t1。

本发明还提出了一种实现多线程处理的机械臂,包括:

主程序执行单元,用于执行主程序;

中断程序执行单元,用于执行中断程序;

信号接收单元,用于接收逻辑控制器发送的中断信号;

第一信号发送单元,用于发送触发完成脉冲信号至逻辑控制器。

优选地,还包括:

数据接收单元,用于接收外部数据;

第二信号发送单元,用于发送开始信号至逻辑控制器;

第三信号发送单元,用于发送终止信号至逻辑控制器。

本发明的单线程机械臂实现多线程处理的方法及机械臂,通过机械臂与逻辑控制器交互,脱离了机械臂单独控制程序,将一部分任务处理放置到逻辑控制器上,在工业制造上更加容易做到信号的控制与输出,避免安装多任务模块占用机械臂更多的内存,解决了单任务模块机械臂无法利用外部传感器实时记录更新变量数据的问题,从而实现单任务模块机械臂在移动过程中完成非固定频率的多线程任务,可用于大型工业机械臂自主扫点、计数、检测信号、反馈数据、读取实时信号等功能的实现。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中单线程机械臂实现多线程的处理方法;

图2示出了本发明实施例单线程机械臂实现多线程处理的方法的示意图;

图3示出了本发明实施例单线程机械臂实现多线程处理的方法的流程图;

图4示出了根据本发明实施例的单线程机械臂实现多线程处理的方法的示意图;

图5示出了根据本发明实施例上升沿触发中断示意图;

图6示出了根据本发明实施例下降沿触发中断示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

针对目前单线程模块机械臂在不占用多余内存的前提下无法实现多线程的问题,本发明的实施例提出了一种单线程机械臂实现多线程处理的方法,实现单任务模块机械臂在移动过程中完成非固定频率的多线程任务。

本实施例中,参照图2,不增加线程模块,仍然保持一个线程,但是在机械臂的处理程序中新增一个或多个中断程序,正常工作过程中,机械臂执行主程序,完成主任务,中断程序不被执行;当机械臂需要执行中断任务时,主程序被中断,相应的中断程序插入,机械臂开始执行中断任务,中断任务执行完毕后,返回主程序,继续执行主任务。

本实施例采用外部中断来中断机械臂正在执行的主程序,再调用中断程序,使机械臂处理器不影响主程序运行,执行相应中断命令,完成点位的实时调用以及存储;由于机械臂上的传感器(根据不同用途可以为不同传感器,例如:倾角传感器,激光传感器,陀螺仪等)需要采集实时数据,通过i/o直接传输给机械臂或逻辑控制器,本实施例中,根据传感器采集的数据判断是否需要执行中断。

外部中断是逻辑控制器实时地处理外部事件的一种内部机制。当某种外部事件发生时,逻辑控制器的中断系统将迫使机械臂暂停正在执行的程序,转而去进行中断事件的处理,本实施例中外部事件即为传感器数据触发的处理事件;中断处理完毕后,又返回被中断的程序处,继续执行下去。本实施例中逻辑控制器选用plc,但不局限于plc,在另外的设计方式还可以选用dsp、soc、fpga、cpld等。

具体的,参照图3,所述实现多线程处理的方法包括以下步骤:

机械臂实时采集外部数据,本实施例中即为传感器数据,传感器数据可以直接传输至机械臂,也可以先传输至plc,再由plc传输至机械臂,根据传感器数据判定是否需要中断主程序;

当判断出需要将主程序中断时,机械臂发送开始信号至plc;

plc接收到开始信号后,随即向机械臂发送中断信号;

机械臂识别到中断信号后触发中断,主程序中断,机械臂执行中断任务,调用中断处理的相关函数;

倘若中断信号一直没有复位,则无法触发第二次中断,中断程序只能被扫描一次,无法实现对中断程序的循环扫描,因此plc向机械臂发送中断信号后,需要将中断信号复位,以便于触发第二次中断,实现对中断程序的第二次扫描,如此往复,进而实现对中断程序的循环扫描;

因此当机械臂接收到中断信号后,随即反馈一个触发完成脉冲信号,plc接收到触发完成脉冲信号后,plc内中断信号复位,待plc的下一周期重启中断信号;

中断任务执行完毕后,机械臂发送终止信号至plc,机械臂继续执行主程序。

外部中断的触发有两种触发方式:电平触发方式和边沿触发方式。

电平触发方式又分为高电平触发和低电平触发,高电平触发,即为机械臂接收到高电平时触发中断,低电平触发,即为机械臂接收到低电平时触发中断;电平触发方式是按照电平的高或者低来触发,所以必须在发生触发事件后立即将电平拉到非触发电平上,如果不这样做的话,会导致程序一直在触发事件程序入口处,而不会执行其他地方的程序。

边沿触发方式又分为上升沿触发和下降沿触发,上升沿触发,在本实施例中即为机械臂检测到从低至高电平转变时,触发中断,下降沿触发,在本实施例中即为机械臂检测到从高至低电平转变时,触发中断。

由于机械臂编程语言是通常都是基于pc的,在pc语言中触发中断的判定方式是检测一个输入信号的上升沿或下降沿。上升沿触发中断即每当信号由0变化为1即可触发中断,倘若信号一直置1则无法触发第二次中断,因此需要所触发的机械臂反馈给plc“已触发中断”的提示信号,即触发完成脉冲信号,此信号用来给中断信号置0位,下降沿触发中断即每当信号由1变化为0即可触发中断,倘若信号一直置0则无法触发第二次中断,因此需要所触发的机械臂反馈给plc“已触发中断”的提示信号,即触发完成脉冲信号,此信号用来给中断信号置1位。

为了产生触发完成脉冲信号,在中断程序中添加一个产生触发完成脉冲信号的函数,在每次对中断程序扫描的过程中,都会产生一个触发完成脉冲信号,触发完成脉冲信号反馈至plc,中断信号复位。

以上升沿触发中断为例,参照图4,实现步骤为:机械臂向plc发送开始信号(定义为do1=1)→plc识别到开始信号(do1=1)后立即发送触发机械臂的中断信号(di1=1)→机械臂接收到中断信号(di1=0→di1=1)触发中断程序→机械臂在进入中断程序,执行相应功能并反馈一个触发完成脉冲信号(do2)→plc接收到(do2=1)后,立即将di1置0位(di1=0),本实施例中单个di1=0的时长(即待发送中断信号状态延续时长)设定为50ms,plc判断有无接收到终止信号,若接收到终止信号,plc终止发送中断信号,若没有接收到终止信号,plc继续发送中断信号,在循环周期中调用循环中断再次发送触发中断信号(di1=1)→反复执行该步骤直到机械臂向plc发送终止信号(do1=0);

本实施例中单个触发完成脉冲信号时长(do2=1)为t1,单个di1=0的时长为t2,为了确保plc能够周期性触发中断,理论上来说,t1<t2即可,体现在本实施例中即为触发完成脉冲信号时长t1<50ms,经过多次测试,机械臂发送的脉冲信号时间长度最终确定为25ms,触发完成脉冲信号(do2)时长小于25ms存在掉点丢点的问题,该系数通过大量的试验以及数据分析所得;在另外的设计方式上,单个di1=0的时长可以是触发完成脉冲信号时长的三倍、四倍甚至更大。

如图5所示:

粗实线do1,do1=1的起始端表示机械臂向plc发送了开始信号,do1=1的终端表示机械臂向plc发送了终止信号,在do1=1范围内允许执行中断任务;

细实线代表plc发送的中断信号di1,当di1=0变为di1=1,产生一个上升沿,触发中断,每个上升沿均命令机械臂中断程序执行中断程序,其中,单个di1=0的时长为50ms;

虚线代表机械臂发送给plc的触发完成脉冲信号do2,可以看到触发完成脉冲信号do2=1后,di1随后置0,即表示机械臂反馈一个触发完成脉冲信号(do2=1)后,中断信号di1置0,本实施例中单个do2=1的时长为25ms。

在另外的设计方式上,也可以采用下降沿触发中断,如图6所示为下降沿触发中断的脉冲信号示意图:

粗实线代表开始信号do1,do1=1的起始端表示机械臂向plc发送了开始信号,do1=1的终端表示机械臂向plc发送了终止信号,在do1=1范围内允许执行中断程序;

细实线代表plc发送的中断信号di1,当di1=1变为di1=0,产生一个下降沿,触发中断,每个下降沿均命令机械臂中断程序执行中断程序,其中,单个di1=1的时长为50ms;

虚线代表机械臂发送给plc的触发完成脉冲信号do2,可以看到触发完成脉冲信号do2=1后,di1随后置1,即表示机械臂反馈一个触发完成脉冲信号(do2=1)后,中断信号di1置1,本实施例中单个do2=1的时长为25ms。

本实施例的单线程机械臂实现多线程处理的方法,通过机械臂与plc交互,脱离了机械臂单独控制程序,将一部分任务处理放置到plc上,在工业制造上更加容易做到信号的控制与输出,避免了安装多任务模块占用机械臂更多的内存,解决了单任务模块机械臂无法利用外部传感器实时记录更新变量数据的问题,从而实现单任务模块机械臂在移动过程中完成非固定频率的多线程任务,可用于大型工业机械臂自主扫点、计数、检测信号、反馈数据、读取实时信号等功能的实现。

进一步地,本实施例还提出了一种实现多线程处理的机械臂,包括:

主程序执行单元,用于执行主程序;

中断程序执行单元,用于执行中断程序;

信号接收单元,用于接收plc发送的中断信号;

第一信号发送单元,用于发送触发完成脉冲信号至plc。

进一步地还包括:

数据接收单元,用于接收外部数据;

第二信号发送单元,用于发送开始信号至plc;

第三信号发送单元,用于发送终止信号至plc。

尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1