vbs 中的填表的循环的问题

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