欢迎访问 工业自动化技术交流圈!一起拆解 PLC 难题、优化 HMI 界面、探讨设备选型与方案设计。

ABB机器人常用指令大全

日期:01-23  点击:  属于:电气论道

ABB机器人常用指令大全

机器人运动控制

MoveJ(关节运动指令)
机器人按关节运动方式移动到目标位置,运动路径为关节空间的最短路径,适用于大范围移动或无需严格路径要求的场景。
MoveJ jpos, v, z, tool;
MoveJ pHome, v500, z20, tool1;
MoveL(TCP直线运动指令)
机器人工具中心点(TCP)沿直线运动到目标位置,适用于需要精准直线轨迹的作业,如焊接、切割等。
MoveL target, v, z, tool;
参数说明:
- target:目标位置(数据类型:robotarget)
- v:运行速度(单位:mm/s,数据类型:speeddata)
- z:转弯区尺寸(单位:mm,数据类型:zonedata)
- tool:工具中心点(数据类型:tooldata)
MoveL pPick, v300, z10, tool2;
MoveC(TCP圆弧运动指令)
机器人TCP沿圆弧轨迹运动到目标位置,需指定中间点确定圆弧形状,适用于弧形焊接、曲面加工等场景。
MoveC midTarget, endTarget, v, z, tool;
MoveC pMid, pEnd, v200, z5, tool1;
MoveAbsJ(轴绝对角度位置运动指令)
机器人各轴按绝对角度位置运动到目标姿态,适用于需要精准定位关节角度的场景,如初始化复位。
MoveAbsJ jpos, v, z, tool;
参数说明:
- jpos:目标关节位置(数据类型:jointarget)
- v:运行速度(单位:mm/s,数据类型:speeddata)
- z:转弯区尺寸(单位:mm,数据类型:zonedata)
- tool:工具中心点(数据类型:tooldata)
MoveAbsJ jInit, v400, z30, tool0;

例行程序内的逻辑控制

CompactIF(简洁条件判断指令)
如果条件满足,仅执行一条指令,适用于简单的单条件判断场景。
CompactIFTHEN 指令;
CompactIF di_Sensor=1 THEN Set do_Grip;
IF(条件判断指令)
根据不同条件执行对应的程序段,支持单条件、双条件及多条件判断。
形式1:IFTHEN "Yes-part" ENDIF
形式2:IFTHEN "Yes-part" ELSE "Not-part" ENDIF
形式3:IFTHEN "Yes-part1" ELSEIFTHEN "Yes-part2" ELSE "Not-part" ENDIF
参数说明:
-:判断条件(结果为1或0,1表示满足,0表示不满足)
- "Yes-part":条件满足时执行的程序段
- "Not-part":条件不满足时执行的程序段
IF reg_Count>10 THEN
MoveL pUnload, v300, z10, tool1;
ELSEIF reg_Count>5 THEN
MoveL pBuffer, v300, z10, tool1;
ELSE
MoveL pWait, v300, z10, tool1;
ENDIF
For(循环指令)
根据指定的次数重复执行对应的程序段,适用于固定次数的循环作业。
For 变量:=初始值 TO 结束值 DO 程序段; ENDFOR
For reg_I:=1 TO 5 DO
MoveL Offs(pBase, 0, 50*reg_I, 0), v200, z5, tool1;
ENDFOR
While(条件循环指令)
如果条件满足,持续重复执行对应的程序段,直到条件不满足时退出循环。
WhileDO 程序段; ENDWHILE
reg1:=1;
WHILE reg1<5 DO
reg1:=reg1+1;
MoveL Offs(pStart, 10*reg1, 0, 0), v150, z3, tool1;
ENDWHILE
Test(变量判断指令)
对一个变量进行判断,根据变量的具体数值执行对应的程序段,适用于多分支条件判断。
TEST 变量 CASE 数值1: 程序段1; CASE 数值2: 程序段2; ... DEFAULT: 默认程序段; ENDTEST
TEST reg_Path
CASE 1: PATH1(); // 变量为1时执行PATH1程序
CASE 2: PATH2(); // 变量为2时执行PATH2程序
CASE 3: PATH3(); // 变量为3时执行PATH3程序
DEFAULT: ErrorHandle(); // 无匹配数值时执行错误处理
ENDTEST
GOTO(跳转指令)
跳转到例行程序内指定的标签位置,需与Label指令配合使用,标签在同一程序中必须唯一。
GOTO Label; Label: 程序段
IF reg1>100 GOTO highvalue;
Lowvalue:
MoveL pLow, v300, z10, tool1;
GOTO ready;
Highvalue:
MoveL pHigh, v300, z10, tool1;
reg1:=1;
ready:
Reset do_Work;
Label(跳转标签指令)
定义跳转目标位置的标签,与GOTO指令配合使用,标签名称在同一程序中不可重复。
Label: (标签名称可自定义,如:PointA:、Step1:等)
Label1:
MoveJ pInit, v500, z20, tool0;
// 其他程序段...
GOTO Label1; // 跳转到Label1标签位置

