故事作者:WWCWWC

最近创作

看看TA的故事

【PROFINET通信征文】以太网通讯诊断指令T_DIAG的应用

已锁定

WWCWWC

西门子1847工业学习平台

  • 帖子

    9520
  • 精华

    160
  • 被关注

    1501

论坛等级:至圣

注册时间:2008-07-26

钻石 钻石 如何晋级?

【PROFINET通信征文】以太网通讯诊断指令T_DIAG的应用

852

10

2025-07-31 15:46:46

以太网通讯诊断指令T_DIAG的应用

  西门子各机型PLC给用户提供了大量、琳琅满目的以太网通讯模式,其中S7通讯是西门子特有底层逻辑的通讯模式,且只适用于西门子控件之间的通讯,用户调用也非常实用和方便。用户仅仅只需要在客户机侧编译S7通讯之PUT、GET指令,并规划通讯数据交互区。而对于服务器侧,不需要编写通讯指令,仅仅只需要规划好通讯数据交互区。

  在实际应用中,通讯故障因为各种原因,会造成通讯完全或间隙中断,停止通讯数据的交换,中断正常的程序的运行、数据丢失等问题,给用户造成一些困惑。

  西门子在portal软件库中,提供了一个诊断通讯连接功能的指令。本例以S7-1200之间的S7通讯为测试项目,诊断通讯过程中可能出现的错误,诊断功能调用portal软件库指令T_DIAG,通过指令获取通讯错误信息。

测试机型:

客户机:S7-1214C DC/DC/DC V4.2

服务器:S7-1214C AC/DC/RLY V2.2

交换机:普通TP-LINK

测试软件:Portal V15

通讯中断测试:

1)创建一个测试项目,S7-1214C DC/DC/DC作为测试客户机,S7-1214C AC/DC/RLY作为测试服务器,Portal V15软件及普联交换机一台,用于项目的用户程序编制及通讯连接,图示1:

在项目树中连续创建2个测试项目。

2)S7-1214C DC/DC/DC作为客户机侧编辑简单的S7通讯程序,并调用检查连接T_DIAG通讯检测指令,图示2:

在“开放式用户通讯”---“其它”下拉菜单中调用T_DIAG指令,图示3:

并将S7通讯及检查连接T_DIAG指令的管脚,通过创建的数据块,分别填写到各自的管脚。

3)在调用T_DIAG指令过程中,RESULT管脚的数据类型是结构体,此管脚相对比较特殊,需要在数据块DB2中创建一个数据类型为“TDiag_Status”名称的变量类型,图示4:

具体各变量含义,可以通过F1帮助获取。

4)将创建的测试项目编译、保存后分别下载到各自的CPU中,先进行S7通讯测试,图示5:

将项目分别下载。

5)分别打开通讯数据交互数据块,测试S7通讯情况,图示6:

S7通讯数据交互,可以正常传递。

6)打开T_DIAG指令数据块,看TDiag_Status结构体下的数据,图示7:

 State = 16#04,说明诊断连接已经建立。

7),当拔掉服务器的以太网电缆后,再看TDiag_Status结构体下的数据,图示8:

 State = 16#01,连接终止,然后跳变State = 16#02,主动连接端点正尝试与远程通信伙伴建立连接,SentBytes及ReceivedBytes通讯收发数据被清零。当服务器端重新插好以太网电缆,各管脚数据重新恢复和计数开始。

8)根据上述检查连接指令的工作原理,添加S7通讯中断报警程序,图示9:

重新插入服务器端以太网电缆,程序刷新 Q0.0 = 0 通讯中断报警停止。

  库中的“检查连接”T_DIAG指令很方便的为ConnectionType管脚定义通讯诊断中断提供了检测范围和依据,用户只需要通过对指令RESULT管脚关联的数据块ID适当修改,就可以进行对其它通讯站点的诊断判断。

 

 

                                               2025年7月31日星期四整理


【PROFINET通信征文】以太网通讯诊断指令T_DIAG的应用 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3469条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。