机器人程序运行中出现的各种计算值的存储器变量是什么?

电子说

1.2w人已加入

描述

关于变量命名对于编程者都有自己的习惯,而别人却不一定懂得或理解,所以对于一个公司必须有统一的规范,否则调试编程人员需要去适应其他编程调试人员。基于之前在GB公司的工作经验,他们在公司标准化方面确实做得成熟,正是那段经历让我收获颇多。后面我也会分享Excel及Excel VBA或者Python在标准化上面的示例。(本文只是个人习惯,不代表其他人)

1.1 变量命名规则

KRL是KUKA的编程语言,在对机器人进行编程时,变量是在机器人程序运行中出现的各种计算值的存储器。每个变量都属于一个专门的数据类型,在应用前必须声明数据类型;变量按照存储位置可划分为局部变量和全局变量。一个全局变量,适用于所有程序。一个局部变量建立于某程序模块中,因此仅适用于此程序模块。变量定义规则如下:①变量名称长度最多允许24个字符。②变量名称允许含有字母 (A ~ Z)、数字 (0 ~ 9) 以及特殊字符“_” 和“$”。③变量名称不允许以数字开头。④变量名称不允许使用系统关键词。⑤变量名称不区分大小写(但还是建议使用驼峰规则来定义变量)。⑥变量命名最好没有下划线,推荐使用驼峰命名规则。当变量没有下划线时,可以在KCP快速访问变量,而且没必要变量名中是否有下划线。⑦变量应根据其数据类型添加前缀,并且其名称应以简洁的方式简短地说明其功能

1.1.1 变量名称

1.输入输出信号变量:①单个输入信号 (1 位)-以前缀i开始表示单个输入信号: SIGNAL iVacuumOk $IN[1]

②多个输入信号(》 1 位)-以前缀gi开始表示输入信号组: SIGNAL giSt12PlateType $IN[1281] TO $IN[1296]

③单个输出信号 (1 位)-以前缀o开始表示单个输入信号: SIGNAL oErrorTarget $OUT[1265]

④多个输出信号(》 1 位)-以前缀go开始表示输出信号组: SIGNAL goStartValueEnc1 $OUT[705] TO $OUT[721]

⑤模拟输入信号-以前缀ai开始表示模拟输入信号: SIGNAL aiWeldVoltage $ANIN[1]

⑥模拟输出信号-以前缀ao开始表示模拟输出信号: SIGNAL aoActPower $ANOUT[1]

2.布尔型变量-以前缀b开始表示布尔类型: DECL BOOL bGripperEmpty= TRUE

3.有符号整形变量-以前缀z开始表示布尔类型: DECL INT zTarget = 2

4.单精度浮点类型变量-以前缀r开始表示布尔类型: DECL REAL rCenterOffset= 0.0

5.FRAME型变量-以前缀f开始表示布尔类型: DECL FRAME fStackCorrection[2]

6.枚举型变量-以前缀e开始表示布尔类型: DECL ENUM ePostion HOME,STACK12,STACK34,CULLET,DROPOFF_CONV,RAZING

DECL ePostion POSITION = #HOME

7.结构体类型变量-以前缀s定义结构体类型但变量定义前无任何前缀: DECL STRUC sRackData INT nActType,… DECL sRackData Stack[2] Stack[1]= {nActType 1,…}

8.POS / AXIS/E6POS/E6AXIS位置类型变量-以前缀x定义变量: ①计算获得的变量-以前缀mx定义变量: DECL POS mxAfterTouched[2]

②通过示教获得的位置变量-以前缀x定义变量: DECL E6POS xStack12A = {X … }

9.字符及字符串类型变量-以前缀s定义变量: DECL CHAR sCharacter= “A”

1.1.2 基本准测1.对于所有变量类型,常量前面都带有c,然后紧接着变量前缀(见1.1.1): DECL INT czCompMin = 30

2.对于所有变量类型,局部变量均以l (local)开头: DECL INT lzCompMin = 30

