您现在的位置:首页 >> 组态技术 >> 内容

威纶通触摸屏读取三菱D寄存器数据进行大小比较的方法

时间:2023-12-12 23:13:44 点击:

  核心提示:威纶通EMT3070B触摸屏读取三菱FX3U PLC D寄存器数据存入变量,并对该变量值进行比较,在比较时发现比较失败,如读取D100数据50,和60比较大小,发现无法比较大。原读取指令为: int...

威纶通EMT3070B触摸屏读取三菱FX3U PLC D寄存器数据存入变量,并对该变量值进行比较,在比较时发现比较失败,如读取D100数据50,和60比较大小,发现无法比较大。


原读取指令为:


  int p1,p2,p3,p4=0
  while true
    GetData(p1, "FX3U", M, 111, 1)
    GetData(p2, "FX3U", D, 100, 1)
    if p1==1 and p2>=600 then  //出现比较失败的情况
      p3=1
      SetData(P3,"Local HMI",LW,0,1)
      SetData(P3,"FX3U",M,800,1)
    else
      SetData(p4,"Local HMI",LW,0,1) 
      SetData(P4,"FX3U",M,800,1)
    end if
  wend


检查发现:
1、变量类型定义出错,不应该定义int,这是32位变量,而D寄存器是16位,这样会导致读出D100和D101两个寄存器值。
应该定义为short,这个是16位变量。
2、读取M值,也要注意把变量类型定义为BOOL


更改后的指令为:


  bool p1
  short p2=0
  int p3=0,p4=0
  while true
 
    GetData(p1, "FX3U", M, 111, 1)
    GetData(p2, "FX3U", D, 100, 1)
    if p1==1 and p2>=600 then
      p3=1
      SetData(P3,"Local HMI",LW,0,1)
      SetData(P3,"FX3U",M,800,1)
    else
      SetData(p4,"Local HMI",LW,0,1) 
      SetData(P4,"FX3U",M,800,1)
    end if
   
  wend



作者:站长 来源:原创
相关文章
  • 没有相关文章
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 陈工笔记(www.dui580.com) © 2024 版权所有 All Rights Reserved.
  • 站长:陈工 微信号:chengongbiji QQ:24498854
  • Powered by 陈工