Siemens PLC Snap7 标准指令说明
本文介绍基于 Siemens Snap7 协议(简称 S7 协议)的标准接口指令。
指令总览
RVS 2.0 S7 协议支持以下标准指令:
寄存器使用说明
字段名 |
类型 |
偏移/地址 |
描述 |
|---|---|---|---|
Command Trigger |
Bool |
0.0 |
触发信号 |
Command |
Int |
2.0 |
指令码 |
Pose Type |
Int |
4.0 |
位姿类型 |
Pose Number |
Int |
6.0 |
预期视觉点或路径点数量 |
Vision Project No. |
Int |
8.0 |
工程编号 |
Recipe No. |
Int |
10.0 |
参数配方编号 |
Flange Pose |
Array[0..5] of Real |
36.0 |
法兰位姿数据 |
External Input Box Dimension |
Array[0..2] of Real |
68.0 |
传入 RVS 2.0 工程的物体尺寸 |
Index Counter |
Int |
108.0 |
索引个数 |
Index Name |
Int |
110.0 |
索引编号 |
字段名 |
类型 |
偏移/地址 |
描述 |
|---|---|---|---|
Trigger Acknowledge |
Bool |
194.0 |
触发确认 |
Status Code |
Int |
200.0 |
状态码 |
Status of Pose Sent |
Bool |
202.0 |
是否已获取所有视觉点 |
Number of Pose Sent |
Int |
204.0 |
视觉点的数量 |
Target Pose |
Array[0..39, 0..5] of Real |
208.0 |
此次获取的所有视觉点的位姿 |
Target Label |
Array[0..39] of Int |
1168.0 |
此次获取的所有视觉点的标签 |
Target Tool ID |
Array[0..39] of Int |
1248.0 |
此次获取的所有视觉点的末端工具编号 |
Custom Vision Output |
Array[0..39, 0..9] of Real |
1456.0 |
此次获取的所有视觉点的自定义数据 |
指令的收发
机器人或上位机(服务端)向 RVS 2.0 视觉系统(客户端)发送指令,视觉系统处理完成后将结果返回给机器人或上位机。
注意
当前版本仅支持本软件作为 S7 客户端运行。
指令的数据单位
RVS 2.0 软件内部使用四元数表示位姿,但指令通信时会自动转换为欧拉角形式。
机器人法兰位姿或机器人工具位姿由位置和姿态组成:位置(XYZ 坐标值)单位为毫米(mm),姿态采用欧拉角表示,单位为度(°)。
101 指令:运行 RVS 2.0 工程
功能介绍
该指令用于触发指定的 RVS 2.0 工程运行。工程运行期间,视觉系统将依次执行拍照、图像处理与算法分析,并最终输出一系列视觉点。
注意
视觉点:指系统识别出的目标物体信息单元,每个视觉点包含物体的位姿、标签、尺寸及用户自定义数据等。
调用顺序
工程中的步骤参数需在运行工程之前设置,因此 103 指令:切换参数配方 需先于 101 指令 调用。
只有运行工程后,视觉系统才会生成视觉点,因此 101 指令 需先于 102 指令:获取视觉结果 或 109 指令:获取用户标签数据 调用。
输入参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Command |
Int |
2.0 |
指令码为 101 |
Vision Project No. |
Int |
8.0 |
RVS 2.0 工程编号 |
Pose Number |
Int |
6.0 |
预期视觉点数量 |
Pose Type |
Int |
4.0 |
机器人位姿类型 |
Flange Pose |
Array[0..5] of Real |
36.0 |
机器人位姿,Flange Pose 为法兰位姿数据 |
参数说明
参数 |
说明 |
|---|---|
RVS 2.0 工程编号 |
在工程列表窗口中查看,工程名称前的数字即为编号。 |
预期视觉点数量 |
期望获取的视觉点数量: |
机器人位姿类型 |
指定机器人位姿的传入形式: |
机器人位姿 |
根据“机器人位姿类型”传入对应数据,详见下表。 |
机器人位姿类型与位姿数据说明
机器人位姿格式 |
说明 |
适用场景 |
|
|---|---|---|---|
0 |
0,0,0,0,0,0(占位参数,实际无效) |
不向视觉系统传入机器人位姿。 |
相机为 Eye To Hand(眼在手外)安装,且项目无需提前拍照时使用。 |
2 |
机器人当前法兰位姿 |
传入机器人当前法兰位姿,用于视觉系统计算相机位置。 |
适用于绝大多数场景,尤其是 Eye In Hand(眼在手上)安装方式。 |
输出参数
字段名 |
类型 |
偏移/地址 |
描述 |
|---|---|---|---|
Status Code |
Int |
200.0 |
状态码 |
其中,若指令执行成功,状态码为 1102;若指令执行异常,则状态码为对应的错误码,具体参见 RVS 2.0 错误状态码。
102 指令:获取视觉结果
功能介绍
该指令用于获取 RVS 2.0 工程运行后输出的视觉结果(即一系列视觉点)。视觉点中的物体位姿(对应“视觉输出”步骤的 Any 端口数据)已由视觉系统转换为对应机器人的工具位姿。
调用顺序
该指令需在 101 指令:运行 RVS 2.0 工程 成功运行工程、且已调用 109 指令:获取用户标签数据 之后调用。调用该指令获取数据后,“视觉输出”步骤的数据将被清空。
输入参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Command |
Int |
2.0 |
指令码为 102 |
Vision Project No. |
Int |
8.0 |
RVS 2.0 工程编号 |
Index Counter |
Int |
108.0 |
索引个数 |
Index Name |
Int |
110.0 |
索引编号 |
RVS 2.0 工程编号
需与 101 指令中运行的工程编号一致。
索引个数及索引编号(可选项)
指定要获取的视觉点索引个数及编号,索引编号从 0 开始。 例如,当前共有 3 个视觉点,本次要获取 2 个,可通过索引编号指定具体组合(如 0,1、0,2 或 1,2)。
输出参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Status Code |
Int |
200.0 |
状态码 |
Status of Pose Sent |
Bool |
202.0 |
是否已获取所有视觉点 |
Number of Pose Sent |
Int |
204.0 |
视觉点数量 |
Target Pose |
Array[0..39, 0..5] of Real |
208.0 |
此次获取的所有视觉点的位姿 |
Target Label |
Array[0..39] of Int |
1168.0 |
此次获取的所有视觉点的标签 |
Target Tool ID |
Array[0..39] of Int |
1248.0 |
此次获取的所有视觉点的末端工具编号 |
参数说明
参数 |
说明 |
|---|---|
状态码 |
1100:执行成功;其他为错误码,具体参见 RVS 2.0 错误状态码。 |
是否已获取所有视觉点 |
False:未获取全部视觉点。 |
视觉点数量 |
本次返回的视觉点个数。 |
此次获取的所有视觉点的位姿 |
此次获取的所有视觉点的位姿,且位姿类型为机器人工具位姿。视觉系统会将视觉点的物体位姿(即“视觉输出”步骤的 Any 端口数据)自动转换为对应的机器人工具位姿。 |
此次获取的所有视觉点的标签 |
此次获取的所有视觉点的标签。若无标签信息,则标签值默认为 0。 |
此次获取的所有视觉点的末端工具编号 |
此次获取的所有视觉点的末端工具编号。若无,则默认为 0。 |
103 指令:切换参数配方
功能介绍
该指令用于切换 RVS 2.0 工程所使用的参数配方。
调用顺序
该指令需在 101 指令:运行 RVS 2.0 工程 之前调用。
输入参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Command |
Int |
2.0 |
指令码为 103 |
Vision Project No. |
Int |
8.0 |
RVS 2.0 工程编号 |
Recipe No. |
Int |
10.0 |
参数配方编号 |
其中,
RVS 2.0 工程编号
在工程列表窗口中查看,工程名称前的数字即为编号。
参数配方编号
输出参数
字段名 |
类型 |
偏移/地址 |
描述 |
|---|---|---|---|
Status Code |
Int |
200.0 |
状态码 |
其中,若指令执行正常,则状态码为 1107;若指令执行异常,则状态码为对应的错误码,具体参见 RVS 2.0 错误状态码。
109 指令:获取用户标签数据
功能介绍
该指令用于获取 RVS 2.0 工程定义的用户标签数据(对应视觉输出步骤“用户标签”引脚的输入)。
调用顺序
该指令需在 101 指令:运行 RVS 2.0 工程 成功运行工程之后调用,并在 102 指令:获取视觉结果 之前调用。
输入参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Command |
Int |
2.0 |
指令码为 109 |
Vision Project No. |
Int |
8.0 |
RVS 2.0 工程编号 |
RVS 2.0 工程编号
需与 101 指令中运行的工程编号一致。
输出参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Status Code |
Int |
200.0 |
状态码 |
Target Label |
Array[0..39] of Int |
1168.0 |
此次获取的用户标签数据 |
Status of Pose Sent |
Bool |
202.0 |
是否已获取所有用户标签数据 |
其中,若指令执行正常,则状态码为 1100;若指令执行异常,则状态码为对应的错误码,具体参见 RVS 2.0 错误状态码。
110 指令:获取自定义数据
功能介绍
该指令用于获取“视觉输出”步骤的自定义端口数据,输入端口可根据需求自定义配置。

