发那科机器人|Fanuc-Karel的LOAD与REPEAT
我们如果是做新项目的话肯定有许多标准程序需要台机器人进行加载,特别麻烦,当然我也不排除还有其他大佬会其他更简单的方法,如果有的可以给我们也分享一下,那么我们同样也可以把所以需要加载 的程序放到一个文件夹下方,在程序里面把所以程序名字都写到里面,运行程序把文件夹下方所有程序全部加载,解放双手就从这一刻开始,通过一串FANUC-karel小代码,对FANUC机器人进行程序自动加载与运行其task,其运行效果如下。
本文我主要介绍LOAD、run_task、read读取函数的使用方法,以及repeat...until声明,前几天因为家里的一些事情耽搁了几天,一直没有更新,喜欢请多多支持+转发。我们先介绍一下REPEAT ... UNTIL 声明与DEAD读取函数的使用方法。
REPEAT ... UNTIL 声明
简单基本格式如下:
REPEAT
--重复开始使用的语句
--中间部分必须是一个有效的 KAREL 可执行语句,例如下方:
WRITE (CR,'请输入 1 或者 2 : ')
READ(int_var)--读取ingeter
UNTIL ((int_var = 1) OR (int_var = 2))
--直到int_var = 1 或者 int_var = 2跳出重复
一定要确保你的程序里面有中止循环条件的语句哦,不然你的程序会一直无限循环。也可以是这样简单的例子。
REPEAT
WRITE (’选择 Yes:1, No:0 ? ’)
REPEAT
READ (YesNo)
UNTIL ((YesNo = 0) OR(YesNo = 1))
if YesNo = 0 then
.......
else
.......
endif
load和load_status的使用方法以及示例程序
--首先LOAD的使用方法如下所
LOAD('UD1:\checkair.tp',0,STATUS)
--加载UD1文件夹下面的checkair.tp的文件
-- **个逗号后方的0是说如果程序已存在,则发生错误。
--如果0改为1的话,则覆盖程序.
--STATUS=0则表示无错误
LOAD_STATUS('checkair',loaded, initialized)
--可以用来确定指定的程序是否已经加载成功,也可以用来确定是否已经加载
--我写的示例程序是用来确定是否已经加载的
如果说程序已经加载的话,那么loaded返回TRUE,相反如果没有加载则返回FALSE.
上方程序代码如下。
------------------------------------------------------------
--VERSION: V1.0/2020/05/18
--Programmer: Robot_Tips Dakin
-----------------------------------------------------------
--De
--该程序是学习研究用途,没有在实际现场机器人验证过
--如有问题,概不负责
------------------------------------------------------------
PROGRAM ProgLoad
%COMMENT='Program Load'
%NOLOCKGROUP
VAR
STATUS :INTEGER
file_spec:STRING[25]
option_sw:INTEGER
loaded:BOOLEAN
initialized:BOOLEAN
int_var:INTEGER
ROUTINE TPwrite
BEGIN
WRITE(CHR(137),CHR(128))--用户清屏
WRITE('Programmer :Robot_Tips Dakin ' ,CR)
WRITE('输入1,立即运行程序' ,CR)
WRITE('输入2,取消运行程序' ,CR)
WRITE('' ,CR)
FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1)--强制弹出窗口
END TPwrite
ROUTINE Readint--重复直到int_var = 1 OR int_var = 2
BEGIN
REPEAT
WRITE (CR,'请输入 1 或者 2 : ')
READ(int_var)
UNTIL ((int_var = 1) OR (int_var = 2))
END Readint
BEGIN
WRITE TPPROMPT(CHR(128),CHR(137))
WRITE(CHR(128),CHR(137)) -- Clear the prompt line
LOAD_STATUS('checkair',loaded, initialized)
--运行程序前检查有没有checkair这个程序,如果有直接运行,如果没有则进行加载
IF (loaded = FALSE ) THEN
WRITE TPPROMPT('程序没有加载. 输入1立即加载...')
Readint
WAIT for int_var = 1
LOAD('UD1:\checkair.tp',0,STATUS)--在UD1文件路径下加载checkair.tp
WRITE TPPROMPT(CHR(128),CHR(137))
IF (STATUS = 0) THEN -- Check the STATUS
WRITE TPPROMPT('程序加载完成。。。',CR)
TPwrite
WRITE ('是否立即运行程序 ?',CR)
Readint
IF int_var= 1 THEN
WRITE('收到输入指令为 ',int_var,' 立即运行程序',CR)
RUN_TASK('checkair',1,FALSE,FALSE,1,STATUS)--运行checkair.tp
IF (STATUS <> 0) THEN -- Check the status
WRITE ('程序检查出错误,运行失败',CR)
POST_ERR(STATUS,'',0,5)
else
WRITE('程序已成功运行,无错误',CR)
ENDIF
else
mark::
WRITE('收到输入指令为 ',int_var,' 取消运行程序',CR)
WRITE('程序已经取消运行',CR)
ENDIF
ELSE
WRITE ('LOAD Failed, STATUS = ',STATUS,CR)
POST_ERR(STATUS,'',0,5)
ENDIF
ELSE
TPwrite
WRITE ('程序已经存在.',CR)
WRITE ('是否立即运行程序 ?',CR)
Readint
IF int_var= 1 THEN
WRITE('收到输入指令为 ',int_var,' 立即运行程序',CR)
RUN_TASK('checkair',1,FALSE,FALSE,1,STATUS)--运行checkair.tp
IF (STATUS <> 0) THEN -- Check the status
WRITE ('程序检查出错误,运行失败',CR)
POST_ERR(STATUS,'',0,5)
else
WRITE('程序已成功运行,无错误',CR)
ENDIF
else
WRITE('收到输入指令为 ',int_var,' 取消运行程序',CR)
WRITE('程序已经取消运行',CR)
ENDIF
ENDIF
END ProgLoad
更多资讯:发那科机器人