停止程序执行

Stop(停止程序执行指令)
立即停止程序执行,可在停止位置重新启动程序。
Stop;
IF di_Emergency=1 THEN Stop;
Exit(禁止重启停止指令)
停止程序执行,且禁止在停止位置重新启动,需从程序起始位置或指定断点重启。
Exit;
IF reg_Error=1 THEN Exit;
Break(调试停止指令)
临时停止程序执行,主要用于手动调试场景,调试完成后可继续执行后续程序。
Break;
// 调试时插入断点
Break;
ExitCycle(复位重启指令)
中止当前程序运行,将程序指针(PP)复位到主程序的第一条指令;若选择程序连续运行模式,程序将从主程序起始位置自动重新执行。
ExitCycle;
IF di_CycleEnd=1 THEN ExitCycle;

赋值指令

:=(程序数据赋值指令)
对程序数据(如变量、寄存器等)进行赋值操作,更新数据的数值或状态。
变量:=数值/表达式;
reg_Count:=0; // 给寄存器reg_Count赋值0
reg_Sum:=reg_A+reg_B; // 给寄存器reg_Sum赋表达式值
p_Temp:=p_Base; // 给位置变量p_Temp赋值位置p_Base

等待指令

WaitTime(时间等待指令)
等待指定的时间后,程序再继续往下执行,适用于需要延时的作业场景(如物料稳定、工艺等待等)。
WaitTime 时间值;(单位:秒)
Set do_Grip; // 夹紧物料
WaitTime 0.5; // 等待0.5秒确保夹紧
MoveL pLift, v200, z5, tool1;
WaitDI(数字输入信号等待指令)
等待指定的数字输入信号达到设定状态后,程序继续执行,支持设置最长等待时间和超时标志。
WaitDI Signal, Value [MaxTime:=时间] [TimeFlag:=变量];
参数说明:
- Signal:数字输入信号名称
- Value:目标信号状态(0或1)
- MaxTime:可选参数,最长等待时间(单位:秒)
- TimeFlag:可选参数,超时标志(Bool类型,超时后为1,未超时为0)
// 示例1:无超时设置,等待di_Ready为1
WaitDI di_Ready, 1;
// 示例2:最长等待5秒,超时后继续执行
WaitDI di_Ready, 1, MaxTime:=5;
// 示例3:最长等待5秒,超时标志存入bTimeout
WaitDI di_Ready, 1, MaxTime:=5, TimeFlag:=bTimeout;
WaitDO(数字输出信号等待指令)
等待指定的数字输出信号达到设定状态后,程序继续执行,参数规则与WaitDI一致。
WaitDO Signal, Value [MaxTime:=时间] [TimeFlag:=变量];
WaitDO do_MachineReady, 1, MaxTime:=10;
WaitGI(组输入信号等待指令)
等待指定的组输入信号达到设定状态后,程序继续执行。
WaitGI Signal, Value [MaxTime:=时间] [TimeFlag:=变量];
WaitGI gi_Group1, 5;
WaitGO(组输出信号等待指令)
等待指定的组输出信号达到设定状态后,程序继续执行。
WaitGO Signal, Value [MaxTime:=时间] [TimeFlag:=变量];
WaitGO go_Group2, 3, MaxTime:=8;
WaitAI(模拟输入信号等待指令)
等待指定的模拟输入信号达到设定状态后,程序继续执行。
WaitAI Signal, Value [MaxTime:=时间] [TimeFlag:=变量];
WaitAI ai_Pressure, 2.5;
WaitAO(模拟输出信号等待指令)
等待指定的模拟输出信号达到设定状态后,程序继续执行。
WaitAO Signal, Value [MaxTime:=时间] [TimeFlag:=变量];
WaitAO ao_Speed, 1500, MaxTime:=3;
WaitUntil(条件满足等待指令)
等待指定的条件满足后,程序继续执行,适用于复杂逻辑条件的等待场景。
WaitUntil[MaxTime:=时间] [TimeFlag:=变量];
WaitUntil (reg_Count>=10) AND (di_Sensor=1), MaxTime:=15;

