Fanuc-Karel中Time Dependent使用示例
关于时间的操作在karel中它提供了6个不同的函数来对时间进行获取、设置、转换。为什么我会在这里提到转换一词?这个我们后面说,好的,我在这里也专门以时间的操作进行了示例程序编写,
运行效果如下:
怎么能获取以及设置karel中系统时间?会用到哪些函数?
我们大家应该知道任何提到获取或者说设置的那么肯定少不了两个词:GET/SET,既然是时间,那么我们获取设置应是GET\SET_TIME(i) ,i是一个integer类型,需要在var中提前声明。
Tips
Dakin
你在文章开篇中提到的转换是什么意思?为何需要转换,转换的函数又是什么?
我在GET\SET_TIME(i)中提到一个i,并且将i声明为INTEGER,那么就有一个问题,我们怎么能将INTEGER类型表示为十时间,这里我们就i需要用的转换的对吧?我们需要将INTEGER转换为我们想要的STRING类型,会使用到CNV_TIME_STR(int_timer,str_timer),当然我们设置是不是也需要将我们输入的字符串类型转换一下才可以,这里我们就会用到CNV_STR_TIME(str_timer,int_timer1),心细的小伙伴应该看出来了,它们之间只是调换了一下顺序而已对吧。
Tips
Dakin
我想把获取得到的时间日期分开打印输出,怎么办呢?
额,这个还是留到后面详细的说说吧
Tips
--时间是字符串类型,我们需要将时间和日期分开
--那么FANUC也给我们提供了一个字符串分割的函数
SUB_STR(str_timer,1,8)
--这个是什么意思呢,就是说
--将str_timer这个字符串中第1个字符开始后8个字符单独分割出来
--举个栗子
str_timer = 25-sep-19 13:00
--他是这么长对吧,但是我们只需要25-sep-19,这9个字符
--我们可以这样写:
WRITE('Date: ', SUB_STR(str_timer,1,9),CR)
--这样能理解了吧?
--建议伙伴们自己可以多试一下,我觉得这个用处是挺大的
机器人TIME_TE源码如下:
----------------------------------------
-- 获取设置karel系统时间 --
-- 时间操作 --
----------------------------------------
PROGRAM Timer_TE
VAR
int_timer,
int_timer1:INTEGER
str_timer:STRING[30]
us1,
us2,
us_delta:INTEGER
BEGIN
us1 = GET_USEC_TIM
--返回一个INTEGER值,指系统中当前时间us。
WRITE(CHR(128),CHR(137))
DELAY 1000--延时1000毫秒
GET_TIME(int_timer)
--获取当前系统日期和时间,返回为integer值。
WRITE('int_timer= ',int_timer,CR)
CNV_TIME_STR(int_timer,str_timer)
--将GET_TIME的常数转换为字符串时间类型
DELAY 1000
WRITE(CR)
WRITE('str_timer= ',str_timer,CR)
DELAY 1000
WRITE('Date: ', SUB_STR(str_timer,1,9),CR)
--写出分割后字符串第1个开始,8个字符
DELAY 1000
WRITE('Time: ', SUB_STR(str_timer,11,5),CR)
CNV_STR_TIME(str_timer,int_timer1)
--将字符串时间返回为integer
DELAY 1000
WRITE(CR)
WRITE('int_timer1= ',int_timer1,CR)
DELAY 1000
SET_TIME(int_timer1)
us_delta = GET_USEC_SUB(GET_USEC_TIM, us1)
--返回INTEGER值,指示经过的时间us
DELAY 1000
WRITE(CR)
WRITE ('Program Run Time: ', us_delta, ' us', CR)
--将从us1开始到us_delta = GET_USEC_SUB(GET_USEC_TIM, us1)
--结束的的程序运行时间US输出打印
end Timer_TETimer_TE
更多资讯:发那科机器人