wincc 内部变量累加问题

“cugeshan“是内部二进制变量,“Rot1”是内部无符号16位数。在全局动作中进行如下编程:
 #include "apdefap.h"

 int gscAction( void )
 {
 #pragma option(mbcs)
 // WINCC:TAGNAME_SECTION_START
 // syntax: #define TagNameInAction "DMTagName"
 // next TagID : 1
 // WINCC:TAGNAME_SECTION_END

 // WINCC:PICNAME_SECTION_START
 // syntax: #define PicNameInAction "PictureName"
 // next PicID : 1
 // WINCC:PICNAME_SECTION_END
 int r1,r2,r3;
  if (GetTagBit("cugeshan")==1 ) 
   {  
      r1=GetTagWord("Rot1");
      r1=r1+30;
    if (r1>360)
    {
     r1=30;
     }
    SetTagWord("Rot1",r1);
   }
 }
 编译后出现“conversion may loose information”的警告,错误指向:r1=r1+30;
 如果将r1定义为int类型编译后出现一样的警告,错误指向:SetTagWord("Rot1",r1);
 请高手们指点一下到底怎么改才行,不胜感激!

问题补充:
上面的程序中应该是定义WORD r1;,而不是int r1,r2,r3;写错了

最佳答案

如果只是警告的话应该不会影响正常运行的效果,不过你可以看一下是不是变量定义的时候类型不一致,用word定义应该是没问题的,也可以用unsigned short,要不你试一下,int 肯定是不行的,float 对应的是32位浮点数,不是无符号16位数

提问者对于答案的评价:
thank you!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc269334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