#include "apdefap.h"
int gscAction( void )
{
static int tic;
//tic=GetTagWord("MM"); //返回类型:WORD
if (tic>=360) tic=30;
else (tic=tic+30);
//返回类型:BOOL
SetTagWord("rotate",tic); //返回类型:BOOL
// 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
return 0;
}
最佳答案
static int tic;
//tic=GetTagWord("MM"); //返回类型:WORD
if (tic>=360) tic=30;
else (tic=tic+30);
//返回类型:BOOL
SetTagWord("rotate",tic); //返回类型:BOOL
static int tic;
定义了一个静态变量 tic ,静态变量可以自动保存上一次的值,变量的生命周期中只初始化一次,值等于0.也就是说这个变量在静态存储区被划分出来的时候就初始化为0。以后都保留了最后一次操作后的值。这个就是为什么tic=GetTagWord("MM");可以被注释掉的原因。
if (tic>=360) tic=30;
else (tic=tic+30);
是判断tic 是不是超过或等于360了 超过了就赋给tic值为30
如果小于360就自增30
这个程序被调用一次 tic就变化一次 变化的值是 30 60 90 120 ……330 360 这样一直循环下去,每变化一次的同时将这个tic的值传到rotate这个变量里面。变化的频率随程序触发的频率决定。
实现的功能就是每触发一次这个程序事件,角度就转过30°。
提问者对于答案的评价:
感谢指点!很有帮助,学习啦
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc251647.html