[西门子] S7-1500PLC之间的S7通信

[复制链接]
查看40106 | 回复0 | 2024-3-23 07:27:18 | 显示全部楼层 |阅读模式
大家好,本集我们介绍S7-1500PLC之间的S7通信...

基于应用层的S7连接通信有两种方式,可以在用户程序中确认通信方是否接收到发送的数据。第一种方式创建通信连接的方式可以在网络视图中选择S7连接,通过拖拽的方式实现两台S7-1500 PLC之间的S7通信,然后调用通信函数发送和接收数据,这种方式对于熟悉经典STEP7的工程师可能比较有利。

第一种方式:

1.首先,硬件组态建立连接





2.然后,在程序块中插入发送和接受指令





3.一个PLC添加发送





4.一个PLC添加接受即可




功能描述:

指定具有输入参数 R_ID 的指令对“BSEND”和“BRCV”。相关指令中的参数 R_ID 必须相同。

调用该指令并且在控制输入 REQ 上检测到上升沿之后,就会激活该发送作业。调用“BSEND”后,不在后台对其进行处理,这表示只能在用户程序中读取数据。

要传送的数据区已经分段。各段独立地发送至伙伴。“BRCV”收到每一段后,伙伴将确认该段。如果数据已分段,则必须多次调用“BSEND”,直到所有段均已传送完。

待发送数据的数据区域通过 SD_1 指定。为了确保数据一致性,只能在当前发送操作完成后写入当前正在使用的发送区域SD_1 的一部分。这种情况下,状态参数 DONE 的值将变为“1”。

根据作业的不同,可以使用 LEN 指定发送数据的长度。如果 LEN =“0”,那么将发送所有通过 SD_1 参数寻址的数据。

如果控制输入 R 出现了上升沿,则当前的发送过程会被中止。

由于使用了异步数据传送,只有在伙伴指令调用对先前的数据进行访存之后,才能启动新的数据传送操作。数据采集完成后,伙伴指令“BRCV”中的状态参数“NDR”将置位。




另一种方式是在调用发送和接收数据的通信函数时直接建立,这种方式更加简单。这种方式之适合于PUT/GET通信函数。下面以示例的方式介绍方式。


1.首先在客户端PLC的程序中调用GET程序块





2.在程序块属性的向导中选择通信伙伴。

如果勾选主动建立连接选项,则本方主动发起连接的创建,对方则自动取消这个选项。





3.之后在块参数界面中设定启动请求变量,读取区域和存储区域相关参数,以及通信状态参数。本例中将读取通信伙伴的数据区MB200~MB203并存储于本地地址区MB300~MB303值。完成参数向导后,程序块的参数被赋值。





4.在客户端PLC S7-1513中新建监控表,键入用于控制读取请求信号M100.0以及通信数据接收区MB300~MB303 ,4个字节变量。





5.在服务器端PLC S7-1516中新建变量表并键入通信数据发送区MB200~MB203 4个字节变量。





6.通信程序编写完成之后,在网络视图中可以看到两台PLC之间的S7连接自动创建。

7. S7-1500 PLC之间的PUT/GET通信需要启用服务器端PLC保护功能下的“允许来自远程对象的通信访问”选项,否则不能通信,这一点非常重要。





8.分别下载服务器和客户端PLC软硬件配置。





9.最后,分别监控两个变量表的状态。

修改服务器端变量MB200到MB203的数值。

启动客户端PLC通信请求信号M100.0,可以看到服务器端PLC的指定的变量数值被成功地读取到MB300到MB303的存储变量中了。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则