1)机器人执行程序都是一行一行执行的,比如:
2)如果机器人在执行第1行的时候,收到了cam_di信号,而运行到第3行的时候,cam_di信号被PLC置为FALSE了,那么执行第4行的时候,机器人就会一直等待信号。
3)实际上,cam_di信号曾经有过,只是机器人没有执行到waitdi语句。
4)可以使用中断来实现上述要求
5)创建一个bool变量flag1,置为false
6)创建一个中断号int_cam
7)新建一个新的routine,类型为中断trap,该类型routine不能直接运行,必须由IsignalXX类似指令触发
中断程序内容如下:
8)上述例子22-24行为设置语句,只需要运行一遍即可。
9)22行删除中断号
10)23行把中断号int_cam和中断程序cam_trap连接
11)24行设置触发条件,即cam_di由0变1,会自动触发运行cam_trap程序(对于cam_di的扫描,后台一直运行,所以即使机器人没有运行到相关di语句,有了信号也会触发)
12)这样即使程序运行到25行,PLC发过信号,机器人运行到26行di信号没有,但执行过中断程序(执行中断过程,机器人运动不停),flag1被置为true。
13)机器人运行到27行,由于flag1为true,即收到过信号,机器人可以运行
14)28行,把flag1重新置为false。