前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序解析之MAIN

程序解析之MAIN

作者头像
用户4442670
发布2023-02-20 16:29:10
6000
发布2023-02-20 16:29:10
举报
文章被收录于专栏:机器人小农机器人小农

HELLO 各位小伙伴,大家好,上次我们分析了CELL程序,今天我们继续分析这一套程序。main()模块是这套程序中的主模块。CELL程序通过PGNO调用了唯一的一个case--main()接下来我们打开这个模块


main()头部分

3行:CONTINUE,让程序预读,这一行我觉得写不写都行

4-6行:这里用了T1模式作为是否执行INI的条件,也就是说不是T1的话机器人将不执行INI

(打开INI的折合看并没什么特殊。这样做的目的是为了不让第9行的运动初始化执行,而T1模式为了保证能手动运行才出此办法。)

8行:进入主循环

10行:预读(以下省略)

11行:判断输入端程序启动信号是否为false

12行:14行,等待输入端程序启动为true(包含停止计时器)

19行:输出端程序运行赋值为true(表示程序已经启动)

22行:通过输入端的iprognr(程序号,进行分配工作步骤分配;config中定义了这个信号)


分配器部分

主工作分配,

case1:回原位

case2:到安全位置

case11:抓取输送线上的东西

case12:测量

case13:去毛刺

case14:推...

case15:打孔位

case16:不合格位

case17:抓取测试零件

case18:拍照测试

default:输出错误信息7(这里是个自定义报警信息发送给plc,信号在config定义)

56行:等待false(用于留住运行指针,等待人工处理)


个人观点

通过这段代码可以看出机器人的整个流程被拆分成了部分工作步骤,并且由PLC自由调配。这样的做法可以让整个流程更方便单独执行某一部分。

这里又出现了一个命名规则值得学习-程序名称:case号_位置名称_功能

整个main()程序看下来大部分都还是比较好理解,唯一不常见的用法是程序头上的INI行,我们大多数时候是根本不管INI这行的作用,甚至不知道INI到底干了什么。

这里单独拿INI折合探讨一下

7行:一个中断,采用了急停的信号触发,并且调用了一个IR_STOPM() 程序,机器人硬件部分做了急停回路,所以这个子程序并不是用于停止机器人的,而是用于做急停后的一些信号处理。也支持用户对这个程序进行编程。

8行:启动中断

9行:初始化运动参数,通常如果不对运动参数初始化,机器人就没办法执行非联机表单的运动程序,另外从A程序调用B程序时,如果B程序执行了初始化那么第一个运动点就无法逼近。所以这个程序用IF $TI==TRUE 来决定是否需要执行INI.

到此MAIN()程序就算分析结束,如果你觉得有用就把它分享给你的朋友吧!!!

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-10,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 机器人小农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com