精华内容
下载资源
问答
  • ABB RAPID编程

    2014-09-13 16:44:17
    简述了ABB RAPID 编程的方法和说明
  • RAPID编程手册

    热门讨论 2012-03-06 15:19:13
    ABB机器人RAPID编程手册,中文翻译直观易懂
  • 此教程不作 为商业用途,仅供学习交流,若于非法途径后果自负。
  • 4. 通常自定义带可选参数例行程序中,通过ABB机器人编程的Present函数来判断用户是否使用了该可选参数。也可使用如下例子。此处问号作条件判断,即若调用MoveCircle时,使用了可选参数WObj,则代码执行MoveL p1,...

    4. 通常自定义带可选参数例行程序中,通过ABB机器人编程的Present函数来判断用户是否使用了该可选参数。也可使用如下例子。此处问号作条件判断,即若调用MoveCircle时,使用了可选参数WObj,则代码执行MoveL p1,Speed,Zone,ToolWObj:=WObj,若没有使用可选参数WObj,则代码执行MoveL p1,Speed,Zone,Tool;PROC MoveCircle(

    robtarget pCenter,

    num Radius,

    speeddata Speed,

    zonedata Zone,

    PERS tooldata Tool

    \PERS wobjdata WObj)

    VAR robtarget p1;

    VAR robtarget p2;

    VAR robtarget p3;

    VAR robtarget p4;

    VAR num text_res_no;

    p1:=pCenter;

    p2:=pCenter;

    p3:=pCenter;

    p4:=pCenter;

    p1.trans:=pCenter.trans+[0,Radius,0];

    p2.trans:=pCenter.trans+[Radius,0,0];

    p3.trans:=pCenter.trans+[0,-Radius,0];

    p4.trans:=pCenter.trans+[-Radius,0,0];

    MoveL p1,Speed,Zone,Tool\WObj?WObj;

    !若用户调用MoveCircle时,使用了可选参数WObj,则运行

    !MoveL p1,Speed,Zone,Tool\WObj:=WObj;

    !若用户调用MoveCircle时,没有使用可选参数WObj,则运行

    !MoveL p1,Speed,Zone,Tool;

    MoveC p2,p3,Speed,z10,Tool\WObj?WObj;

    MoveC p4,p1,Speed,Zone,Tool\WObj?WObj;

    ENDPROC

    展开全文
  • 1.中断程序TRAP  中断程序拥有更高优先级,当中断触发条件满足时,程序指针即从当前运行处跳转至中断服务程序,中断服务程序运行结束后方才继续执行中断跳转前的指令。 ... 中断数据用于将中断触发条件与中断...

    1.中断程序TRAP

        中断程序拥有更高优先级,当中断触发条件满足时,程序指针即从当前运行处跳转至中断服务程序,中断服务程序运行结束后方才继续执行中断跳转前的指令。

    2.中断数据intnum

       中断数据用于将中断触发条件与中断服务程序相关联的中间数据

       必须为全局变量,且存储类型为变量

    3.中断指令

       IDelete intno1;                  !删除中断数据的连接,删除后中断数据可以与任意中断服务程序进行连接

       CONNECT intno1 WITH tRoutine1;   !将中断数据与中断例行程序进行连接,

       ISignaldi\Single,di1,1,intno1;           

       !通过数字输入信号的上升沿去触发中断数据,以此去执行与中断数据相关联的中断服务程序,可选参数\Single和\SingleSafe允许中断只能触发一次

    4.中断案例

    (1)检测按钮次数,并根据次数进行不同频率的闪烁

    (2)双输送链双工位搬运工作站


    展开全文
  • ABB机器人RAPID语言编程示例

    千次阅读 2020-06-17 18:08:18
    一:S4C系统介绍 最多可接6个外围设备,常规型号:IRB1400、IRB2400、IRB4400、IRB6400。 型号解析:IRB(指ABB机器人),1(指机器人大小),4(属于S4或S4C...Program 编程窗口:手动状态下,用来编程于测试。 Input...

    【一】:系统介绍

    中文手册:http://samwangpan01.club:8081/externalLinksController/chain/ABB%E6%9C%BA%E5%99%A8%E4%BA%BA%E4%B8%AD%E6%96%87%E6%89%8B%E5%86%8C.pdf?ckey=7GLNrf1%2BOQSWcq5sVS%2FgnB8vkb7KlFdiqF%2BhMQLd6YxkLw7tWFYKqFXOj3TRqlE5


    RobotStudio6.08下载地址备份:

    http://samwangpan01.club:8081/externalLinksController/chain/ABB%E6%9C%BA%E5%99%A8%E4%BA%BA%E8%BD%AF%E4%BB%B6RobotStudio_6.08.rar?ckey=UFYiQy57v1B0KlKgHhda9IUKbuLFwKn7%2FBdsOio1MxPVyWTSHhBjKN0KFvWJ1JBX

     

    abb机器人简介(百度文库): https://wenku.baidu.com/view/845ae63a5afb770bf78a6529647d27284b733763.html?rec_flag=default&word=abb%E6%9C%BA%E5%99%A8%E4%BA%BA%E6%95%85%E9%9A%9C%E5%A4%84%E7%90%86&fr=pc_newview_relate-1001_1-2-wk_rec_doc2-1001_1-2-845ae63a5afb770bf78a6529647d27284b733763

     

    S1: IRB6

    S2: IRB60   IRB90

    S3: IRB1500   IRB2000   IRB3000   IRB6000

    S4: IRB1400   IRB2400   IRB4400   IRB6400

    S4C: IRB1400   IRB2400   IRB4400   IRB5400   IRB6400

    S4Cplus: IRB1400   IRB2400   IRB4400   IRB5400   IRB6600   IRB7600

    IRC5:  IRB1400   IRB2400   IRB4400   IRB5400   IRB6600   IRB7600

    IRB1400 最大工作半径1444mm,最大承载5kg

    IRB2400 最大工作半径1550-1810mm,最大承载5-16kg

    IRB4400 最大工作半径1955-2745mm,最大承载10-60kg

    IRB6400 最大工作半径2250-3000mm,最大承载75-200kg

    IRB6400R 最大工作半径2469-2999mm,最大承载120-200kg

    IRB6600/6650 最大工作半径2550-3200mm,最大承载125-225kg

    IRB7600 最大工作半径2300-3500mm,最大承载150-500kg

    IRB140 最大工作半径810mm,最大承载5kg

    IRB640 四轴堆垛专用机器人,最大工作半径2905mm,最大承载160kg

    IRB340 三轴或四轴分拣专用机器人,最大工作半径566mm,最大承载1kg

    IRB840(0) 龙门架机械手工作范围很大,最大承载12000kg

    IRB940 铸造行业专用机器人,垂直最大承载1300kg,水平承载350kg

    IRB5400; IRB540; IRB5300; IRB500; IRB5600; IRB580; T10/F10 Trolley; T20 Trolley; T10/F20 Trolley 喷涂机器人,承载5-35kg,工作半径2813mm

    1.控制系统Controller

    计算机系统包括。
    Robot computer board :机器人计算机板,控制运动与输入/输出通讯。
    Memory board 存贮板,增加额外的内存。
    Main computer board 主计算机板,含 8M 内存,控制整个系统。
    Optional boards 选项板
    Communication boards:通讯板, 用于网络或现场总线通讯
    Supply unit 供电单元,整流输出电压及短路保护。
    驱动系统包括:
    DC link
    将三相交流电转换为三相直流
    Drive module 控制 2-3 根轴的转距。
    Lithium batteries 锂电池,存贮备用电源。
    Panel unit
    面板单元,处理所有影响安全与操作的信号。
    I/O units
    输入/输出单元。
    Serial measurement board (in the manipulator)
    串行测量板,收集并传送电机位置信息。

    【二】:示教器功能介绍

     


    2、窗口键:(Windowkeys)

           Jogging   -操纵窗口手动状态下,用来操纵机器人。显示屏上显示机器人相对位置及当前座标系。
      rogram-编程窗口手动状态下,用来编程与测试。所有编程工作都在编程窗口中完成。
      Input/Outputs-输入/输出窗口显示输入输出信号表与其数值。可手动给输出信号赋值。
      Misc.-其他窗口:包括系统参数、服务、生产以及文件管理窗口。
    3、导航键:(Navigationkeys)
      List    -切换键将光标在窗口的几个部分间切换。(通常由双实线分隔)
      extPage-向下翻页键将光标向下快速移动。
      reviousPage-向上翻页键将光标向上快速移动。
      Uparrows-光标上移键将光标向上单步移动。
      Downarrows-光标下移键将光标向下单步移动。
      Leftarrows-光标左移键将光标向左单步移动。
      Rightarrows-光标右移键将光标向左单步移动。
    4、运动控制键:(Motionkeys)
      MotionUnit-运动单元切换键手动状态下,操纵机器人本体与机器所控制的其他机械装置(外轴)之间的切换。
      MotionType1-运动模式切换键1直线运动与姿态运动切换键。
      直线运动是指机器人TCP沿座标系X、Y、Z轴方向作直线运动。
      姿态运动是指机器人TCP在座标系中X、Y、Z轴数值不变,只沿着X、Y、Z轴旋转,改变姿态。
      MotionType2-运动模式切换键2单轴运动选择键。
      ·第一组:1、2、3轴
      ·第二组:4、5、6轴
      Incremental-点动操纵键
      启动或关闭点动操纵功能,从而控制机器人手动运行时速度。
    5、其他键:(Otherkeys)
      top-停止键停止机器人程序运行。
      Contrast-光亮键调节显示器对比度。
      MenuKeys-菜单键显示下拉式菜单(热键),共有五个菜单键,显示包含各种命令的菜单。
      Functionkeys-功能键直接选择功能(热键),共有五个功能键,直接选择各种命令。
      Delete-删除键删除显示屏所选数据,机器人操作时,所要删除任何数据、文件、目录等,都用此键。
      Enter-回车键进入光标所示数据。
    6、自定义键:(Programmablekeys)
      P1-P5这五个自定义键的功能可由程序员自定义,每个键可以控制一个模拟输入信号或一个输出信号以及其端口。

     

    【三】:安全链(绝对禁止对安全链进行短接、定义或修改)

    【四】:papid语言 基本指令介绍与示例

    1.MovJ 关节运动:MoveL [\Conc,] ToPoint, Speed[\V]|[\t],  Zone[\Z][\Inpos], Tool[\WObj];

    2.MovL 线性运动:MoveL [\Conc,]ToPoint, Speed[\V]|[\T], Zone[\Z][\Inpos], Tool[\WObj][\Corr];

    例1:画一个方形,每圈向外移动10

    MODULE Module1
    	CONST robtarget p10:=[[931.61,46.87,1472.75],[0.768115,0.0441544,0.636333,0.0559423],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    	VAR num K:=0;
    	VAR num i:=0;
    	PROC main()
    	    i := 0;                !循环标志位,i=0
    	    FOR i FROM 1 TO 5 DO   !循环5圈
    	        K := -i*10;        !每圈向外10
    	        MoveL offs(p10,k,0,-500),v500,fine,tool0;   !xyz分别是k,0,-500;速度是500
    	        MoveL offs(p10,K,400,-500),v500\V:=1000,z40\Z:=45,tool0;
    	        MoveL offs(p10,K,400,150),v500,z40,tool0;
    	        MoveL offs(p10,K,0,150),v500,z40,tool0;
    	        MoveL offs(p10,K,0,-500),v500,z40,tool0;
    	    ENDFOR
    	ENDPROC
    ENDMODULE

    3.MovC 圆弧运动:MoveC[\Conc,] CirPoint, ToPoint, Speed[\V]|[\t], Zone[\Z][\Inpos], Tool[\WObj][\Corr];

    [\Conc,]: 协作运动开关。(switch);   

    CirPoint:中间点,默认为*。(robotarget);

    ToPoint:目标点,默认为*。(robotarget);   

    Speed:运行速度。(speeddata);    [\V]:特殊运行速度mm/s。(num);   [\T]运行时间控制。(num);   

    Zone:运行转角数据。(zonedata); [\Z]:特殊运行转角mm。(num);    [\Inpos]:运行停止点数据。(stoppointdata);

    Tool:工具中心点(TCP)。(tooldata);[\WObj]:工件坐标系。(wobjdata);[\Corr]:修正目标点开关。(switch);

    例1:画一个圆

    MODULE Module1
    	!CONST robtarget p10:=[[931.61,246.87,1472.75],[0.768115,0.0441544,0.636333,0.0559423],[0,0,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    	VAR num i:=0;
    	TASK PERS wobjdata wobjTable:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
    	TASK PERS tooldata tool1:=[TRUE,[[0,0,0],[1,0,0,0]],[-1,[0,0,0],[1,0,0,0],0,0,0]];
    	CONST robtarget p1:=[[931.61,567.83,1239.40],[0.768115,0.0441542,0.636333,0.055942],[0,0,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    	CONST robtarget p2:=[[931.61,-17.19,1476.60],[0.768115,0.0441543,0.636333,0.0559421],[-1,-1,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    	CONST robtarget p3:=[[931.61,-506.46,1144.68],[0.768116,0.0441543,0.636333,0.0559421],[-1,-1,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    	CONST robtarget p4:=[[931.61,80.26,875.84],[0.768115,0.0441544,0.636333,0.0559421],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
        PROC main()
    	    i := 0;
    	    FOR i FROM 1 TO 5 DO   
                MoveL p1,v500,fine,tool0;
                MoveC p2,p3,v500,z20,tool0;
                MoveC p4,p1,v500,fine,tool0;
    	    ENDFOR
    	ENDPROC
    ENDMODULE
    

    4.信号输出:机器人运动至目标点,并在目标点输出相应信号

      MoveJDO ToPoint, Speed[\T], Zone, Tool[\WObj], Signal, Value;

      MoveLDO ToPoint, Speed[\T], Zone, Tool[\WObj], Signal, Value;

      MoveCDO CirPoint, ToPoint, Speed[\T], Zone, Tool[\WObj], Signal, Value;

    Signal:数字输出信号名称。(signaldo);

    Value:数字输出信号值。(dionum);

    4.1.Reset OUT10; 信号输出0。  Set 信号输出1。

    4.2.InvertDO OUT10; 信号反转。

    例1:

       PROC main()
           IDelete intno1;
           IDelete intno2;
           CONNECT intno1 WITH MyExti1;
           CONNECT intno2 WITH MyExti2;
           ISignalDI IN10, 1, intno1;
           ISignalDI IN20, 1, intno2;
           WHILE TRUE DO
                IF regint1=1 THEN
                   regint1:=regint1-1;
                   !InvertDO OUT10;
                   MoveL offs(p10,k,0,-500),v2000,fine,tool0;   
                   MoveL offs(p10,K,400,-500),v2000\V:=1000,z40\Z:=45,tool0;
                   MoveL offs(p10,K,400,150),v2000,z40,tool0;
                   MoveL offs(p10,K,0,150),v2000,z40,tool0;
                   MoveLDO offs(p10,K,0,-500),v2000,z40,tool0,OUT10,1;
                ELSEIF regint2=1 THEN
                   regint2:=regint2-1;
                   InvertDO OUT20;
                   MoveL p1,v2000,fine,tool0;
                   MoveC p2,p3,v2000,z20,tool0;
                   MoveC p4,p1,v2000,fine,tool0; 
                ELSE
                   Reset OUT10;
                   Reset OUT20;
                ENDIF
           ENDWHILE
       ENDPROC
       TRAP MyExti1
         	regint1:=regint1+1;
       ENDTRAP
       TRAP MyExti2
         	regint2:=regint2+1;
       ENDTRAP

    5.调用相应例行程序指令:机器人运动至目标点,并在目标点调用相应例行程序

      MoveJSync ToPoint, Speed[\T], Zone, Tool[\WObj], Proc;

      MoveLSync ToPoint, Speed[\T], Zone, Tool[\WObj], Proc;

      MoveCSync CirPoint, ToPoint, Speed[\T], Zone, Tool[\WObj], Proc;

    CirPoint:中间点,默认为*。(robotarget);

    ToPoint:目标点,默认为*。(robotarget);   

    Speed:运行速度。(speeddata);    [\V]:特殊运行速度mm/s。(num);   [\T]运行时间控制。(num);   

    Zone:运行转角数据。(zonedata); [\Z]:特殊运行转角mm。(num);    [\Inpos]:运行停止点数据。(stoppointdata);

    Tool:工具中心点(TCP)。(tooldata);[\WObj]:工件坐标系。(wobjdata);[\Corr]:修正目标点开关。(switch);

    Proc:例行程序名称。(string);

    用指令Stop停止当前指令运行,会出现一个错误信息,如需避免,采用指令StopInstr。

    不能使用此指令来调用中断处理程序TRAP,不能但不执行此指令所调用的例行程序PROC。

    6.MoveAbsJ 移动机械臂至绝对位置 MoveAbsJ [Conc,] ToJointPos[\NoEOffs], Speed[\V]|[\T], Zone[\Z][\Inpos], Tool[WObj];

    MODULE Module1
    	VAR num i:=0;
    	CONST jointtarget p100:=[[37.6131,10.5047,7.03996,59.9717,-46.3082,-58.3159],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    	CONST jointtarget p110:=[[-35.2865,8.06415,7.40231,-53.7255,-39.571,61.2511],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    	CONST jointtarget p120:=[[-35.4623,27.1492,55.474,-32.0575,-76.4809,23.2391],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    	CONST jointtarget p130:=[[50.0835,42.6387,47.1232,51.5741,-78.9401,-28.6567],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    	CONST jointtarget p140:=[[-65.7798,-0.0497541,-8.7633,-76.5653,-61.5277,96.468],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
        PROC main()
    	    i := 0;
    	    FOR i FROM 1 TO 500000 DO   
                MoveAbsJ p100, v2000, fine, tool0;
                MoveAbsJ \Conc, p110\NoEOffs, v500, fine, tool0;
                MoveAbsJ p120,v2000\V:=1000, z40\Z:=45, tool0;
                MoveAbsJ p130,v2000, z40, tool0\WObj:=wobj0;
                MoveAbsJ p140,v2000, fine\Inpos:=inpos50, tool0;
    	    ENDFOR
    	ENDPROC
    ENDMODULE
    

    【五】:papid语言 其它指令使用

    一:外轴指令

    外轴激活ActUnit;外轴失效DeactUnit

    1.ActUnit m7dm1; 外轴激活。 2.DeactUnit m7dm1; 外轴失效(m7dm1是自己定义的外轴)

    关于外部轴如何配置:https://blog.csdn.net/qq_35831134/article/details/106871946

    例1:导轨移动,p100和p110是定义导轨移动的2个位置

       PROC main()
           IDelete intno1;
           IDelete intno2;
           CONNECT intno1 WITH MyExti1;
           CONNECT intno2 WITH MyExti2;
           ISignalDI IN10, 1, intno1;
           ISignalDI IN20, 1, intno2;
           WHILE TRUE DO
                IF regint1=1 THEN
                   regint1:=regint1-1;
                   InvertDO OUT10;
                   ActUnit m7dm1;
                   MoveL p100,v2000,fine,tool0; 
                   MoveL p110,v2000,fine,tool0; 
                   DeactUnit m7dm1;
                   MoveL offs(p10,k,0,-500),v2000,fine,tool0;   
                   MoveL offs(p10,K,400,-500),v2000\V:=1000,z40\Z:=45,tool0;
                   MoveL offs(p10,K,400,150),v2000,z40,tool0;
                   MoveL offs(p10,K,0,150),v2000,z40,tool0;
                   MoveL offs(p10,K,0,-500),v2000,z40,tool0;
                ELSEIF regint2=1 THEN
                   regint2:=regint2-1;
                   InvertDO OUT20;
                   MoveL p1,v2000,fine,tool0;
                   MoveC p2,p3,v2000,z20,tool0;
                   MoveC p4,p1,v2000,fine,tool0; 
                ELSE
                   Reset OUT10;
                   Reset OUT20;
                ENDIF
           ENDWHILE
       ENDPROC
       TRAP MyExti1
         	regint1:=regint1+1;
       ENDTRAP
       TRAP MyExti2
         	regint2:=regint2+1;
       ENDTRAP

    二:输入输出指令

    如何配置IO板:https://blog.csdn.net/qq_35831134/article/details/107098972

    对信号名称进行化名AliasIO;信号反转InvertDO; IO板失效IODisable;IO板激活IOEnable;脉冲信号PulseDO;信号为低电平Reset;高电平Set;模拟输出SetAO;组合延时输出SetDO;延时输出SetGO;等待输入信号满足相应值WaitDI;等待输出信号满足响应值WaitDO

    1. AliasIO config_do,alias_do;(config_do:在系统参数内定义,alias_do:在程序内定义)。

    2. InvertDO OUT10; (OUT10:IO名称)。IODisable "cell",5;(cell:信号板名称,5:最长等待时间)。

    3. IOEnable "cell",0;。

    4. PulseDO\High\PLength do10;(High:输出脉冲时信号可以在高电平,PLength :脉冲长度,do10:IO名称)。

    5. SetAO AO10,5;(AO10信号名称,5:值)。

    6. SetDO\SDelay:=0.2,weld,high;(SDelay:延时s,weld:信号名称,high:值)。

    7. SetGO\SDelay:=0.2,go_Type,10;(SDelay:延时s,Type:信号名称,10:值)。

    8. WaitDI di_Ready,1;(等待输入信号为1才执行后面的指令)

    9. WaitDI di_Ready,1\MaxTime:=5;(等待输入信号,5秒内无输入di_Ready为1,自动运行Error Handler处理,如果没有Error就报错)。

    10. WaitDI di_Ready,1\MaxTime:=1\Timeflag:=bTimeout;(等待输入信号,1秒内无输入di_Ready为1,机器人执行后面指令,但此时TimeFlag的值为TRUE;如果在1秒内等到输入信号,TimeFlag的值为FALSE)。

    11. WaitDO(与输入原理一样)。

    三:停止指令

    在当前指令行立即停止,运行指针停在下一行Break;停止运行并重置Exit;在当前指令行停止运行,指针停在下一行Stop;在当前指令行立即停止运行,当前循环结束,并从主程序第一行继续进行下一个循环ExitCycle

    四:计时指令

    时钟复位ClkReset;时钟开始ClkStart;时钟停止ClkStop

    例1:计算出画一个圆所用的时间nCycleTime

    ClkReset clock1;
    ClkStart clock1;
    MoveL p1,v2000,fine,tool0;
    MoveC p2,p3,v2000,z20,tool0;
    MoveC p4,p1,v2000,fine,tool0; 
    ClkStop clock;
    nCycleTime:=ClkRead(clock1);
    TPWrite "Last cycletime:"\Num:=nCycleTime;

    五:计数指令

    Add;清零Clear;加加Incr;减减Decr

    Add reg1,3;(等同于reg1:=reg1+3)。Clear reg1;(等同于reg1:=0)。Incr reg1(等同于reg1:=reg1+1)。Decr(相当于C语言里面-。-)

    六:中断指令

    CONNECTIDeleteISignalDIISignalDOISignalAIISignalAOISleepIWatchIDisableIEnableITimer

    例1:IDelete外部中断,IN10和IN20来触发中断程序改变相应标志位 来执行死循环里面程序

    PROC main()
           IDelete intno1;                                  !IDelete中断
           CONNECT intno1 WITH MyExti1;  !调用外部中断函数
           ISignalDI IN10, 1, intno1;     !外部中断所映射IO为IN10
           WHILE TRUE DO                  !循环判断标志位状态
                IF regint1=1 THEN           !判断标志位状态
                   regint1:=regint1-1;        !清除标志位
                   MoveL p1,v2000,fine,tool0;
                   MoveC p2,p3,v2000,z20,tool0;
                   MoveC p4,p1,v2000,fine,tool0; 
                ELSE
                   Reset OUT10;
                ENDIF
           ENDWHILE
       ENDPROC
       TRAP MyExti1                   !定义的中断函数
             regint1:=regint1+1;   !改变标志位
       ENDTRAP

    MODULE Module1
       CONST robtarget p10:=[[1203.52,0.00,1092.05],[0.676581,0.112147,0.72011,0.105368],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
       CONST robtarget p1:=[[1196.82,-300.08,956.44],[0.676581,0.112147,0.72011,0.105368],[-1,-1,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
       CONST robtarget p2:=[[1203.52,0.00,1092.05],[0.676581,0.112147,0.72011,0.105368],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
       CONST robtarget p3:=[[1196.82,304.63,956.44],[0.676581,0.112147,0.72011,0.105368],[0,0,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
       CONST robtarget p4:=[[1196.82,0.00,750.21],[0.676581,0.112147,0.72011,0.105368],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
       VAR num K:=0;
       VAR num regint1:=0;
       VAR num regint2:=0;
       VAR intnum intno1:=0;
       VAR intnum intno2:=0;
       CONST robtarget p100:=[[1196.82,-300.08,956.44],[0.676581,0.112147,0.72011,0.105368],[-1,-1,0,0],[97.5137,9E+9,9E+9,9E+9,9E+9,9E+9]];
       CONST robtarget p110:=[[1196.82,-300.08,956.44],[0.676581,0.112147,0.72011,0.105368],[-1,-1,0,0],[1828.95,9E+9,9E+9,9E+9,9E+9,9E+9]];
       PROC main()
           IDelete intno1;
           IDelete intno2;
           CONNECT intno1 WITH MyExti1;
           CONNECT intno2 WITH MyExti2;
           ISignalDI IN10, 1, intno1;
           ISignalDI IN20, 1, intno2;
           WHILE TRUE DO
                IF regint1=1 THEN
                   regint1:=regint1-1;
                   InvertDO OUT10;
                   ActUnit m7dm1;
                   MoveL p100,v2000,fine,tool0; 
                   MoveL p110,v2000,fine,tool0; 
                   DeactUnit m7dm1;
                   MoveL offs(p10,k,0,-500),v2000,fine,tool0;   
                   MoveL offs(p10,K,400,-500),v2000\V:=1000,z40\Z:=45,tool0;
                   MoveL offs(p10,K,400,150),v2000,z40,tool0;
                   MoveL offs(p10,K,0,150),v2000,z40,tool0;
                   MoveL offs(p10,K,0,-500),v2000,z40,tool0;
                ELSEIF regint2=1 THEN
                   regint2:=regint2-1;
                   InvertDO OUT20;
                   MoveL p1,v2000,fine,tool0;
                   MoveC p2,p3,v2000,z20,tool0;
                   MoveC p4,p1,v2000,fine,tool0; 
                   PulseDO\High\PLength:=1,OUT30;
                ELSE
                   Reset OUT10;
                   Reset OUT20;
                ENDIF
           ENDWHILE
       ENDPROC
       TRAP MyExti1
         	regint1:=regint1+1;
       ENDTRAP
       TRAP MyExti2
         	regint2:=regint2+1;
       ENDTRAP
    ENDMODULE

     七:通信指令

    清屏TPErase;显示字符串TPWrite;字符串和按钮TPReadFKTPReadNumErrWriteTPShow

    1.TPWrite String[\Num][\Bool][\Pos][\Orient];  

    String:字符串(string);[\NUm]:"123"(num);[\bool]:"TRUE"(bool);[\Pos]:显示位置xyz"[21f,52,72]"(pos);[\Orient]:显示方位q1q2q3q4"[0.5,3,5,0]"(orient)。

    例1:TPWrite "Cycle Time="\Num:=nTIme;   (Num是字符串类型  var Num nTIme:=12;)。

    例2:TPWrite "xyz="\Pos:=xyz;   (Pos坐标  var Pos xyz:=[10,20,30];)。

    2.TPReadFK Answer,Text,FK1,FK2,FK3,FK4,FK5,[\MaxTime],[\DIBreak][\BreakFlag];

    Answer:数字赋值1-5(num);Text:屏幕字符串(string);FKx:功能键字符串(string);[\MaxTime]:最长等待时间(num);[\DIBreak]:输入信号控制(signaldi);[\BreakFlag]:指令状态控制(errnum);

    例1:TPReadFK reg5,"more?",stEmpty,"yes","no","Button1","Button2";

    3.TPReadNum 

    4.ErrWrite [\W],Header,Reason[\RL2][\RL3][RL4];

    [\W]:事件记录开关(switch);Header:错误信息标题(string);Reason:错误信息原因(string);[\RL2];[\RL3];[\RL4]:附加错误信息原因(string);

    例1:ErrWrite\w,"Search error","NO hit for the first search";

    例2:ErrWrite\w,"PLC error","Fatal error in PLC"\RL2:="Call service";

     八:程序流程指令

    循环FOR;等待输入条件判断WaitUntil;延时WaitTimeCompact IF;条件判断 IFTEST;死循环 WHILE;无条件转移(跳转)指令GOTO;定义变量或标号的类型Lable;调用子程序procCall; 跳出程序到上一级return;

    1.1. FOR循环,循环5次

    i:=0;
    FOR i FROM 1 TO 5 DO        
       MoveL p1,v2000,fine,tool0;
       MoveL p1,v2000,fine,tool0;
    ENDWHILE

    1.2.FOR示例:

    VAR c:=0;
    PROC main()
        FOR i FROM 1 TO 2 DO
            FOR j FROM 1 TO 2 DO
       	       c:=i*j;
               TPWrite "Cycle Time="\Num:=c; 
       	    ENDFOR
        ENDFOR
    ENDPROC

    2. WaitUntil [\InPos],Cond[\MaxTime][\TimeFlag];

    [\InPos]:提前量开关(switch);Cond:判断条件(bool);[\MaxTime]:等待时间s(num);[\TimeFlag]:超时逻辑量(bool);

    例1:WaitUntil IN10=1\MaxTime:=5;     !如果5秒内IN10不输入1就运行Error Handler,如果没用Error的话就报错

    例2:WaitUntil bOK=TRUE\MaxTime:=1\TimeFlag:=bTimeOut; 

    3.WHILE指令示例,循环5次

    reg1:=0;
    reg2:=5;
    WHILE reg1<reg2 DO        
       MoveL p1,v2000,fine,tool0;
       MoveL p1,v2000,fine,tool0;
    ENDWHILE

     九、运动控制指令

    机器人加速度AccSet;对机器人速度限制VelSet;关节运动,轴配置数据ConfJ;直线运动,轴配置数据ConfL; 避免机器人运行时死机(位置得不到控制,建议不要使用)SingAreaPathResol;软化机器人主机或外轴伺服系统SoftAct; 软化失效SoftDeact;

    1. AccSet Acc,Ramp;

    Acc:机器人加速度百分率(num);Ramp:机器人加速度坡度(num);

    例1:AccSet 50,80;  处理脆弱负载时,使用了AccSet,可允许更低的加速度和减速度,使得机械臂的移动更加顺畅

    2.VelSet Override,Max;

    Override:机器人运行速率%(num);Max:最大运行速度mm/s(num);

    例:VelSet 80,700; 编程速率设定。VelSet 用于增加或减少后续定位指令的编程速率,直至执行新的VelSet 指令

    3.ConfJ [\On]|[\Off];

    [\On]:启动轴配置数据(switch);关节运动时,机器人移动至绝对ModPos点,如果无法到达,程序将停止运行;

    [\Off]:默认轴配置数据(switch);关节运动时,机器人移动至ModPos点,轴配置数据默认为当前最接近值;

     例1:ConfiJ\On; 

    4.ConfL [\On]|[\Off];

    5.SingArea[\Wrist]|[\Off]; 

    [\Wrist]: 启用位置方位调整(switch);[\Off]: 关闭位置方位调整(switch);

    6.PathResol PathSampleTime;

    PathSampleTime: 路径控制%(num);

    机器人必须在完全停止后才能更改路径控制值,否则机器人将默认一个停止点,显示错误信息50146。

    例1:PathResol  150; 

    7.SoftAct[\MechUnit,] Axis,Softness [\Ramp];

    [\MechUnit]:软化外轴名称(mecunit); Axis: 软化轴号码(num);Softness: 软化值%(num);[\Ramp]: 软化坡度%(num);

    软化机器人主机或外轴伺服系统,范围0-100%,坡度范围>=100%, 与SoftDeact指令同时使用。

    8. SoftDeact[\Ramp];

    [\Ramp]: 软化坡度,>=100%(num);

    例1:

    SoftAct 5,30;

    SoftDeact;

    SoftAct 1,90;

    SoftDeact \Ramp:=100;

     

     

     

     

    展开全文
  • ABB RAPID SOCKET编程

    千次阅读 2014-05-28 10:05:24
    不过,其核心的socket编程,依然存在,只不过不 能发到t-w-i-t-t-e-r上去罢了。Staubli的VAL3是一种非常捧的语言,其悠久的历史,丰富的背景,几乎可以说是机器人程序语言的鼻 祖。因为当年,unimation一手创造了...

        相传在2009年6月11日,微博的鼻祖t-w-i-t-t-e-r还没有被封锁的时候,于仁颇黎写了了一个东西可以将staubli机器人在运行时的状态,实时发送上去,可以被实时的查看,任何一个人都可以查看,于是就有了这个名为TWIRROBOT的推号,也就有了个一篇名为TWIRROBOT的日志,还有如下的一张状态图:


        时至今日,在我已经熟悉了ABB机器人之后,再想来进行这个测试,已经风云变幻,改朝换代了。不过,其核心的socket编程,依然存在,只不过不 能发到t-w-i-t-t-e-r上去罢了。Staubli的VAL3是一种非常捧的语言,其悠久的历史,丰富的背景,几乎可以说是机器人程序语言的鼻 祖。因为当年,unimation一手创造了工业机器人,而今分为两家,Staubli与Adept,一家精于手臂,一家精于控制。不过,后来学习的 ABB RAPID在此基础上发展很快,可以说是青出于蓝而胜于蓝。


        可能细心的读者已经发现,C++开的这个终端程序里面是CS8C。是的,这个是STAUBLI机器人的控制器,之前写这个是用来测试STAUBLI机器人的,现在用这个测试ABB机器人,也照样通的过。

    展开全文
  • 1. 在做ABB机器人相关项目时,为了能更快完成机器人项目,此时就需要提前对机器人项目进行工作站虚拟仿真,前期工艺动作规划,离线编程,并在虚拟控制器里验证程序逻辑。2. 如下实例使用ABB官方编程软件RobotStudio...
  • 1. 在做ABB机器人相关项目时,为了能更快完成机器人项目,此时就需要提前对机器人项目进行工作站虚拟仿真,前期工艺动作规划,离线编程,并在虚拟控制器里验证程序逻辑。2. 如下实例使用ABB官方编程软件RobotStudio...
  • RAPID_4.0编程手册ABB

    2017-11-03 16:48:10
    常用功能都在里面,包括各种指令类型,数据类型,以及对指令和数据的详细描述,参数功能介绍
  • RAPID基础知识

    2012-05-23 09:24:27
    ABB机器人编程语言入门介绍,适合初次接触 ABB机器人RAPID编程语言的人
  • PyQt快速Gui编程(Rapid GUI Programming with Python and Qt)
  • 机器人的应用程序是使用一种称为RAPID编程语言的特定词汇和语法编写而成的。它是一种英文编程语言,包含了一连串控制机器人的指令,执行这些指令可以实现对机器人的控制操作。创建程序模块步骤如下:点击ABB,选择...
  • 助力提高您的技术能力您身边的机器人服务专家如何使用TAB键完成RAPID在RAPID编程中,如果要定义一个数据并设置初值,由于不同数据类型的数据格式不同,如何快速实现上图的完整数据输入?—方法一:在示教器中的程序...
  • RAPID基本入门

    2015-07-29 17:02:12
    关于RAPID语言的基本入门介绍资料,包括RAPID语言的介绍,相关的示例,如何与RobotStudio完全结合编程等,适合用RobotStudio进行机器人编程的入门型资料。
  • 机器人的应用程序是使用一种称为RAPID编程语言的特定词汇和语法编写而成的。它是一种英文编程语言,包含了一连串控制机器人的指令,执行这些指令可以实现对机器人的控制操作。创建程序模块步骤如下: 点击ABB,选择...
  • RapidMiner教程

    万次阅读 多人点赞 2018-06-29 21:03:32
    最近接触到一款强大的数据挖掘软件平台RapidMiner,RapidMiner是世界领先的数据挖掘解决方案,通过在图像化界面拖拽建模,轻松实现了数据准备、机器学习和预测模型部署,无需编程,简单易用。下图展示了其工作流程:...
  • 详细介绍ABB的PC SDK开发,是从事机器人编程不可或缺的参考资料。
  • RAPIDIO嵌入式系统互连

    热门讨论 2013-05-29 11:18:28
    本书还描述RapidIO在企业存储、无线基础设施等实际系统中应用的实例,评估与RapidIO相关的编程模型,说明RapidIO硬件的开发、在FPGA中实现RapidIO,以及在VXS、ATCA等各种机械标准中应用RapidIO的实例。 本书取材...
  • RAPID语言概述.pdf

    2020-06-30 16:08:44
    ABB提供的对机械臂进行开发的编程语言 RAPID的使用文档。内含函数说明和示例。对每一个函数都有详细说明,对开发者有很大帮助。
  • C6678 rapidio 例程

    2012-03-08 19:36:23
    不需要使用复杂的MSDK, 简单理解RAPIDio通讯编程.
  • ABB RAPID指令详解

    2020-10-22 19:00:36
    本文档列出所有ABB示教的指令及其详细的使用说明,还详细介绍其自带的功能函数,编程时需要的所有数据类型。
  • RapidMiner是什么

    2017-04-19 12:29:55
    RapidMiner是世界领先的...Java API(应用编程接口) RapidMiner具有丰富数据挖掘分析和算法功能,常用于解决各种的商业关键问题,如营销响应率、客户细分、客户忠诚度及终身价值、资产维护、资源规划、预测性维修...
  • RapidIO V2.0协议

    2014-06-29 16:06:14
    RapidIO是一种开放的互连标准,可被广泛应用、灵活的、可扩展的系统交换结构,主要应用于...无论是串行或并行接口,均具有相同的编程模型、事务处理与寻址机制。 RapidIO被定义为三层结构:逻辑层、传输层与物理层。
  • ABB Robot Program rapid code

    2019-01-05 11:31:14
    ABB 机器人编程系统手册,编程指令详细说明,逻辑运算,特殊功能指令运用等
  • RapidMiner遇到的问题

    千次阅读 2016-11-22 20:18:16
    无需编程。它开发且可扩展,拥有上百种数据载入,转化,建立和可视化的方法,可以连接到一系列复杂的数据源,如Excel,Access, IBM DB2, MySQL。你甚至可以很简单地利用RapidMiner提供的开放式扩展API将
  • RapidMiner6使用手册

    2014-11-13 18:23:35
    Java API(应用编程接口) 简单的插件和推广机制 强大的可视化引擎,许多尖端的高维数据的可视化建模 400多个数据挖掘运营商支持 耶鲁大学已成功地应用在许多不同的应用领域,包括文本挖掘,多媒体挖掘,功能设计,...
  • Rapid_GUI_Programming_with_PyQt PyQt编程知识手册
  • RAPID程序设计

    2014-08-04 21:20:00
     RobotStudio是ABB公司自行开发的机器人模拟软件, 能在PC机上模拟几乎所有型号的ABB 机器人几乎所有的操作,它还带有机器人与系统参数配置软件ConfigEdit、离线编程软件ProgramMaker与机器人冷启动软件RobInstall...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 245
精华内容 98
关键字:

rapid编程