中国机器人网 App
手机扫码下载 · 或点击查看
IRB1200上跑RAPID,程序里我自己用offs算出来一个位置,想直接把这个值赋给p10(或者robtarget类型那个点),不用示教器再点一遍。怎么写?赋值的时候老是报数据类型不对,p10:=pTemp这种好像也不行,是要逐个分量赋还是咋整?
另外问下,如果想把当前机器人位置读出来存到某个robtarget里,咋搞?类似CWrite那种指令吗?
robtarget是结构体不能直接整个赋值,得拆开分量挨个赋。p10.trans.x := pTemp.trans.x; p10.trans.y := pTemp.trans.y; p10.trans.z := pTemp.trans.z; p10.rot := pTemp.rot; p10.robconf := pTemp.robconf; p10.extax := pTemp.extax; 这样六七个分量一个一个来,少一个都报错。我项目里用的就是这办法,IRB6700上跑了大半年没问题。
读当前位置用CRobT(\\TaskName\\ToolName\\WObjName, target),把当前TCP位置存到target里。第三个参数是可选项,不写就用当前工具和工件。
你报数据类型不对大概率是变量声明那块的问题,robtarget得在data类型里单独定义,别当成num或者string用。
问下你这个offs算出来的位置,是在程序里临时算的还是要反复用?反复用的话建议在module里建个robtarget常量,算完一次直接p10:=那个常量,多省事。
那个CWrite不是输出位姿的,是把字符串写到串口的,别搞混。读位置就CRobT这一个指令,记住三个参数别漏就行。
逐个分量赋太啰嗦了,ABB后来出了PDispSet和RelTool也能改点位置,但跟你offs那个不是一回事。你要是做视觉引导那种场景,建议直接上PC SDK或者Socket通讯把外部算好的坐标发过来,机器人这边只负责接收和存,赋值那块代码量能少一半。