dyxlfl
级别: VIP会员

精华主题: 0
发帖数量: 213 个
工控威望: 443 点
下载积分: 1489 分
在线时间: 321(小时)
注册时间: 2006-11-10
最后登录: 2024-11-16
查看dyxlfl的 主题 / 回贴
楼主  发表于: 2024-08-19 11:32
做了宏数据比较输出数据格式是32 bit  unsigned 和32 bit  BCD,总是不能准确按对应得进行比较数据0/1,那位高手帮忙看看,问题出那里了,谢谢

macro_command main()

unsigned int   AAR0,AAR2,AAR4,AAR6, RW180,RW182,RW184,RW186,RW20,RW22,RW26

float      ss,ss1,RW,RW6



  
short Alarm[66]    
short pv[66]   //设置函数范围


bool on=1,off=0    //设置状态函数形式
bool btt1,btt2    //设置状态函数形式


GetDataEx(AAR0, "Mitsubishi FX5U ", D, 618, 1)                                   //   32  bit  BCD数据格式
GetDataEx(AAR2, "Mitsubishi FX5U ", D, 630, 1)                                       // 32  bit   BCD数据格式
GetDataEx(ss, "Mitsubishi FX5U - Binary Mode (Ethernet)", D, 620, 1)     // 32 bit  unsigned数据格式

GetDataEx(RW180, "Local HMI", RW, 610, 1)    
GetDataEx(RW182, "Local HMI", RW, 614, 1)    
GetDataEx(RW, "Local HMI", RW, 620, 1)  

SetData(AAR0, "Local HMI", LW, 190, 1)                  
SetData(AAR2, "Local HMI", LW, 192, 1)                    
SetData(ss, "Local HMI", LW, 194, 1)
                 //转发到HMI  
AAR6=( AAR0+ RW180)
RW186=( AAR2+ RW182)
RW182=( SS+ RW)

SetData( AAR6, "Local HMI", LW, 610, 1)
SetData( RW186, "Local HMI", LW, 614, 1)
SetData( RW182, "Local HMI", LW, 616, 1)


if (AAR2 < RW20)then          
  btt2=0
  else
  SetData(btt2, "Local HMI", LB, 867, 1)
  
  
end if

if (AAR2 > RW20)then
  btt2=1
  else
  SetData(btt2, "Local HMI", LB, 867, 1)
  
  
end if




if (AAR0 < RW22)then                      
   btt1=0
   else
  SetData(btt1, "Local HMI", LB, 866, 1)
  
end if

if (AAR0 > RW22)then
  btt1=1
  else
  SetData(btt1, "Local HMI ", LB, 866, 1)
  
end if



end macro_command
[ 此帖被dyxlfl在2024-08-19 18:05重新编辑 ]