GET和PUT(从远程CPU读写)指令

2019年1月8日21:16:06 发表评论 3,381 阅读

可以使用GET和PUT指令通过 PROFINET 和 PROFIBUS 连接与 S7 CPU 通信。 仅当在本地CPU属性的“保护”(Protection) 属性中为伙伴CPU激活了“允许使用PUT/GET通信进行访问”(Permit access with PUT/GET communication) 功能后,才可进行此操作:

  • 访问远程CPU中的数据: S7-1200 CPU 在 ADDR_x输入字段中只能使用绝对地址对远程CPU (S7-200/300/400/1200)的变量寻址。
  • 访问标准DB中的数据: S7-1200 CPU 在 ADDR_x输入字段中只能使用绝对地址对远程 S7CPU标准DB中的DB变量寻址。
  • 访问优化DB中的数据: S7-1200 CPU 不能访问远程 S7-1200 CPU 的优化DB中的DB 变量。
  • 访问本地CPU中的数据: S7-1200 CPU 可使用绝对地址或符号地址分别作为GET或PUT指令的RD_x或SD_x输入字段的输入。

V4.0CPU程序GET/PUT操作不会自动启用

V3.0 CPU 程序 GET/PUT 操作在 V4.0 CPU 中会自动启用。

不过,V4.0CPU中V4.0CPU程序GET/PUT操作不会自动启用。 要启用GET/PUT访问 ,必须转到CPU“设备组态”(evice configuration),打开巡视窗口,选择“属性”(Properties) 选项卡下的“保护”(Protection) 属性。

表格11- 63GET和PU指令

表格11- 64参数的数据类型

必须确保 ADDR_x(远程 CPU)与 RD_x 或 SD_x (本地 CPU)参数的长度(字节数)和数据类型相匹配。 标识符“Byte”之后的数字是 ADDR_x、RD_x 或 SD_x 参数引用的字节数。

说明

通过 GET 指令可接收的字节总数或者通过 PUT 指令可发送的字节总数有一定的限制。 具体限制取决于使用了四个可用地址和存储区中的多少:

  • 如果仅使用ADDR_1和 RD_1/SD_1,则一个 GET 指令可获取 222 个字节,一个PUT 指令可发送 212 个字节。
  • 如果使用ADDR_1、RD_1/SD_1、ADDR_2和 RD_2/SD_2,则一个 GET指令总共可获取 218 个字节,一个 PUT 指令总共可发送 196 个字节。
  • 如果使用ADDR_1、RD_1/SD_1、ADDR_2、RD_2/SD_2、ADDR_3和 RD_3/SD_3,则一个 GET 指令总共可获取 214 个字节,一个 PUT 指令总共可获取 180 个字节。
  • 如果使用ADDR_1、RD_1/SD_1、ADDR_2、RD_2/SD_2、ADDR_3、RD_3/SD_3、ADDR_4、RD_4/SD_4,则一个 GET 指令总共可获取 210 个字节,一个 PUT 指令总共可发送164 个字节。

各个地址和存储区参数的字节数之和必须小于等于定义的限值。 如果超出这些限值,GET 或 PUT 指令将返回错误。

在 REQ 参数的上升沿出现时,读操作 (GET) 或写操作 (PUT) 将装载 ID、ADDR_1 和

RD_1 (GET) 或 SD_1 (PUT) 参数。

  • 对于GET:从下次扫描开始,远程 CPU 会将请求的数据返回接收区 (RD_x)。 当读操作顺利完成时,NDR 参数设置为 1。只有在完成前一个操作后,才能开始新的操作。
  • 对于PUT:本地 CPU 开始将数据发送 (SD_x) 到远程 CPU 中的存储位置 (ADDR_x)。 写操作顺利完成后,远程 CPU 返回执行确认。 然后,PUT 指令的 DONE 参数设置为 1。只有在完成前一个操作后,才能开始新的写操作。