关于位置的功能

offs(位置偏移函数)
对机器人的目标位置进行线性偏移,偏移坐标方向与机器人工件坐标系(Wobj)一致。
Offs(基准位置, X偏移量, Y偏移量, Z偏移量);
参数说明:
- 基准位置:原始目标位置(如p1、pHome等)
- X/Y/Z偏移量:在对应坐标轴上的偏移距离(单位:mm)
// 以p1为基准,X轴偏移100mm,Y轴偏移50mm,Z轴无偏移
MoveL Offs(p1, 100, 50, 0), v100, z10, tool1;
// 绘制长方形示例
MoveL p1, v100, z5, tool1;
MoveL Offs(p1, 100, 0, 0), v100, z5, tool1;
MoveL Offs(p1, 100, -50, 0), v100, z5, tool1;
MoveL Offs(p1, 0, -50, 0), v100, z5, tool1;
MoveL p1, v100, z5, tool1;
RelTool(工具姿态偏移函数)
对工具的位置和姿态进行偏移,偏移坐标方向与机器人工具坐标系(Tool)一致,支持位置偏移和角度偏移。
RelTool(基准位置, X偏移量, Y偏移量, Z偏移量 [Rx:=X角度偏移] [Ry:=Y角度偏移] [Rz:=Z角度偏移]);
参数说明:
- 基准位置:原始目标位置
- X/Y/Z偏移量:工具坐标系下的位置偏移(单位:mm)
- Rx/Ry/Rz:可选参数,工具坐标系下的角度偏移(单位:度)
// 以p1为基准,X轴偏移100mm,Y轴偏移50mm,Z轴无偏移,X轴旋转30度,Y轴旋转-60度,Z轴旋转45度
MoveL RelTool(p1, 100, 50, 0, Rx:=30, Ry:=-60, Rz:=45), v100, z10, tool1;

输入输出信号设定

Reset(数字输出信号复位指令)
将指定的数字输出信号值设为0,对应IO板端口无直流24V电压输出,通常与Set指令配合使用。
Reset 信号名;
Reset do_Grip; // 松开夹具(信号置0)
Set(数字输出信号置1指令)
将指定的数字输出信号值设为1,对应IO板端口输出直流24V电压,用于驱动负载。
Set 信号名;
Set do_Grip; // 夹紧夹具(信号置1)
SetDO(数字输出信号设定指令)
直接设定指定数字输出信号的具体值(0或1),灵活控制信号状态。
SetDO 信号名, 数值;
SetDO do_Light, 1; // 开灯(置1)
SetDO do_Light, 0; // 关灯(置0)
SetGO(组输出信号设定指令)
设定指定组输出信号的具体数值,支持延时输出设置。
SetGO [Sdelay:=延迟时间], 信号名, 数值;
参数说明:
- Sdelay:可选参数,延迟输出时间(单位:秒)
- 信号名:组输出信号名称
- 数值:信号设定值
SetGO Sdelay:=0.2, go_Type, 10; // 延时0.2秒输出数值10
SetAO(模拟输出信号设定指令)
设定指定模拟输出信号的具体数值,用于控制模拟量设备(如调速、调压力等)。
SetAO 信号名, 数值;
SetAO ao_Voltage, 2.8; // 设定模拟输出电压为2.8V
InvertDO(数字输出信号反置指令)
将指定数字输出信号的当前状态反置(1变为0,0变为1),实现信号状态的快速切换。
InvertDO 信号名;
do10:=1;
InvertDO do10; // 执行后do10=0
InvertDO do10; // 再次执行后do10=1
PulseDO(数字脉冲输出指令)
输出一个指定长度的数字脉冲信号,脉冲长度范围0.1s-32s(默认0.2s),小于0.01s会报错。
适用场景:输送链完成信号、计数信号等。
PulseDO 信号名 [, 脉冲长度];
// 输出默认0.2秒的脉冲
PulseDO do_Pulse;
// 输出1秒的脉冲
PulseDO do_Count, 1.0;

