为什么生成的报表每行都是一样的?

全局动作,每隔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

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

相关推荐

  • wincc用户管理和创建

    wincc软件只能运行在管理员权限下吗?受限用户可不可以运行wincc?还有就是wincc登录用户的创建是和windows集成在一起的,这样的话任何人想对运行软件进行操作的话都可以…

    SIMATIC WinCC 2019年6月10日
  • wincc7.0中如何用上升沿触发音频输出,起到报警的作用

    想在工控机上装音响,设备停机就报警,这个该如何做啊 问题补充:我不想用报警控件来触发让音响报警,除了这个之外还有别的办法吗?我的重点是在软件上如何编写指令使连接在工控机上的音响发声…

    SIMATIC WinCC 2018年12月2日
  • 如何打开和修改WINCC归档的数据

    WINCC V6.2数据归档后的数据(慢速归档的数据)除了控件上修改后,还能有别的方法打开后者修改里面的数据吗?归档后的数据文件格式是*.ldf和*.mdf,有知道有什么…

    SIMATIC WinCC 2019年6月11日
  • wincc客户机可以远程访问几台服务器

    ‘wincc客户机  通过VPN可以远程访问几台不同wincc不同’ip地址的服务器  只可以监控  不做操作 最佳答案…

    SIMATIC WinCC 2017年5月31日
  • TP15000怎么设置IP

    TP15000怎么设置IP 最佳答案 转帖:1、首先必须在博途中组态。2、连上网线,然后触摸屏上电,在触摸屏的控制面板(control panel),传送(transfe…

    SIMATIC WinCC 2021年7月5日
  • wincc V11与1214C通讯组态问题

    wincc V11professional版,通过cp1612与CPU1214连接,需要哪些设置呢,两次打电话问了西门子的售后支持,按照他说的设置了也是不能通讯,由于对这…

    SIMATIC WinCC 2019年6月10日
  • wincc7.0授权

    一个项目需要一台工程师站和一台操作员站,请问购买哪个版本,授权几套?谢谢 最佳答案 只需要购买一套完全版加一套运行版,具体的点数要根据你的实际点数来定。不同的点数价格相差很大的。 …

    SIMATIC WinCC 2019年6月11日
  • wincc 脚本调试用啥窗口

    我用wincc 7.4调试程序,在vbs 调试用 那个脚本调试窗口,但报错一般提示都很简单,比方说逗号问题,也不知道提示哪行的逗号,不好排查问题,除了…

    SIMATIC WinCC 2020年11月1日
  • 关于HMI的数据存储问题

    各位前辈好,本人想寻求一下HMI(tp1500)的存储功能,想在屏幕上让其显示速度的实时变化值,并将测得的值存储到屏幕上,方便下次查看数据,自己试了一下发现只能测得实时数据,并不能…

    2021年7月5日
  • 博图wincc 确认窗口怎么做

    大神们 怎样用脚本做确认窗口 最好给个案例 要么就说明的明确一点 问题补充:有没有博图wincc的 最佳答案 本视频介绍 TIA …

    SIMATIC WinCC 2021年7月5日