Option Explicit
Function action
Dim fso,fname,timee,ttt
Set fso = CreateObject("scripting.FileSystemObject")
fname="D:\data\" & FormatDateTime(Date,2) & ".xls"
Dim ObjExcelApp
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Workbooks.Open fname
ttt=HMIRuntime.Tags("NewTag_1")
ttt.Read
objExcelApp.worksheets ("sheet1").Cells(3, ttt+2).VAlue =FormatDateTime(Date,2)
objExcelApp.worksheets ("sheet1").Cells(4, ttt+2).VAlue = HMIRuntime.Tags("tag1").read
objExcelApp.worksheets ("sheet1").Cells(5, ttt+2).VAlue = HMIRuntime.Tags("tag2").read
objExcelApp.worksheets ("sheet1").Cells(6, ttt+2).VAlue = HMIRuntime.Tags("tag2").read
objExcelApp.worksheets ("sheet1").Cells(8, ttt+2).VAlue = Now
ttt.Value=ttt.Value+1
ttt.Write
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.ClosE
objExcelApp.QuiT
Set ObjEXceLapp = Nothing
End Function
如上面程序,我在wincc做了个变量"NewTag_1",浮点数,在10点50运行起wincc后付给他起始值为1。这段程序是在每个整点的00:01触发,可是到11:20后,在wincc的运行画面中看到的他的值还是1,而不是递加后的2,问题出在哪里?
问题补充:
1.我的newtage_1就是全局变量;
2.这个是c语言的啊,怎么转成vbs的呢
3。我试了还是不行,而且我的这个写的方式就是深入浅出wincc中的示例。
那个值就是不变的,不随调用一次就累加一次。
最佳答案
有个笨方法,写个全局动作,整点触发一次,调用API函数获取整点时间,根据时间来改变WINCC变量的值 ,这个变量就是你的"NewTag_1",再将这个值赋给tt就可以了。
#pragma code ("kernel32.dll");
void GetLocalTime (SYSTEMTIME* lpst);
#pragma code();
SYSTEMTIME time;
Int t1;
GetLocalTime(&time);
t1=time.wMinute;
if(t1==00)
{
SetTagDWord("NewTag_1",1);
}
if(t1==1)
{
SetTagDWord("NewTag_1",2);
}
......
.....
......
仅供参考
提问者对于答案的评价:
那两个都不行,只能选你了。呵呵
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc272006.html