程序的调用

ProcCall(例行程序调用指令)
直接调用指定的例行程序,执行完成后返回原程序继续执行。
ProcCall 例行程序名;
// 调用取料程序
ProcCall PickPart;
// 调用放料程序
ProcCall PlacePart;
CallByVar(变量例行程序调用指令)
通过带变量的例行程序名称调用对应的例行程序,支持动态选择调用目标。
CallByVar 程序名称变量;
string procName:="PathA";
CallByVar procName; // 调用名称为PathA的例行程序

程序注释

comment(程序注释指令)
对程序代码进行注释说明,注释内容不参与程序执行,仅用于提高代码可读性。
comment "注释内容";
comment "取料前等待物料到位";
WaitDI di_MaterialReady, 1;
comment "取料动作 - 直线运动到取料位置";
MoveL pPick, v200, z5, tool1;

示教器人机界面功能

TPErase(清屏指令)
清除示教器操作界面上的所有显示信息,用于刷新界面显示。
TPErase;
TPErase;
TPWrite "程序开始执行";
TPWrite(界面写信息指令)
在示教器操作界面上显示指定的文本信息,用于程序状态提示、故障报警等。
TPWrite "显示内容";
TPWrite "当前计数:" + NumToStr(reg_Count);
TPWrite "物料已到位,准备取料";
TPReadFK(功能键互动指令)
通过示教器的功能键与操作人员进行互动,获取操作人员的功能键操作输入。
TPReadFK "提示信息", 变量;
TPReadFK "请按确认键继续,取消键退出", bConfirm;
IF bConfirm THEN
TPWrite "继续执行程序";
ELSE
Exit;
ENDIF
TPReadNum(数字键盘互动指令)
通过示教器的数字键盘与操作人员进行互动,获取操作人员输入的数字值。
TPReadNum "提示信息", 变量 [, 最小值, 最大值];
// 输入1-10之间的数值存入reg_Qty
TPReadNum "请输入生产数量(1-10)", reg_Qty, 1, 10;
TPWrite "设定生产数量:" + NumToStr(reg_Qty);

Sockets通信

SocketCreate(创建Socket指令)
创建一个新的Socket通信连接,为后续的网络通信做准备。
SocketCreate 通信句柄变量;
SocketCreate socketHandle;
SocketBind(Socket绑定指令)
将创建的Socket与机器人的IP地址和指定端口进行绑定,确定通信端点。
SocketBind 通信句柄, IP地址, 端口号;
SocketBind socketHandle, "192.168.1.100", 8080;
SocketListen(监听连接指令)
使绑定后的Socket进入监听状态,等待远程计算机的连接请求。
SocketListen 通信句柄 [, 最大等待队列长度];
SocketListen socketHandle, 5;
SocketAccept(接受连接指令)
接受远程计算机的连接请求,建立正式的Socket通信连接。
SocketAccept 监听句柄, 通信句柄 [, 远程IP变量, 远程端口变量];
SocketAccept listenHandle, connHandle, remoteIP, remotePort;
SocketConnect(主动连接指令)
机器人作为客户端,主动向远程计算机(服务器)发起连接请求。
SocketConnect 通信句柄, 远程IP地址, 远程端口号;
SocketConnect socketHandle, "192.168.1.200", 9090;
SocketSend(发送数据指令)
通过建立的Socket连接,向远程计算机发送数据。
SocketSend 通信句柄, 发送数据变量 [, 数据长度];
string sendData:="Robot Ready";
SocketSend connHandle, sendData, StrLen(sendData);
SocketReceive(接收数据指令)
通过建立的Socket连接,从远程计算机接收数据。
SocketReceive 通信句柄, 接收数据变量 [, 最大接收长度, 实际接收长度变量];
string recvData;
num recvLen;
SocketReceive connHandle, recvData, 100, recvLen;
SocketClose(关闭Socket指令)
关闭指定的Socket通信连接,释放通信资源。
SocketClose 通信句柄;
SocketClose connHandle;

