当前位置: 首页 > news >正文

sicar 标准功能块 RobotService (机器人服务程序)

1、功能块截图

2、引脚 定义

引脚功能

  1. 输入引脚

    • “STO30_Rbt_DB”.Rbt01.DatePl.In_ServicePos:用于输入机器人当前处于服务位置相关的信号,表明机器人是否到达指定服务位置 。
    • “STO30_Rbt_DB”.Rbt01.DatePl.In_TipChanging :用于输入与机器人末端工具更换相关的信号,指示是否正在进行工具更换操作。
    • “STO30_Rbt_DB”.Rbt01.DatePl.In_TipchangeAlarm :输入工具更换过程中报警相关的信号 ,若出现工具更换异常,该信号会触发。
    • “STO30_Rbt_DB”.Rbt01.DatePl.In_ActProgram :输入当前激活程序相关的信号,用来标识机器人正在运行的程序 。
    • “STO30_Rbt_DB”.Rbt01.DatePl.In_HOME :用于输入机器人是否处于原点(HOME 位置 )的信号。
    • “STO30_Rbt_DB”.Rbt01.T_Tool_Type[1] :与机器人当前工具类型有关,输入工具类型相关数据 。
    • “STO30_Rbt_DB”.Rbt01.CS_TryOn 、 “STO30_State_DB”.JGX2.CS_TryOn 、 “STO30_State_DB”.JGX1.CS_TryOn :这些是与某种试运转(TryOn )功能相关的输入信号,涉及不同设备或状态下的试运转状态反馈 。
  2. 输出引脚

    • InService:输出机器人是否处于服务状态的信号 。
    • InTipChanging:输出当前是否处于工具更换过程中的信号 。
    • TipChange_Herald:输出工具更换的预告信号 ,提前告知即将进行工具更换 。
    • Rbt_Tool_ID:输出当前机器人所使用工具的 ID 信息 。
    • Rbt_Program_Now:输出当前机器人正在运行的程序编号或名称等信息 。
    • At_Allow_ServicePos:输出是否到达允许的服务位置的信号 。
    • SetLoop_Finish:用于输出某个循环任务是否完成的信号 。
    • Count_Active:输出计数激活相关信号 ,指示计数功能是否处于激活状态 。
    • Tipnrez_Set:与工具相关的某种设置信号输出 。
    • TipChange_Set:输出工具更换设置相关信号 。
    • Need_Count:输出是否需要进行计数的信号 。
    • Robot_with_Weld 、 Robot_with_G:分别输出机器人是否配备焊接功能、是否配备某种 G 功能(具体需结合实际场景 )的信号 。
    • Service_CC:与服务相关的干涉控制信号输出 。
    • Tool_Num:输出工具编号相关信号 。
    • ST_Num:输出某个状态编号或步骤编号相关信号 。
    • ST_Service_Active:输出服务相关状态是否激活的信号 。
    • Global_Service:输出全局服务相关状态信号 。
    • LocalService:输出本地服务相关状态信号 。
    • Mode:输出当前工作模式相关信号 。

2、功能块的使用方法

  1. 输入信号连接:将外部传感器、其他功能块或程序模块输出的相关信号,准确连接到上述对应的输入引脚。比如,将检测机器人位置的传感器信号连接到 ““STO30_Rbt_DB”.Rbt01.DatePl.In_HOME” 引脚 ,用于判断机器人是否在原点位置。

  2. 功能块调用:在程序中合适的位置调用 “xxx_FB3554_RobotService” 功能块,不同编程环境调用方式有差异,一般是在程序编辑界面按照语法规则添加功能块调用指令 。

  3. 逻辑处理与输出应用:功能块内部会依据预设逻辑对输入信号进行处理 。处理后的输出信号可用于控制其他设备、作为其他功能块的输入,或者用于状态显示、故障诊断等。例如,“At_Allow_ServicePos” 输出信号可作为条件,控制机器人下一步动作是否执行 ;“TipChange_Herald” 信号可用于触发提示信息,告知操作人员即将进行工具更换 。 同时,根据实际需求,可能需要对功能块内部参数进行配置和调整,以优化其工作逻辑和输出结果。

