加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线18475208684
公司新闻
实例讲解如何实现s7-200 smart cpu 与 cpu之间通讯
发布时间: 2024-06-10 22:27 更新时间: 2024-11-04 08:00
通过向导实现s7-200 SMART CPU之间S7通信

上期介绍了西门子S7-200 samrt 串口通讯中Modbus的应用,实际上s7-200 smart 串口还支持USS通讯(西门子驱动专用通讯协议)、自由口通讯协议,但由于都不太常用,就不再过多介绍,有需要的朋友可以加小编微信私聊,本期开始分享s7-200 smart 的以太网通讯,感谢大家支持;

图片003656

西门子S7通信简介

S7通信

西门子S7通讯是一种用于自动化控制系统的开放式网络协议。它旨在提供高效、可靠和安全的设备之间通信方式。S7通讯支持各种类型的网络拓扑结构和连接方式,例如以太网、Profibus和Profinet等。此外,它还支持多种通讯协议和数据格式,包括二进制、ASCII和BMP等。通过S7通讯,不同厂商生产的设备可以相互通信,并实现协同工作。这有助于提高生产效率、降低成本,并促进自动化控制系统的智能化发展。

S7连接

S7连接是指建立在西门子S7通讯协议基础上的设备之间的互联。它可以通过各种接口(如以太网、串行口等)实现,使不同类型的设备(例如工控机、PLC、触摸屏等)能够相互通信和交换数据。在S7连接中,使用了特定的网络拓扑结构,例如Master-Slave或Peer-to-Peer等。这些拓扑结构可以根据实际应用需求进行调整,以满足不同场景下对系统效率、可靠性和安全性的要求。

单边通讯

