1、机器人系统设计机器人系统设计案例案例3 机器人的远程控制机器人的远程控制蔡泽凡蔡泽凡 课程内容课程内容案例案例1 机器人机器人工作站外围设备的控制工作站外围设备的控制案例案例3 机器人的远程控制机器人的远程控制案例案例4 机器人机器人的多任务控制的多任务控制案例案例5 机器人视觉定位机器人视觉定位案例案例2 机器人的示教与编程机器人的示教与编程课程内容课程内容案例案例3 机机器人的远器人的远程控制程控制3.1 功能功能要求要求3.2 所需所需软件软件3.3 设备设备连接连接关系关系3.4#1机机器人器人Ts40的程序设计的程序设计3.5 PLC程程序的设序的设计计3.6 NetSCADA程程序
2、的设序的设计计3.7 相相关知识关知识3.8 练习练习3.1 功能要求功能要求3.1.1 案例案例功能功能:界面效果界面效果3.1 功能要求功能要求3.1.1 案例案例功能功能:界面效果界面效果3.1 功能要求功能要求3.1.1 案例功能 在NetSCADA中设计两个用户操作界面,一个是外设监控界面(该界面和案例1基本相同),另一个是机器人手动控制界面。机器人手动控制界面的功能:u 显示#1机器人的状态:是否就绪、是否处于加工原点、是否在运行中、是否暂停中。u 手动对#1机器人进行控制:远程上电、远程下电、运行、暂停、继续、停止、回加工原点、MODBUS TCP通讯进行重连。3.1 功能要求功
3、能要求3.1.2 案例目标 熟练掌握海得PLC、NetSCADA的使用 熟练掌握通过OPC通讯协议实现PLC与NetSCADA的通讯 熟练掌握史陶比尔机器人的示教编程 掌握史陶比尔机器人和海得PLC之间通过MODBUS TCP进行通讯的方法3.1 功能要求功能要求3.1.3 案例重点 海得PLC的编程 NetSCADA的界面开发 NetSCADA与PLC的OPC通讯 史陶比尔机器人的用户界面编程 史陶比尔机器人的多任务编程 史陶比尔机器人与PLC的MODBUS TCP通讯3.2 所需软件所需软件 NetSCADA 5.0-DevProject(用于编辑NetSCADA程序);NetSCADA
4、5.0-Field(用于运行NetSCADA程序);EControlPLC2.1(用于编辑海得PLC程序);海得PLC以太驱动EPL(用于建立NetSCADA与海得PLC之间的OPC驱动);Staubli Robotics Suite(SRS)2013.4.4(史陶比尔机器人离线编程软件);ftpsurfer107(用于访问史陶比尔机器人控制器ftp服务器,实现文件的上传与下载)。3.3 设备连接关系设备连接关系PCPC、PLCPLC、RobotRobot通过通过网线和网线和网络交换机网络交换机相连相连PCPC端的端的NetSCADANetSCADA和和PLCPLC之间之间通过通过OPCOPC
5、协议(基于协议(基于MODBUS MODBUS TCPTCP)进行)进行通讯通讯ROBOTROBOT和和PLCPLC之间通过之间通过MODBUS MODBUS TCPTCP进行通讯进行通讯PLCPLC和外设之间通过数字和外设之间通过数字IOIO电气连接。电气连接。3.3.1 拓扑结构拓扑结构3.3 设备连接关系设备连接关系3.3.2 3.3.2 控制信号列表:外设控制信号列表:外设IOIO分配分配表(表(1 1)外设外设PLCNetSCADAIO类型类型,以以PLC为主体为主体启动按钮启动按钮X000X000I,高电平有效停止按钮停止按钮X001X001I,低电平有效急停按钮急停按钮X002X
6、002I,低电平有效气泵是否过压气泵是否过压X003X003I,低电平有效伺服电机伺服电机1到位信号到位信号X004X004I,高电平有效伺服电机伺服电机1报警信号报警信号X005X005I,高电平有效伺服电机伺服电机2到位信号到位信号X006X006I,高电平有效伺服电机伺服电机2报警信号报警信号X007X007I,高电平有效气泵是否满压气泵是否满压X010X010I,高电平有效输入备用输入备用1X011X011I,高电平有效输入备用输入备用2X012X012I,高电平有效#1机器人光电信号机器人光电信号X013X013I,高电平有效#2机器人光电信号机器人光电信号X014X014I,高电平
7、有效#3机器人光电信号机器人光电信号X015X015I,高电平有效#4机器人光电信号机器人光电信号X016X016I,高电平有效3.3 设备连接关系设备连接关系3.3.2 3.3.2 控制信号列表:外设控制信号列表:外设IOIO分配分配表(表(2 2)外设外设PLCNetSCADA IO类型,以类型,以PLC为主体为主体输入备用输入备用3X017 X017I,高电平有效红色指示灯红色指示灯Y000 Y000O绿色指示灯绿色指示灯Y001 Y001O黄色指示灯黄色指示灯Y002 Y002O#1机器人急停信号机器人急停信号Y003 Y003O,低电平有效#2机器人急停信号机器人急停信号#3机器人急
8、停信号机器人急停信号流水线伺服电机流水线伺服电机2使能使能 Y004 Y004O流水线伺服电机流水线伺服电机2运行运行 Y005 Y005O流水线伺服电机流水线伺服电机1使能使能 Y006 Y006O流水线伺服电机流水线伺服电机1运行运行 Y007 Y007O相机相机1光源控制光源控制Y013 Y013O相机相机2光源控制光源控制Y014 Y014O相机相机3光源控制光源控制Y015 Y015O气泵开关气泵开关Y017 Y017O3.3 设备连接关系设备连接关系3.3.2 3.3.2 控制信号列表:外设控制信号列表:外设IOIO分配分配表(表(3 3)外设外设PLCNetSCADAIO类型,以
9、类型,以PLC为主体为主体#1机器人电磁阀机器人电磁阀1 Y020 Y020O#1机器人电磁阀机器人电磁阀2 Y021 Y021O#1机器人电磁阀机器人电磁阀3 Y022 Y022O#1机器人电磁阀机器人电磁阀4 Y023 Y023O#2机器人电磁阀机器人电磁阀1 Y024 Y024O#2机器人电磁阀机器人电磁阀2 Y025 Y025O#2机器人电磁阀机器人电磁阀3 Y026 Y026O#2机器人电磁阀机器人电磁阀4 Y027 Y027O#2机器人电磁阀机器人电磁阀5 Y030 Y030O#3机器人电磁阀机器人电磁阀1 Y033 Y033O#3机器人电磁阀机器人电磁阀2 Y034 Y034O#
10、3机器人电磁阀机器人电磁阀3 Y035 Y035O#3机器人电磁阀机器人电磁阀4 Y036 Y036O3.3 设备连接关系设备连接关系3.3.2 3.3.2 控制信号列表:控制按钮信号分配控制信号列表:控制按钮信号分配表(表(1 1)外设外设PLCPC NetSCADA红色指示灯按钮红色指示灯按钮M2000M2000绿色指示灯按钮绿色指示灯按钮M2001M2001黄色指示灯按钮黄色指示灯按钮M2002M2002流水线伺服电机流水线伺服电机2使能按钮使能按钮M2004M2004流水线伺服电机流水线伺服电机2运行按钮运行按钮M2005M2005流水线伺服电机流水线伺服电机1使能按钮使能按钮M200
11、6M2006流水线伺服电机流水线伺服电机1运行按钮运行按钮M2007M2007相机相机1光源控制按钮光源控制按钮M2013M2013相机相机2光源控制按钮光源控制按钮M2014M2014相机相机3光源控制按钮光源控制按钮M2015M2015气泵开关按钮气泵开关按钮M2017M2017#1机器人电磁阀机器人电磁阀1按钮按钮M2020M20203.3 设备连接关系设备连接关系3.3.2 3.3.2 控制信号列表:控制按钮信号分配控制信号列表:控制按钮信号分配表(表(2 2)外设外设PLCPC NetSCADA#1机器人电磁阀机器人电磁阀2按钮按钮M2021M2021#1机器人电磁阀机器人电磁阀3按
12、钮按钮M2022M2022#1机器人电磁阀机器人电磁阀4按钮按钮M2023M2023#2机器人电磁阀机器人电磁阀1按钮按钮M2024M2024#2机器人电磁阀机器人电磁阀2按钮按钮M2025M2025#2机器人电磁阀机器人电磁阀3按钮按钮M2026M2026#2机器人电磁阀机器人电磁阀4按钮按钮M2027M2027#2机器人电磁阀机器人电磁阀5按钮按钮M2030M2030#3机器人电磁阀机器人电磁阀1按钮按钮M2033M2033#3机器人电磁阀机器人电磁阀2按钮按钮M2034M2034#3机器人电磁阀机器人电磁阀3按钮按钮M2035M2035#3机器人电磁阀机器人电磁阀4按钮按钮M2036M2
13、0363.3 设备连接关系设备连接关系3.3.2 3.3.2 控制信号列表:机器人控制信号列表:机器人1 1对外设的控制请求信号分配表对外设的控制请求信号分配表#1机器人对外设的控制请求机器人对外设的控制请求ROBOTPLC机器人机器人1电磁阀电磁阀1控制控制dOutAction0D3026.7、M520机器人机器人1电磁阀电磁阀2控制控制dOutAction1D3026.8、M521机器人机器人1电磁阀电磁阀3控制控制dOutAction2D3026.9、M522机器人机器人1电磁阀电磁阀4控制控制dOutAction3D3026.A、M523#1机器人状态机器人状态ROBOTPLCNetS
14、CADA准备就绪准备就绪dOutRobRdyD3026.0D3026:0加工原点加工原点dOutIsHomeD3026.1D3026:1运行中运行中dOutIsMoving D3026.6D3026:6暂停中暂停中dOutIsPauseD3026.3D3026:33.3.2 3.3.2 控制信号列表:机器人控制信号列表:机器人1 1的状态变量信号分配表的状态变量信号分配表3.3 设备连接关系设备连接关系3.3.2 3.3.2 控制信号列表:对机器人控制信号列表:对机器人1 1的手动控制信号分配表的手动控制信号分配表#1机器人手动控制机器人手动控制 ROBOTPLCNetSCADA通信重连通信重
15、连无M2105M2105上电上电dInEnaPowerM2052、D3030.5 M2052下电下电dInDisPowerM2055、D3030.4 M2055运行运行dInStartCycleM2085、D3030.0 M2085暂停暂停dInPauseCycleM2074、D3030.2 M2074继续继续dInRestartCycle M580、D3030.8M580停止停止dInStopCycleM2053、D3030.1 M2053回加工原点回加工原点dInResetRobM2054、D3030.3 M20543.3 设备连接关系设备连接关系3.3.2 3.3.2 控制信号列表控制信
16、号列表:PLCPLC其他变量信号分配表其他变量信号分配表变量名变量名地址地址变量名变量名地址地址MODBUS_TCP设置标设置标志志M716MODBUS_TCP建立联接标志M5030机器人机器人1有手动控制数据有手动控制数据的标志的标志M3030MODBUS连接状态D3004机器人机器人1数据清零数据清零M2080机器人1反馈回来的状态数据D3026机器人机器人1手动下数据清零手动下数据清零 M2089发送给机器人1的控制数据 D3030初始化标志初始化标志M3007缓存IP地址D3000D3003急停标志急停标志M3700缓存MBTMCON指令信息D4D5缓存缓存MBTMPDB指令信指令信息
17、息D3230D3233 缓存MBTMODB指令信息D3012D3014手动控制数据清零计时手动控制数据清零计时器器T34MODBUS_TCP断开计时器 T40数据清零计时器数据清零计时器T12 3.4#1机器人机器人Ts40的程序设计的程序设计3.4.1 3.4.1 配置配置MODBUS IOMODBUS IO(1 1)单击物理)单击物理IOIO(2 2)单击)单击Modbus IOModbus IO配置配置3.4#1机器人机器人Ts40的程序设计的程序设计3.4.1 3.4.1 配置配置MODBUS IOMODBUS IO(3 3)修改连接数)修改连接数3.4#1机器人机器人Ts40的程序设
18、计的程序设计3.4.1 3.4.1 配置配置MODBUS IOMODBUS IO(4 4)保存配置,目录)保存配置,目录Controller1Controller1usrusr applicomapplicomModbusModbus3.4#1机器人机器人Ts40的程序设计的程序设计3.4.1 3.4.1 配置配置MODBUS IOMODBUS IO(5 5)Modbus IOModbus IO变量变量列表(列表(1 1)名称名称类型类型地址地址大小大小客户机访问客户机访问dInStartCycleBIT01CS8 Input(R/W)dInStopCycleBIT11CS8 Input(R/
19、W)dInPauseCycleBIT21CS8 Input(R/W)dInResetRobBIT31CS8 Input(R/W)dInDisPowerBIT41CS8 Input(R/W)dInEnaPowerBIT51CS8 Input(R/W)dInErrorStopBIT61CS8 Input(R/W)dInProductTypeBIT71CS8 Input(R/W)dInRestartCycleBIT81CS8 Input(R/W)dIn3BIT91CS8 Input(R/W)dOutRobRdyBIT101CS8 Output(W)dOutIsHomeBIT111CS8 Output
20、(W)dOutIsCycleBIT121CS8 Output(W)dOutIsPauseBIT131CS8 Output(W)3.4#1机器人机器人Ts40的程序设计的程序设计3.4.1 3.4.1 配置配置MODBUS IOMODBUS IO(5 5)Modbus IOModbus IO变量变量列表(列表(2 2)名称名称类型类型地址地址大小大小客户机访问客户机访问dOutFinishBIT141CS8 Output(W)dOutIsErrorBIT151CS8 Output(W)dOutMovingBIT161CS8 Output(W)dOutActionBIT178CS8 Output(
21、W)dOutBIT251CS8 Output(W)dOut2BIT261CS8 Output(W)aInOffsetXFLOAT01CS8 Input(R/W)aInOffsetYFLOAT21CS8 Input(R/W)aInOffsetRZFLOAT41CS8 Input(R/W)aInDistFLOAT61CS8 Input(R/W)aInFLOAT81CS8 Input(R/W)aIn2FLOAT101CS8 Input(R/W)aOutWORD124CS8 Output(W)3.4#1机器人机器人Ts40的程序设计的程序设计3.4.1 3.4.1 配置配置MODBUS IOMODBU
22、S IO(6 6)创建所有的创建所有的Modbus IOModbus IO变量(变量(1 1)3.4#1机器人机器人Ts40的程序设计的程序设计3.4.1 3.4.1 配置配置MODBUS IOMODBUS IO(6 6)创建所有的创建所有的Modbus IOModbus IO变量(变量(2 2)3.4#1机器人机器人Ts40的程序设计的程序设计3.4.1 3.4.1 配置配置MODBUS IOMODBUS IO(7 7)保存并重)保存并重启启SRSSRS软件使软件使Modbus IOModbus IO生效生效3.4#1机器人机器人Ts40的程序设计的程序设计3.4.1 3.4.1 配置配置M
23、ODBUS IOMODBUS IO(8 8)使用)使用软件软件FtpsurferFtpsurfer把创建的把创建的modbus.xmlmodbus.xml文件(存在文件(存在于单元路径于单元路径Controller1Controller1usrusr applicomapplicomModbusModbus中)上传中)上传到到CS8CCS8C控制器中,路径为控制器中,路径为usrusr/applicomapplicom/modbusmodbus。3.4#1机器人机器人Ts40的程序设计的程序设计3.4.2 3.4.2 配置全局配置全局数据:全局变量列表(数据:全局变量列表(1 1)变量变量类型
24、类型描述描述值值fBallPalletframe钢珠托盘的工件坐标系X=-167.61,Y=-145.68,Z=47.73,Rx=0.17,Ry=-0.33,Rz=-89.92pBallPickPos1point建立在fBallPallet坐标系下的坐标变量X=2 3.6 2,Y=2 7 1,Z=1.75,Rx=179.67,Ry=0.17,Rz=-47.57Shoulder=sampBallPickPos2point建立在fBallPallet坐标系下的坐标变量X=128.37,Y=264.92,Z=1.34,Rx=179.67,Ry=0.17,Rz=-75.31Shoulder=samej
25、Homejoint建立在joint坐标系下的坐标变量,表示加工原点J1=-101.74,J2=-32.846,J3=140.81,J4=64.56023.4#1机器人机器人Ts40的程序设计的程序设计3.4.2 3.4.2 配置全局配置全局数据:全局变量列表(数据:全局变量列表(2 2)变量变量类型类型描述描述值值mFastSpeedmdesc 快速速度变量速度(%)=100,混合=关节mMiddleSpeedmdesc 中速速度变量速度(%)=60,混合=关节mSlowSpeedmdesc 慢速速度变量速度(%)=20,混合=关节trZtrsf几何变换变量,在Z轴方向上的偏置量X=0,Y=0
26、,Z=-50,Rx=0,Ry=0,Rz=0bThereIsMotionbool代表机器人1是否有运动任务falsenTaskIndexnum代表运动任务的编号,0:无,1:单次点到点运动,2:循环点到点运动,3:回加工原点运动0dInDisPowerdio远程下电ModbusSrv-0Modbus-BitdInDisPower3.4#1机器人机器人Ts40的程序设计的程序设计3.4.2 3.4.2 配置全局配置全局数据:全局变量列表(数据:全局变量列表(3 3)变量变量类型类型描述描述值值dInEnaPowerdio远程上电ModbusSrv-0Modbus-BitdInEnaPowerdIn
27、PauseCycledio机器人1暂停ModbusSrv-0Modbus-BitdInPauseCycledInResetRobdio机器人1回加工原点ModbusSrv-0Modbus-BitdInResetRobdInRestartCycle dio机器人1继续ModbusSrv-0Modbus-BitdInRestartCycledInStartCycledio机器人1运行ModbusSrv-0Modbus-BitdInStartCycledInStopCycledio机器人1停止ModbusSrv-0Modbus-BitdInStopCycledOutIsHomedio机器人1在加工原
28、点ModbusSrv-0Modbus-BitdOutIsHomedOutIsPausedio机器人1暂停中ModbusSrv-0Modbus-BitdOutIsPause3.4#1机器人机器人Ts40的程序设计的程序设计3.4.2 3.4.2 配置全局配置全局数据:全局变量列表(数据:全局变量列表(4 4)变量变量类型类型描述描述值值dOutMovingdio机器人1运行中ModbusSrv-0Modbus-BitdOutMovingdOutRobRdydio机器人1准备就绪 ModbusSrv-0Modbus-BitdOutRobRdy3.4#1机器人机器人Ts40的程序设计的程序设计3.4
29、.2 3.4.2 配置全局数据:创建配置全局数据:创建diodio变量,以变量,以dInDisPowerdInDisPower为例为例(1)(1)定位到定位到diodio变量变量dInDisPowerdInDisPower,按按F2F2(连接)(连接)(2)(2)按按F6F6(编辑(编辑),),进入进入物理物理IOIO选择选择界面界面(3)(3)F8F8(OKOK)完成物理)完成物理IOIO选择选择(4)(4)按按F8F8(OKOK)完成物理)完成物理IOIO连接连接3.4#1机器人机器人Ts40的程序设计的程序设计3.4.2 3.4.2 配置全局数据:创建配置全局数据:创建diodio变量变
30、量,创建完毕后,创建完毕后3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序编辑程序在缺省程序在缺省程序startstart、stopstop的基础上增加的基础上增加GoHomeGoHome、HMIHMI、InitInit、IOCmdIOCmd、KeyScanKeyScan、MotionMNGMotionMNG、P2PMoveP2PMove、P2PmoveForeverP2PmoveForever等等8 8个子程序个子程序3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:startstart /对用户界面进行初始化对用
31、户界面进行初始化 call HMI()/对变量、电源和初始位置进行初始化对变量、电源和初始位置进行初始化 call Init()/When all the instructions in the process function of a task finish,the task will be killed by the system /创建一个任务对创建一个任务对IO变量进行监视并作相应的处理变量进行监视并作相应的处理 taskCreate IOCmd,90,IOCmd()/创建一个任务对用户界面的按键进行监视并作相应的创建一个任务对用户界面的按键进行监视并作相应的处理处理 taskCre
32、ate KeyScanTask,95,KeyScan()/创建一个任务对机械臂的运动进行管理创建一个任务对机械臂的运动进行管理 taskCreate MotionMngTask,88,MotionMNG()3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:startstart3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:HMIHMI/使示教器切换到用户窗口使示教器切换到用户窗口 userPage()/清空用户窗口清空用户窗口 cls()/使光标定位到第使光标定位到第0行地行地0列列 gotoxy(0,0
33、)/从光标所在的位置输出信息并使光标自动切换到下一从光标所在的位置输出信息并使光标自动切换到下一行的第行的第0列列 putln(F1 to run P2P move once)/使光标定位到第使光标定位到第1行第行第0列列 gotoxy(0,1)putln(F2 to run P2P move repeatly)3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:HMIHMI gotoxy(0,2)putln(F3 to go home)gotoxy(0,3)putln(F4 to pause/restart move)gotoxy(0,4)putln
34、(F5 to stop moving)gotoxy(0,12)putln(Status:)gotoxy(0,13)put(No action)3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:InitInit /复位输出变量复位输出变量 /if ready dOutRobRdy=false /At start position dOutIsHome=false /robot is moving dOutMoving=false /In pause dOutIsPause=false /复位中间变量复位中间变量 bThereIsMotion=false
35、 nTaskIndex=03.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:InitInit /上电管理上电管理 if watch(isPowered(),3)=true /robot power is on dOutRobRdy=true else /robot power is off if workingMode()=4 enablePower()if watch(isPowered(),3)=true dOutRobRdy=true endIf endIf endIf3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编
36、辑程序:编辑程序:InitInit /如果机器人已经处于就绪状态则使手臂运行到加工原点如果机器人已经处于就绪状态则使手臂运行到加工原点 if dOutRobRdy=true and taskStatus(GoHomeTask)=-1 taskCreate GoHomeTask,10,GoHome()wait(taskStatus(GoHomeTask)=1)endIf3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:GoHomeGoHome/使手臂运动到加工原点使手臂运动到加工原点 dOutIsHome=false dOutMoving=true m
37、ovej(jHome,flange,mSlowSpeed)waitEndMove()dOutMoving=false dOutIsHome=true3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd while true /上位机发给机器人的命令可能会被重复处理,因此必上位机发给机器人的命令可能会被重复处理,因此必须做防重复的操作须做防重复的操作 /上电操作上电操作 if dInEnaPower=true and dOutRobRdy=false and workingMode()=4 if!isPowered()enablePo
38、wer()if(watch(isPowered(),2)=true)dOutRobRdy=true autoConnectMove(true)3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd else dOutRobRdy=false endIf endIf endIf /下电操作下电操作 if dInDisPower=true and dOutRobRdy=true and workingMode()=4 if isPowered()disablePower()if(watch(isPowered(),2)=false)dOu
39、tRobRdy=false dOutIsPause=false3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd dOutMoving=false /下电以后如果原来在工作则应该作复位动作下电以后如果原来在工作则应该作复位动作 if bThereIsMotion=true bThereIsMotion=false stopMove()gotoxy(0,13)put(No motion )if taskStatus(P2PMoveTask)=0 taskKill(P2PMoveTask)endIf if taskStatus(P2P
40、Move2Task)=0 taskKill(P2PMove2Task)endIf3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd if taskStatus(GoHomeTask)=0 taskKill(GoHomeTask)endIf resetMotion()endIf else dOutRobRdy=true endIf endIf endIf 3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd /上位机按了运行按钮上位机按了运行按钮 if dInStartC
41、ycle=true and dOutRobRdy=true and dOutIsHome=true if dOutIsPause=false and nTaskIndex=0 nTaskIndex=1 endIf endIf /上位机按了回加工原点按钮上位机按了回加工原点按钮 if dInResetRob=true and dOutRobRdy=true and dOutIsHome=false if dOutIsPause=true or nTaskIndex=0 nTaskIndex=3 dOutIsPause=false endIf endIf3.4#1机器人机器人Ts40的程序设计的程
42、序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd /上位机按了暂停按钮上位机按了暂停按钮 if dInPauseCycle=true and bThereIsMotion=true and dOutIsPause=false dOutIsPause=true dOutMoving=false stopMove()gotoxy(33,13)put(Pause )endIf /上位机按了继续按钮上位机按了继续按钮 if dInRestartCycle=true and bThereIsMotion=true and dOutIsPause=true3.4#1机器人机器人Ts4
43、0的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd dOutIsPause=false dOutMoving=true restartMove()gotoxy(33,13)put(Running)endIf /上位机按了停止按钮上位机按了停止按钮 if dInStopCycle=true and bThereIsMotion=true dOutIsPause=false dOutMoving=false bThereIsMotion=false3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd
44、stopMove()gotoxy(0,13)put(No motion )if taskStatus(P2PMoveTask)=0 taskKill(P2PMoveTask)endIf if taskStatus(P2PMove2Task)=0 taskKill(P2PMove2Task)endIf if taskStatus(GoHomeTask)=0 taskKill(GoHomeTask)endIf resetMotion()endIf endWhile3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:IOCmdIOCmd3.4#1机器人机器人
45、Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:KeyScanKeyScan while true nKeyValue=getKey()if nKeyValue=271 or nKeyValue=272 /按了按了F1(单次点到点运动单次点到点运动)或或F2(反复点到点运动反复点到点运动)if dOutIsPause=false and nTaskIndex=0 and dOutRobRdy=true and dOutIsHome=true nTaskIndex=nKeyValue-270 endIf elseIf nKeyValue=273 /按了按了F3(回到加工原
46、点)(回到加工原点)if(dOutIsPause=true or nTaskIndex=0)and dOutRobRdy=true and dOutIsHome=false nTaskIndex=33.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:KeyScanKeyScan dOutIsPause=false endIf elseIf nKeyValue=274 /按了按了F4(暂停或者继续手臂运动)(暂停或者继续手臂运动)if bThereIsMotion=true if dOutIsPause=false dOutIsPause=true dO
47、utMoving=false stopMove()gotoxy(33,13)put(Pause )else dOutIsPause=false dOutMoving=true restartMove()3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:KeyScanKeyScan gotoxy(33,13)put(Running)endIf else popUpMsg(There is no motion)endIf elseIf nKeyValue=275 /按了按了F5(停止手臂运动)(停止手臂运动)dOutIsPause=false dOutM
48、oving=false if bThereIsMotion=true bThereIsMotion=false stopMove()gotoxy(0,13)put(No motion )3.4#1机器人机器人Ts40的程序设计的程序设计3 3.4.3.4.3 编辑程序:编辑程序:KeyScanKeyScan if taskStatus(GoHomeTask)=0 taskKill(GoHomeTask)endIf resetMotion()else popUpMsg(There is no motion)endIf endIf delay(0)endWhile3.4#1机器人机器人Ts40的程
49、序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:MotionMNGMotionMNG/手臂运动管理手臂运动管理 while true /判断当前是否存在手臂运动的任务判断当前是否存在手臂运动的任务 nTemp=taskStatus(P2PMoveTask)nTemp=nTemp+taskStatus(P2PMove2Task)nTemp=nTemp+taskStatus(GoHomeTask)/刷新用户界面显示刷新用户界面显示 if(nTemp-3)/存在手臂运动的任务存在手臂运动的任务 if dOutIsPause=true and dOutMoving=true dOutMov
50、ing=false endIf else 3.4#1机器人机器人Ts40的程序设计的程序设计3.4.3 3.4.3 编辑程序:编辑程序:MotionMNGMotionMNG /不存在手臂运动的任务不存在手臂运动的任务 if(bThereIsMotion=true)gotoxy(0,13)put(No action )bThereIsMotion=false endIf if dOutIsPause=true restartMove()endIf dOutIsPause=false dOutMoving=false endIf if(bThereIsMotion=false)3.4#1机器人机器