使用PUT和GET指令通过S7连接在两个CPU之间交换数据

描述

HMI

关 PUT/GET 指令的基本信息

使用 PUT 和 GET 指令通过 S7 连接在两个 CPU 之间交换数据。

GET 指令用于读取某个伙伴 CPU 的数据。通信伙伴通过用户程序使用 PUT 指令控制变量的写入。除了 PUT 和 GET 指令外,未提供用于读取和写入变量的其它通信功能。

为简化这两个指令的使用,可在程序编辑器的巡视窗口中指定所有需要的连接参数以及所有块参数。

要求

必须满足以下要求方可使用 PUT 和 GET 指令:

必须在项目中创建至少一个 S7-1200/1500 CPU 或 S7-300/400 CPU。必须在 S7-1200 CPU 上安装固件 2.0 或更高版本。如果尚未在项目中创建第二个 CPU,则最初可以建立到未指定伙伴的连接。

两个 CPU 之间必须存在 S7 连接。如果尚未在两个 CPU 之间建立连接,则会在组态指令期间自动建立连接。

对于这两个指令,需要一个背景数据块,用来存储指令使用的所有数据。在程序编辑器中将 PUT 或 GET 指令拖动到网络中后,将立即自动创建该背景数据块。要正确执行该程序,请确保背景数据块不能发生变化;因此,这些数据块将设为受专有技术保护的。只能读取这些背景数据块。

许借助 PUT/GET 通信从远程伙伴访问

默认情况下,禁用“允许借助 PUT/GET 通信从远程伙伴访问 (...) ”(Permit access with PUT/GET communication from remote partners (...)) 选项。如果激活该选项,则只能在本地 CPU 和通信伙伴间需要通过组态或编程建立的通信连接中对 CPU 数据进行读写访问。例如,可以通过 BSEND/BRCV 指令进行访问。

本地 CPU 仅作为服务器的连接(即表示本地 CPU 上不存在使用通信伙伴进行的通信组态/编程),因此无法在操作 CPU 时进行。例如,

在通过通信模块进行 PUT/GET、FETCH/WRITE 或 FTP 访问时

在从其它 S7 CPU 进行 PUT/GET 访问时

在通过 PUT/GET 通信实现 HMI 访问时

如果要允许从客户端访问 CPU 数据,也就是不希望限制 CPU 的通信服务,则激活“允许借助 PUT/GET 通信从远程伙伴访问”(Permit access with PUT/GET communication from remote partners) 选项。

可以在 PUT/GET 指令的连接参数分配期间创建 S7 连接并为这些连接分配参数。连接参数分配将立即检查更改后值是否存在输入错误。

要求

CPU 中存在 PUT 或 GET 通信指令。

步骤

要使用 PUT/GET 指令组态 S7 连接,请按以下步骤操作:

在程序编辑器中,选择 PUT 或 GET 指令的调用。
在巡视窗口中,打开“属性 > 组态”(Properties > Configuration) 选项卡。
选择“连接参数”(Connection parameters) 组。在选择连接伙伴之前,只启用了伙伴端点的空下拉列表。其它所有输入选项均被禁用。
同时显示一些已知的连接参数:
本地端点的名称
本地端点的接口
本地端点的 IP 地址
从伙伴端点的下拉列表框中,选择一个连接伙伴。可以选择项目中未指定的设备或 CPU 作为通信伙伴。
选择连接伙伴后,将立即自动输入以下参数:
伙伴端点的接口
伙伴端点的接口。如果有多个接口可用,则可根据需要更改接口。
伙伴端点的接口类型
两个端点的子网名称
伙伴端点的 IP 地址
用于通信的连接的名称。如果尚不存在连接,则将自动创建连接。
根据需要,在“连接名称”(Connection name) 输入框中更改连接名称。如果要创建新连接或编辑现有连接,可单击“创建新连接”(Create new connection) 图标。
说明
只有在伙伴端点的硬件配置和程序部分均已加载到硬件中后,两个通信伙伴之间的 PUT 和 GET 指令方可运行。要实现功能完整的通信,应确保在设备上不仅装载了本地 CPU 的连接描述,而且还装载了伙伴 CPU 的连接描述。
PUT:设置写入和发送区域的参数

使用 PUT 指令进行通信时,必须指定数据待写入的伙伴 CPU 的存储区。此外,还必须指定本地 CPU 中数据读取的存储区。

要求

程序编辑器已打开。

已插入一个 PUT 指令。

已在 2 个通信伙伴之间建立连接。

步骤

要指定该指令的读取和存储区域,请遵循以下操作步骤:

在程序编辑器中选择 PUT 指令。
在巡视窗口中打开“组态”(Configuration) 选项卡。
在区域导航中选择“块参数分配”(Block parameter assignment) 条目。
在“输入/输出 > 写入区域 (ADDR_1) > 开始”(In/Outputs > Write area (ADDR_1) > Start) 字段中,选择一个“REMOTE”数据类型指针,指向数据待写入的伙伴 CPU 区域。
只能使用绝对寻址。
示例:P#DB10.DBX5.0 Byte 10
在“长度”(Length) 字段中,输入写入区域的长度并从下拉列表中选择存储区的数据类型。
在“输入/输出 > 发送区域 (SD_1) > 开始”(In/Outputs > Send area (SD_1) > Start) 区域中,选择一个指针,指向包含待发送数据的本地 CPU 区域。
在“长度”(Length) 字段中,输入待读取存储区的长度并从下拉列表中选择数据类型。
只能使用数据类型 BOOL(对于位数组,必须将“0”用作地址,将字节的整数倍用作长度)、BYTE、CHAR、WORD、INT、DWORD、DINT、REAL、COUNTER、TIMER。
如果 VARIANT 指针访问某个数据块,那么必须指定该数据块(例如:P#DB10.DBX5.0 Byte 10)。
GET:设置读取和存储区的参数

使用 GET 指令进行通信时,必须指定数据待写入的本地 CPU 的存储区。此外,还必须指定伙伴 CPU 中数据读取的存储区。

要求

程序编辑器已打开。

已插入一个 GET 指令。

已在 2 个通信伙伴之间建立连接。

步骤

要指定该指令的读取和存储区域,请遵循以下操作步骤:

在程序编辑器中选择 GET 指令。
在巡视窗口中打开“组态”(Configuration) 选项卡。
在区域导航中选择“块参数分配”(Block parameter assignment) 条目。
在“输入/输出 > 读取区域 (ADDR_1) > 开始”(In/Outputs > Read area (ADDR_1) > Start) 字段中,选择一个“REMOTE”数据类型指针,指向数据待读取的伙伴 CPU 区域。
只能使用绝对寻址。
示例:P#DB10.DBX5.0 Byte 10
在“长度”(Length) 字段中,输入写入区域的长度并从下拉列表中选择存储区的数据类型。
在“输入/输出 > 存储区 (RD_1) > 开始”(In/Outputs > Memory area (RD_1) > Start) 区域中,选择一个指针,指向存储所读取数据的本地 CPU 区域。
在“长度”(Length) 字段中,输入存储区的长度并从下拉列表中选择数据类型。
只能使用数据类型 BOOL(对于位数组,必须将“0”用作地址,将字节的整数倍用作长度)、BYTE、CHAR、WORD、INT、DWORD、DINT、REAL、COUNTER、TIMER。






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分