技术论坛

 回复:如何用c脚本实现wincc同步于PLC的时间??

返回主题列表
作者 主题
zch123
新手

经验值:2
发帖数:2
精华帖:0
楼主    2006-08-31 11:22:37
主题:如何用c脚本实现wincc同步于PLC的时间??
单独版本的wincc如何通过C脚本读取PLC的时间并修改PC自身的时间,以达到同步的目的?
有谁共鸣
侠圣

经验值:3112
发帖数:2153
精华帖:21
    2006-09-01 13:51:30
精华帖  主题:回复:如何用c脚本实现wincc同步于PLC的时间??
设置系统的日期和时钟要用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中就可以用如上脚本设置系统的时钟了,用全局动作来循环刷新系统时钟就可以了,(不知道你的项目有没有归档功能,经常改系统时钟对归档数据不利),最基本最重要的部分就如上的程序了,具体应用根据你自己的要求来扩展。
雄关漫道真如铁,而今迈步从头越!
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。