一文带你入门RCS4.X【任务编排】(三)
随着RCS-CMS-WCS不断更新,终于我们在4.x迎来了一个新系统,TAS【TaskArrangementService(任务编排服务)】,本文主要用于未接触过4.X新手引导入门,但由于是新系统,作者若有错误敬请谅解,本文仅供参考。

宇宙免责声明

在您继续阅读本文之前,请注意,本文涉及的RCS-CMS-WCS 4.x版本及其新系统TAS(Task Arrangement Service,任务编排服务)可能包含作者基于当前知识水平的推测和假设。

作者已尽最大努力确保信息的准确性和完整性,但鉴于宇宙的无限性和技术的不断进步,本文中的信息可能与读者的量子状态发生纠缠,导致不可预测的结果,根据量子物理学,本文中的某些信息可能处于存在与不存在的叠加状态。作者不对因量子不确定性导致的信息不准确性负责。作者无法保证所有信息的绝对正确性。


玻璃心,不点赞会紫砂!


马上要过年了,给大家提前拜个早年吧,祝大家2030年新年快乐,身体健康,合家欢乐~


续接上文【一文带你入门RCS4.x【任务编排】(二)】,让我们来复习一下如何下发测试任务 !


任务编排测试报文下发

     如果看过第二期的小伙伴们就可以很清楚的知道,我们RCS下发任务本质上是通过测试按钮调用 我们传入的 JSON报文 去通过 SUBMIT接口 去创建任务,这里的 JSON报文 在普通搬运的情况下,targetRoute这个数组 只需要传入一个起点对象一个终点对象,用于我们的RTAS去解析并获取我们的站点值,所以我们本质上通过在任务编排上点测试按钮,和通过HTTP请求去调用SUBMIT接口任务编排也是一样能测试的

    这里简单的再讲解一下 targetRoute (任务路径)数组,内部存入站点对象属性,在绝大部分情况下,targetRoute[0]都为起点,targetRoute[1]都为终点(只传入俩个点的情况下),站点属性要设置 Type(站点类型) | code(站点值) | seq (目标路径序列) | autoStart(是否自动开始)| operation (到位动作,一般不需要) 


    然后测试报文中还有 initPriority (任务执行的初始优先顺序) | extra (自定义扩展字段,一般不需要) | interrupt(任务能否打断)

 ------------------------------------------------------- 


 

外设控制节点与PLC通讯(第三方通讯)

    在大多数情况下,我们现场的业务是需要和另外的第三方通讯去做交互的,比如我们AGV除了搬运任务以外,还需要 【申请光栅】| 【释放光栅】| 【作业完成允许离开】.......等信号,那么之前在3.X内部,我们是通过AGVcallback实现的,可能有些新伙伴不太清楚AGVcallback是什么,在下面简单的解释一下


3.X中的AGVcallback,指的是在任务模板中的任务通知,比如我有一个从A搬运到B的任务,那么这个任务开始时,我们是不是可以通知WCS,这个任务结束时,我们是不是还可以通知WCS,包过他走到关联点,我们是不是一样可以通知WCS,这样的话我们在什么时刻去通知WCS其实本质上是需要一个契机的,所以叫做 CallBack(回调)


而4.X中新增的外设控制节点,主要作用就是 TAS系统去主动通知WCS系统,告诉WCS 我需要通知哪个外设,并且附带通知方法 【 通知方法 :指的是如 toAGV/formAGV/Release等等类似的方法】 


在任务编排中,外设控制节点在下图中的位置可以找到