注意
图中上方的
poses、labels、sizes、offsets等预设端口数据不属于自定义数据。“视觉输出”步骤的 端口类型 参数需设置为“自定义”,且必须存在
poses端口。
调用顺序
该指令需在 101 指令:运行 RVS 2.0 工程 成功运行工程之后调用。
输入参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Command |
Int |
2.0 |
指令码为 110 |
Vision Project No. |
Int |
8.0 |
RVS 2.0 工程编号 |
RVS 2.0 工程编号
在工程列表窗口中查看,工程名称前的数字即为编号。需与 101 指令中运行的工程编号一致。
输出参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Status Code |
Int |
200.0 |
状态码 |
Status of Pose Sent |
Bool |
202.0 |
是否已获取所有视觉点 |
Target Pose |
Array[0..39, 0..5] of Real |
208.0 |
此次获取的所有视觉点的位姿 |
Target Label |
Array[0..39] of Int |
1168.0 |
此次获取的所有视觉点的标签 |
Custom Vision Output |
Array[0..39, 0..9] of Real |
1456.0 |
此次获取的所有视觉点的自定义数据 |
Status Code
若指令执行正常,则状态码为 1100;若指令执行异常,则状态码为对应的错误码,具体参见 RVS 2.0 错误状态码。
Status of Pose Sent
该参数表示是否已获取所有视觉点,其值为 False 或 True。
False:未获取所有视觉点。
True:已获取所有视觉点。
Target Pose
该参数表示此次获取的所有视觉点的位姿。
视觉系统会自动将视觉点的物体位姿(即“视觉输出”步骤的 poses 端口数据)转换为对应的机器人工具位姿,转换流程如下:
将物体位姿由四元数形式转换为欧拉角形式。
将物体位姿绕 X 轴旋转 180°,使其 Z 轴朝下。
Target Label
该参数表示此次获取的所有视觉点的标签。
备注
标签必须是一个整数形式的字符串。
若无标签信息,则标签值默认为 0。
Custom Vision Output
此次获取的所有视觉点的自定义数据。自定义数据项按自定义端口名称的字母顺序(A—Z)排列。
例如,若“视觉输出”步骤各端口的数据如下表所示,则机器人获取的第一个视觉点的 自定义数据项 为 [0, 0, 1] 与 [0, 0],第二个视觉点的 自定义数据项 为 [1, 0, 0] 与 [1, 1]。
端口名称 |
poses |
labels |
自定义数据项1 |
自定义数据项2 |
|---|---|---|---|---|
端口数据 |
[ |
[ |
[ |
[ |
[0, 0, 0, 1, 0, 0, 0], |
"0", |
[0, 0, 1], |
[0, 0], |
|
[0, 0, 0, 1, 0, 0, 0], |
"1" |
[1, 0, 0] |
[1, 1] |
|
] |
] |
] |
] |
|
第一个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
0 |
[0, 0, 1] |
[0, 0] |
第二个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
1 |
[1, 0, 0] |
[1, 1] |
501 指令:向 RVS 2.0 工程传入物体尺寸
功能介绍
该指令用于向 RVS 2.0 工程传入物体尺寸。传入的物体尺寸即“读取物体尺寸”步骤的 箱子尺寸设置 参数值,如下图所示。

