怎么定时启动一个或N个项目函数
问:1、在C脚本里,为什么只有全局动作的属性里可以设置触发器来定时启动全局动作的程序,而项目函数的属性却没有触发器设置呢?
2、如果我要系统运行时就自动启动运行一次项目函数A,该怎么做?
3、如果我要求系统运行时就自动周期运行项目函数B,周期可以设置,该怎么做?
4、如果在全局动作里新建一个动作***.pas,在里面统一调用系统需要周期运行的项目函数,然后在这个全局动作属性里设置触发器定时器。这样是否可以实现我的第三个问题?如下:
int gscAction( void )
{
项目函数A;
项目函数B;
// 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
}
答:1、全局动作带触发器,所以只要动作被触发了,就执行。对于时间类的触发器(定点定时的除外),系统刚开始激活运行时都会触发一次。而项目函数是用户函数,本身不会被执行,只能通过其它动作来调用它,才会运行。也就是说,如果没有其它程序调用它,这个项目函数就永远不会运行。
2、第1条里已经说明了,全局动作一般在系统启动时会执行一次。如果只允许执行一次(如初始化等工作),可以先建个内部变量blnBegin(布尔型的),这个变量可以在主画面的Open Picture事件中赋值为1。然后永远保持为1。
然后,建一个全局动作,触发器为变量触发(blnBegin),代码如下:
if (GetTagBit("blnBegin")==1)
{
项目函数A;
} return 1;
3、全局动作的触发器周期必须组态时设置,不能运行时动态设定。用户周期可以在项目属性里定义。
4、可以。一个动作里可以调用多个项目函数。但定时器只能有一个。
楼主最近还看过