在S7连接中,多使用单边通讯(即PUT/GET)实现CPU与CPU之间数据通讯。单边通讯顾名思义就是指只有一端发起的通讯,其它CPU程序无需做任何处理。这种通讯方式也被称为"主从通讯"或"读写通讯"。在单边通讯中,其中一台设备作为主站(Master),而另一台设备则作为从站(Slave)。主站负责向从站发送指令或数据,而从站则根据主站的要求进行操作或返回数据。单边通讯具有以下优点:

  • 简单易用:结构简单、操作便捷,适合于低功耗和低带宽的场景。
  • 高效稳定:主站控制从站工作,可以避免多台设备之间的干扰和冲突,保证通讯稳定性和效率。
  • 安全可靠:单向数据流使得主站更容易对从站进行控制和管理,有助于减少系统故障和安全风险。
  • S7-200 SMART CPU之间的以太网通信

    S7-200 SMART CPU 固件版本 V2.0 及以上版本的 CPU 可实现CPU、编程设备和HMI(触摸屏)之间的多种通信:

  • CPU与编程设备之间的数据交换。
  • CPU与HMI之间的数据交换。
  • CPU与其他S7-200 SMART CPU之间的PUT/GET通信。
  • CPU与其它S7系列(s7-1200,s7-300,s7-1500)PLC之间的PUT/GET通信。
  • S7-200 SMART CPU 以太网连接资源如下:

  • 1个连接用于与STEP7 Micro/Win SMART软件的通信。
  • 8个连接用于CPU与HMI之间的通信。
  • 8个连接用于CPU与其他S7-200 SMART CPU之间的PUT/GET主动连接
  • 8个连接用于CPU与其他S7-200 SMART  CPU之间的PUT/GET被动连接
  • 注:S7-200 SMART 在 V2.5 版本(硬件和软件)增加标准型 CPU 支持 PROFINET IO  智能设备的功能。后期会为大家分享学习如何使用s7-200 samrt 作为IO设备和智能设备

    通信资源数量

    PLC的通讯能力与该PLC的通讯链接资源数有关,链接资源越多,通讯能力就越强;

    S7-200 SMART CPU 以太网端口含有 8 个PUT/GET 主动连接资源和 8 个PUT/GET 被动连接资源。例如:CPU1 调用 PUT/GET  指令与 CPU2 ~ CPU9 建立8主动连接的同时,可以与 CPU10 ~ CPU17 建立8被动连接(CPU10 ~ CPU17 调用 PUT/GET  指令),这样的话 CPU1 可以同时与16台 CPU(CPU2 ~ CPU17)建立连接。

    关于主动连接资源和被动连接资源的详细解释如下:

    1. 主动连接资源和被动连接资源
    2. 调用 PUT/GET 指令的CPU 占用主动连接资源数;相应的远程 CPU 占用被动连接资源。
    3. 8 个PUT/GET 主动连接资源
    4. S7-200 SMART CPU 程序中可以包含远多于 8个PUT/GET 指令的调用,但是在同一时刻Zui多只能激活 8 个 PUT/GET 连接资源
    5. 同一时刻对同一个远程 CPU 的多个 PUT/GET 指令的调用,只会占用本地 CPU的一个主动连接资源和远程 CPU的一个被动连接资源。本地 CPU  与远程 CPU之间只会建立一条连接通道,同一时刻触发的多个 PUT/GET 指令将会在这条连接通道上顺序执行。
    6. 同一时刻Zui多能对8个不同 IP 地址的远程 CPU 进行 PUT/GET 指令的调用,第9个 远程CPU的PUT/GET  指令调用将报错,无可用连接资源。已经成功建立的连接将被保持,直到远程 CPU断电或者物理断开。
    7. 8 个PUT/GET 被动连接资源
    8. S7-200 SMART CPU 调用 PUT/GET 指令,执行主动连接的同时也可以被动地被其他远程 CPU 进行通信读写。
    9. S7-200 SMARTZui多可以与被8个不同 IP 地址的远程 CPU 进行 建立被动连接。已经成功建立的连接将被保持,直到远程  CPU断电或者物理断开。
    使用向导完成CPU与CPU之间通讯步骤

    通过S7通信实现CPU与CPU之间通讯,西门子提供了PUT/GET编程指令(通过指令&参数完成,有兴趣朋友可以学习学习,参数理解比较困难,本期不做过多介绍),同时也可以使用 PUT/GET 向导以简化编程步骤。该向导Zui多允许组态 16 项独立 PUT/GET 操作,并生成代码块来协调这些操作。

    在下面的例子中,CPU1 为主动端,其 IP 地址为192.168.2.100,调用 PUT/GET 指令;CPU2 为被动端,其 IP  地址为192.168.2.101,不需调用 PUT/GET 指令。通信任务是把 CPU1 的实时时钟信息写入 CPU2 中,把CPU2  中的实时时钟信息读写到 CPU1 中。操作步骤如下:

    图片image-20240320105435615

    1. STEP 7 Micro/WIN SMART 在“工具” 菜单的“向导”区域单击“Get/Put”按钮,启动 PUT/GET 向导,在弹出的“Get/Put”向导界面中添加操作步骤名称并添加注释;

      图片MWSmart_O1yHg3YH7r
    2. 定义PUT操作

      图片MWSmart_sm7zUl3DWd

      定义PUT操作:

      1. 选择操作类型,PUT(将数据写入远端,对应PUT_CPU2)
      2. 通信数据长度8(时钟信息占用8个字节)
      3. 定义远端CPU的IP地址(192.168.2.101)
      4. 本地通讯区域和起始地址(时钟数据存储在VB100开始的8个字节中)
      5. 远断通讯区域和起始地址(将数据写入VB0开始的8个字节中)
    3. 定义GET操作

      图片image-20240320111444680

      定义GET操作:

      1. 选择操作类型,GET(从远端获取数据,对应GET_CPU2)
      2. 通信数据长度8(时钟信息占用8个字节)
      3. 定义远端CPU的IP地址(192.168.2.101)
      4. 本地通讯区域和起始地址(将读取到的数据存储在VB0开始的8个字节中)
      5. 远断通讯区域和起始地址(读取远端从VB100开始的8个字节)
    4. 分配存储器地址

      图片image-20240320111829009

      注:点击“建议”按钮向导会自动分配存储器地址。需要确保程序中已经占用的地址、PUT/GET  向导中使用的通信区域与不能存储器分配的地址重复,否则将导致程序不能正常工作。

    5. 点击下一步,显示向导自动生成的组件,可直接下一步或者生成;

      图片image-20240320112024391
    6. 点击“生成”按钮将自动生成网络读写指令以及符号表。只需用在主程序中调用向导所生成的网络读写指令即可

      图片image-20240320112311078

      NET_EXE 子程序参数说明:

    7. Timeout 超时输入为整数值,以秒为单位定义定时器值。允许范围为 0(= 无定时器)和 1 - 36767(= 以秒为单位的定时器值)。
    8. Cycle 输出是指在每次所有 NET 操作全部完成后被切换的布尔值。允许值为假值 (0) 和真值 (1)。周期输出在一个周期为假值 (0),下一周期为真值  (1),接下来的第三个周期为假值 (0)。
    9. Error 输出是 NET_EXE 子例程返回的布尔值,用于指示执行结果。0=无错误;1=错误;
    10. S7通信本地侧配置完成,远端无需配置,只需要配置需要传输的数据即可。

      图片image-20240320113004146
    补充说明:读取时钟指令

    图片image-20240320114152339

    说明  READ_RTC、SET_RTC 编程提示

    这些指令不接受无效日期。例如,如果输入 2 月 30 日,则会发生非致命性日时钟错误 (0007H)。 不要在主程序和中断例程中使用 READ_RTC/SET_RTC 指令。执行另一个 READ_RTC/SET_RTC 指令时,无法执行中断例程中的  READ_RTC/SET_RTC 指令。在这种情况下,CPU 会置位系统标志位 SM4.3,指示尝试同时对日时钟执行二重访问,导致 T 数据错误(非致命错误  0007H)。 CPU 中的日时钟仅使用年份的Zui后两位数,因此 00 表示为 2000 年。使用年份值的用户程序必须考虑两位数的表示法。 2099 年之前的闰年年份,CPU 都能够正确处理。

    8 字节时间缓冲区的格式,从字节地址 T 开始

    所有日期和时间值必须采用 BCD 格式分配(例如,16#12 代表 2012 年)。00 至 99 的 BCD 值范围可分配范围为 2000 至 2099  的年份。

    T 字节说明数据值
    000  至 99(BCD 值)20xx 年:其中,xx 是 T 字节 0 中的两位数 BCD 值
    101  至 12(BCD 值)
    201  至 31(BCD 值)
    3小时00  至 23(BCD 值)
    400  至 59(BCD 值)
    500  至 59(BCD 值)
    6保留始终设置为  00
    7星期几使用  SET_RTC/TODW 指令写入时会忽略值。
    通过 READ_RTC/TODR 指令进行读取时,值会根据当前年/月/日值报告正确的星期几。
    1 至 7,1  = 星期日,7 = 星期六(BCD 值)

    注意

    紧凑型串行 (CRs) CPU 型号没有 RTC(实时时钟)  可使用 READ_RTC 和 SET_RTC 指令设置紧凑型串行 (CRs) CPU 型号中的年份、日期和时间值,但这些值将在下一次 CPU  断电通电循环时丢失。上电时,日期和时间将初始化为 2000 年 1 月 1 日。


    其他新闻

    联系方式

    • 电  话:13922889745
    • 经理:向小姐
    • 手  机:18475208684
    • 微  信:18475208684