3、功能块内部引脚

1、输入引脚定义

2、输入输出引脚定义

1、全局

2、localService

3、Mode

4、static   静态变量  

4、内部程序

1、  1-29 #子程序

2、30-47#子程序

3、程序号定义

程序号   10 修磨      焊枪用20 换帽      焊枪用30 服务位  焊枪用40 维修位  通用50 测量位  抓手用80 取消
90 返回

4、程序段

1    1-3#程序段

 1.1 程序段截图

1.2 程序段解释
程序段 1
  • 主要指令及功能
    • TON(通电延时定时器 )
      • 第一个 TON 定时器:当 #LocalService.Bypass_Req (本地服务的屏蔽请求信号 )为 ON 时,定时器开始计时,预设时间 PT 为 10S 。计时结束(ET 达到 PT 设定值 ),输出 C 置为 ON ,然后将 #LocalService.Bypass_Req 复位(置为 OFF ) 。
      • 第二个 TON 定时器:在 #LocalService.Bypass_Req 和 #GlobalService.RBT_Bypass_Ack (全局服务的屏蔽确认信号 )都为 ON 时启动,预设时间 PT 为 3S 。计时结束,输出 C 使 #LocalService.Bypass 置为 ON ,同时复位 #LocalService.Bypass_Req 和 #GlobalService.RBT_Bypass_Ack 。
    • P_TRIG(上升沿触发 ):当 #LocalService.Bypass_Req 的常闭触点状态变化(即从 ON 变为 OFF 产生上升沿 )时,CLK 检测到上升沿,输出 C 使 #GlobalService.RBT_Bypass_Ack 复位(置为 OFF ) 。
    • 复位指令(R ):多处使用复位指令,用于将相关变量复位为初始状态,配合定时器和触发指令实现逻辑控制 。 这段程序整体围绕屏蔽请求(Bypass_Req )相关逻辑,结合定时器、触发指令等实现对屏蔽请求的计时、确认及状态处理 。
程序段 2
  • 程序段名称及注释:名称为 “程序段 2”,注释是 “群控已被激活” ,表明此段程序主要和群控激活状态相关。
  • 逻辑分析:当 #GlobalService.Status.Control_Act (全局服务中控制激活状态的变量 )为 ON 时,触点闭合,会使得 #LocalService.Control_Act (本地服务的控制激活变量 )置为 ON ,用于在本地服务层面体现群控激活状态 ,用于后续本地相关逻辑判断或控制 。
程序段 3
  • 程序段名称及注释:名称是 “程序段 3”,注释为 “最大工位编号赋值” ,说明该程序段功能和工位编号赋值有关。
  • 指令分析
    • IN_RANGE 指令:用于判断 #ST_Num (当前工位编号相关变量 )的值是否在指定范围内。范围下限 MIN 为 1 ,上限 MAX 为 16 。如果 #ST_Num 在这个范围内,该指令输出为 ON 。
    • 比较指令(> int ):将 #ST_Num 与 #GlobalService.ST.ST_Num (全局服务中记录的工位编号 )进行大于比较。若 #ST_Num 大于 #GlobalService.ST.ST_Num ,输出为 ON 。
    • MOVE 指令:当 IN_RANGE 指令和比较指令都满足条件(输出为 ON )时,MOVE 指令使能(EN 有效 ),将 #ST_Num 的值赋给 #GlobalService.ST.ST_Num ,实现最大工位编号的更新赋值 。

2   4-5#程序段

 2.1 程序段截图

 2.2 程序段解释
