新时达机器人示教器编程规范

更新时间:2023-10-20 21:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

新时达机器人编程规范

1 客户所有工件程序统一建立在一个文件夹下面

2 程序名可以英语或者拼音等让人容易识别的字符命名,字符后面根据工件型号进行1 2等命名或者以规格型号命名:1600*1200等,文件夹及文件命名如下: Test//文件夹名 Product1//文件名 Product2//文件名 Product3//文件名 或者

Test//文件夹名

Product_1600*1200//文件名 Product_1000*800//文件名 Product3_800*600文件名

3 若程序为焊接应用,程序第一行必须加载tool(tool可以通过3点法,6点法进行示教或者直接填写xyzabc)

4 程序中针对不同坐标系,在tool后进行refsys(rf0)的设定 5 对IO变量进行初始化

6 变量命名:英语或者拼音,后缀根据需要添加数字。尽量不要直接使用ap0,ap1等,建议用关键字标注,比如ArcPrePos1,ARCEndPOS1等 //以上内容为示教器程序注意事项 //以下为程序编写完成后,修改配置

1 配置开机速度,默认是40%,根据需要修改

2修改pause反应,0位马上停,100为完成当前运动语句再停止 3 若默认直线速度只有1000mm/s,根据需要修改,根据下图参考

焊接规范例程:

焊接点使用cp点(笛卡尔坐标点,这样若工具撞了,只要重新试教工具即可,所有点不需要重新试教)

此程序为按一下start,程序循环运行,通过Table1或者Table2信号来判断某个工位,若无信号程序一直等待;

若希望焊接一遍完成后机器人停止,程序中while(1)不使用 While(1)

Tool(tool0);//根据需要加载工具 Ref(rf0);//根据需要加载坐标系

DOSet(Valve1,false);//DO置零初始化 Num:=0//变量初始化

Table1:=DIRead(DI0);//读取工作台DI信号 Table2:=DIRead(DI1); 读取工作台DI信号 Dyn(FastSpeed)//设置全局速度

Ovl(Ovl90)//设置全局圆滑率,建议90% Ptp(HomePosition);//回原点 If (Table1) then//工作台2程序 Ptp(ArcPre1)//走到焊接准备点

Lin(ArcPos1,ArcPreSpeed,ArcOvl)//直线走到焊接起弧点,速度使用较慢速度走到准备点,圆滑率建议设为0

Arcset(Arcdata)//设置电流电压 Wlin(ArcPos2,ArcSpeed,ArcOvl)//直线焊接到ArcPos点收弧,使用焊接速度ArcSpeed,圆滑率建议使用0

Lin(ArcPos3)//离开收弧点 …//完成其他焊接及过度语句 End_if

If (Table2) then//工作台2程序 Ptp(ArcPre1)//走到焊接准备点

Lin(ArcPos1,ArcPreSpeed,ArcOvl)//直线走到焊接起弧点,速度使用较慢速度走到准备点,圆滑率建议设为0

Arcset(Arcdata)//设置电流电压,电压一般为电流1/10左右 Wlin(ArcPos2,ArcSpeed,ArcOvl)//直线焊接到ArcPos点收弧,使用焊接速度ArcSpeed,圆滑率建议使用0

Lin(ArcPos3)//离开收弧点 …//完成其他焊接及过度语句 End_if End_while

码垛规范例程(使用码垛包)

//目前新时达机器人没有ptp和lin之间的圆滑,若ptp和lin之间有卡顿,请全部使用lin语句,并同时注意ftp中的configurationfile里的机器人配置,直线速度限制,出厂较小,可设置到1800mm/s While(1)

Dyn(FastSpeed)//设置全局速度

Ovl(Ovl90)//设置全局圆滑率,建议90% PalletReset(Pallet1,zero),//对码垛程序清零 Bool0:=1;

While(bool0)//此标志位若码垛完成变0 PTP(HomePos)//回到准备点 Ptp(Catch)//走到固定取料点 DiWait(LineSignal)//等取料信号 DoSet(Valve,True)//夹紧气缸

DiWait(ValveOK,True)//等气缸夹紧到位信号 Toput(pallet1)//去码垛

DoSet(Valve,FALSE)//松开气缸 Fromput(pallet1)从码垛处回来 End_while End_while

搬运规范例程//不使用码垛包,举例4个, while(1)

num:=0;//计数清零 while(num<4) ptp(HomePos); Lin(PutPos);

Posreset(PutPos,offset100,PutPos); Num:=num+1;

End_while end_while

多工件程序(伪子程序)

假设工件种类通过4路DI输入,构成8421码, 在codesys里面做如下编程: Number:dint;

SetDint: Step_Robot_SetDINTToHMI;

Number:=bool_to_dint(di0)+ 2*bool_to_dint(di1) +4*bool_to_dint(di2)+ 8*bool_to_dint(di3) SetDint(Enable:=1,PortNumber:=0,Data:=Number);//此处端口和示教器的读取数据端口一致

以下为示教器程序

Num:=DINTEXTRead(DINTEXT)//从plc处读取值,dintext的端口填0 If num=1 … End_if If num=2 … End_if If num=3 … End_if If num=4 … End_if

CycleStop规范程序//按下停止后,机器人执行完一个cycle再停止 While(1)

Ptp(a1) Ptp(a2) Ptp(a3) Ptp(a4)

Bool0:=DiRead(CycleStop); If bool0=1 then Goto EndPro End_if End_while LP:EndPro

自动回原点(倒着走)程序例程

DOSET(HomingSig,false)

If homing=1 then//如果机器人异常停止,后台获得标志位,程序卸载后重加载,homing标志位为1

Goto HomingPro LP:StartPro

LinNum:=0;//初始化 DINTSet(DintExt,LinNum); Ptp(a1) LinNum:=1;

DINTSet(DintExt,LinNum); Ptp(a2) LinNum:=2;

DINTSet(DintExt,LinNum); Ptp(a3) LinNum:=3;

DINTSet(DintExt,LinNum);

Ptp(a4) LinNum:=4;

DINTSet(DintExt,LinNum); Goto(StartPro)

LP: HomingPro if LinNum=3 then goto LIN3 end_if

if LinNum=2 then goto LIN2 end_if

if LinNum=1 then goto LIN1 end_if

if LinNum=0 then goto LIN0 end_if

LP:LIN3 Ptp(ap3); LP:LIN2 Ptp(ap2); LP:LIN1 Ptp(ap3); LP:LIN0 Ptp(ap0);

DOSET(HomingSig,true)//告诉codesys,对homing标志位置0

本文来源:https://www.bwwdw.com/article/ddrf.html

Top