SRCI
名词解释
| 名词 | 说明 |
|---|---|
| SRCI | Standard Robot Command Interface,标准机器人指令接口。 |
| EDK | Easy Development Kit,西门子提供的SRCI协议解析器。 |
| RI | Robot Interface,其状态一般用来表示SRCI通讯是否建立。 |
| RA | Robot Arm,机器人本体。 |
| RC | Robot Controller,机器人控制器。 |
| TCP | Tool Center Point,工具中心点。 |
| TCS | Tool Coordinate System,工具坐标系。 |
| UCS | User Coordinate System,用户坐标系。 |
| WCS | World Coordinate System,世界坐标系。 |
| WCP | Wrist Center Point,用于配置机器人本体肩肘腕姿态参数。 |
| M/O | Mandatory/Optional,SRCI手册要求的必须和可选功能。 |
前言
SRCI是由PROFINET International开发和维护的开放标准协议。
SRCI运行在基于PROFINET工业以太网的通信协议上,因此SRCI的部署和使用需要PROFINET。
SRCI将机器人应用程序的完整集成(包括编程)卸载到PLC。
SRCI本质上提供了一个接口,允许用户直接在PLC中对机器人进行编程和控制。
SRCI标准化了数据包和PLC库的使用,使用户能够在不同机器人之间自由快速地切换,而无需重新学习、重新编程和重新部署。

注意
支持的SRCI功能和参数的级别由SRCI解释器的发布版本获得的SRCI认证类型(即有限发布或广泛发布)决定。 JAKA的解释器已经通过了广泛发布的认证,支持“配置文件:核心”中包含的所有参数和功能。 请仔细阅读以下内容,并特别注意风险部分。
软硬件支持
- JAKA 部分
- 机器人硬件:全系通用(开启PROFINET支持)
- 需要将PROFINET的GSDML文件版本更新至GSDML-V2.41-JAKA-JAKARobot-20231017.xml
- 机器人控制器:v3.3.13及以上版本(控制器必须为X64版本)。
- App:v3.3.7及以上
- 西门子PLC部分
- 西门子SIMATIC S7-1500 PLC及以上,例如:西门子1516-3 PN/DP。
- PLC要支持PROFINET功能
版本说明
SRCI定义了三种功能组,这三个组内包含了所有接口功能:
| Profile Core | Profile Extended | Profile Optional |
|---|---|---|
| 包含接口的核心功能 包含基础指令 | 包含所有核心配置文件中未定义的强制指令 | 包含所有可选功能 |

节卡将主要支持有限制的Core
缩减范围的Core
以下是缩减范围的Core支持的功能:
整个Core的实现依赖于Core功能中部分基础指令的实现,这类基础指令可以理解为支持Core运行的前置指令,并不需要客户单独使用,所以不在此处列出。
部分指令的支持程度各异,会单独说明。
ChangeSpeedOverrideEnableRobotGroupContinueGroupInterruptGroupJogGroupResetGroupStopMoveAxesAbsoluteMoveDirectAbsoluteMoveLinearAbsoluteReadActualPositionReadToolDataReadFrameDataReadLoadDataReadRobotDefaultDynamicsReadRobotReferenceDynamicsReadRobotSWLimitsWriteToolDataWriteFrameDataWriteLoadDataWriteRobotDefaultDynamicsWriteRobotReferenceDynamicsWriteRobotSWLimits
限制
在使用SRCI命令之前,请仔细阅读这些限制:
使用MoveLinearAbsolute命令时,如果目标点的ConfigMode与当前点的ConfigMode不一致,它将变为不可达,enable将被禁用。
当使用WriteRobotSWLimits指令时,将切换手动/自动模式。尝试将其设置为外部T1模式。
LoadData[0]是默认值,不能通过WriteLoadData设置。如果应用程序上的默认负载不为零,[LoadData0]的数据将无法同步。
不支持的函数:
- CreateServerLog
- 读取服务器日志
- CreateClientLog
- ReadClientLog
- UserData函数的一部分:DelayTime、InterpreterCycleTime、Accelerating、ConstantVelocity、IsBlending
风险项
使用JAKA安全IO
配合JAKA的安全功能以保障操作人员的安全性。JAKA提供如下的安全安全IO:
- 附加急停
- 附加保护性停止
- 缩减模式(可以设置相应的末端速度、机器人功率等)