程序段 4:手动选择激活
  • 第一行逻辑
    • 当 #LocalService.PB_Select (本地服务的手动选择按钮信号 )产生上升沿(通过 P_TRIG 指令检测 ,P[5] 可能是该上升沿检测功能块的相关参数 ),且 #LocalService.Control_Act (本地服务控制激活信号 )为 ON ,同时 #GlobalService.RBT_Select[#LocalService.Rbt_Num] (全局服务中对应本地机器人编号的选择信号 )为 OFF 时,执行置位操作 (S) ,将 #GlobalService.RBT_Select[#LocalService.Rbt_Num] 置为 ON ,最后通过复位指令 (R) 将 #LocalService.PB_Select 复位。
    • 作用是实现手动选择机器人,在满足控制激活且对应机器人未被选择的条件下,通过按钮上升沿触发选择操作并复位按钮信号。
  • 第二行逻辑
    • 同样是 #LocalService.PB_Select 产生上升沿(P_TRIG 指令,P[6] 为相关参数 ),#LocalService.Control_Act 为 ON ,且 #GlobalService.RBT_Select[#LocalService.Rbt_Num] 为 ON 时,执行复位操作 (R) ,将 #GlobalService.RBT_Select[#LocalService.Rbt_Num] 复位为 OFF ,同时复位 #LocalService.PB_Select 。
    • 用于取消已选择的机器人,在已选择且控制激活情况下,通过按钮上升沿触发取消选择并复位按钮信号。
程序段 5:激活机器人选择
  • 上方逻辑块
    • 当 #LocalService.Control_Act (本地服务控制激活信号 )为 ON ,且满足以下四个或关系条件之一时:
      • #GlobalService.Status.Select_All_G (全局服务中选择所有带 G 功能机器人的状态信号 )为 ON 且 #Robot_with_G (表示机器人带有 G 功能的信号 )为 ON 。
      • #GlobalService.Status.Select_All_Weld (全局服务中选择所有焊接机器人的状态信号 )为 ON 且 #Robot_with_Weld (表示机器人带有焊接功能的信号 )为 ON 。
      • #GlobalService.Status.Select_WeldRBT (全局服务中选择焊接机器人的状态信号 )为 ON ,#Robot_with_G 为 OFF 且 #Robot_with_Weld 为 ON 。
      • #GlobalService.Status.Select_All_RBT (全局服务中选择所有机器人的状态信号 )为 ON 。
    • 此时若 #LocalService.PB_Select 产生上升沿(P_TRIG 指令,P[4] 为相关参数 ),且 #LocalService.Service_Need (本地服务需求信号 )为 OFF ,则执行置位操作 (S) ,将 #GlobalService.RBT_Select[#LocalService.Rbt_Num] 置为 ON 。
    • 这部分逻辑用于根据不同全局选择状态、机器人功能状态以及按钮上升沿等条件,自动选择机器人。
  • 下方逻辑块
    • 当 #LocalService.Control_Act 为 ON ,#ST_Num (工位编号 )在 1 到 16 范围内(通过 IN_RANGE 指令判断 ),且 #GlobalService.ST_CT_PB_Array[#ST_Num] (与工位相关的数组变量 )有变化产生上升沿(P_TRIG 指令,P[8] 为相关参数 )时,结合上方的条件逻辑,共同参与机器人的选择控制 。
    • 进一步完善了在特定工位编号范围内,根据相关数组变量变化来参与机器人选择激活的逻辑。

3   6#程序段

 3.1 程序段截图

 3.2 程序段解释
整体功能概述

该程序段名称为 “程序段 6:取消激活”,主要功能是根据一系列条件组合,对 #GlobalService.RBT_Select[#LocalService.Rbt_Num] (全局服务中对应本地机器人编号的选择信号 )进行复位操作,即取消机器人的激活状态。同时,还包含部分与工位编号相关的逻辑判断。