说明 为确保数据的一致性,应始终在访问数据或启动另一读/写操作前评估已经完成的操作(对于GET 评估NDR=1;对于 PUT 评估 DONE = 1)。ERROR 和 STATUS 参数提供有关读 (GET) 或写 (PUT) 操作的状态信息。

表格11- 65错误信息

ERROR STATUS

(十

进制)

说明
0 11 · 由于前一个作业还没有结束,所以不能执行新作业。

· 正在以较低优先级处理此作业。

0 25 通信已启动。 正在处理作业。
1 1 通讯故障,如:

· 未装载连接描述(本地或远程)

· 连接被中断(例如: 电缆断线、CPU 关闭或 CM/CB/CP 处于 STOP

模式)

· 没有建立到通信伙伴的连接

1 2 来自伙伴设备的否定应答。 无法执行任务。
1 4 发送区指针(GET 的 RD_x,或 PUT 的

SD_x)出错,包括数据长度或数据类型。

1 8 在伙伴 CPU 上发生访问错误
1 10 无法访问本地用户存储器(例如,尝试访问已经删除的数据块)
1 12 调用 SFB 时:

· 指定了不属于 GET 或 PUT 的背景数据块

· 未指定背景数据块,而是指定了一个共享数据块

· 未发现背景数据块(装载新的背景数据块)

1 20 · 超出并行作业/实例的最大数量

· 当 CPU 处于 RUN 模式时,实例过载 首次执行 GET 或 PUT 指令时可能出现此状态

1 27 CPU 中没有相应的 GET 或 PUT 指令。

创建 S7 连接

连接机制

要使用 PUT/GET 指令访问远程连接伙伴,用户还必须得到许可。

默认情况下,“允许使用 PUT/GET 通信进行访问”(Permit access with PUT/GET communication) 选项处于未启用状态。 这时,只有需要对本地 CPU 和通信伙伴同时进行组态和编程的通信连接才能实现对 CPU 数据的读写访问。 例如,可以通过 BSEND/BRCV 指令进行访问。

因此,本地 CPU 仅作为服务器的连接(也就是说,本地 CPU

中不存在带有通信伙伴的通信组态/编程)在 CPU 运行期间不可用,例如:

  • 通过通信模块进行PUT/GET、FETCH/WRITE或FTP访问
  • 从其它S7 CPU进行PUT/GET访问

通过PUT/GET通信进行 HMI 访问 如果希望允许从客户端访问CPU数据,即不希望限制CPU

连接类型

所选的连接类型用于创建与伙伴站的通信连接。 控制器将设置、建立并自动监视该连接。

在“设备和网络”(Devices and Networks) 门户中,使用“网络视图”(Network view) 创建项目中各设备之间的网络连接。 首先,请单击“连接”(Connections) 选项卡,然后使用右侧的下拉框选择连接类型(例如 S7 连接)。 单击第一个设备上的绿色 (PROFINET) 框,然后拖出一条线连接到第二个设备上的 PROFINET 框。 松开鼠标按钮,即可创建 PROFINET 连接。

单击“突出显示: 连接”(Highlighted: Connection) 按钮访问通信指令的“属性”(Properties) 组态对话框。

组态两台设备间的本地/伙伴连接路径

组态常规参数

在通信指令的“属性”(Properties) 组态对话框中指定通信参数。 只要选中了该指令的任何一部分,此对话框就会出现在页面底部附近。 在“连接参数”(Connection parameters) 对话框的“地址详细信息”(Address Details)部分,定义要使用的 TSAP 或端口。 在“本地 TSAP”(Local TSAP) 字段中输入 CPU 中连接的 TSAP 或端口。 在“伙伴 TSAP”(Partner TSAP) 字段下输入为伙伴 CPU 中的连接分配的 TSAP 或端口。

GET/PUT连接参数分配

GET/PUT 指令连接参数分配是一项用于CPU间S7通信连接组态的用户辅助功能。 插入GET或PUT块后,STEP 7显示GET/PUT指令的连接参数分配对话框:

每次选择指令的任何一部分,巡视窗口都会显示连接的属性。 可以在通信指令“属性”(Properties) 的“组态”(Configuration) 选项卡中组态通信参数。