他的属性内容如下





  • 外设编号 【大部分情况下是一个字符串类型(String) ,就是你在外设里面配置的外设号(记住WCS中也需要配置哦)】
  • 目标应用 【在不选择的情况下默认通知WCS,如需要通知第三方上层可手动设置】
  • 任务编号 【这里99%的情况下直接填写 #{execution.processBusinessKey} ,在下方会解释为什么】
  • 申请路径 【第三方上层URL拼接,如通知WCS无需配置】
  • 方法名 【上面有介绍,指在wcs_protocol_message文件中,外设包含的方法名[取料|送料|到达|离开|主动申请(自动门|电梯)等等】
  • 是否反馈 【是否反馈决定 WCS是否需要效验ApplyOk,这种需要效验的字段,比如我们申请进入,是否需要对方同意,这里就要是否效验】
  • 反馈状态 【我们效验的字段是什么,是申请同意 还是 离开同意 或者是 到|达完成,取决于方法名配置的是什么】


    外设编号获取方式在最新版本中有些许变化,在4.2.1版本以下,我们可以使用SITE对象去获取外设,类似于这样 ${site0.eqpt.eqpCode},这里的site就是通过我们的申请点位节点输出的site对象,这个方法可以拿到这个点位上面绑定的外设,(我们在新建外设时,需要绑定在点位上)


而在4.2.2之后的版本,以及我们后续的正式版本中,我们都通过下图这俩种办法获取外设编号




通过Vscode,我简单的描述一下这俩种方法的用法




所以这外设编号中,我们可以填写 

${eqptSdk.getEqptBySite(code |这里的code是地码值| ).eqptCode} 

或者

${eqptSdk.getEqpt(code|这里的code是外设号|).eqptCode}

本质上都是通过Eqpt这个Object获取外设的Code,所以——这里有一个更简单的方法,我直接写死!!






至于为什么 #{execution.processBusinessKey} 用这个获取任务链编号,具体原因主要是因为execution这个Object是一个全局变量,在SDK手册中,研发如下图这么介绍的






所以绝大部分情况下 任务编号(必填) 都是#{execution.processBusinessKey}  获取当前任务链任务ID


    方法名 | 是否反馈 | 反馈状态 




上面这段JSON,是我们常见的一个WCS配置文件里面的外设配置文件,熟悉3.X的小伙伴们都清楚这些字段都代表什么意思,但是在这里还是单独抽出来讲一下


字段意义

release

(一般情况下在方法名内部配置) 释放数据源(离开信号)

apply | applyOk

(一般情况下在方法名内部配置) 发送数据源 | 效验数据源

toAgv

方法名(取料为toAgv | 送料为formAgv)

cmsIndex

对应外设编号

heartBeat

大部分情况下是心跳信号处理


熟悉这些之后,我们再回头去看外设控制节点,其实本质上只需要配置一个外设号,一个任务编号,一个方法名,是否效验,效验什么东西 这些配置完成即可使用


相信大家看完本章外设控制节点配置,在4.x中也能独立完成与第三方配置信号了趴,可以根据第一章和第二章的内容,独立写一个带移动,搬运,第三方交互的任务编排自己测试一下自己的能力啦!!!


(最近年底现场真的是忙到爆炸!!!! 真不是懒得更新haha)

(不过希望大家在工作之余还是要过好生活呀,毕竟AGV不会累,但是咱们不一样,祝大家过好每一天!)

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇
已经是第一篇啦~
下一篇
已经是最后一篇啦~
评论请先登录 登录
全部评论 9

牛掰

2025-02-05 20:26:30 吉林省
回复

害怕.jpg

2025-02-11 18:43:07 浙江省
回复

写得太好了,大佬,什么时候出下一期🤓

2025-02-13 23:37:57 天津
回复

具体怎么配置有没有文档

2025-03-13 16:37:48 重庆
回复

大佬膜拜

2025-03-17 17:09:43 重庆
回复

有叉车巷道至仓位怎么配置的不

2025-03-27 15:58:24 湖北省
回复

怎么不继续创作了啊?你不宠粉了吗?!回答我

2025-04-02 11:46:10 山西省
回复

已三连 最近刚好有一个滚筒与plc交互的项目 还好你更新了

2025-04-11 17:24:15 重庆
回复

爱了大佬,催个更😘

2025-04-14 10:08:43 安徽省
回复
  • 1
Lv.0
0
关注
0
粉丝
0
创作
0
获赞
相关阅读
  • 秒懂VisionMaster!「VM助手」上线,有问必答的AI导师来了!
    2025-06-26 浏览 0
  • AMR助手,你的技术外挂,上线啦!
    2025-07-03 浏览 0
  • HCT整理的笔记
    2025-07-10 浏览 0
  • Pin针检测
    2025-07-10 浏览 0
  • 燃爆2025暑期档:海康机器人工业视觉系统应用开发师资认证培训盛大开启!
    2025-07-01 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器