设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子博途:组态S7连接
返回列表
发新帖
[西门子]
西门子博途:组态S7连接
[复制链接]
162
|
0
|
2024-6-9 20:44:28
|
显示全部楼层
|
阅读模式
>
简介
在程序编辑器的巡视窗口中分配 PUT 和 GET 指令的连接参数。 所有参数均保存在相应的背景数据块中。
连接组态的结构
连接组态由以下部分组成:
①
用于 PUT 和 GET 的通信指令
②
调用在线和诊断功能
③
“属性”(Properties) 选项卡中的“组态”(Configuration) 选项卡
④
“组态”(Configuration) 选项卡的区域导航
⑤
连接参数的常规属性
显示在线和诊断功能
如果单击开始在线和诊断功能的图标,相关 CPU 将自动转入在线状态。 网络视图中的连接表将打开。 此外,“诊断”(Diagnostics) 选项卡和连接信息显示在巡视窗口中。
输入连接参数
在“组态”(Configuration) 选项卡中输入所需的连接参数。 “组态”(Configuration) 选项卡的区域导航包含“连接参数”(Connection parameters) 组。该组包含连接组态。 在此处可使用系统函数输入连接的参数。 分配了所有需要的参数后,在区域导航中的“连接参数”(Connection parameters) 组后面设置一个复选标记。
可使用“PUT”指令将数据写入一个远程 CPU。
在控制输入 REQ 的上升沿启动指令:
写入区指针 (ADDR_i) 和数据 (SD_i) 随后会发送给伙伴 CPU。伙伴 CPU 则可以处于 RUN 模式或 STOP 模式。
从已组态的发送区域中 ((SD_i) 复制了待发送的数据。伙伴 CPU 将发送的数据保存在该数据提供的地址之中,并返回一个执行应答。
如果没有出现错误,下一次指令调用时会使用状态参数 DONE = "1" 来进行标识。上一作业已经结束之后,才可以再次激活写入过程。
如果写入数据时访问出错,或如果未通过执行检查,则会通过 ERROR 和 STATUS 输出错误和警告。
使用指令的要求
已在伙伴 CPU 属性的“保护”(Protection) 保护中激活“允许借助 PUT/GET 通信从远程伙伴访问”(Permit access with PUT/GET communication from remote partner) 函数。
使用“PUT”指令访问的块是通过访问类型“标准”创建的。
请确保由参数 ADDR_i 和 SD_i 定义的区域在数量、长度和数据类型等方面都匹配。
待写入区域(ADDR_i 参数)必须与发送区域(SD_i 参数)一样大。
参数
下表列出了“PUT”指令的参数:
参数
声明
数据类型
存储区
说明
REQ
Input
BOOL
I、Q、M、D、L 或常量
控制参数 request,在上升沿时激活数据交换功能。
ID
Input
WORD
I、Q、M、D、L 或常量
用于指定与伙伴 CPU 连接的寻址参数。
DONE
Output
BOOL
I、Q、M、D、L
状态参数 DONE:
0:作业未启动,或者仍在执行之中
1:作业已执行,且无任何错误。
ERROR
Output
BOOL
I、Q、M、D、L
状态参数 ERROR 和 STATUS,错误代码:
ERROR=0
STATUS 的值为:
0000H:既无警告也无错误
<> 0000H:警告,详细信息请参见 STATUS。
ERROR=1
出错,有关该错误类型的详细信息,请参见 STATUS。
STATUS
Output
WORD
I、Q、M、D、L
ADDR_1
InOut
REMOTE
I、Q、M、D
指向伙伴 CPU 上用于写入数据的区域的指针。
指针 REMOTE 访问某个数据块时,必须始终指定该数据块。
示例:P#DB10.DBX5.0 字节 10。
传送数据结构(例如 Struct、 Array)时,参数 ADDR_i 处必须使用以下数据类型。
对于所有固件版本的 S7-1200 CPU 和固件版本为 V2.8.2 的 S7-1500 CPU:BYTE、CHAR、WORD、INT、DWORD、DINT 或 REAL
固件版本小于 V2.8.2 的 S7-1500-CPU:CHAR
注:因此,自固件版本 V2.8.2 起,用户可以从 S7-300、S7-400 和 S7-1200 CPU 将包含“PUT”的程序传输到 S7-1500 CPU。
ADDR_2
InOut
REMOTE
ADDR_3
InOut
REMOTE
ADDR_4
InOut
REMOTE
SD_1
InOut
VARIANT
I、Q、M、D、L
指向本地 CPU 上包含要发送数据的区域的指针。
仅允许 BOOL 数据类型(不允许:位数组、BYTE、CHAR、WORD、INT、DWORD、DINT、REAL)。
以下情况适用于固件版本低于 V2.8.2 的 S7-1500 CPU:传送数据结构(例如 Struct、 Array)时,参数 SD_i 处必须使用数据类型 CHAR。
注:因此,自固件版本 V2.8.2 起,用户可以从 S7-300、S7-400 和 S7-1200 CPU 将包含“PUT”的程序传输到 S7-1500 CPU。
SD_2
InOut
VARIANT
SD_3
InOut
VARIANT
SD_4
InOut
VARIANT
ERROR 和 STATUS 参数
下表列出了关于由 "PUT" 指令的参数 ERROR 和 STATUS 输出的所有特定错误信息。
ERROR
STATUS(十进制)
说明
0
11
警告:由于前一作业仍处于忙碌状态,因此未激活新作业。
0
25
已开始通信。作业正在处理。
1
1
通信故障,例如
连接描述信息未加载(本地或远程)。
链路断开(如电缆故障、CPU 关闭或者 CP 处于 STOP 模式)。
尚未与伙伴建立连接。
1
2
伙伴 CPU 的否定应答。该功能无法执行。
未授予对伙伴 CPU 的访问权限。在 CPU 设置中激活访问。
1
4
指向数据存储的指针出错:
参数 SD_i 和 ADDR_i 的数据类型彼此不兼容。
SD_i 区域的长度大于待写入的 ADDR_i 参数的数据长度。
不能访问 SD_i。
已经超过了最大用户数据大小。
参数 SD_i 和 ADDR_i 的数量不一致。
1
8
访问伙伴 CPU 时出错(例如,数据块未加载或不受写保护)。
1
10
无法访问本地用户存储器(例如,访问某个已经删除的数据块)。
1
20
已超出并行作业的最大数量。
该作业当前正在执行,但优先级较低(首次调用)。
1
W#16#80C3
(仅 S7-1500)
已超出并行作业的最大数量。
该作业当前正在执行,但优先级较低(首次调用)。
数据一致性
发送操作激活之后(在 REQ 的上升沿),会从用户程序中复制要从发送区 SD_i 中发送的数据。块调用之后,可以对这些区进行写操作,且不会破坏当前的发送数据。
说明
状态参数 DONE 的值变为“1”时,发送操作才算结束。
示例
在以下示例中,通过 S7 连接将 CPU 1 中的数据记录传送到 CPU 2 中。待发送数据记录的数据类型为 INT。
要求
两个 S7-1500 系列的 CPU 通过 PROFINET 进行互连,但连接尚未组态。
通过“<CPU> > 属性 > 保护”(<CPU> > Properties > Protection) 下的低保护级别,确保可以对 CPU 进行读写访问。
可通过指令 PUT/GET 进行访问。
CPU 1 中的程序
在全局数据块中,创建 6 个变量存储“PUT”数据。
在全局数据块中,创建 1 个变量存储待发送的数据记录。
程序段 1:互连“PUT”指令的参数,如下所示:
程序段 2:保存 PUT 的错误状态,如下所示。
程序段 3:保存 PUT 的成功状态,如下所示。
PUT 的组态
要互连输入参数 ID,可通过“属性 > 组态”(Properties > Configuration) 打开指令“PUT”的向导。
执行以下连接设置:
区域
设置
端点
选择通信伙伴。
系统将自动输入剩余的连接数据。将自动创建一个 S7 连接,并在输入参数 ID 处输入该标识符。
激活
确保与 CPU 1间的连接激活。
CPU 2 中的程序
在全局数据块中,创建 1 个变量存储待接收的数据记录。
在数据块的“属性 > 特性”(Properties > Attributes) 中,禁用优化块访问。
PUT 的操作特性
输入参数 REQ(“start”)返回信号状态“TRUE”时,启动指令“PUT”。该指令将调用连接数据,并与 S7 连接的通信伙伴进行数据通信。为此,S7 连接的标识符将存储在输入参数 ID 中。
通过参数 SD_1,识别待发送 CPU 1 数据记录的存储位置(“writeValue”)。通过参数 ADDR_1,识别 CPU 2 中数据记录的存储位置(“myValue”)。传送数据记录(“writeValue”)并在 CPU 2 的存储位置(“myValue”)进行指示。
执行成功时,输出参数 DONE(“done”)处的信号状态为“TRUE”,且输出参数 STATUS(“status”)的值为“16#0000”。由于输出参数的值仅在有效时才显示,因此成功状态将保存在变量“memDoneStat”中。输出参数 ERROR(“error”)或变量“memErrStatus”用于指示处理无错误。
GET:从远程 CPU 读取数据说明
使用指令“GET”,可以从远程 CPU 读取数据。
在控制输入 REQ 的上升沿启动指令:
要读出的区域的相关指针 (ADDR_i) 随后会发送给伙伴 CPU。伙伴 CPU 则可以处于 RUN 模式或 STOP 模式。
伙伴 CPU 返回数据:
如果回复超出最大用户数据长度,那么将在 STATUS 参数处显示错误代码“2”。
下次调用时,会将所接收到的数据复制到已组态的接收区 (RD_i) 中。
如果状态参数 NDR 的值变为“1”,则表示该动作已经完成。
只有在前一读取过程已经结束之后,才可以再次激活读取功能。如果读取数据时访问出错,或如果未通过数据类型检查, 则会通过 ERROR 和 STATUS 输出错误和警告。
“GET”指令不会记录伙伴 CPU 上所寻址到的数据区域中的变化。
使用指令的要求
已在伙伴 CPU 属性的“保护”(Protection) 保护中激活“允许借助 PUT/GET 通信从远程伙伴访问”(Permit access with PUT/GET communication from remote partner) 函数。
使用“GET”指令访问的块是通过访问类型“标准”创建的。
请确保由参数 ADDR_i 和 SD_i 定义的区域在数量、长度和数据类型等方面都匹配。
待读取的区域(ADDR_i 参数)不能大于存储数据的区域(RD_i 参数)。
参数
下表列出了“GET”指令的参数:
参数
声明
数据类型
存储区
说明
REQ
Input
BOOL
I、Q、M、D、L 或常量
控制参数 request,在上升沿时激活数据交换功能。
ID
Input
WORD
I、Q、M、D、L 或常量
用于指定与伙伴 CPU 连接的寻址参数。
NDR
Output
BOOL
I、Q、M、D、L
状态参数 NDR:
0:作业尚未开始或仍在运行。
1:作业已成功完成。
ERROR
Output
BOOL
I、Q、M、D、L
状态参数 ERROR 和 STATUS,错误代码:
ERROR=0
STATUS 的值为:
0000H:既无警告也无错误
<> 0000H:警告,详细信息请参见 STATUS 。
ERROR=1
出错。STATUS 提供了有关错误类型的详细信息。
STATUS
Output
WORD
I、Q、M、D、L
ADDR_1
InOut
REMOTE
I、Q、M、D
指向伙伴 CPU 上待读取区域的指针。
指针 REMOTE 访问某个数据块时,必须始终指定该数据块。
示例:P#DB10.DBX5.0 字节 10。
ADDR_2
InOut
REMOTE
ADDR_3
InOut
REMOTE
ADDR_4
InOut
REMOTE
RD_1
InOut
VARIANT
I、Q、M、D、L
指向本地 CPU 上用于输入已读数据的区域的指针。
RD_2
InOut
VARIANT
RD_3
InOut
VARIANT
RD_4
InOut
VARIANT
参数 ERROR 和 STATUS
下表列出了关于由指令“GET”通过参数 ERROR 和 STATUS 输出的所有特定错误信息。
ERROR
STATUS(十进制)
说明
0
11
警告:由于前一作业仍处于忙碌状态,因此未激活新作业。
0
25
已开始通信。作业正在处理。
1
1
通信故障,例如
连接描述信息未加载(本地或远程)
连接中断(例如:电缆故障、CPU 关闭或者 CP 处于 STOP 模式)
尚未与伙伴建立连接
1
2
接收到伙伴设备的否定应答。该功能无法执行。
远程站的响应超出了用户数据的最大长度。
伙伴 CPU 上的访问保护已激活。在 CPU 设置中禁用访问保护。
1
4
指向数据存储 RD_i 的指针出错:
参数 RD_i 和 ADDR_i 的数据类型彼此不兼容。
RD_i 区域的长度小于待读取的 ADDR_i 参数的数据长度。
1
8
访问伙伴 CPU 时出错。
1
10
无法访问本地用户存储器(例如,访问某个已经删除的数据块)。
1
20
已超出并行作业的最大数量。
该作业当前正在执行,但优先级较低(首次调用)。
1
W#16#80C3
(仅 S7-1500)
已超出并行作业的最大数量。
该作业当前正在执行,但优先级较低(首次调用)。
说明
数据一致性
在初始化另一个作业之前,如果完整读取当前正使用的接收区域 RD_i 部分内容,将一致性地接收数据。
示例
在以下示例中,通过 S7 连接在 CPU 1 中读取 CPU2 的数据记录。待发送数据记录的数据类型为 INT。
要求
两个 S7-1500 系列的 CPU 通过 PROFINET 进行互连,但连接尚未组态。
通过“<CPU> > 属性 > 保护”(<CPU> > Properties > Protection) 下的低保护级别,确保可以对 CPU 进行读写访问。
可通过指令 PUT/GET 进行访问。
CPU 1 中的程序
在全局数据块中,创建 6 个变量存储“GET”数据。
在全局数据块中,创建 1 个变量存储待接收的数据记录。
程序段 1:互连“GET”指令的参数,如下所示:
程序段 2:保存 GET 的错误状态,如下所示。
程序段 3:保存 GET 的成功状态,如下所示。
GET 的组态
要互连输入参数 ID,可通过“属性 > 组态”(Properties > Configuration) 打开指令“GET”的向导。
执行以下连接设置:
区域
设置
端点
选择通信伙伴。
系统将自动输入剩余的连接数据。将自动创建一个 S7 连接,并在输入参数 ID 处输入该标识符。
激活
确保与 CPU 1间的连接激活。
CPU 2 中的程序
在全局数据块中,创建 1 个变量存储待发送的数据记录。
在数据块的“属性 > 特性”(Properties > Attributes) 中,禁用优化块访问。
GET 的操作特性
输入参数 REQ(“start”)的信号状态为“TRUE”时,启动指令“GET”。该指令将调用连接数据,并与 S7 连接的通信伙伴进行数据通信。为此,S7 连接的标识符将存储在输入参数 ID 中。
通过参数 ADDR_1,识别待发送 CPU 2 数据记录的存储位置(“myValue”)。系统将读取输出数据记录(“myValue”),并在参数 RD_1 处输入识别的存储位置(“readValue”)。
执行成功时,输出参数 NDR(“done”)处的信号状态为“TRUE”,且输出参数 STATUS(“status”)的值为“16#0000”。由于输出参数的值仅在有效时才显示,因此成功状态将保存在变量“memDoneStat”中。输出参数 ERROR(“error”)或变量“memErrStatus”用于指示处理无错误。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
机器人及PLC
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』