V4.1 及以上版本 CPU 程序 GET/PUT 操作不会自动启用

V3.0 CPU 程序GET/PUT操作在V4.1及以上版本 CPU 中会自动启用。 不过V4.1及以上版本CPU程序GET/PUT操作在V4.1及以上版本CPU中不会自动启用。 要启用GET/PUT访问,必须转到CPU“设备组态”(eviceconfiguration),打开巡视窗口,选择“属性”(Properties) 选项卡下的“保护”(Protection) 属性。

连接参数

在“连接参数”(Connection parameters) 页面中,可以组态必要的 S7 连接,以及组态由 GET/PUT 块参数“ID”引用的参数“连接 ID”(Connection ID)。 页面内容包括有关本地端点的信息,用户可在页面中定义本地接口。 您还可定义伙伴端点。通过“块参数”(Block parameters) 页面可组态其它块参数。

表格 11- 66 连接参数: 常规定义

参数 定义
连接参数: 端点 “本地端点”: 分配给本地 CPU 的名称
常规 “伙伴端点”: 分配给伙伴(远程)CPU 的名称
注: 在“伙伴端点”(Partner End point)
下拉列表中,系统将显示当前项目中所有可能的 S7
连接伙伴以及选项“未指定”(unspecified)。 未指定伙伴是指当前不在
STEP 7 项目中的通信伙伴(例如,第三方设备通信伙伴)。
接口 分配给接口的名称

注: 您可通过更改本地和伙伴接口来更改连接

接口类型 接口类型
子网名称 分配给子网的名称
地址 分配的 IP 地址

注: 您可为“未指定”通信伙伴指定一个第三方设备远程地址。

连接 ID ID 号: 由 GET/PUT 连接参数分配自动生成
连接名称 本地和伙伴 CPU 的数据存储位置: 由 GET/PUT

连接参数分配自动生成

主动连接建立 用于选择本地 CPU 作为主动连接的复选框
单向 指定单向或双向连接的复选框;只读
注: 在 PROFINET GET/PUT
连接中,本地与伙伴设备都可以作为服务器或客户端。
这样就可以进行双向连接,并取消选中“单向”(One-way) 复选框。
在某些情况下,PROFIBUS GET/PUT
连接中的伙伴设备只能作为服务器(例如 S7-
300),并选中“单向”(One-way) 复选框。

连接 ID 参数

共有三种更改系统定义连接 ID 的方法:

  1. 用户可在GET/PUT 块中直接更改当前 ID。 如果新 ID属于已存在的连接,则连接将更改。
  1. 用户可在GET/PUT 块中直接更改当前 ID,但不能有新 ID。 系统已创建新 S7 连接。
  2. 可通过“连接概况”(Connection overview) 对话框更改当前的 ID:用户的输入与相GET/PUT 块中的 ID 参数同步。

GET/PUT

块的参数“ID”不是连接名称,而是一个数字表达式,其写法类似于以下示例: W#16#1

连接名称参数

可以通过特殊用户控件(“连接概况”(Connection overview) 对话框)编辑连接名称。 该对话框提供所有可用 S7 连接,可以选择这些连接作为当前 GET/PUT 通信的备选方式。 用户可在此表中创建全新的连接。 单击“连接名称”(Connection name) 字段右侧的按钮,可启动“连接概况”(Connection overview) 对话框。

组态CPU间的S7连接

假设PLC_1、PLC_2和PLC_3的组态如下图所示,为“PLC_1”插入GET或PUT块。

对于 GET 或 PUT 指令,将在巡视窗口中自动显示“属性”(Properties) 选项卡,且包含以下菜单选项:

  • “组态”(Configuration)
  • “连接参数”(Connectionparameters)

组态PROFINET S7 连接

对于“伙伴端点”,请选择“PLC_3”。

系统将进行以下更改以对此进行响应:

表格 11- 67 连接参数: 常规值

