发布于 2006-09-01 13:51:30
0楼
设置系统的日期和时钟要用WIN API函数SetLocalTime实现:
刚刚测试通过的设置系统时钟的脚本程序:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma code("kernel32.dll")
BOOL SetLocalTime(CONST SYSTEMTIME *lpSystemTime);
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code()
SYSTEMTIME st;
int iRet;
HWND hwnd=NULL;
st.wYear=GetTagWord("year");//输入年份,year为16位无符号数
st.wMonth=GetTagWord("month");//输入月份,month为16位无符号数
st.wDay=GetTagWord("day");//输入天,day为16位无符号数
st.wHour=GetTagWord("hour");//输入小时,hour为16位无符号数
st.wMinute=GetTagWord("minute");//输入分钟,minute为16位无符号数
st.wSecond=GetTagWord("second");//输入秒,second为16位无符号数
hwnd==FindWindow(NULL,"WinCC-运行系统 - ");
if (SetLocalTime(&st))
{
iRet=MessageBox(hwnd,"时间修改成功!","对话框",MB_OKMB_ICONSTOPMB_SYSTEMMODAL);
}
else
{
iRet=MessageBox(hwnd,"时间修改不成功!","对话框",MB_OKMB_ICONSTOPMB_SYSTEMMODAL);
}
}
我手头没PLC,用内部变量通过(I/O)输入输出域输入系统日期和时钟通过API函数SetLocalTime设置系统日期时钟成功。
只要你把PLC的时钟通过wincc外部变量(注意变量为16位无符号数)读到wincc中就可以用如上脚本设置系统的时钟了,用全局动作来循环刷新系统时钟就可以了,(不知道你的项目有没有归档功能,经常改系统时钟对归档数据不利),最基本最重要的部分就如上的程序了,具体应用根据你自己的要求来扩展。
雄关漫道真如铁,而今迈步从头越!