HELLO各位小伙伴大家好,前几天我有幸接触到一套老外写的程序,感觉思路和我们的思路完全不一样,今天我把它拿来和大家分析一下,我的理解不一定都对,就当抛砖引玉了,大家一起学习一下。
首先是CELL程序,这里可以看到有很多的修改,去掉了常规的check home步骤,和前面的home点,取而代之的是几个中断。可以猜到他是采用了程序方式回HOME,并不是我们常规的手动BCO的方式。
1~8行:常规的CELL程序头,初始化。
9行:中断25,从字面上看得出这是个通过输入信号来触发的中断声明,输出信号的定义是“复位机器人”,并且用中断触发了机器人复位程序。
(这里信号定义的规则非常值得学习,“变量类型_功能_执行单元”)
10行:中断25启动
12行:中断30,声明了中断,通过输出信号触发了一个计时器启动的程序。(这个用法非常的巧妙,不仅可以准确的计时,也可以让执行程序更加简洁)
13行:启动中断30
15行:中断31,声明了通过输入端信号触发计时器停止,
16行:启动中断31
中断30用的是输出程序运行信号false,中断31用的是输入端程序开始true,程序运行结束开始计时,程序启动停止计时。看来这并不是一个用于计算程序执行节拍的计时器,可能是用于记录机器人停机时间的计时器。
18行:复位程序启动信号(设置为假)
19行:复位程序运行信号(设置为假)
21行:运行到当前位置
22行:轨迹速度设置为3(在我以往的认知中轨迹速度最快是2m/s,这里不知道能不能真的变成3m/s)
24行:自动模式确认
25行:进入主循环
接下来我们进入子程序分析一下。
中断25调用的子程序:
3行:停止中断25.
4行:停车
5行:发出提示信息到信息窗口
6行:输出程序停止运行信号false
7行:结束当前执行的动作和结束当前子程序。
这里第5行的提示信息可以看出机器人复位信号来自PLC。
通过这里可以看出,他利用这个中断跳出了正在运行的程序,并且回到声明中断层面。也就是说当子程序执行时,这个中断一旦触发就回到CELL。
(RESUME 将中断在声明当前中断的层面以下的所有运行中的中断程序和所有运行中的子程序。
在出现 RESUME 指令时,预进指针不允许在声明中断的层面里,而必须至
少在下一级层面里。)
中断30调用的子程序
3行,发出提示信息到信息窗口
4行,计时器64,设置为0
5行,启动计时器64
6行,退出子程序
这是个用于计时器启动的的程序,不过利用中断来启动计时器我还是第一次见到。也可能是头发长见识短。
中断31调用的子程序
2行,停止计时器64
3行,发出提示信息,显示计时结果(%1占位符,用于逗号后面第一个变量)
4行,退出子程序
通过这里的信息提示可以看出这个计时器是用于记录程序切换所花费的时间。
以上我们了解了CELL的程序头,接下来是主循环。
可以看出这里只用了程序号1进行调用,main程序,并没有依托于PGNO来进行程序分配。
到此,主程序分析完成,今天先写这么多吧,如果你也从中学到了新的知识,那请分享给有需要的朋友。