条件分析
  1. 主控条件: #LocalService.Control_Act (本地服务控制激活信号 )需为 ON ,这是整个程序段执行相关操作的前提条件,只有本地服务处于控制激活状态时,后续取消激活逻辑才会生效。
  2. 多条件并联部分
    • 与 #GlobalService.HMI_Select (人机界面的选择信号 )相关的条件:存在多个不同数值(如 102030 等 )与 #GlobalService.HMI_Select 进行比较的情况,结合 #Robot_with_Weld (机器人是否具备焊接功能信号 )、#Tool_Global.Select (全局工具选择信号 )、#Tool_Global.Select_OK (全局工具选择确认信号 )、#Robot_with_G (机器人是否具备 G 功能信号 )等信号进行并联判断。例如,当 #GlobalService.HMI_Select 等于 10 且 #Robot_with_Weld 为 ON ,或者 #GlobalService.HMI_Select 等于 20 且 #Tool_Global.Select 为 OFF 等不同组合条件满足时,会参与到后续逻辑中。这些条件组合可能用于根据人机界面不同选择指令以及机器人和工具状态,来决定是否执行取消激活操作。
    • #GlobalService.Status.Cancel_Service (全局服务取消服务状态信号 )与 #LocalService.Service_Active (本地服务激活信号 )的组合:当 #GlobalService.Status.Cancel_Service 为 ON 且 #LocalService.Service_Active 为 ON 时,也会作为满足条件的一部分。这表明在全局有取消服务指令且本地服务处于激活状态时,是取消激活机器人的条件之一。
    • #Service_Cancel (可能是服务取消信号 )与 #LocalService.Service_Active 的组合:当 #Service_Cancel 为 ON 且 #LocalService.Service_Active 为 ON 时,同样是满足条件的一种情况,用于判断是否要取消机器人激活。
  3. 工位编号相关部分
    • #LocalService.Control_Act 为 ON 时,#ST_Num (工位编号 )需在 1 到 16 范围内(通过 IN_RANGE 指令判断 ) 。在此基础上,若 #GlobalService.ST_CT_PB_Array[#ST_Num] (与工位相关的数组变量 )产生下降沿(通过 N_TRIG 指令检测,P[7] 为相关参数 ),且 #LocalService.Service_Active 为 OFF ,也会参与到取消激活机器人的逻辑判断中。这部分逻辑可能用于在特定工位编号范围内,根据工位相关数组变量的状态变化来决定是否取消机器人激活。
操作执行

当上述众多并联条件中任意一个条件组合满足时,就会执行复位操作 (R) ,将 #GlobalService.RBT_Select[#LocalService.Rbt_Num] 复位为 OFF ,从而实现取消对应机器人激活状态的功能。

4   9#程序段

 4.1 程序段截图

  

4.2 程序段解释
整体功能概述

这段程序主要通过 MOVE 指令,在满足一定条件下,对 #LocalService.Service_Select 进行赋值操作,同时还涉及到 #Service_Cancel 信号的控制以及部分条件判断,与本地服务选择和取消相关。

指令及条件分析
  1. MOVE 指令部分
    • 程序中多次出现 MOVE 指令,该指令功能是将输入值(IN 引脚 )传递到输出值(OUT1 引脚 )。当 #LocalService.Control_Act (本地服务控制激活信号 )为 ON ,且对应的 #LocalService.Hmi_PB.%Xn (本地人机界面按钮信号,n 为不同编号 )为 ON 时,MOVE 指令的使能端 EN 有效。
    • 不同行中,IN 引脚输入不同的固定值,如 1C2C3C 等十六进制数,这些固定值会被传递给 #LocalService.Service_Select 。例如,当 #LocalService.Control_Act 和 #LocalService.Hmi_PB.%X1 都为 ON 时,十六进制值 1C 会被赋值给 #LocalService.Service_Select 。这一系列操作可能用于根据不同人机界面按钮操作,给本地服务选择变量赋予特定值,以指示不同的服务选择状态。
  2. #Service_Cancel 信号部分
    • 当 #LocalService.Hmi_PB.%X8 (特定人机界面按钮信号 )为 ON 时,会使 #Service_Cancel (服务取消信号 )为 ON 。这表明按下该按钮可触发服务取消操作,可能用于中断当前服务选择或执行取消相关流程。
  3. 条件判断部分
    • 底部有一行逻辑,当 #ST_Service_Active (工位服务激活信号 )为 ON ,且 #GlobalService.ST.ST_Control[#CT_Num].Cancel_Service (全局服务中对应工位控制的取消服务信号 )为 ON 时,会将 0 赋值给 #LocalService.Service_Select 。这是在特定工位服务激活且有全局取消服务指令情况下,对本地服务选择进行复位操作,确保服务状态符合系统要求。

