ABB系统输入输出信号注解
- 格式:xls
- 大小:22.00 KB
- 文档页数:2
输入、输出目录1、总则1.1、输入、输出窗1.2、选择输入、输出表1.3、确定最普通的输入、输出表2、改变信号数据2.1、改变数字输出数据2.2、改变模拟输出信号或者是一组输出信号的数据3、显示信息3.1、显示给出信号的信息3.2、显示设施的所有数字信号表3.3、打印输入、输出表3.4、中断的信号4、输入、输出总线回收输入/输出1、总则机器人装有数字模拟信号,在系统参数中这些数字已命名和成形,从这些信息也可以确定各种系统的动作,如:程序启动。
另外,机器人还可以通过串联通道和广播与计算机、打印机相连接。
1.1、输入/输出窗按下输入/输出键打开窗口。
该窗口显示适应信号或设施的表,它也提供信号的数据信息,见图1。
文件编辑视图命名IO 特殊输入/输出所有的信号名称数据类型4(64) Di1 1 DIDi2 0 DIGrip1 0 DOGrip2 1 DOGrip3 1 DOGrip4 1 DOProgno 13 GOWelderror 0 DO0 1窗中显示的数据每隔一秒钟自动修改1.2、选择I/O表通过选择View或者AliasIO菜单中的任何一个表,就可以决定你想要看的信息。
视图:图表名称表中的内容最重要的最重要信号数据(最有用的),该表格可以自定义适用任何机器人的安装所有的信号所有的信号数据数字输入所有数字输入信号的数据数字输出所有数字输出信号的数据模拟所有模拟输入/输出信号的数据数字组所有的数字信号组安全所有的安全信号数据装置所有的I/O装置的类型和地址I/O装置:名称一个装置的所有信号的数据和位置,详见此表:选择视图:装置选择所需装置并按下进入组合:名称在信号组中的所有信号的位置和数据详见此表:选择视图:Groups.选择所需装置并按下进入AliasIO(命名IO):图表名称表中的信息所有的信号所有的信号值数字信号输入所有的数字信号输入值数字信号输出所有的数字信号输出值逻辑信号所有的逻辑信号输入输出值成组信号所有的成组数字信号值用于在RAPID编程中显示输入/输出别名变量。
进入主窗口点击ABB主菜单, -> 选择 Control Panel定义输入输出信号进入控制面板窗口• 进入Control Panel 窗口后, 选择 Configuration定义输入输出信号• 只有完成定义输入输出板,才能定义相应 的输入输出信号。
• 点击Topics菜单,选择I/O后,在列表中点击 Signal。
定义输入输出信号• 点击Add, 增加输入输出信号。
定义输入输出信号• Name-信号名称。
按住Name进入文本编辑窗口,定义输入输 出信号名称,在系统内名称不允许重复, 第一位必须为字母,最长 16 位字符。
定义输入输出信号• Type of signal-输入输出信号的类型。
按住Type of signal, 在出现的列表中选择相 应的信号类型。
定义输入输出信号• Assigned to unit-分配输入输出板。
按住Assigned to unit,在列表中选择相应的 输入输出板。
定义输入输出信号• Unit mapping -映射物理端口。
按住该选项,进入输入窗口输入相应的映射 端口号.与输入输出板的特性相关。
定义输入输出信号• Access level 按住Access level,在列表中选择相应的 Access level 。
定义数字输入信号-DI 及GI• Filter time passive-低电平保持时间。
按住该选项进入输入窗口,输入相应值。
在机器人运动前,输入值 0 必须保持相应 时间,单位毫秒,最小 10毫秒 ( 默认 ),最 大 32 秒。
定义数字输入信号-DI 及GI• Filter time active-高电平保持时间。
按住该选项进入输入窗口,输入相应值。
在机器人运动前,输入值 1 必须保持相应 时间,单位毫秒,最小 10毫秒 ( 默认 ),最 大 32 秒。
定义数字输入信号-DI 及GI• Invert physical value -信号倒置。
System Input Action内的功能:1、Motors On:伺服使能On,和控制柜上电机开启是一样的功能;2、Motors Off:伺服使能Off,机器人控制器会在状态变化前停止;3、Star t:启动,机器人程序启动,和示教器上启动按钮功能一致;4、Start at main:在主程序启动,机器人从主程序从头开始并启动;5、Stop:停止,机器人程序停止,和示教器上停止按钮功能一致;6、Quick Stop:快速停止,机器人程序、本体快速停止,和Stop不同的是,快速停止会让机器人本体快速停下来,而停止会有些许的减速过程,两者停止的反应速度不一样;7、Soft Sto p:软停止,机器人程序、本体软停止,机器人本体减速度比较大地停止;8、Stop at end of cycle:程序在执行完整个循环时停止;9、Interrupt:中断,触发机器人中断程序;10、Load and start:从大容量存储装置中载入一段RAPID程序然后启动;11、Reset Emergency stop:复位紧急停止,仅在硬件急停没在按下的情况下有效;12、Reset Execution Error Signal:复位并输出出错信号;13、Motors On and Start:电机使能并启动程序;14、Stop at end of Instruction:程序会在执行完当前指令后停止;15、System Reset:重启系统;16、Load:从大容量存储装置中载入一段RAPID程序;17、Backup:备份,把当前系统内数据、参数备份;18、SimMode:模拟模式;19、Disable backup:避免启动一次备份;20、Limit Speed:极限速度,降低机器人运动速度;21、PP to Main:PP移至Main,与示教器上调试的选项一致;22、Collision Aviodance:激活碰撞避免,仅适用于IRB14000;23、Write Access:获得写权限;24、Enable Energy Saving:启动节能模式;System Output Status内的功能:1、Motor On:当电机使能为On时输出;2、Motor Off:当电机使能为Off时输出;3、Cycle On:执行机器人程序时输出;4、Emergency Stop:当紧急停止被触发时输出;5、Auto On:自动运行时输出;6、Runchain Ok:安全链链OK;7、TCP Speed:TCP运行速度的模拟信号;8、Execution Error:报警出错时输出;9、Motor On State:电机在启动状态;10、Motor Off State:电机在关闭状态;11、Power Fair Error:程序无法在上电失败后从当前位置继续执行时输出;12、Motion Supervision Triggered:触发运动监控;13、Motion Supervision On:运动监控启动;14、Path return Region Error:系统在尝试启动相关机器人程序(不过由于相关机器人离编程路径太远,因此启动将会失败)时输出;15、TCP Speed Reference:TCP编程速度的模拟信号;16、Simulated I/O:系统内至少有一个IO被仿真时输出;17、Mechanical Unit Active:机械单元启动;18、TaskExecution:执行已配置任务时输出;19、Mechanical Unit Not Moving:机械单元不在运动中;20、Production Execution Error:生产发生错误;21、Backup in progress:正在进行备份;22、Backup error:备份失败时输出;23、SimMode:仿真模式下输出;24、Limit Speed:由系统输入信号LimitSpeed触发;25、Collision Avoidance:碰撞避免激活时输出,仅限于IRB14000;26、Write Access:获得写权限;27、Energy Saving Blocked:节能模式下时输出;28、CPU Fan Not Running:中央处理器散热风扇没有启动;29、Temperature Warning:温度过高(95度);30、Absolute Accuracy Active:绝对精度激活时输出;31、SMB Bettery Charge Low:SMB电池电量过低;系统输入:系统输入的意义为当输入点为1时对应的功能动作。
输入、输出目录1、总则1.1、输入、输出窗1.2、选择输入、输出表1.3、确定最普通的输入、输出表2、改变信号数据2.1、改变数字输出数据2.2、改变模拟输出信号或者是一组输出信号的数据3、显示信息3.1、显示给出信号的信息3.2、显示设施的所有数字信号表3.3、打印输入、输出表3.4、中断的信号4、输入、输出总线回收输入/输出1、总则机器人装有数字模拟信号,在系统参数中这些数字已命名和成形,从这些信息也可以确定各种系统的动作,如:程序启动。
另外,机器人还可以通过串联通道和广播与计算机、打印机相连接。
1.1、输入/输出窗按下输入/输出键打开窗口。
该窗口显示适应信号或设施的表,它也提供信号的数据信息,见图1。
窗中显示的数据每隔一秒钟自动修改1.2、选择I/O表通过选择View或者AliasIO菜单中的任何一个表,就可以决定你想要看的信息。
视图:图表名称表中的内容最重要的最重要信号数据(最有用的),该表格可以自定义适用任何机器人的安装所有的信号所有的信号数据数字输入所有数字输入信号的数据数字输出所有数字输出信号的数据模拟所有模拟输入/输出信号的数据数字组所有的数字信号组安全所有的安全信号数据装置所有的I/O装置的类型和地址I/O装置:名称一个装置的所有信号的数据和位置,详见此表:选择视图:装置选择所需装置并按下进入组合:名称在信号组中的所有信号的位置和数据详见此表:选择视图:Groups.选择所需装置并按下进入AliasIO(命名IO):图表名称表中的信息所有的信号所有的信号值数字信号输入所有的数字信号输入值数字信号输出所有的数字信号输出值逻辑信号所有的逻辑信号输入输出值成组信号所有的成组数字信号值用于在RAPID编程中显示输入/输出别名变量。
例如:“V AR singaldo alias_do1;”“AliasIO do_1,alias_do1;”注:V AR 定义变量在模块中必须执行。
执行“指令”AliasIO do _1,alias_do1”后,按照在视图菜单中显示原始信号相同的方法通过AliasIO菜单中可以显示“the加一个信号,选择一个适应信号并按下Incl,然后用它名称左边的X来标这个信号。
输入、输出目录1、总则1.1、输入、输出窗1.2、选择输入、输出表1.3、确定最普通的输入、输出表2、改变信号数据2.1、改变数字输出数据2.2、改变模拟输出信号或者是一组输出信号的数据3、显示信息3.1、显示给出信号的信息3.2、显示设施的所有数字信号表3.3、打印输入、输出表3.4、中断的信号4、输入、输出总线回收输入/输出1、总则机器人装有数字模拟信号,在系统参数中这些数字已命名和成形,从这些信息也可以确定各种系统的动作,如:程序启动。
另外,机器人还可以通过串联通道和广播与计算机、打印机相连接。
1.1、输入/输出窗按下输入/输出键打开窗口。
该窗口显示适应信号或设施的表,它也提供信号的数据信息,见图1。
文件编辑视图命名IO 特殊输入/输出所有的信号名称数据类型4(64) Di1 1 DIDi2 0 DIGrip1 0 DOGrip2 1 DOGrip3 1 DOGrip4 1 DOProgno 13 GOWelderror 0 DO0 1窗中显示的数据每隔一秒钟自动修改1.2、选择I/O表通过选择View或者AliasIO菜单中的任何一个表,就可以决定你想要看的信息。
视图:图表名称表中的内容最重要的最重要信号数据(最有用的),该表格可以自定义适用任何机器人的安装所有的信号所有的信号数据数字输入所有数字输入信号的数据数字输出所有数字输出信号的数据模拟所有模拟输入/输出信号的数据数字组所有的数字信号组安全所有的安全信号数据装置所有的I/O装置的类型和地址I/O装置:名称一个装置的所有信号的数据和位置,详见此表:选择视图:装置选择所需装置并按下进入组合:名称在信号组中的所有信号的位置和数据详见此表:选择视图:Groups.选择所需装置并按下进入AliasIO(命名IO):图表名称表中的信息所有的信号所有的信号值数字信号输入所有的数字信号输入值数字信号输出所有的数字信号输出值逻辑信号所有的逻辑信号输入输出值成组信号所有的成组数字信号值用于在RAPID编程中显示输入/输出别名变量。
S y s t e m I n p u t A c t i o n内的功能:1、MotorsOn:伺服使能On,和控制柜上电机开启是一样的功能;2、MotorsOff:伺服使能Off,机器人控制器会在状态变化前停止;3、Star t:启动,机器人程序启动,和示教器上启动按钮功能一致;4、Startatmain:在主程序启动,机器人从主程序从头开始并启动;5、Stop:停止,机器人程序停止,和示教器上停止按钮功能一致;6、QuickStop:快速停止,机器人程序、本体快速停止,和Stop不同的是,快速停止会让机器人本体快速停下来,而停止会有些许的减速过程,两者停止的反应速度不一样;7、SoftSto p:软停止,机器人程序、本体软停止,机器人本体减速度比较大地停止;8、Stopatendofcycle:程序在执行完整个循环时停止;9、Interrupt:中断,触发机器人中断程序;10、Loadandstart:从大容量存储装置中载入一段RAPID程序然后启动;11、ResetEmergencystop:复位紧急停止,仅在硬件急停没在按下的情况下有效;12、ResetExecutionErrorSignal:复位并输出出错信号;13、MotorsOnandStart:电机使能并启动程序;14、StopatendofInstruction:程序会在执行完当前指令后停止;15、SystemReset:重启系统;16、Load:从大容量存储装置中载入一段RAPID程序;17、Backup:备份,把当前系统内数据、参数备份;18、SimMode:模拟模式;19、Disablebackup:避免启动一次备份;20、LimitSpeed:极限速度,降低机器人运动速度;21、PPtoMain:PP移至Main,与示教器上调试的选项一致;22、CollisionAviodance:激活碰撞避免,仅适用于IRB14000;23、WriteAccess:获得写权限;24、EnableEnergySaving:启动节能模式;SystemOutputStatus内的功能:1、MotorOn:当电机使能为On时输出;2、MotorOff:当电机使能为Off时输出;3、CycleOn:执行机器人程序时输出;4、EmergencyStop:当紧急停止被触发时输出;5、AutoOn:自动运行时输出;6、RunchainOk:安全链链OK;7、TCPSpeed:TCP运行速度的模拟信号;8、ExecutionError:报警出错时输出;9、MotorOnState:电机在启动状态;10、MotorOffState:电机在关闭状态;11、PowerFairError:程序无法在上电失败后从当前位置继续执行时输出;12、MotionSupervisionTriggered:触发运动监控;13、MotionSupervisionOn:运动监控启动;14、PathreturnRegionError:系统在尝试启动相关机器人程序(不过由于相关机器人离编程路径太远,因此启动将会失败)时输出;15、TCPSpeedReference:TCP编程速度的模拟信号;16、SimulatedI/O:系统内至少有一个IO被仿真时输出;17、MechanicalUnitActive:机械单元启动;18、TaskExecution:执行已配置任务时输出;19、MechanicalUnitNotMoving:机械单元不在运动中;20、ProductionExecutionError:生产发生错误;21、Backupinprogress:正在进行备份;22、Backuperror:备份失败时输出;23、SimMode:仿真模式下输出;24、LimitSpeed:由系统输入信号LimitSpeed触发;25、CollisionAvoidance:碰撞避免激活时输出,仅限于IRB14000;26、WriteAccess:获得写权限;27、EnergySavingBlocked:节能模式下时输出;28、CPUFanNotRunning:中央处理器散热风扇没有启动;29、TemperatureWarning:温度过高(95度);30、AbsoluteAccuracyActive:绝对精度激活时输出;31、SMBBetteryChargeLow:SMB电池电量过低;系统输入:系统输入的意义为当输入点为1时对应的功能动作。
PROC main() Array initApplication;UserInit;!HomePos;!WHILE DOutput(doMainTaskOK)=1 DO(主任务已经OK信号)cycleStart;(信号的初始化,向PLC请求程序号,机器人模式判定,干涉区的检测等)!TEST nProgNum(检测PLC给的程序号,执行下列程序)CASE 31:! Program 31 = C538 C538车型应用程序P31;(应用程序)CASE 100:! Program 100 : Tool Changer Service Program!P100;CASE 101:! Program 101 : Tool 1 Service Program!P101;CASE 102:! Program 102 : Tool 1 Tip Change Program!P102;CASE 103:! Program 103 : Tool 1 Tip Dress Program!P103;CASE 105:! Program 105 : Tool 1 Spare / End User!P105;CASE 106:! Program 106 : Tool 2 Service Program!P106;CASE 107:! Program 107 : Tool 2 Tip Change Program!P107;CASE 108:! Program 108 : Tool 2 Tip Dress Program!P108;CASE 110:! Program 110 : Tool 2 Spare / End User!P110;CASE 111:! Program 111 : Tool 3 Service Program!P111;CASE 112:! Program 112 : Tool 3 Tip Change Program!P112;CASE 113:! Program 113 : Tool 3 Tip Dress Program!P113;CASE 115:! Program 115 : Tool 3 Spare / End User!P115;CASE 116:! Program 116 : Tool 4 Service Program!P116;DEFAULT:dcpFaultSFE 1;(诊断程序,当程序号不在程序列表内执行该程序)ExitCycle;(循环停止指令)ENDTEST!cycleEnd;(事件信息通过PLC 发送到CMU ,时间计时器停止,TPU 清屏,程序号清零等)ENDWHILEENDPRENDMODULE系统程序模块数据模块应程序模块主程序模块!=============== <P31> ===============! LOCATION: Halewood! PROJECT: L550! ROBOT SN: xx-xxxxx! STATION: Zxxx.xxxRxx! LINE BUILDER: Xxxxx! LAST CHANGE: yyyy:mm:dd!=====================================! Request to go in to Area 1 but do not waitAreaInReq 1,"Area in 1 = Station ?????"\NoWait;区域1请求进入,不等待;!! Move to pounce positionMoveAbsJ jPounce, v300, z5, t_rsw_V137533;移动一个暂停位置;!! Check request for Area 1AreaInReq 1,"Area in 1 = Station 40 FX01"\RetToHome;!! Check return to home flagIF NOT bRetToHome THEN机器人原点位置检查,机器人不在原点位置执行下一步动作;! Start of robot sequence!!AreaInReq 1, " Area in 1 = Station 40 Weld";!P31_Weld_3;pa_22_210_r03_rsw01_L538_b;点焊应用程序;JobDone 1;区域1工作完成;AreaOutRel 1;区域1开始释放;!!! End of robor sequence结束机器人步序! Set / check for end of cycle from PLC PLC发送循环结束命令initRS;IO信号初始化,循环结束;! Goto home positionHomePos;回原点位置;! Check for user resetUserReset;用户自定义复位;ELSE! Go to home position回到home位置HomePos;! Check home and release all collision areas! init_gr_1\ClearAllColZones;initHome\ClearAllColZones; 检查机器人回原点和所有碰撞区域初始化;ENDIFRETURN;ENDPROCPROC CollZoneRel(num nCollRel)! Update yamasuzmistTempCT:="Move time to COLLISION ZONE RELEASE "+ValToStr(nCollRel);upDateYAM "ENVA",stTempCT;! Control back to main taskbColZoneRelease:=FALSE;bColZoneRequest:=FALSE;! Check request number is validWHILE (nCollRel<1) OR (nCollRel>62) DO判定释放区域号,如果不在1-62范围内,直接报错,然后进入错误诊断程序;stMsg1:=ValToStr(nCollRel);dcpFaultSFE 5;ENDWHILE!! Check last collision memory typeIF stColZoneMem=stColZoneRel THEN如果寄存的碰撞信息等于区域释放信息(字符串信息)! Check last collision memory numberIF nColZoneMem=nCollRel THEN如果寄存的区域碰撞号等于区域释放号,执行下一步! Check if collision zone is already releasedIF NOT bColZoneSet{nCollRel} THEN如果碰撞区域置位为假,那么执行下一步! Update yamasuzmi and reset IOstTempCT:="Wait time for COLLISION ZONE RELEASE "+ValToStr(nCollRel);IF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0;碰撞区域释放信号复位IF GOutput(goColZone)<>0 SetGO goColZone,0;碰撞区域请求组信号复位upDateYAM "NVA",stTempCT;stColZoneMem:="";nColZoneMem:=0;RETURN;ELSEWHILE TRUE DOIF GOutput(goColZone)<>nCollRel THEN如果碰撞区域置位信号为真,那么判定请求的区域号是否等于释放的区域号,如果不等执行下面指令! Reset IO and flagsSetDO do031_ColZoneReq,0;区域请求信号复位SetDO do032_ColZoneRel,0;区域释放信号复位bColZoneRelease:=FALSE;区域释放为假bColZoneRequest:=FALSE;区域请求为假SetGO goColZone,0;请求区域组信号复位WaitUntil GInput(giColZone)=0 AND DInput(di031_ColZoneClr)=0 ANDDInput(di032_ColZoneSet)=0\MaxTime:=5\TimeFlag:=bTimedOutFlag;等待PLC复位信号,最大等待时间为5s! Check current PLC input statusWHILE DInput(di031_ColZoneClr)=1 OR DInput(di032_ColZoneSet)=1 DO如果PLC没有复位信号,则进入错误诊断程序dcpFaultSFE 8;ENDWHILE! Set group output to PLCSetGO goColZone,nCollRel;将碰撞区域号以组信号的形式发送给PLCWaitTime 0.1;ELSE! Reset IO and flagsIF DOutput(do005_FaultDCP)=1 SetDO do005_FaultDCP,0;DCP诊断信号复位IF DOutput(do032_ColZoneRel)=0 SetDO do032_ColZoneRel,1;区域释放信号复位! Wait for PLC to respondWHILE GInput(giColZone)<>nCollRel OR DInput(di031_ColZoneClr)<>1 DOIF GOutput(goColZone)<>nCollRel SetGO goColZone,nCollRel; 将碰撞区域号以组信号的形式发送给PLCIF DOutput(do032_ColZoneRel)=0 SetDO do032_ColZoneRel,1;区域释放信号置位stMsg3:=ValToStr(nCollRel);debugText 41," ";报错误41ENDWHILE! Update yamasuzmi, set array and IOstTempCT:="Wait time for COLLISION ZONE "+ValToStr(nCollRel);IF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0; 区域释放信号复位IF GOutput(goColZone)<>0 SetGO goColZone,0;碰撞区域组信号复位bColZoneSet{nCollRel}:=FALSE;碰撞区域置位信号为假upDateYAM "NVA",stTempCT;stColZoneMem:="";nColZoneMem:=0;分配区域号赋值为零RETURN;ENDIFENDWHILEENDIFELSEIF nColZoneMem>0 AND nColZoneMem<63 THEN! Check if last release already resetIF NOT bColZoneSet{nColZoneMem} THEN如果碰撞区域置位信号为假! Collision zone released / Reset FlagsIF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0;碰撞区释放信号复位IF GOutput(goColZone)<>0 SetGO goColZone,0;碰撞区域组信号复位stColZoneMem:="";nColZoneMem:=0;ELSE如果碰撞区域置位信号为真,那么直接跳入错诊断程序! Last collision zone not releaseddcpFaultSFE 23;IF nTempNo=1 THEN! YES = Robot has released collision zone continueIF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;bColZoneSet{nColZoneMem}:=FALSE;stColZoneMem:="";nColZoneMem:=0;WaitTime 0.1;ELSEIF nTempNo=2 THEN! INGORE = Continue without collision zoneIF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;stColZoneMem:="";nColZoneMem:=0;WaitTime 0.1;ELSE! Robot wait collision zone setWHILE bColZoneSet{nColZoneMem} DOIF GOutput(goColZone)<>nColZoneMem THEN! Reset IO and flagsSetDO do031_ColZoneReq,0;SetDO do032_ColZoneRel,0;bColZoneRelease:=FALSE;bColZoneRequest:=FALSE;SetGO goColZone,0;WaitUntil GInput(giColZone)=0 AND DInput(di031_ColZoneClr)=0 AND DInput(di032_ColZoneSet)=0\MaxTime:=5\TimeFlag:=bTimedOutFlag;! Check current PLC input statusWHILE DInput(di031_ColZoneClr)=1 OR DInput(di032_ColZoneSet)=1 DOdcpFaultSFE 8;ENDWHILE! Set group output to PLCSetGO goColZone,nColZoneMem;WaitTime 0.1;ELSE! Reset IO and flagsIF DOutput(do005_FaultDCP)=1 SetDO do005_FaultDCP,0;IF DOutput(do032_ColZoneRel)=0 SetDO do032_ColZoneRel,1;! Wait for PLC to respondWHILE GInput(giColZone)<>nColZoneMem OR DInput(di031_ColZoneClr)<>1DOIF GOutput(goColZone)<>nColZoneMem SetGO goColZone,nColZoneMem;IF DOutput(do032_ColZoneRel)=0 SetDO do032_ColZoneRel,1;stMsg3:=ValToStr(nColZoneMem);debugText 41," ";ENDWHILE! Collision zone released / Reset FlagsIF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;bColZoneSet{nColZoneMem}:=FALSE;stColZoneMem:="";nColZoneMem:=0;ENDIFENDWHILEENDIFENDIFELSE! Unknown collision zone in memoryIF nColZoneMem<>0 dcpFaultSFE 24;如果寄存器寄存的碰撞区域号不为零IF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0;碰撞释放信号复位IF GOutput(goColZone)<>0 SetGO goColZone,0;信号复位stColZoneMem:="";nColZoneMem:=0;WaitTime 0.1;ENDIFELSEIF stColZoneMem=stColZoneReq THEN寄存器的寄存信息等于请求的信息(字符串信息)IF nColZoneMem>0 AND nColZoneMem<63 THEN判断是否在给定值范围内! Check last collision zone setIF bColZoneSet{nColZoneMem} THEN如果区域碰撞信号置位为真! Last collision zone set / Reset FlagsIF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;信号复位IF GOutput(goColZone)<>0 SetGO goColZone,0;信号复位stColZoneMem:="";nColZoneMem:=0;ELSE! Last collision zone not setWHILE NOT bColZoneSet{nColZoneMem} DO为碰撞置位信号假进入循环判定IF GOutput(goColZone)<>nColZoneMem THEN如果请求的区域号不等于存储的号! Reset IO and flags IO信号复位SetDO do031_ColZoneReq,0;碰撞请求信号复位SetDO do032_ColZoneRel,0;碰撞释放信号复位bColZoneRelease:=FALSE;bColZoneRequest:=FALSE; 碰撞请求布尔量为假SetGO goColZone,0; 碰撞释放布尔量为假WaitUntil GInput(giColZone)=0 AND DInput(di031_ColZoneClr)=0 AND DInput(di032_ColZoneSet)=0\MaxTime:=5\TimeFlag:=bTimedOutFlag;! Check current PLC input status检查当前PLC的输入状态WHILE DInput(di031_ColZoneClr)=1 OR DInput(di032_ColZoneSet)=1 DO如果PLC给的碰撞区域清除信号置位或碰撞置位信号置位,那么进入错误诊断程序11dcpFaultSFE 11;ENDWHILE! Set group output to PLC将组信号发送给PLC;SetGO goColZone,nColZoneMem;将碰撞区域号以组信号的形式发送给PLC;WaitTime 0.1;ELSE! Reset IO and flags复位IO信号;IF DOutput(do005_FaultDCP)=1 SetDO do005_FaultDCP,0;IF DOutput(do031_ColZoneReq)=0 SetDO do031_ColZoneReq,1;! Wait for PLC to respondWHILE GInput(giColZone)<>nColZoneMem OR DInput(di032_ColZoneSet)<>1 DOIF GOutput(goColZone)<>nColZoneMem SetGO goColZone,nColZoneMem;IF DOutput(do031_ColZoneReq)=0 SetDO do031_ColZoneReq,1;stMsg3:=ValToStr(nColZoneMem);debugText 42," ";ENDWHILE! Collision zone Set / Reset Flags信号的置位与复位IF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;bColZoneSet{nColZoneMem}:=TRUE;stColZoneMem:="";nColZoneMem:=0;ENDIFENDWHILEENDIFELSE! Unknown collision zone in memory存储了未知的碰撞区,那么进行下列诊断IF nColZoneMem<>0 dcpFaultSFE 22;如果寄存的区域号不等于零,那么进行错误诊断IF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0碰撞区域请求信号复位;IF GOutput(goColZone)<>0 SetGO goColZone,0;碰撞区域组信号复位stColZoneMem:="";nColZoneMem:=0;WaitTime 0.1;ENDIFENDIF!! Reset IO and flags IO信号与布尔量复位SetDO do031_ColZoneReq,0;碰撞区域请求信号复位SetDO do032_ColZoneRel,0;碰撞区域释放信号复位bColZoneRelease:=FALSE;bColZoneRequest:=FALSE;SetGO goColZone,0;stColZoneMem:="";nColZoneMem:=0;! Check current robot output status检查当前机器人输出状态WHILE DOutput(do031_ColZoneReq)=1 OR DOutput(do032_ColZoneRel)=1 DO机器人的输出请求置位或输出释放置位,则报错进入错误诊断程序dcpFaultSFE 7;ENDWHILE! Check current PLC input status检查当前PLC的输入状态WHILE DInput(di031_ColZoneClr)=1 OR DInput(di032_ColZoneSet)=1 DO PLC的输入的碰撞区域清零信号置位或碰撞信号置位,则报错进入错误诊断程序dcpFaultSFE 8;ENDWHILE! Reset IO and clear TPU复位IO信号和清屏IF DOutput(do005_FaultDCP)=1 SetDO do005_FaultDCP,0;复位错位诊断信号! Check if collision zone is already released检查碰撞区域是否已经释放了IF NOT bColZoneSet{nCollRel} THEN如果碰撞置位为假! Update yamasuzmi and reset IO信息更新和IO复位stTempCT:="Wait time for COLLISION ZONE RELEASE "+ValToStr(nCollRel);IF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0碰撞区域释放信号复位;IF GOutput(goColZone)<>0 SetGO goColZone,0;碰撞区组信号复位upDateYAM "NVA",stTempCT;RETURN;ENDIF! Set group output to PLC发送组信号给PLCSetGO goColZone,nCollRel;WaitTime 0.1;! Set release outputSetDO do032_ColZoneRel,1;区域释放信号置位! Wait for PLC to respond等待PLC反馈WHILE GInput(giColZone)<>nCollRel OR DInput(di031_ColZoneClr)<>1 DO当PLC给的碰撞区组信号不等于释放区域号或碰撞区清零信号不等于1IF GOutput(goColZone)<>nCollRel SetGO goColZone,nCollRel;如果机器人请求的碰撞区域号不等释放区域号,那么机器人重新向PLC发送与释放区域号相同的组信号IF DOutput(do032_ColZoneRel)=0 SetDO do032_ColZoneRel,1;置位区域释放信号,并且报错41stMsg3:=ValToStr(nCollRel);debugText 41," ";ENDWHILE! Update yamasuzmi, set array and IO信息更新和IO信号置位stTempCT:="Wait time for COLLISION ZONE RELEASE "+ValToStr(nCollRel);bColZoneSet{nCollRel}:=FALSE;碰撞区置位信号为假upDateYAM "NVA",stTempCT;SetDO do032_ColZoneRel,0;区域释放信号复位SetGO goColZone,0;机器人请求的碰撞区组信号复位stColZoneMem:="";nColZoneMem:=0;寄存的碰撞区域号的数值清零TPErase;清屏ENDPROCPROC CollZoneReq(num nCollReq,string stCollReq\switch NoWait)如果功能模块添加了“NoWait”功能,机器人发出的请求不会等给予的信息反馈,直接运行下一条指令stTempCT:="Move time to NW COLLISION ZONE REQUEST "+ValToStr(nCollReq);upDateYAM "ENVA",stTempCT;stTempCT:="Move time to COLLISION ZONE REQUEST "+ValToStr(nCollReq);upDateYAM "ENVA",stTempCT;ENDIF! Control back to main task返回主任务bColZoneRelease:=FALSE;区域释放为假布尔量bColZoneRequest:=FALSE;区域请求为假布尔量! Check request number is valid检查请求的有效数字WHILE nCollReq<1 OR nCollReq>62 DO请求区域号的循环判定,范围为1-62,不在该范围内进入错误诊断程序9;stMsg1:=ValToStr(nCollReq);dcpFaultSFE 9;ENDWHILE!! Check last collision memory type检查最后存储的碰撞类别IF stColZoneMem=stColZoneReq THEN如果寄存的区域碰撞类别等于区域请求类别(字符串)! Check last collision memory number检查最后存储的碰撞数值IF nColZoneMem=nCollReq THEN如果寄存的碰撞区域数值等于区域请求的数值! Check if collision zone is already set碰撞置位信号是否置位IF bColZoneSet{nCollReq} THEN如果碰撞请求的数值不为零,那么碰撞区域置位信号就为真! Update yamasuzmi and reset IO复位IO信号stTempCT:="Wait time for COLLISION ZONE REQUEST "+ValToStr(nCollReq);IF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;碰撞区域请求信号复位IF GOutput(goColZone)<>0 SetGO goColZone,0;机器人发给PLC的碰撞区域组信号复位upDateYAM "NVA",stTempCT;stColZoneMem:="";寄存的字符串信息清空nColZoneMem:=0;寄存的数字清零RETURN;ELSEWHILE TRUE DOIF GOutput(goColZone)<>nCollReq THEN如果发送给PLC的区域号与实际请求的区域号不相等,那么复位区域请求和释放信号,布尔量变为假! Reset IO and flagsSetDO do031_ColZoneReq,0;SetDO do032_ColZoneRel,0;bColZoneRelease:=FALSE;bColZoneRequest:=FALSE;SetGO goColZone,0;机器人发给PLC的组信号复位WaitUntil GInput(giColZone)=0 AND DInput(di031_ColZoneClr)=0 AND DInput(di032_ColZoneSet)=0\MaxTime:=5\TimeFlag:=bTimedOutFlag;等待PLC发给机器人的信号复位! Check current PLC input status检查当前PLC的输入状态WHILE DInput(di031_ColZoneClr)=1 OR DInput(di032_ColZoneSet)=1 DO如果PLC一直给机器人发送信号,那么跳入错误诊断程序dcpFaultSFE 11;ENDWHILE! Set group output to PLC机器人将碰撞区域号以组信号的形式发送给PLCSetGO goColZone,nCollReq;WaitTime 0.1;ELSE! Reset IO and flags复位IO信号,布尔量变为假IF DOutput(do005_FaultDCP)=1 SetDO do005_FaultDCP,0;复位错误诊断信号IF DOutput(do031_ColZoneReq)=0 SetDO do031_ColZoneReq,1;碰撞区域信号置位! Wait for PLC to respond等待PLC给予反馈WHILE GInput(giColZone)<>nCollReq OR DInput(di032_ColZoneSet)<>1 DO判定PLC发给我的碰撞区域号是否等于机器人请求的区域号或碰撞置位信号是否置位,如果没有,执行下条指令:IF GOutput(goColZone)<>nCollReq SetGO goColZone,nCollReq;重新将请求的碰撞的区域号发给PLCIF DOutput(do031_ColZoneReq)=0 SetDO do031_ColZoneReq,1; 重新将碰撞请求信号发给PLCstMsg3:=ValToStr(nCollReq);debugText 46," ";与此同时发出报错信息 46ENDWHILE! Update yamasuzmi, set array and IOstTempCT:="Wait time for COLLISION ZONE "+ValToStr(nCollReq);IF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;碰撞请求信号复位IF GOutput(go0ColZone)<>0 SetGO goColZone,0;碰撞区域组信号复位(机器人给PLC 发的碰撞区域号变为零)bColZoneSet{nCollReq}:=TRUE;碰撞置位信号为真,就是信号置位 upDateYAM "NVA",stTempCT;nColZoneMem:=0;RETURN;ENDIFENDWHILEENDIFELSEIF nColZoneMem>0 AND nColZoneMem<63 THEN 如果存储的数字在范围(1-63) ! Check if last request already set 检查请求是否已经置位IF bColZoneSet{nColZoneMem} THEN 如果寄存数值不为零,那么碰撞置位信号就为真! Collision zone Set / Reset FlagsIF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;碰撞请求信号复位 IF GOutput(goColZone)<>0 SetGO goColZone,0;碰撞区域组信号复位nColZoneMem:=0; ELSE! Last collision zone not set 碰撞区域信号没有置位,进入错误诊断程序 dcpFaultSFE 21;IF nTempNo=1 THEN! YES = Robot has collision zone continueIF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;bColZoneSet{nColZoneMem}:=TRUE;stColZoneMem:="";nColZoneMem:=0;WaitTime 0.1;ELSEIF nTempNo=2 THEN! INGORE = Continue without collision zoneIF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;stColZoneMem:="";nColZoneMem:=0;WaitTime 0.1;ELSE! Robot wait collision zone setWHILE NOT bColZoneSet{nColZoneMem} DO寄存数值为零,碰撞置位信号为假IF GOutput(goColZone)<>nColZoneMem THEN如果机器人给PLC的碰撞区域号不等于寄存器的数值,那么IO信号复位,布尔量为假! Reset IO and flagsSetDO do031_ColZoneReq,0;SetDO do032_ColZoneRel,0;bColZoneRelease:=FALSE;bColZoneRequest:=FALSE;SetGO goColZone,0;WaitUntil GInput(giColZone)=0 AND DInput(di031_ColZoneClr)=0 AND DInput(di032_ColZoneSet)=0\MaxTime:=5\TimeFlag:=bTimedOutFlag;等待PLC信号复位! Check current PLC input status检查当前PLC输入状态WHILE DInput(di031_ColZoneClr)=1 OR DInput(di032_ColZoneSet)=1 DO如果PLC一直发送信号,则进入错误诊断程序dcpFaultSFE 11;ENDWHILE! Set group output to PLC给PLC发送组信号SetGO goColZone,nColZoneMem;将寄存数值发送给PLCWaitTime 0.1;ELSE! Reset IO and flags IO信号复位,布尔量为假IF DOutput(do005_FaultDCP)=1 SetDO do005_FaultDCP,0;错误诊断信号复位IF DOutput(do031_ColZoneReq)=0 SetDO do031_ColZoneReq,1;碰撞请求信号置位! Wait for PLC to respond等待PLC反馈WHILE GInput(giColZone)<>nColZoneMem OR DInput(di032_ColZoneSet)<>1 DO如果PLC发送的组信号值不等于等于寄存的数值或碰撞区域信号置位IF GOutput(goColZone)<>nColZoneMem SetGO goColZone,nColZoneMem;重新向PLC发送请求碰撞区域号IF DOutput(do031_ColZoneReq)=0 SetDO do031_ColZoneReq,1;请求信号置位stMsg3:=ValToStr(nColZoneMem);给出报错信息46debugText 46," ";ENDWHILE! Collision zone Set / Reset Flags碰撞信号及布尔量的置位与复位IF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;信号复位IF GOutput(goColZone)<>0 SetGO goColZone,0;组信号复位bColZoneSet{nColZoneMem}:=TRUE;布尔量碰撞区域置位为真stColZoneMem:="";字符串清空nColZoneMem:=0;寄存器清零ENDIFENDWHILEENDIFENDIFELSE! Unknown collision zone in memory未知的碰撞区域号被存储IF nColZoneMem<>0 dcpFaultSFE 22;如果寄存数值不为零,则进入错误诊断程序22IF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;请求信号复位IF GOutput(goColZone)<>0 SetGO goColZone,0;机器人发送的组信号复位stColZoneMem:="";字符串清空nColZoneMem:=0;寄存器清零WaitTime 0.1;ENDIFELSEIF stColZoneMem=stColZoneRel THEN如果寄存的信息与释放信息相同时,执行下列指令IF nColZoneMem>0 AND nColZoneMem<63 THEN如果寄存的数值在1-62内! Check last collision zone released检查最后碰撞区域释放情况IF NOT bColZoneSet{nColZoneMem} THEN布尔量为假! Last collision zone released / Reset Flags最后碰撞区域已经释放,所有的标记复位IF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0信号复位;IF GOutput(goColZone)<>0 SetGO goColZone,0;组信号复位stColZoneMem:="";nColZoneMem:=0;ELSE! Last collision zone not released最后碰撞区域没有释放,那么进行下列判定WHILE bColZoneSet{nColZoneMem} DO布尔量为真IF GOutput(goColZone)<>nColZoneMem THEN如果组信号数值与寄存器数值不等的话! Reset IO and flags所有IO及标记复位SetDO do031_ColZoneReq,0;SetDO do032_ColZoneRel,0;bColZoneRelease:=FALSE;bColZoneRequest:=FALSE;SetGO goColZone,0;WaitUntil GInput(giColZone)=0 AND DInput(di031_ColZoneClr)=0 AND DInput(di032_ColZoneSet)=0\MaxTime:=5\TimeFlag:=bTimedOutFlag;等待PLC信号复位! Check current PLC input status检查PLC的输入状态WHILE DInput(di031_ColZoneClr)=1 OR DInput(di032_ColZoneSet)=1 DOdcpFaultSFE 8;信号一直保持则进入错误诊断程序8ENDWHILE! Set group output to PLC给PLC发送做信号SetGO goColZone,nColZoneMem;WaitTime 0.1;ELSE! Reset IO and flagsIF DOutput(do005_FaultDCP)=1 SetDO do005_FaultDCP,0;诊断信号复位IF DOutput(do032_ColZoneRel)=0 SetDO do032_ColZoneRel,1;释放信号置位! Wait for PLC to respond等待PLC反馈WHILE GInput(giColZone)<>nColZoneMem OR DInput(di031_ColZoneClr)<>1 DOIF GOutput(goColZone)<>nColZoneMem SetGO goColZone,nColZoneMem;IF DOutput(do032_ColZoneRel)=0 SetDO do032_ColZoneRel,1;stMsg3:=ValToStr(nColZoneMem);debugText 45," ";ENDWHILE! Collision zone Set / Reset FlagsIF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;bColZoneSet{nColZoneMem}:=FALSE;stColZoneMem:="";nColZoneMem:=0;ENDIFENDWHILEENDIFELSE! Unknown collision zone in memory未知碰撞区域存储在寄存器里的诊断IF nColZoneMem<>0 dcpFaultSFE 24;IF DOutput(do032_ColZoneRel)=1 SetDO do032_ColZoneRel,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;stColZoneMem:="";nColZoneMem:=0;WaitTime 0.1;ENDIFENDIF!! Reset IO and flagsSetDO do031_ColZoneReq,0;SetDO do032_ColZoneRel,0;bColZoneRelease:=FALSE;bColZoneRequest:=FALSE;SetGO goColZone,0;stColZoneMem:="";nColZoneMem:=0;! Check current robot output status检查当前机器人的输出状态WHILE DOutput(do031_ColZoneReq)=1 OR DOutput(do032_ColZoneRel)=1 DO dcpFaultSFE 10;ENDWHILE! Check current PLC input status检查当前PLC的输入状态WHILE DInput(di031_ColZoneClr)=1 OR DInput(di032_ColZoneSet)=1 DOdcpFaultSFE 11;错误诊断ENDWHILE! Reset IO and flags复位IO信号和布尔量IF DOutput(do005_FaultDCP)=1 SetDO do005_FaultDCP,0;! Check if collision zone is already set检查碰撞置位信号是否置位IF bColZoneSet{nCollReq} THEN如果信号置位则布尔量为真! Update yamasuzmi and reset IO复位IO信号stTempCT:="Wait time for COLLISION ZONE REQUEST "+ValToStr(nCollReq);IF DOutput(do031_ColZoneReq)=1 SetDO do031_ColZoneReq,0;IF GOutput(goColZone)<>0 SetGO goColZone,0;upDateYAM "NVA",stTempCT;stColZoneMem:="";nColZoneMem:=0;RETURN;ENDIF! Set group output to PLC组信号发送给PLCSetGO goColZone,nCollReq;碰撞区域号发给PLCWaitTime 0.1;! Set request to PLC向PLC发送请求SetDO do031_ColZoneReq,1;! Check for no wait检查不等待IF Present(NoWait) THEN! Update yamasuzmi and set flag for back task信息更新和标记置位,返回首行stTempCT:="Wait time for NW COLLISION ZONE REQUEST "+ValToStr(nCollReq); stColZoneMem:=stColZoneReq;upDateYAM "NVA",stTempCT;nColZoneMem:=nCollReq;将碰撞区域号赋值到寄存器bColZoneRequest:=TRUE;布尔量为真RETURN;ENDIF! Wait for PLC to respond等待PLC反馈WHILE GInput(giColZone)<>nCollReq OR DInput(di032_ColZoneSet)<>1 DOIF GOutput(goColZone)<>nCollReq SetGO goColZone,nCollReq;IF DOutput(do031_ColZoneReq)=0 SetDO do031_ColZoneReq,1;stMsg3:=ValToStr(nCollReq);debugText 46," ";ENDWHILE! Update yamasuzmi, set array and IO置位组信号和IO信号stTempCT:="Wait time for COLLISION ZONE "+ValToStr(nCollReq); bColZoneSet{nCollReq}:=TRUE;布尔量为真upDateYAM "NVA",stTempCT;SetDO do031_ColZoneReq,0;请求信号复位SetGO goColZone,0;组信号复位stColZoneMem:="";nColZoneMem:=0;寄存器数值清零ENDPROCPROC cycleStart()VAR bool bTimeOutFlag;! Check if start from main住程序开始检查IF NOT bInitHome THEN如果机器人没有执行home位置初始化,那么再次进行次信号初始化;initIO;ELSEbInitHome:=FALSE;布尔量“bInitHome”变为假ENDIF! Check program strobe off检查程序闪存关闭WHILE DInput(di016_ProgStrobe)=1 DO如果PLC给的程序闪存信号处于置位状态,那么就等待信号复位WaitDI di016_ProgStrobe,0\MaxTime:=nWaitTime2\TimeFlag:=bTimeOutFlag;IF DInput(di016_ProgStrobe)=0 debugText 2," ";如果程序闪存信号复位,则报错误2 ENDWHILE! Set program strobe and flagsSetDO do011_ProgNumReq,1;向PLC发送程序号请求,程序号请求信号置位bRetToHome:=FALSE;布尔量“bRetToHome”变为假nProgNum:=0;程序号清零! Wait for valid program number等待PLC给予有效的程序号WHILE nProgNum<1 OR nProgNum>127 DO进行程序号有效循环判定,程序号有效范围为1-127,如果不在区间就执行检查程序;progNumChk;ENDWHILEENDPROCPROC cycleEnd()! Check program number from PLC检查PLC给的程序号码WHILE GInput(giProgNum)<>0 DO如果PLC给的程序号不为零,则会报错误5;debugText 5," ";ENDWHILE! Update cycle time更新循环时间ClkStop cellClock;计时器停止计时nCellTime:=ClkRead(cellClock);读出计时器的数值! Program end and flags程序结束upDateYAM "END","PROGRAM ID";Reset TPUDisplay;视教起被清屏nProgNum:=0;程序号清零ENDPROCPROC TipDressGun1()! Set at tip dress positionSetDO do127_AtDressPos,1;机器人在修磨位置信号置位!!**************************!* Other user checks here *!**************************!! Move to clear of tip dresser移动到修磨器清扫位置MoveAbsJ jHome\NoEOffs, v1000, fine, t_rsw_V137533;MoveJ[[225.86,1360.00,1735.07],[0.913916,0.398414,-0.0307202,-0.0712779],[0,-3,1,1],[119.903,9E+0 9,9E+09,9E+09,9E+09,9E+09]], v1000, z50, t_rsw_V137533;MoveJ[[650.93,1536.69,743.20],[0.0161823,0.054657,0.00578839,-0.998357],[0,-3,2,1],[119.891,9E+09 ,9E+09,9E+09,9E+09,9E+09]], v1000, z50, t_rsw_V137533;MoveL pTipDrsClrGun1, v50, fine, t_rsw_V137533;机器人修磨位置!! Check program number called检查调用的程序号IF nProgNum=102 THEN如果为102号程序Calibrate gun1\TipChg; gun1电极更换校正ReCalcTCP gun1\TipChange,t_rsw_V137533;重新校正gun1电极更换后的TCPCalibrate gun1\TipWear;电极磨损校正ReCalcTCP gun1\TipWear,t_rsw_V137533;重新校正gun1电极磨损后的TCPENDIFbRedressGun:=TRUE;布尔量“重新修磨电极”为真WHILE bRedressGun = TRUE OR bReweld = TRUE DO布尔量“重新修磨电极”为真或“重新焊接为真”! Move to tip dress position移动到电极修磨位置MoveL RelTool(pTipDrsPosGun1,0,0,-20),v50,z1,t_rsw_V如果137533;MoveL pTipDrsPosGun1,v50,fine,t_rsw_V137533; gun1电极修磨位置!! Run required tip dress运行电极修磨命令TipDressControl 1,t_rsw_V137533;博士控制器给的电极修磨参数!! Move to clear of tip dresser移动到修磨器清扫位置MoveL RelTool(pTipDrsPosGun1,0,0,-20),v10,z1,t_rsw_V137533;MoveL pTipDrsClrGun1,v50,fine,t_rsw_V137533; 修磨器清扫位置!! Calibrate and Recal TCPIF nProgNum=102 THENCalibrate gun1\TipChg;ReCalcTCP gun1\TipChange,t_rsw_V137533;!Calibrate gun1\TipWear;ReCalcTCP gun1\TipWear,t_rsw_V137533;ELSECalibrate gun1\TipWear;ReCalcTCP gun1\TipWear,t_rsw_V137533;ENDIF!! Check dress with short curcuit weld修磨后短路焊接检查bReweld:=TRUE;重新焊接为真WHILE bReweld = TRUE DO如果重新焊接为真auto_reweld:=0;自动重新焊接次数清零bRedressGun:=FALSE;重新修磨为假SpotL pTipDrsClrGun1, v100, gun1, TipShortCircG1, t_rsw_V137533;焊接测试IF bRedressGun=TRUE THEN重新修磨为真,执行“RedressGun”程序RedressFG;ELSEbReweld:=FALSE;ENDIFENDWHILEENDWHILEauto_reweld := nJLR_Auto_Reweld;将JLR规定的焊接次数赋值给“auto_reweld”!!**************************!* Other user checks here *!**************************!! Move to home回Home位置MoveJ[[497.88,1510.84,410.15],[0.0148402,-0.002161,-0.00978069,-0.99984],[0,-3,2,1],[108.575,9E+0 9,9E+09,9E+09,9E+09,9E+09]], v50, fine, t_rsw_V137533;MoveJ[[499.93,1520.80,917.68],[0.0148377,-0.00216205,-0.00978278,-0.99984],[0,-3,2,1],[108.575,9E +09,9E+09,9E+09,9E+09,9E+09]], v50, fine, t_rsw_V137533;MoveJ[[225.86,1360.00,1735.07],[0.913915,0.398415,-0.0307213,-0.0712778],[0,-3,1,1],[119.903,9E+0 9,9E+09,9E+09,9E+09,9E+09]], v50, fine, t_rsw_V137533;MoveAbsJ jHome\NoEOffs, v1000, fine, t_rsw_V137533; Home位置!MoveAbsJ jHome,v5,fine,tHome;!! Reset at tip dress positionSetDO do127_AtDressPos,0; 机器人在修磨位置信号复位RETURN ;RETURN ;返回到102号程序ENDPROC。
ABB机器人外部自动系统信号添加
ABB机器人外部自动的配置是把启动用到的系统输入输出信号与外部添加的数字I/O信号关联。
系统信号的添加步骤如下:一、在示教器上,【主菜单】-【控制面板】-【配置】下;
二、打开【System Input】系统输入,点击【添加】;
三、在【Signal Name】中输入要分配的I/O名称,【Action】中选择对应的系统信号;
四、例如选择【Motors On】电机上电,然后点击【确定】;
五、提示重启控制器,先选择“否”,等把需要的系统信号都添加完后再重启。
六、系统输出信号的添加也是如此。
打开【System Output】系统输出,点击【添加】;
七、例如在【Status】中选择【Auto On】;
八、一般需要添加的系统I/O如下:
System Input:①Motors On
②Start
③Stop
④ResetError
⑤ResetEstop
⑥PpToMain
System Output:①AutoOn
②CycleOn
③Error
④MotOnState。
系统输入• 系统输入是指通过某个数字输入信号来控 制机器人某种运行状态。
• 所有系统输入在自动模式下都能启动;但 部分系统输入在手动模式下将丧失功能。
定义系统输入系统输入可以在远端对机器人进行控制, 机器人可能会运动,注意安全!系统输入功能• MotorOn-机器人电机上电。
• MotorOff-机器人电机下电。
* 当机器人正在运行时,系统先自动停止机 器人运行,再使电机下电;如果此输入信 号值为 1,机器人将无法使电机上电。
• Start-运行机器人程序。
从程序指针当前位置运行机器人程序。
• Start at Main-重新运行机器人程序。
从主程序第一行运行机器人程序,如果机 器人正在运行,此功能无效。
系统输入功能• Stop-停止运行机器人程序。
* 当此输入信号值为 1,机器人将无法运行机 器人程序。
• Stop at the end of Cycle-停止运行机器人程 序循环。
* 当程序运行完主程序最后一行 后,机器人将自动停止运行,此时,输入 信号值为 1,机器人将无法再次运行机器人 程序。
• System Restart-热启动机器人。
系统输入功能• Interrupt-中断。
在系统输入 Argument 项,直接填入服务例 行程序名称,例如:routine 1。
无论程序指 针处在什么位置,机器人直接运行相应的 服务例行程序,运行完成后,程序指针自 动回到原位,如果机器人正在运行,此功 能无效。
• Load and Start-载入程序并运行。
在系统输入 Argument 项,填入所载入程序 路径与名称,例如:flp1:ABB.prg。
如果机 器人正在运行,此功能无效。
系统输入功能• Reset Emergency stop-机器人急停复位。
• Reset Execution Error-复位机器人执行错误。
• Motor On and Start-机器人上电并运行。