“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