C# robotstudio SDK调用--abb机器人程序部分

MODULE Module1
    CONST robtarget EXTREME:=[[200.001,126.279387098,-390.936633595],[0.707089442,-0.004951901,0.004951901,0.707089442],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Target_10:=[[0,0,0],[0.707106781,0,0,0.707106781],[0,-2,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Target_20:=[[400,0,0],[0.707106781,0,0,0.707106781],[-1,1,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    
    CONST num SHUT_DOWN := -1;
    CONST num TO_WAIT := 0;
    CONST num TO_PAINT := 1;
    CONST num TO_INTRODUCE := 2;
    
    VAR speeddata drawingSpeed;
    VAR num speedLevel := 0;
    VAR num flag := 0;
    VAR bool repeat := TRUE;
    
    //VAR:变量,程序运行中可以被赋值,但是程序复位后会变为初始值
    //PERS:可变量,程序运行中,可以被赋值,并且***保持***最后一次赋值结果
    //CONST:常量,程序运行中,不可被赋值,作为固定值存储
    PERS pos tgPos{500};
    VAR num targetsNum;
    
    //FUNC 功能程序能够返回一个特定数据类型的值,在其他程序中当做功能来调用。
    // create_robtarget函数:输入点坐标pos ,返回一个目标点robtarget
    FUNC robtarget create_robtarget(pos position)
       RETURN [position,[0.707106781,0,0,0.707106781],[1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
    ENDFUNC
    
    //shifting函数:输入标志base ,返回一个机器人运动速度speeddata 
    FUNC speeddata shifting(num base)
        IF base = 0 THEN RETURN v100;
        ELSEIF base = 1 THEN RETURN v300;
        ELSEIF base = 2 THEN RETURN v600;
        ELSE RETURN v1000;
        ENDIF
    ENDFUNC
    
    // variable initialization 变量初始化
    FUNC bool init()        
        drawingSpeed := shifting(speedLevel); //设置机器运动速度为speedLevel:=0;即v100
        targetsNum := 0; //机器人运动点数归零
        repeat := TRUE;//重复运动
        flag := 0;
      
        RETURN TRUE;    
    ENDFUNC
    
    //机器人运动规划的路径
	PROC EX_PAINT()
        
        VAR num i := 2;
        drawingSpeed := shifting(speedLevel);
        
        // 对机器人的姿态控制指令可分为四种,分别是关节插补姿态控制(ConfJ)、
        //直线插补姿态控制   (ConfL)、奇异点姿态控制(SingArea)和
        //圆弧插补姿态控制(CirPathMode)。
 		//ConfL\on或off 如离线编程创建目标点或手动示教相邻两目标点
 		//间轴配置数据相差较大时,在机器人运动过程中容易出现报警“轴配置错误”而造成停机。
 		//此种情况下,若对轴配置要求较高,则一般通过添加中间过渡点;
 		//若对轴配置要求不高,则可通过指令ConfL\Off关闭轴监控,
 		//使机器人自动匹配可行的轴配置来到达指定目标点。
        ConfL \Off;
        
        //从待机位点到目标点tgPos{1}
        MoveL create_robtarget(tgPos{1}), shifting(3), z100, Pen_TCP\WObj:=canvas1;
        
        //重复运动下一个点位
        WHILE repeat DO

            MoveL create_robtarget(tgPos{i}), drawingSpeed, z100, Pen_TCP\WObj:=canvas1;
            i := i + 1;
            //目标点走完,结束机器人运动
            IF i > targetsNum THEN repeat := FALSE; ENDIF
            
        ENDWHILE
        
        //标志由0变成1
        flag := TO_WAIT;
        //归零,运动完成之后,初始化
        repeat := TRUE;
        i := 2;
        
        //返回待机位点
        MoveL EXTREME,shifting(3),z100,Pen_TCP\WObj:=canvas1;

	ENDPROC
    
    //等待
    PROC EX_INTRODUCING()
        
        flag := TO_WAIT;
	ENDPROC
    
    ! main process
    PROC main()
        
        IF init() = TRUE THEN  //如果机器人已经初始化
        
            //用于使机器人可以在奇异点运动,使用完这个指令之后记得SingArea\off,关闭指令
            SingArea \Wrist;
            
            //机器人运动到待机位点  可以通过EXTREME设置待机位点        
            MoveL EXTREME,v1000,z100,Pen_TCP\WObj:=canvas1;
            
            //一种自制的事件处理程序---1为走轨迹,2为紧急停止
            WHILE flag > SHUT_DOWN DO
				//如果标志为TO_PAINT --1,即机器人运行函数EX_PAINT--走轨迹
                IF flag = TO_PAINT THEN EX_PAINT; ENDIF
                //如果标志为 TO_INTRODUCE--2,即机器人运行函数EX_INTRODUCING--等待
                IF flag = TO_INTRODUCE THEN EX_INTRODUCING; ENDIF
                WaitTime 0.2;
            ENDWHILE
        
        ENDIF
        
    ENDPROC
    
ENDMODULE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值