3.对于所有变量类型,运行过程变量前面都带有一个n: DECL INT nzActStack

4.对于通过外部信号插入程序的所有变量类型,若为输入信号,则第二个字符为i;若为输出信号,则第二个字符为o: DECL BOOL biProgramEnd= FALSE

DECL INT zoPlateType = 1

5.坐标点/坐标位置命名规则必须保持标准化的点名称,以使运动易于阅读。

⑴起点/ 终点:例如xHomeA,xStack12A,等。①从一个工站到另一个工站的运动永远不会使用起点。②点的名称总是指定位置,而不是功能!(例如xConveyor1而不是xDropOff)。③每个路径都有单独的起点和终点!

⑵从一个工站到另一个工站的运动:每个起点基本上都有两条通向每个目标点的路径,只从Home位开始的这些工站除外:① ServicePosition ②Cullet1 ③ Cullet2例如:沿着路径A从原点Home到工站Stack12的运动路径: Home_Stack12(#A) ①起始预备点: xHome_Stack12A1 (最接近起点的点或距离终点最远的点) ②中间点: xHome_Stack12A2(注释掉,如果没有必要) ③中间点: xHome_Stack12A3 (注释掉,如果没有必要) ④终点预备点: xHome_Stack12A4 (距离终点最近的点) ⑤终点: xStack12A例如:沿着路径A从工站Stack12到工站Stack34的运动路径: Stack12_Stack34(#A) ①起始预备点: xStack12_Stack34A1 (最接近起点的点或距离终点最远的点) ②中间点: xStack12_Stack34A2 (注释掉,如果没有必要) ③中间点: xStack12_Stack34A3 (注释掉,如果没有必要) ④终点预备点: xStack12_Stack34A4 (距离终点最近的点) ⑤终点: xStack34A例如:沿着路径B从工站Stack12到工站Stack34的运动路径: Stack12_Stack34(#B)

①起始预备点: xStack12_Stack34B1 (最接近起点的点或距离终点最远的点) ②中间点: xStack12_Stack34B2 (注释掉,如果没有必要) ③中间点: xStack12_Stack34B3 (注释掉,如果没有必要) ④终点预备点: xStack12_Stack34B4 (距离终点最近的点) ⑤终点: xStack34B

1.1.3 变量位置/路径:1. 必须在全局系统文件R1System$Config.Dat中声明对外部设备或站的输入和输出2. 全局变量必须在R1ProgramDat文件夹中的相应数据类型文件中声明,例如,必须在文件b_bool.dat中声明一个布尔变量。数据文件说明

b_bools.dat 存放所有用户定义的全局Bool类型变量

z_intergers.dat 存放所有用户定义的全局Int类型变量

r_reals.dat存放所有用户定义的全局Real类型变量

f_frames.dat存放所有用户定义的全局Frame类型变量

Structs.dat存放所有用户定义的全局Struc类型变量

e_enums.dat存放所有用户定义的全局Enum类型变量

x_Points_Movements.dat存放所有直接运动或间接运算的全局且固定位置点变量

mx_Points.dat存放所有可变的全局位置点类型变量

Strings.dat存放所有用户定义的全局CHAR类型变量(如:报警信息)

3. 尽可能避免使用常量,而应使用变量.4. 运动点: ①外部计算或模拟的点将传输到全局公共“DA文件”。点坐标和相关参考空间参数(BASE,TOOL)必须在文件x_points_movements.dat中全局声明。②计算和计算的点也存储在单独的全局公共“DAT文件”中。点坐标和相关参考空间参数(Base,TCP)必须在以下文件中全局声明:x_points.dat③可变点数据必须在mx_points.dat中声明。

1.2 子程序及函数

⑴ fl前缀: 局部函数

⑵ ul前缀: 局部子程序⑶ ip前缀: 中断程序⑷ o前缀: 将输出变量写入控制器输出信号的函数⑸ i前缀: 从控制器输入信号读取输入变量的函数
       责任编辑:pj

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分