搬家第四天-94.Wincc V7.3 长时间无人操作自动关机
今天看西门子的论坛,有人提问如何实现长时间无人操作计算机,自动关机节省电源。个人觉得这个需求透着一股怪怪的感觉,现场控制计算机怎么会长时间无人操作,生产人员不看数据吗?如果是停产,做一个关机的鼠标操作很费事吗?即便是很少有人使用的计算机,那点电费企业负担不起吗?
不过言归正传,这种需求wincc还是可以实现的。具体的方法如下:
在wincc建立两个内部变量x和y,用于记录鼠标的横坐标和纵坐标,均为32位浮点数,新建一个内部变量Timer,用于计数,在全局脚本添加以下以下C脚本,触发器1秒,假设10秒没有使用鼠标就退出wincc然后关机:
#include "apdefap.h"
int gscAction( void )
{
// 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
POINT myPoint;
double timer;
GetCursorPos(&myPoint);
timer=GetTagDouble("Timer");
if((GetTagDouble("x")!=myPoint.x)|| if (GetTagDouble("y")!=myPoint.y))
{
SetTagDouble("x",myPoint.x);
SetTagDouble("y",myPoint.y);
SetTagDouble("Timer",0);
}
else
{
SetTagDouble("Timer",timer+1);
if (GetTagDouble("Timer")==10)
DMExitWinCCEx (DM_SDMODE_POWEROFF); //退出WIncc,然后关机
}
return 0;
}
基本思路就是获取鼠标位置,如果和内部变量不一致则赋值给内部变量,并且计时器清零,如果一致(鼠标没有动)则计时,计时到了10秒则退出wincc,然后关机。

浙公网安备 33010602011771号