最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

怎么检测WinCC与PLC的通信状态

来源:动视网 责编:小OO 时间:2025-09-24 23:48:01
文档

怎么检测WinCC与PLC的通信状态

主题:怎么检测WinCC与PLC的通信状态 怎么检测WinCC与PLC的通信状态问:怎么检测WinCC与PLC的通信状态,当通信断开时在报警中显示“通信中断”,通信再次连接正常时在报警中显示“通信连接”,并计算出中间的间隔时间。 有一种方法:WINCC有函数可以获取变量的状态,得出一个32位无符号数,全为0时候通讯正常,可以试一下 答:可以将信号质量状态取出,进行编程#include "apdefap.h"  int gscAction( void ){  unsigned long stat
推荐度:
导读主题:怎么检测WinCC与PLC的通信状态 怎么检测WinCC与PLC的通信状态问:怎么检测WinCC与PLC的通信状态,当通信断开时在报警中显示“通信中断”,通信再次连接正常时在报警中显示“通信连接”,并计算出中间的间隔时间。 有一种方法:WINCC有函数可以获取变量的状态,得出一个32位无符号数,全为0时候通讯正常,可以试一下 答:可以将信号质量状态取出,进行编程#include "apdefap.h"  int gscAction( void ){  unsigned long stat
主题:怎么检测WinCC与PLC的通信状态   

怎么检测WinCC与PLC的通信状态

问:怎么检测WinCC与PLC的通信状态,当通信断开时在报警中显示“通信中断”,通信再次连接正常时在报警中显示“通信连接”,并计算出中间的间隔时间。  

有一种方法:WINCC有函数可以获取变量的状态,得出一个32位无符号数,全为0时候通讯正常,可以试一下  

答:可以将信号质量状态取出,进行编程

#include  "apdefap.h"    

int  gscAction(  void  )

{    

unsigned  long  status[1];    

GetTagBitState("S7$Program(1)_Switch",&status[0]);  //Return  type  :short  int  printf("%d",*status);    

if  (*status==1)

SetTagBit("ConnectionBool",1);  //Return  type  :BOOL

else

SetTagBit("ConnectionBool",0);  //Return  type  :BOOL    

return(0);

}    

也可以写成

DWORD  state;

GetTagBitState("PLC_WINCC_Comm",  &state);

if(  state==  0)  SetTagBit("Sta_PLCWinCCCommOK",  1);

else  SetTagBit("Sta_PLCWinCCCommOK",  0);

同时,wincc还要通知PLC与其链接正常,在上面脚本再加上  SetTagBit("Comm_toPLC",  1);  这一句将每两秒把Comm_toPLC这个tag置一,PLC收到这个tag为1就复位之,然后PLC逻辑通过延时检验15s一直没有收到1,那么就置位一个与WinCC链接中断的标志位。

DB100.DBX103.4  就是  WinCC内地Tag:Comm_toPLC,收到上升沿开始计数,DB100.DBX103.0是给回WinCC的,让WinCC知道通讯状态。也是扫描条件就绪的条件之一。不过DB100.DBX103.0这个WinCC用不大保险,还是WinCC自己检测Tag  State比较靠谱。15s内如果还没有收到下一个WinCC发来的上升沿(如前所述WinCC每2s置1一次),证明通讯中断,PLC会set  DB100.DBX103.0,扫描会中断。

//////////////////////////////////////////

帮助中有:

Value  (decimal)    Value  (hexdecimal)      Meaning

0       0x0000      No  error

1       0x0001     Connection  to  partner  not  established

2       0x0002    Handshake  error

4       0x0004     Network  module  defective

8       0x0008     Configured  upper  limit  exceeded

16      0x0010     Configured  lower  limit  exceeded

32      0x0020     Format  upper  limit  exceeded

      0x0040     Format  lower  limit  exceeded

128    0x0080     Conversion  error

256     0x0100     Tag  initialization  value

512     0x0200     Tag  replacement  value

1024    0x0400     Channel  addressing  error

2048    0x0800     Tag  not  found  or  not  available

4096    0x1000     Access  to  tag  not  permitted

8192    0x2000     Timeout,  no  check-back  message  from  the  channel

16384   0x4000     Server  not  available.

////////////////////////////////////////////////

在从站向上位送的数据表中定义一位恒1的位。

代表从站通讯状态正常。

当通讯失败的时候,如果不刷新画面,在画面中应用这位的控件保持断开之前的状态1,只有从新刷新当前画面以后才会变成0.  所以不能用于检测Wincc与PLC的通讯状态。  

文档

怎么检测WinCC与PLC的通信状态

主题:怎么检测WinCC与PLC的通信状态 怎么检测WinCC与PLC的通信状态问:怎么检测WinCC与PLC的通信状态,当通信断开时在报警中显示“通信中断”,通信再次连接正常时在报警中显示“通信连接”,并计算出中间的间隔时间。 有一种方法:WINCC有函数可以获取变量的状态,得出一个32位无符号数,全为0时候通讯正常,可以试一下 答:可以将信号质量状态取出,进行编程#include "apdefap.h"  int gscAction( void ){  unsigned long stat
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top