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

2、引脚 定义
引脚功能
-
输入引脚
- “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 )功能相关的输入信号,涉及不同设备或状态下的试运转状态反馈 。
-
输出引脚
- 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、功能块的使用方法
-
输入信号连接:将外部传感器、其他功能块或程序模块输出的相关信号,准确连接到上述对应的输入引脚。比如,将检测机器人位置的传感器信号连接到 ““STO30_Rbt_DB”.Rbt01.DatePl.In_HOME” 引脚 ,用于判断机器人是否在原点位置。
-
功能块调用:在程序中合适的位置调用 “xxx_FB3554_RobotService” 功能块,不同编程环境调用方式有差异,一般是在程序编辑界面按照语法规则添加功能块调用指令 。
-
逻辑处理与输出应用:功能块内部会依据预设逻辑对输入信号进行处理 。处理后的输出信号可用于控制其他设备、作为其他功能块的输入,或者用于状态显示、故障诊断等。例如,“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)相关逻辑,结合定时器、触发指令等实现对屏蔽请求的计时、确认及状态处理 。
- TON(通电延时定时器 )
程序段 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,实现最大工位编号的更新赋值 。
- IN_RANGE 指令:用于判断
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] (全局服务中对应本地机器人编号的选择信号 )进行复位操作,即取消机器人的激活状态。同时,还包含部分与工位编号相关的逻辑判断。
条件分析
- 主控条件:
#LocalService.Control_Act(本地服务控制激活信号 )需为ON,这是整个程序段执行相关操作的前提条件,只有本地服务处于控制激活状态时,后续取消激活逻辑才会生效。 - 多条件并联部分
- 与
#GlobalService.HMI_Select(人机界面的选择信号 )相关的条件:存在多个不同数值(如10、20、30等 )与#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时,同样是满足条件的一种情况,用于判断是否要取消机器人激活。
- 与
- 工位编号相关部分
#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 信号的控制以及部分条件判断,与本地服务选择和取消相关。
指令及条件分析
- MOVE 指令部分
- 程序中多次出现
MOVE指令,该指令功能是将输入值(IN引脚 )传递到输出值(OUT1引脚 )。当#LocalService.Control_Act(本地服务控制激活信号 )为ON,且对应的#LocalService.Hmi_PB.%Xn(本地人机界面按钮信号,n为不同编号 )为ON时,MOVE指令的使能端EN有效。 - 不同行中,
IN引脚输入不同的固定值,如1C、2C、3C等十六进制数,这些固定值会被传递给#LocalService.Service_Select。例如,当#LocalService.Control_Act和#LocalService.Hmi_PB.%X1都为ON时,十六进制值1C会被赋值给#LocalService.Service_Select。这一系列操作可能用于根据不同人机界面按钮操作,给本地服务选择变量赋予特定值,以指示不同的服务选择状态。
- 程序中多次出现
- #Service_Cancel 信号部分
- 当
#LocalService.Hmi_PB.%X8(特定人机界面按钮信号 )为ON时,会使#Service_Cancel(服务取消信号 )为ON。这表明按下该按钮可触发服务取消操作,可能用于中断当前服务选择或执行取消相关流程。
- 当
- 条件判断部分
- 底部有一行逻辑,当
#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信号异常,则不执行跳转,继续执行后续程序。该程序段用于判断机器人当前工具编号是否在正常范围内,并根据判断结果决定程序执行流程 。
- 当
