| 作者 | 主题 |
|---|---|
|
zch123 新手 经验值:2 发帖数:2 精华帖:0 |
楼主
主题:如何用c脚本实现wincc同步于PLC的时间??
单独版本的wincc如何通过C脚本读取PLC的时间并修改PC自身的时间,以达到同步的目的?
|
|
有谁共鸣 侠圣 经验值:3112 发帖数:2153 精华帖:21 |
楼
主题:回复:如何用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中就可以用如上脚本设置系统的时钟了,用全局动作来循环刷新系统时钟就可以了,(不知道你的项目有没有归档功能,经常改系统时钟对归档数据不利),最基本最重要的部分就如上的程序了,具体应用根据你自己的要求来扩展。
雄关漫道真如铁,而今迈步从头越!
|