讲师:课程用时:60分钟课程目的:如何在机器人程序中解读程序流程检查:循环、分支等等课程内容I机器人技术入门IIIII在KRL中成功编程机器人程序的结构和组成结构化机器人程序链接机器人程序一、机器人程序的结构和组成程序流程控制除了纯运动指令和通讯指令(切换和等待功能)之外,在机器人程序中还有大量用于控制程序流程的程序。其中包括:循环|循环是控制结构。它不断重复执行指令块指令,直至出现终止条件。无限循环计数循环当型和直到型循环分支|使用分支后,便可以只在特定的条件下执行程序段。条件分支多分支结构无限循环在无限循环中无止境地重复指令段。然而,却可通过一个提前出现的中断(含EXIT功能)退出循环语句。图1-1:无限循环的程序流程图LOOP指令举例无ExitLOOPPTPP1Vel=100%PDAT1PTPP2Vel=100%PDAT2IF$IN[30]==TRUETHENEXITENDIFENDLOOP永久执行对P1和P2的运动指令LOOPPTPP1Vel=100%PDAT1PTPP2Vel=100%PDAT2ENDLOOP带Exit一直执行对P1和P2的运动指令,直到输入端30切换到TRUE。计数循环用计数循环(FOR循环语句)可使指令重复定义的次数。循环的次数借助于一个计数变量控制。图1-2:FOR循环语句的程序流程图FOR循环指令举例INTi...FORi=1TO5$OUT[i]=TRUEENDFOR将输出端1至5依次切换到TRUE。用整数(Integer)变量“i”来对一个循环语句内的循环进行计数。当型循环WHILE循环是一种当型或者先判断型循环,这种循环会在执行循环的指令部分前先判断终止条件是否成立。图1-3:While循环语句的程序流程图WHILE循环指令举例WHILE$IN[22]==TRUE$OUT[17]=TRUE$OUT[18]=FALSEPTPHOMEENDWHILE输出端17被切换为TRUE,而输出端18被切换为FALSE,并且机器人移入Home位置,但仅当循环开始时就已满足条件(输入端22为TRUE)时才成立。WHILE循环也可以与计数循环一样编程。但WHILE循环不会自动计数(与FOR一样),而必须对计数变量值的更改进行手动编程。直到型循环REPEAT循环是一种直到型或者检验循环,这种循环会在第一次执行完循环的指令部分后才会检测终止条件。图1-4:REPEAT循环语句的程序流程图REPEAT循环指令举例REPEAT$OUT[17]=TRUE$OUT[18]=FALSEPTPHOMEUNTIL$IN[22]==TRUE输出端17被切换为TRUE,而输出端18被切换为FALSE,并且机器人移入Home位置。这时才会检测条件。REPEAT循环也可以与计数循环一样编程。但REPEAT循环不会自动计数(与FOR一样),而必须对计数变量值的更改进行手动编程。条件型分支条件性分支(IF语句)由一个条件和两个指令部分组成。如果满足条件,则可处理第一个指令。如果未满足条件,则执行第二个指令。图1-5:IF循环语句的程序流程图IF指令举例...IF$IN[30]==TRUETHENPTPP3ELSEPTPP4ENDIF如果满足条件(输入端30必须为TRUE),则机器人运动到点P3,否则到点P4。分配器一个SWITCH分支语句是一个分配器或多路分支。此处首先分析一个表达式。然后,该表达式的值与一个案例段(CASE)的值进行比较。值一致时执行相应案例的指令。图1-6:SWITCH语句的程序流程图SWITCH指令举例INTstatus...SWITCHstatusCASE1PTPP5CASE2PTPP6...DEFAULTERROR_MSGENDSWITCH对带有名称“状态”的整数变量(Integer),首先要检查其值。如果变量的值为1,则执行案例1(CASE1):机器人运动到点P5。如果变量的值为2,则执行案例2(CASE2):机器人运动到点P6。如果变量的值未在任何案例中列出(在该例中为1和2以外的值),则将执行默认分支:故障信息。二、结构化机器人程序机器人程序的结构是体现一个机器人使用价值的十分重要的因素。程序结构化越规范,程序也就越易于理解、执行效果越好、越便于读取、越经济。为了使程序得到结构化的设计,可以使用以下技巧:机器人程序结构化的设计方法注释|注解和印章缩进|空格隐藏|Folds(“折叠”)模块化|子程序添加注释为在机器人中存储仅针对程序读者的文本提供了可能性。即机器人解释器不读入该文本,该文本只为了提高程序的可读性。注释和印章注释举例1:有关程序的信息|作者、版本创建日期等注释举例2:程序中的分段注释和印章注释举例3:添加注释(专家层面)|通过在程序行的起始位置添加分号来使该程序行“变成注释”,即该文本作为注释来识别,而不进入程序执行。注释举例4:对行的解释以及对需执行的工作的说明|标识未完成的程序段注释和印章可以有三种不同的添加注释的方式:插入联机表格“印章”|在此还另外插入一个时间戳记。此外,还可以插入编辑者的姓名。添加分号(专家层面)|通过插入分号(“;”)使一行中的后面部分变成注释。插入联机表格“注释”序号说明1系统日期2系统时间3用户名称或代码4任意文本程序行的缩进提高机器人程序可读性的一个有效手段是缩进程序行。由此可提高程序单元之间关联的清晰度。缩进效应只是视觉上的。缩进的程序行在程序运行时与未缩进的程序行一样得到处理。通过Fold隐藏程序行KUKA机器人编程语言可将程序行折叠和隐藏到Fold中。用户因此而看不到这些程序行。这使程序的阅读变得更加简洁方便。颜色说明深红关上的Fold浅红打开的Fold深蓝关上的子Fold浅蓝打开的子Fold绿色Fold内容程序颜色与说明三、链接机器人程序利用子程序技术可将机器人程序模块化,因而可以有效结构设计程序。目的是不将所有指令写入一个程序,而是将特定的流程、计算或过程转移到单独的程序中。子程序技术通过使用子程序产生了一系列的优点:由于程序长度减短,主程序结构更清晰并更易读。可独立开发子程序:编程花费可分摊,最小化错误源。子程序可多次反复应用。原则上可将子程序分为两种不同的类型全局子程序局部子程序全局子程序和局部子程序图3-1:全局子程序示意图一个全局子程序是一个独立的机器人程序,可从另一个机器人程序调用。可根据具体要求对程序进行分支,即某一程序可在某次应用中用作主程序,而在另一次则用作子程序。图3-2:局部子程序示意图局部子程序是集成在一个主程序中的程序,即指令包含在同一个SRC文件中。子程序的点坐标相应存放在同一个DAT文件中。每个程序都以DEF行开始并以END行结束。如果要在主程序中调用子程序,则正常情况下子程序会从DEF运行至END。到达END行后,程序运行指针重新跳入发出调用指令的程序(主程序)。调用子程序的过程图3-3:调用子程序的过程为了能提早退出子程序(即在END行之前),可以在子程序中编入RETURN指令。程序读到该程序行时,即可提前终止子程序的运行。调用子程序的步骤:1.在主菜单中选择配置用户组。将显示出当前用户组。2.若欲切换至其它用户组,则:按下登录…。选定用户组专家。3.输入密码kuka,然后用登录确认。4.用打开将所需的主程序载入编辑器INIPTPHOMEVel=100%DEFAULTPTPHOMEVel=100%DEFAULT5.将光标定位在所需的行内6.输入子程序名称和括号,例如:myprog()7.用关闭图标关闭编辑器并保存修改INIPTPHOMEVel=100%DEFAULTmyprog()PTPHOMEVel=100%DEFAULT课程回顾I机器人技术入门IIIII在KRL中成功编程机器人程序的结构和组成结构化机器人程序链接机器人程序