指令说明
符号解释:
√ 代表运行SRCI时,此参数的定义和表现与SRCI标准一致。
× 代表暂不支持。
! 代表有条件的支持。
ChangeSpeedOverride
- ChangeSpeedOverride修改除GroupJog和FreeDrive外的所有运动指令的运行速率。
- 指令支持在运动中修改,即运动中的运行速率设置是生效的。
- RI初始化后修改运行速率为5%。
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| Override | REAL | [%] | M | √ |
EnableRobot
- 节卡机器人允许单独操作Power On/Off(机械臂上下电)和Enable/Disable(机械臂上下使能),这个和其他普通工业机器人有所不同。
- Enable之前必须要Power On;Power Off之前必须要Disable。
- Enable(上使能)表示机器人可以接收运动指令。
仅支持operationmode=4(外部自动)的情况。
一般情况下,使用EnableRobot指令后只需5s便可使能机器人进行操作。
但在特殊情况下,比如遭遇碰撞或急停后再次发送该指令,时长可能会延至20s。这是因为Enable(使能)机器人的前提是Power On(上电)机器人。在一般情况下,Power On这个过程已由AddOn程序完成,所以用户直接发送Enable指令即可操作。但在特殊情况下,机器人急停后处于掉电状态(Power Off),此时AddOn依然在运行,并不会重新上电机器人。所以当再次发送Enable指令后,机器人会先给自己上电(Power On)(该过程大约为15s),而后再执行Enable指令(5s)。
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| HoldToRun | BOOL | - | M | √ |
| StepMode | USINT | - | M | ! 仅支持0和2 |
| ManualStep | BOOL | - | O | × |
响应参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| Enabled | BOOL | - | M | √ |
GroupContinue
该函数会让状态为 "Interrupted"的运动指令继续执行,在运动指令中断的情况下恢复运动。
GroupInterrupt
该功能中断所有活跃运动指令,在运动指令运动会中断运动并使所有关节停止,但已规划的路径不会清除,可以通过GroupContinue继续。
节卡支持GroupInterrupt时jog机器人,此时会自动切换到第二序列。
GroupStop的优先级大于GroupInterrupt,调用时将终止GroupInterrupt。
GroupJog
GroupJog模式共有JogFrame、JogTool和JogAxes,节卡均支持。
GroupReset
- 使用groupreset将清除ReadMessages读取的信息,包括错误、警告等信息。
- 主要使用场景是:
- 控制器错误,如pstop(保护性停止)
- addon的SRCI功能表现异常时
GroupStop
清除当前活跃序列的运动指令,并清空运动指令缓存。
MoveAxesAbsolute
该函数给出到达绝对位置的未定义路径的运动。
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| JointPosition | RobotJointPosition | - | M | !不支持外部轴 |
| VelocityRate | REAL | [%] | M | √ |
| AccelerationRate | REAL | [%] | M | √ |
| DecelerationRate | REAL | [%] | O | × |
| JerkRate | REAL | [%] | O | × |
| ToolNo | USINT | - | M | 支持0-15,默认0为法兰坐标系 |
| AbortingMode | USINT | - | M | √ |
| BlendingMode | USINT | - | M | !参考单独的blending说明 |
| BlendingParameter | ARRAY[0..1] of REAL | - | M | √ |
MoveDirectAbsolute
通过给定的笛卡尔位置计算出一条最快到达目标位置(关节位置)的路径,目标位置根据ConfigMode的ConfigParameters计算。
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| Position | RobotCartesian Position | - | M | !不支持外部轴 |
| VelocityRate | REAL | [%] | M | √ |
| AccelerationRate | REAL | [%] | M | √ |
| DecelerationRate | REAL | [%] | O | × |
| JerkRate | REAL | - | O | × |
| ToolNo | USINT | - | M | 支持0-15,默认0为法兰坐标系, -1表示当前 |
| FrameNo | USINT | - | M | 支持0-15,默认0为世界坐标系, -1表示当前 |
| AbortingMode | USINT | - | M | √ |
| BlendingMode | USINT | - | M | !参考单独的blending说明 |
| ConfigMode | ConfigParameters | - | M | !参考单独的构型说明 |
| TurnMode | USINT | - | M | ! 仅支持2 |
MoveLinearAbsolute
该函数给出到达基于指定坐标系的实际笛卡尔位置的插补直线运动路径,通过ConfigMode的ConfigParameters可以明确目标位置。
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| Position | RobotCartesian Position | - | M | !不支持外部轴 |
| VelocityRate | REAL | [%] | M | √ |
| AccelerationRate | REAL | [%] | M | √ |
| DecelerationRate | REAL | [%] | O | × |
| JerkRate | REAL | - | O | × |
| ToolNo | USINT | - | M | 支持0-15,默认0为法兰坐标系 |
| FrameNo | USINT | - | M | 支持0-15,默认0为世界坐标系 |
| AbortingMode | USINT | - | M | √ |
| BlendingMode | USINT | - | M | !参考单独的blending说明 |
| ConfigMode | ConfigParameters | - | M | !参考单独的构型说明 |
| TurnMode | USINT | - | M | ! 仅支持2 |
ReadActualPosition
读取基于指定坐标系的当前(TCP)位置。
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| ToolNo | INT | - | M | ! 支持0-15,-1表示当前 |
| FrameNo | INT | - | M | ! 支持0-15,-1表示当前 |
响应参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| Position | RobotPosition | - | M | √ |
ReadFrameData
读取基于FrameNumber的用户坐标系设置。
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| FrameNo | INT | - | M | ! 支持0-15,-1表示当前 |
ReadLoadData
读取基于LoadNo的负载数据。
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| LoadNo | INT | - | M | ! 支持1-15,-1表示当前 |
响应参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| LoadData | LoadData | - | M | !支持X、Y、Z和Mass的读取 |
ReadRobotDefaultDynamics
读取机器人默认动力学参数
响应参数
返回DefaultDynamics,结构如下:
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| VelocityRate | REAL | [%] | M | √ |
| AccelerationRate | REAL | [%] | M | √ |
| DecelerationRate | REAL | [%] | O | ×,返回-1 |
| JerkRate | REAL | [%] | O | ×,返回-1 |
ReadRobotReferenceDynamics
读取机器人参考动力学参数
响应参数
返回ReferenceDynamics,结构如下
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| VelocityReference | REAL | [mm/s] | M | √ |
| AccelerationReference | REAL | [mm/s2] | M | √ |
| DecelerationReference | REAL | [mm/s2] | O | × |
| JerkReference | REAL | [mm/s3] | O | × |
ReadRobotSWLimits
读取机器人关节正负软限位
响应参数
返回DefaultDynamics,结构如下
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| J1LowerLimit, J1UpperLimit ~ J6LowerLimit, J6UpperLimit | REAL | [mm/s] | M | √ |
| E1LowerLimit, E1UpperLimit ~ E6LowerLimit, E6UpperLimit | REAL | [mm/s] | M | × |
ReadToolData
读取基于ToolNumber的工具坐标系设置
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| ToolNo | USINT | - | M | !仅支持1~15 |
响应参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| ToolData | ToolData | - | M | √ |
WriteFrameData
基于FrameNo写入用户坐标系数据
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| FrameNo | USINT | - | M | !仅支持1~15 |
| FrameData | FrameData | - | M | √ |
referenceFrame不可以是一个已经使用referenceFrame(不为0)的坐标系
WriteLoadData
基于LoadNo写入负载数据
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| LoadNo | USINT | - | M | !仅支持1~15 |
| LoadData | LoadData | - | M | !仅支持X、Y、Z和Mass的写入 |
WriteRobotDefaultDynamics
写入机器人默认动力学参数
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| VelocityRate | REAL | [%] | M | √ |
| AccelerationRate | REAL | [%] | M | √ |
| DecelerationRate | REAL | [%] | O | × |
| JerkRate | REAL | [%] | O | × |
WriteRobotReferenceDynamics
写入机器人参考动力学参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| VelocityRate | REAL | [%] | M | √ |
| AccelerationRate | REAL | [%] | M | √ |
| DecelerationRate | REAL | [%] | O | × |
| JerkRate | REAL | [%] | O | × |
WriteToolData
基于ToolNo写入用户坐标系数据
指令参数
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| ToolNo | USINT | - | M | !仅支持1~15 |
| ToolData | ToolData | - | M | √ |
WriteRobotSWLimits
函数写入机器人的正负软极限。
投入
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| J1下限,J1上限 ~ J6下限,J6上限 | REAL | [mm/s] | M | √ |
| E1下限、E1上限 ~ E6下限、E6上限 | REAL | [mm/s] | M | × |
部署步骤
申请授权
- 有关SIMATIC PLC和TIA许可证、TIA演示、SIMATIC PLC和TIA手册,请联系西门子当地销售团队。
- 有关JAKA手册和JAKA GSDML文件,请联系JAKA当地销售团队。
准备连接
- 请打开控制器的PROFINET连接;

