全局动作,每隔10分钟执行一次,用wincc自带的仿真器改变变量的值,脚本如下:
Option Explicit
Function action
Dim objExcelApp,objExcelBook,objExcelSheet
Dim tagyali1,tagyali2,tagyali3,tagyali4
Dim tagliuliang1,tagliuliang2
Dim tago2
Dim tagshijian,sheetname
Dim i,j
Dim msg
'声明
Set tagyali1=HMIRuntime.Tags("aa1")
Set tagyali2=HMIRuntime.Tags("aa2")
Msg="ok"
sheetname="sheet1"
On Error Resume Next
Dim ExcelApp,ExcelBook
Set ExcelApp=GetObject(,"Excel.Application")
If TypeName(ExcelApp)="Application" Then
For Each ExcelBook In ExcelApp.WorkBooks
If ExcelBook.FullName="E:\temp\ee\biao.xls" Then
ExcelApp.ActiveWorkbook.Save
ExcelApp.Workbooks.Close
ExcelApp.Quit
Set ExcelApp=Nothing
Exit For
End If
Next
End If
Set objExcelApp=CreateObject("Excel.Application")
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"E:\temp\ee\biao.xls"
objExcelApp.Worksheets(sheetname).Activate
'清除模版数据
With objExcelApp.Worksheets(sheetname)
For i=5 To 25
For j=1 To 8
.cells(i,j)=Null
Next
Next
For i=26 To 26
For j=1 To 7
.cells(i,j)=Null
Next
Next
End With
'实时数据写入
tagshijian=Now
objExcelApp.Worksheets(sheetname).cells(2,2).value=tagshijian
For i=5 To 25
With objExcelApp.Worksheets(sheetname)
.cells(i,1).value=tagshijian
tagyali1.Read
.cells(i,2).value=tagyali1.value
tagyali2.Read
.cells(i,3).value=tagyali2.value
End With
Next
MsgBox
'关闭保存
Dim patch,filename
filename=CStr(Month(Now))&CStr(Day(Now))+CStr(Hour(Now))&CStr(Minute(Now))
patch="E:\temp\ee\"&filename&".xls"
objExcelApp.ActiveWorkbook.SaveAs patch
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp=Nothing
End Function
问题:第5行到第25行的数据都是一样的,为什么不发生变化?能不能第5行采集某一时刻第1秒的值,第6行采集第2秒的值。。。?
问题补充:
我想实现这样的功能:
1.每个整点对变量进行读值,比如:10:00将变量a1读到单元格里cells(5,1);11:00将变量a1读到单元格里cells(6,1)。。。
2.当读到整点00:00时进行保存,保存的文件名为当天的日期。请问该怎么改这段程序,谢谢!
最佳答案
把tagshijian=Now写在循环里。
你这样写,tagshijian在进入循环前取得了时间值,进入循环后,tagshijian并没变呀,当然你每次的时间都是一样的呀。
同理,变量的值也要在循环里写。
如果你想每秒记录,那没必要写循环,一个是时间不好控制,或者控制不准,再是脚本,不宜执行时间过长。
你再创建一个全局动作,假设叫action1,把触发器设置为按秒触发。
原来的这个动作里只有判断是不是开始记录数据就可以,如果可以,置某变量为1,不可以时置为0,假设变量为ok。
那么action1里面
if HMIRuntime.Tags("ok") = 1 then
''获得当前时间
‘获得各变量的值
''写一条数据
……
end if
提问者对于答案的评价:
谢谢了,我再试试.
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc263790.html