参数 定义
连接参数: 常规 端点 “本地端点”中为只读的“PLC_1”。 “伙伴端点”字段中为“PLC_3[CPU319-3PN/DP]”:

· 颜色从红色变为白色

· 显示“伙伴”设备图像。

· PLC_1 和 PLC_3

设备图像之间有一条连接线(绿色以太网线)。

接口 “本地接口”中为“CPU1214C DC/DC/DC、PROFINET interface (R0/S1)”。

“伙伴接口”中为: “CPU319-3PN/DP、PROFINET interface (R0/S2)”。

接口类型 “本地接口类型”中为“Ethernet/IP”;控件为只读。 “伙伴接口类型”中为“Ethernet/IP”;控件为只读。

本地和伙伴“接口类型”(绿色以太网图标)旁显示接口类型的图像。

子网名称 “本地子网名称”中为“PN/IE_1”;控件为只读。 “伙伴子网名称”中为“PN/IE_1”;控件为只读。
参数 定义
  地址 “本地地址”中为本地 IP 地址;控件为只读。

“伙伴地址”中为伙伴 IP 地址;控件为只读。

连接 ID “连接 ID”中为“100”。

在程序编辑器中,Main [OB1] 中的 GET/PUT 块“连接

ID”值也为“100”。

连接名称 “连接名称”中为默认的连接名称(例如,“S7_Connection_1”);控 件已启用。
主动连接建立 选中并启用,以选择本地 CPU 作为主动连接。
单向 只读且取消选中。

注: “PLC_1” (S7-1200 CPU 1214CDC/DC/Rly) 和“PLC_3” (S7- 300 CPU 319-3PN/DP) 在 PROFINET GET/PUT

连接中都可以作为服务器和客户端,实现双向连接。

属性视图树中的GET/PUT图标也将从红色变为绿色。

完成PROFINET S7连接

在“网络视图”(Network view) 中,将在“PLC_1”和“PLC_3”之间的“连接”(Connections) 表中显示 S7 双向连接。

系统将进行以下更改以对此进行响应:

表格 11- 68 连接参数: 常规值

参数 定义
连接参数: 常规 端点 “本地端点”中为只读的“PLC_1”。 “伙伴端点”字段中为“PLC_3[CPU319-3PN/DP]”:

· 颜色从红色变为白色

· 显示“伙伴”设备图像。

· PLC_1 和 PLC_3 设备图像之间有一条连接线(紫色的

PROFIBUS 线)。

接口 “本地接口”中为“CPU1214C DC/DC/DC、PROFIBUS interface (R0/S1)”。

“伙伴接口”中为: “CPU319-3PN/DP、PROFIBUS interface (R0/S2)”。

接口类型 “本地接口类型”中为“PROFIBUS”;控件为只读。 “伙伴接口类型”中为“PROFIBUS”;控件为只读。 本地和伙伴“接口类型”(紫色的 PROFIBUS

图标)旁显示接口类型的图像。

参数 定义
  子网名称 “本地子网名称”中为“PROFIBUS _1”;控件为只读。 “伙伴子网名称”中为“PROFIBUS _1”;控件为只读。
地址 “本地地址”中为本地 IP 地址;控件为只读。

“伙伴地址”中为伙伴 IP 地址;控件为只读。

连接 ID “连接 ID”中为“100”。

在程序编辑器中,Main [OB1] 中的 GET/PUT 块“连接

ID”值也为“100”。

连接名称 “连接名称”中为默认的连接名称(例如,“S7_Connection_1”);控 件已启用。
主动连接建立 只读,选中并启用,以选择本地 CPU 作为主动连接。
单向 只读且选中。

注: “PLC_3” (S7-300 CPU319-3PN/DP) 在 PROFIBUS GET/PUT

连接中只能作为服务器(无法同时作为客户端),只能进行单向连 接。

属性视图树中的 GET/PUT 图标也将从红色变为绿色。

完成PROFIBUS S7连接

在“网络视图”(Network view) 中,将在“PLC_1”和“PLC_3”之间的“连接”(Connections) 表中显示 S7 单向连接。

weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: