S7指令中的PUTGET或者BSENDBRCV的选择(BSENDBRCV仅支持3004001500)

1. 背景

  • 最近用一个300PLC做S7通信的时候,因为交互的数据量有1024个bytes.这才意识到put get在数据量上的限制。以及S7大数据传输用到的BSEND/BRCV。

2. S7支持的指令

  • 在PLC里,能基于S7协议用于数据交换的指令如下(S7 300/400下描述):

  • 其中值得注意的有几点:
    • put/get无需通信伙伴用户程序中的任何其它通信函数,意思是使用putget单边通信的时候,另一边设置只需要打开使能开关就行,不用配置(连远程ID都可以不用填写)
    • BSEND/BRCV:互为交互对象,需要相互交接,也需要远程设备信息
    • PLC的start stop等可以通过S7协议做远程控制。

3. PUT/GET的应用

  • GET

  • PUT

  • 当写完put/get程序之后,连接处会自动生成一条连接:

    .03标记为黄色的含义是表示默认为主动连接,用03.01是可以通信成功的。若不需要可以换成其他的TSAP号。

  • 注意点
    • 伙伴IP是需要填入的
    • 如果子网栏报错,请去添加新连接新建一条子网
    • 伙伴TSAP可以填的内容有:
      • S7-300集成PN或CP,填03.02
      • S7-400集成PN或CP,填03.XX, XX为400PLC插槽号
      • S7-1200集成PN口,填03.00或者03.01
      • S7-1500集成网口或者CP,填03.01
    • 本地ID,不要和其他连接重复就行
    • PUT/GET 触发管脚用脉冲
    • 交互DB非优化
    • PUT GET 设置打开

4. put/get bsend/brcv 能支持的最大数据量

  • 以及BSEND/BRCV支持的PLC类型,1200不支持USEND/URCV/BSEND/BRCV


5. S7相关指令中的几个重要参数



  • 对于bsend和brcv。它们属于双端组态通信指令

6. bsend/brcv应用

  • 更新:对于1200系列PLC而言,是没有办法做到大数据量的双边S7通信的,它仅支持最大不超过160Bytes*4的用户数据,以下图片中的1200相关的内容请忽略或者替换成1500系列PLC。如果实在需要在1200上做数据量偏大的传输,可以试试用TCP/IP协议(TSEND/TRCV)
  • 连接ID如图:



  • 在1200端仍然需要建立一套BSEND/BRCV程序和数据DB。
  • 1200不支持双边的S7通信(BSEND/BRCV),只有300/400/1500系列PLC才支持。
  • 上述在300PLC上建立了一套BSEND/BRCV指令,同样的,在另一个PLC上,比如1500上也需要建立一套相应的指令,并填入相应的管脚:

S7指令中的PUTGET或者BSENDBRCV的选择(BSENDBRCV仅支持3004001500)
http://example.com/2024/07/21/S7指令中的PUTGET或者BSENDBRCV的选择(BSENDBRCV仅支持3004001500)/
作者
xiao cuncun
发布于
2024年7月21日
许可协议