北京安方同吉专业授权代理西门子PLC,专注工控系统集成10年,拥有专业高效的团队,是西门子官方认可的资深合作伙伴,欢迎咨询合作!  客服热线:18211023581
S7300与S71500如何通过M心跳点判断是否通讯异常

S7300与S71500如何通过M心跳点判断是否通讯异常

分享嘉宾:王轶健    内容来源:AFTJ    发布时间:2021-07-16 13:34    浏览量: 第26910篇深度好文:2492个字| 7分钟阅读
  S7300与S71500如何通过M心跳点判断是否通讯异常?如题,客户询问西门子S7-300S71500PLC之间的S7通讯单边通讯,如何判断是否通讯正常,判断对方时钟存储器M的心跳点如何长时间没有变化就判定异常,是否可以?

  可以通过判断时钟信号长时间没有变化来判定通讯异常。
 
  使用ClockMemory来作为心跳信号。
 
  如果当前系统正在运行,且无法停机修改组态来增加ClockMemory。此时,我们可以通过增加程序或程序段的方式来产生心跳信号(代替ClockMemory);比如,在循环中断中,或者就在OB1中,写一段小程序,使得一个整型变量自加1。那这个变量值增加到传送区,与其它数据一块传到伙伴方,伙伴方判断这个值长时间没有变化时,则表明通讯中断。

  下文的《连接面板到S7-400H系统——心跳信号方法》可作为参考

西门子S71500编程软件

  1.简介

 
  在另一个技术文档《连接面板到S7-400H系统——主站跟踪方法》(文档编号:F0244)中,已经介绍了一种用于将面板连接到西门子S7-400H系统的方法。该文档中,通过始终选择连接主CPU的方法,使与S7-400H连接的面板(操作屏)能在冗余系统中自动切换。该方法实现简单、思路清楚、切换速度较快;但在“面板与S7-400H间的网络线路故障”等情形下,不能实现有效地自动切换。所以,本文提供了另一种方法,可以解决上述问题。
 
  本方法基本原理如下:
 
  1)在H-CPU中使用唯一的一个心跳信号变量,并周期性变化。在面板中,通过检测其变化,来实现对两个连接状态的判断。
 
  2)在面板中使用两个独立的连接与两个机架的CPU通讯,接收来自H-CPU的心跳信号以及与CPU连接状态信号。建立第三个连接,用于创建除以上两种信号之外的其他的所有工程变量。
 
  3)为两个CPU分别建立死亡计数器,当对应于其中一条连接的死亡计数器数值超出一定限制时,此连接不再可用。同时,利用连接切换函数,将第三个连接切换至另一个CPU。
 
  4)如果系统检测到正常的心跳信号,对应的死亡计数器将被周期性地复位至初始值,此时该计数器数值会维持在较低的范围(本例中为2~3);如果其中一个连接失效后,该死亡计数器数值会维持在较高的范围(本例中为11~12)。
 
  本文的方法适用于:
 
  IE方式(推荐方式)
 
  MPI方式
 
  DP方式㈡*
 
  *注:可以参考技术文档《连接面板到S7-400H系统——主站跟踪方法》(文档编号:F0244)的应用场合。
 
  此方法只适合于支持3个及以上连接的、并且支持“ChangeConnection”函数的面板。像OP77、OP/TP170、OP/TP177、OP/TP270、OP/TP277、MP270、MP277、MP370等面板都满足这些要求。

  2.心跳信号方法组态步骤

 
  2.1配置CPU的心跳信号
 
  对于S7400H,我们可以使用ClockMemory来作为心跳信号。关于ClockMemory的说明,可以参考在线帮助获得更详细的信息。
 
  注1:确保项目程序或其他应用中没有占用ClockMemory所组态的地址区域。本例中,使用MB10作为ClockMemory(心跳信号)。
 
  注2:若S7400H系统已经在生产运行中,且不能停机,可以参考:3.不停机增加心跳信号产生程序。
 
  2.2配置面板连接
 
  在WinCCFlexible中,为面板组态与S7-400H的三个连接,分别为:
Connection_A 与CPU 0的连接
Connection_B 与CPU 1的连接
Connection_X 可变的连接,所有过程变量都建立在此连接上。
初始时,此连接参数与Connection_A相同。

  2.3创建必要的变量
 
  在WinCCFlexible中,在相应的连接下创建必要变量,如下图所示。(其中Process_Data为测试变量,可根据实际情况使用用户自定义的变量。)
 
  变量的具体意义如下:
ActiveConnection (内部变量)指示当前Connection_X正在使用连接链路
CPU0_DeathCounter 用于累计与CPU 0连接丢失周期的“死亡计数变量”
CPU0_DeathCounter_Reset 特殊复位时使用的与CPU 0连接的“死亡计数变量”
CPU0_DeathDeclare 用于宣布与CPU 0连接丢失的“死亡计数变量”
CPU0_Heartbeat CPU 0的心跳信号
CPU1_DeathCounter 用于累计与CPU 1连接丢失周期的“死亡计数变量”
CPU1_DeathCounter_Reset 特殊复位时使用的与CPU 1连接的“死亡计数变量”
CPU1_DeathDeclare 用于宣布与CPU 1连接丢失的“死亡计数变量”
CPU1_Heartbeat CPU 1的心跳信号
Process_Data 本例中使用的用于测试的过程变量MW 100(本例中只使用了一个,用户可根据需求创建过程变量)

  本例方法中,为两个心跳信号在H-CPU各注册了一个变量地址。但在面板项目中,对两个心跳信号各创建了三个“具有相同地址”的变量。原因为:
 
  CPU?_DeathCouter定义了死亡计数的上限值以及使用此变量进行计数的累加和复位;CPU?_DeathDeclare仅用于“判定死亡计数器是否已经达到死亡标准(触发上限)”;CPU?_DeathCounter_Reset仅用于“当一个连接失效后,将另一个连接死亡计数器复位至非死亡区域内”(此变量与前两个变量使用相反的连接,参考图3)。
 
  *注:由于同一变量不能自加计数超过自身上限,所以必须至少使用两个相同地址的变量,一个用于触发一个上限,另一个用于累加计数并能超过前者的上限。因此,CPU0_DeathCounter、CPU0_DeathCounter_Reset和CPU0_DeathDeclare这三个“死亡计数变量”使用相同的物理地址;同样,CPU1_DeathCounter、CPU1_DeathCounter_Reset和CPU1_DeathDeclare也使用相同的物理地址。
 
  2.4为部分变量设置上限
 
  CPU0_DeathCounter和CPU1_DeathCounter设置上限为12,定义了“死亡计数变量”的最大值为12;CPU0_DeathDeclare和CPU1_DeathDeclare设置上限10,定义了当“死亡计数变量>10”时,宣布连接丢失。

  2.5增加死亡计数与心跳监测相关的函数
 
  当“死亡计数变量>10”时,宣布连接丢失:切换连接,并将另一个死亡计数复位回“非死亡区”。
 
  每一次心跳被检测到,都复位相应“死亡计数变量”,并向上累计与另一个CPU的“死亡计数变量”。
 
  2.6设计画面
 
  项目中画面的设计,应根据用户需求而定。本例中,仅提供一些常用的相关设计。
 
  与连接状态判断和切换无关的变量(工程变量),都应基于连接“Connection_X”创建。
 
  可以设计两个按钮用于手动的连接切换,
 
  2.7结果测试
 
  当两个连接链路都正常时的画面状态
 
  当与CPU0连接超时并失败时的画面状态
 

  3.不停机增加心跳信号产生程序

 
  如果当前系统正在运行,且无法停机修改组态来增加ClockMemory。此时,我们可以通过增加程序或程序段的方式来产生心跳信号(代替ClockMemory)。下面给出了用于梯形图LAD编程和CFC编程使用的两种示例程序段。

  注:确保项目程序或其他应用中没有占用“心跳信号”使用的地址区域。本例中,使用MB10作为心跳信号。使用上述程序后,不要再将相同的地址区域组态为ClockMemory使用。

  更多技术咨询,请联系我们
 
  版权声明:文章来自北京安方同吉原创,如果喜欢这篇文章《S7300与S71500如何通过M心跳点判断是否通讯异常》:http://www.xmzplc.com.cn/news-industry/516.html请保留本文链接。
 
  北京安方同吉科技有限公司官网:http://www.xmzplc.com.cn/

相关新闻推荐

在线客服 :

服务热线:18211023581(微信同号)

电子邮箱: 2837522029@qq.com

公司地址:北京市西城区教场口街1号

北京安方同吉科技有限公司 是专注西门子PLC代理、西门子变频器等西门子产品代理销售和系统集成的正规西门子一级代理商,是 西门子(中国)有限公司...

Copyright © 2010-2020 北京安方同吉科技有限公司 版权所有