重启控制器;
将控制源切换到外部通信控制。

PLC准备
- SD卡初始化(PLC在下载程序到新的SD卡时,需要先复位存储卡的存储区域,再下载,否则可能会出现需要密码的情况);
- 导入JAKA提供的GSDML文件;
- 准备PROFINET组态;

- 设定PROFINET通讯周期(8ms);

- 设定循环中断时间(8ms);

- 设置SRCI数据的时候需要保持数据的起始地址和RobTask的起始地址一致,否则会出现无法初始化的情况;


故障排查
一般排查顺序
- 检查机器人控制器版本和SRCI AddOn版本是否对应;
- 检查AddOn是否运行;
- 检查机器人和PLC的PROFINET是否建立通讯(PLC功能是否使用了正确的JAKA的GSDML文件);
- 检查PLC的PROFINET数据帧是否配置;
- 如果依然不行,联系JAKA售后支持(或发邮件至SRCI.Support@jaka.com, 附上AddOn导出文件)。
SRCI通讯建立失败的排查顺序为:
- 确认JAKA端PROFINET是否正常运行并与PLC连接;
- 确认PLC端配置信息是否有误;
- 如果经常断连,则检查交换机是否符合PROFINET要求,或者不经过交换机,将PLC和控制柜进行直连;
- 如果PROFINET已正常连接,则为SRCI的通讯问题;
- 如果需要HMI模拟,请继续Windows控制面板设置中的“设置PG/PC界面”。