5   16-17#程序段

 5.1 程序段截图

5.2 程序段解释
程序段 16:工具号数值是否正常
  • 第一组逻辑
    • 当 #GlobalService.Tool_Select_Weld (全局服务中焊接工具选择变量 )小于 0 (通过 < int 比较指令判断 )时,MOVE 指令的使能端 EN 有效。此时,MOVE 指令将常数 0 赋值给 #GlobalService.Tool_Select_Weld 。这一步的作用是确保 #GlobalService.Tool_Select_Weld 的数值不会小于 0 ,若其值异常偏小,就将其修正为 0 。
  • 第二组逻辑
    • 当 #GlobalService.Tool_Select_Weld 大于 8 时,虽然图中未明确后续操作(仅有比较指令 ),但结合整体功能推测,也是对该变量的数值范围进行监控,可能后续有类似修正操作或关联其他逻辑判断 。
  • 第三组逻辑
    • 对于 #Local_Tool_ID (本地工具 ID 变量 ),当它小于 0 时,MOVE 指令使能,将常数 0 赋值给 #Local_Tool_ID ,保证本地工具 ID 不会出现异常小的数值。
  • 第四组逻辑
    • 当 #Local_Tool_ID 大于 8 时,同样仅有比较指令,作用是监控其数值上限,确保工具 ID 在合理范围 。
    • 该程序段整体是对焊接工具选择变量和本地工具 ID 变量进行数值范围检查和修正,保证工具号数值处于正常范围(0 - 8 之间 )。
程序段 17:机器人当前工具编号无异常
  • 逻辑判断
    • 当 #Rbt_Tool_ID (机器人工具 ID 变量 )大于等于 0 (通过 >= int 比较指令判断 )且小于等于 8 (通过 <= int 比较指令判断 ),同时 #Tool_ID_OK (工具 ID 正常信号 )为 ON 时,执行跳转非(JMPN )指令。
    • JMPN 指令表示若前面条件都满足(即工具 ID 数值正常 ),则跳转到指定位置(图中显示跳转至程序段46 ),跳过中间部分程序逻辑 。若条件不满足,即机器人工具 ID 不在 0 - 8 范围内或者 #Tool_ID_OK 信号异常,则不执行跳转,继续执行后续程序。该程序段用于判断机器人当前工具编号是否在正常范围内,并根据判断结果决定程序执行流程 。

相关文章:

  • day12:遗传算法及常见优化算法分享
  • 经典算法 青蛙跳杯子
  • 算法查找目录
  • 【C++】类和对象(中)——默认成员函数详解(万字)
  • Qt多线程TCP服务器实现指南
  • 【iview】icon样式
  • 速通Ollama本地部署DeepSeek-r1
  • ZYNQ 纯PL端逻辑资源程序固化流程
  • OpenSSL应用实践:嵌入式数据安全实战指南
  • Python3 基本数据类型
  • 408考研逐题详解:2009年第6题
  • Leetcode刷题报告2——双指针法
  • 假网关-为了节省公网IP的骚操作
  • KDD 2025 | (8月轮)时空数据(Spatial-temporal)论文总结
  • 【计算机视觉】语义分割:Mask2Former:统一分割框架的技术突破与实战指南
  • 第十一届蓝桥杯 2020 C/C++组 既约分数
  • 「Mac畅玩AIGC与多模态11」开发篇07 - 使用自定义名言插件开发智能体应用
  • 《Java高级编程:从原理到实战 - 进阶知识篇二》
  • spring源码学习之一-----spring依赖包作用分析
  • 【Machine Learning Q and AI 读书笔记】- 04 彩票假设
  • 五一假期多地政府食堂对外开放:部分机关食堂饭菜“秒没”
  • 安徽六安特色产品将“组团”入沪,借力五五购物节开拓市场
  • 中国队夺跳水世界杯总决赛首金
  • 王毅谈金砖国家反恐和网络安全合作
  • 关于“十五五”,在上海召开的这场座谈会释放最新信号
  • 十二届上海市委第六轮巡视全面进驻,巡视组联系方式公布