1.有如下双工位生产

2.工艺过程如下:

人工完成1#工位上料后按按钮di_1(按钮不带保持,即人手松开信号为0))机器人焊接1#工位。
此过程中人工对2#工位上下料,完成后按di_2完成预约(即不需要等机器人完成1#工作)。
机器人完成1#工作后,由于收到过di_2预约信号,机器人自动去完成2#工位

3.我们通过中断来实现。

4.中断的意义为:

机器人后台在不断扫描(类似PLC),和机器人前台运动不冲突。后台实时扫描到信号就会去执行设定的中断程序,中断程序里没有运动指令,前台机器人不停,不影响运动

5.新建一个例行程序,取名tr_1,注意:类型选中断(trap)

6.进入中断程序,插入指令如下,即当机器人执行中断程序时,给bool量置true

同理设置第二个中断程序

7.进入主程序,设置中断及对应的io信号


37行的意思是,任何时候di_1信号0变1,就会触发执行tr_1中断程序,即置flag1为true
35-40行程序只要运行过一遍即可,类似于设置开关,不需要反复运行

8.主要程序如下。即如果没有人给di信号,机器人就在home位等待。

代码如下:

PROC main()
    IDelete intn01;
    CONNECT intn01 With tr_1;
    ISignalDI di_1,1,intn01;
    IDelete intn02;
    CONNECT intn02 With tr_2;
    ISignalDI di_2,1,intn02;
    flag1:=FALSE;
    flag2:=FALSE;
    WHILE TRUE DO 
        MoveJ pHome,v1000,fine,tool0\wobj:=wobj0;
        IF flag1 = TRUE THEN 
            flag1:=FALSE;
            path_1;
            MoveJ pHome,v1000,fine,tool0\wobj:=wobj0;
        ENDIF
        IF flag2 = TRUE THEN 
            flag2:=FALSE;
            path_2;
            MoveJ pHome,v1000,fine,tool0\wobj:=wobj0;
        ENDIF
    ENDWHILE
ENDPROC