文件的读取和写入

Open(文件打开指令)
打开指定的文件或串行通道,为后续的读取或写入操作做准备,需指定操作模式(读/写)。
Open "文件路径/串行通道", 操作模式, 文件句柄;
操作模式:"r"(只读)、"w"(只写,覆盖原有内容)、"a"(追加写入)等
// 打开文件用于写入
Open "HOME:/Data/Log.txt", "w", fileHandle;
// 打开串行通道用于读取
Open "COM1:", "r", comHandle;
ReadStr(字符串读取指令)
从已打开的文件或串行通道中读取一个字符串数据。
ReadStr 文件句柄, 接收字符串变量;
string fileData;
Open "HOME:/Data/Config.txt", "r", fileHandle;
ReadStr fileHandle, fileData;
Close fileHandle;
Write(文件写入指令)
将数据写入到已打开的基于字符的文件或串行通道中。
Write 文件句柄, 写入数据;
Open "HOME:/Data/Log.txt", "a", fileHandle;
Write fileHandle, "执行时间:" + TimeToStr(CurrentTime());
Write fileHandle, " 计数:" + NumToStr(reg_Count) + "n";
Close fileHandle;

String字符串操作

ReadStr(字符串读取指令)
从文件或串行通道中读取字符串(同文件操作中的ReadStr,此处侧重字符串处理场景)。
ReadStr 数据源句柄, 字符串变量;
ReadStr comHandle, str_FromSerial;
StrPart(字符串截取函数)
从指定字符串中截取一部分子字符串,可指定起始位置和截取长度。
StrPart(原字符串, 起始索引, 截取长度);
string str_Org:="ABB Robot";
string str_Sub;
str_Sub:=StrPart(str_Org, 1, 3); // 结果:"ABB"
StrFind(字符查找函数)
在指定字符串中查找目标字符,返回字符首次出现的位置索引(未找到返回0)。
StrFind(原字符串, 目标字符);
string str_Org:="Hello World";
num pos;
pos:=StrFind(str_Org, "W"); // 结果:pos=7
StrLen(字符串长度函数)
获取指定字符串的长度(字符个数)。
StrLen(字符串);
string str_Test:="Industrial Robot";
num len;
len:=StrLen(str_Test); // 结果:len=16
StrToVal(字符串转数值函数)
将符合数值格式的字符串转换为对应的数值(整数或浮点数)。
StrToVal(字符串, 数值变量);
string str_Num:="123.45";
num val;
StrToVal(str_Num, val); // 结果:val=123.45

ABB资料下载



关于本站
不销售任何资料软件,不销售会员和积分不销售任何资料软件,不销售会员和积分
联系我们

工作时间:周一至周五 9:00-18:00

联系人:赵云龙

邮件:Hackdragon@vip.qq.com

底部导航
聚焦电气自动化领域的一站式共享服务平台,致力于打破行业资源壁垒,推动技术、资源、人才的高效流转与协同共赢。平台精准对接电气工程师、企业技术负责人、院校科研人员等核心群体,覆盖工业控制、智能装备、新能源自动化等全细分领域。


网站地图 PLC