在“应用程序的接入点”下,选择“S7ONLINE(步骤7)”。
在“使用的接口参数分配”下,找到并选择“您的网络适配器>.TCPIP.1”。
根据您使用的连接的WiFi网卡或有线以太网网卡,您的网络适配器会有所不同。
要验证所需的选择是否已保存并正在使用,请查找所选网络适配器旁边的Active标记。
如需更多详细信息,请联系西门子。

下发指令后机器人不动:
- 检查overridespeed设置;
- 检查defaultDynamic和referenceDynamic中的Velocity相关设置;
- 检查运动指令中的速度和加速度设置;
- 检查是否处于Interrupted状态。
附录
JAKA机械臂SEW说明
| 参数 | 数据类型 | 单位 | M/O | 备注 |
|---|---|---|---|---|
| Shoulder | USINT | - | M(需支持默认0,使用设置) | 支持0-使用配置和1-不改变移动时配置 |
| Elbow | USINT | - | M | 同上 |
| Wrist | USINT | - | M | 同上 |
协作机器人构型一般有别于工业机器人,特别是4-5-6轴不会相交于一点,也就是没有工业机器人传统的WCP(wrist center point)。一般用4-5轴或者5-6轴交点代替。
shoulder

elbow

wrist
w = sin(axis5)
JAKA路径Blending说明
多运动段转接方式如下: 
目前支持的转接场景:
- 关节转关节
- 关节转直线
- 直线转直线
- 直线转关节
要实现转接功能,需要在usersetting.ini中设置如下配置参数(默认不用修改):
- MOVEJ_MOVEL_BLEND = 1
- MOVEJ_MOVEJ_BLEND = 1
当前支持的BlendingMode:0(Exact Stop)和4(MaxCornerDeviation)
