组态王与西门子以太网通讯时定义的变量一定要在PLC中真实存在! 点击:895 | 回复:1



thebestleo

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:63帖 | 278回
  • 年度积分:0
  • 历史总积分:1867
  • 注册:2010年6月10日
发表于:2014-12-09 12:11:03
楼主

用组太王连接西门子以太网模块CP343或大连德嘉电子的的ETH-MPI(DP)时,在定义变量时一定要保证该变量在PLC中是真实存在的,如果定义了一个不存在的变量 (例:DB60,PLC中没有这个数据块), 其结果是组态王的通讯是不断的处于通讯成功-->失败的循环之中,
具体原因是当组态王向PLC获取一个根本不存在的变量时,PLC会返回组态王一个出错信息,而组态王处理该信息时,只是简单的认为通讯出错,结果重新进行通讯初始化。希望组态王在新的版本中将该bug该正。

以下是西门子论坛的网友回复:
我在WINCC7.0里使用了DB100.DBD0,然后再STEP7里没有添加DB100.DBD0,结果也是通讯是不断的处于通讯成功-->失败的循环之中。
wincc6.0里如果使用了step7中没有定义的地址也会报错,要命的是其他一部分正确的地址也会有访问错误的,注意只是一部分,不是所有的都访问不到。
组态中可以用数据块的,组态王中定义的DB寄存器序号、数据类型必须与PLC中定义的保持一致, 否则运行系统读上来的数据有可能是错误的。比如,PLC中DB块的定义为:DB1.0(INT),DB1.2(UINT),DB1.4(REAL), DB1.8(BYTE), 则在组态王中定义变量时寄存器序号和数据类型对应为DB1.0(SHORT),DB1.2(USHORT),DB1.4(FLOAT),DB1.8(BYTE)。
对于BIT数据类型,I/Q/M寄存器的定义方式为xx.yy,xx为对应字节的通道,yy为其中位的通道,范围0-7;DB寄存器的定义方式为xx.
yy.zz, xx为DB块号,yy为对应块中地址序号,zz为其中位的通道号,范围0-7。
看来软件都有共同的BUG,应该更加智能一点,当出现楼主这种情况时软件应该给出一个提示,哪怕是英文的也行啊
组态王的通信功能有缺陷,最好将PLC中不存在的外部变量和网络中不存在的PLC等设备删除,不然运行久了组态王会死机.




glenxu

  • 精华:0帖
  • 求助:2帖
  • 帖子:28帖 | 592回
  • 年度积分:0
  • 历史总积分:1862
  • 注册:2004年1月13日
发表于:2014-12-17 15:29:24
1楼

存在不存在都可以!但不能被导致变量交叉定义(字节混乱)就行!


热门招聘
相关主题

官方公众号

智造工程师