注意
使用该指令时,RVS 2.0 工程中只能存在一个“读取物体尺寸”步骤,否则视觉系统将返回错误。
调用顺序
该指令需在 101 指令:运行 RVS 2.0 工程 之前调用。
输入参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Command |
Int |
2.0 |
指令码为 501 |
Vision Project No. |
Int |
8.0 |
RVS 2.0 工程编号 |
External Input Box Dimension |
Array[0..2] of Real |
68.0 |
传入 RVS 2.0 工程的物体尺寸 |
Vision Project No.
在工程列表窗口中查看,工程名称前的数字即为编号。需与 101 指令中运行的工程编号一致。
External Input Box Dimension
物体尺寸的长宽高,单位为毫米(mm)。尺寸值将被“读取物体尺寸”步骤读取,并分别写入 X轴上的长度、Y轴上的长度、Z轴上的长度。
输出参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Status Code |
Int |
200.0 |
状态码 |
Status Code
若指令执行正常,则状态码为 1108;若指令执行异常,则状态码为对应的错误码,具体参见 RVS 2.0 错误状态码。
901 指令:获取系统状态
功能介绍
该指令用于检测 RVS 2.0 视觉系统是否就绪,检测内容包括 RVS 2.0 状态和相机状态。
输入参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Command |
Int |
2.0 |
指令码为 901 |
输出参数
名称 |
数据类型 |
偏移量 |
注释 |
|---|---|---|---|
Status Code |
Int |
200.0 |
状态码 |
状态码
若指令执行正常,则状态码为 1101。若指令执行异常,则状态码为对应的错误码,具体参见 RVS 2.0 错误状态码。