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

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

相关推荐

  • wincc7.4 下拉列表选择配方

    wincc7.4 怎么用下拉列表选择配方 钻石用户推荐最佳答案 1、使用组合框功能,可以使用其属性text或者seltext获取选择的配方名称2、使用第三方个的combo…

    SIMATIC WinCC 2021年7月5日
  • wincc安装过程中的感叹号是什么意思

    安装wicc时时,选择安装内容时,在有的复选框左侧有个蓝色三角形内有个感叹号的符号,是什么意思 最佳答案 感叹号说明这个条件不满足,满足条件以后应该显示的OK.参考图片:见附件 图…

    2019年6月10日
  • 如何保护我的WINCC项目

    WINCC就以一个文件夹的形式存在,很容易给人复制项目来抄袭,请问大家有没有什么好方法来防止别人看到自己的项目里面的内容? 问题补充:如果照T-C4说用SIMATIC L…

    SIMATIC WinCC 2019年6月11日
  • WINCC画面无法限出

    我厂的动力中心采用PCS7过程控制系统,配置有冗余服务器\13台client和3台单站,除一台单站外,其它站用管理员密码登录后,按WINCC系统退出键均可取消激活WINCC,但一台…

    SIMATIC WinCC 2019年6月11日
  • 博图编辑后的wincc 在哪个文件夹

    博图软件编辑wincc后  保存我知道在哪里?可是这里面没有可以用wincc Rt 打开的op文件?如何查看这个op文件在哪个文件夹? 图片…

    2021年7月5日
  • 意外的编译错误。请尝试重新安装以修正此问题

    意外的编译错误。请尝试重新安装以修正此问题.,2018/7/10,14:31:55创建运行系统项目失败。无法将数据库连接到运行系统项目 B3C21002100F00011…

    SIMATIC WinCC 2021年7月5日
  • wincc打开窗口将光标自动定位到某个输入框?

    wincc打开页面窗口后将光标自动定位到该页面的某个输入框中,应该在哪里设置,或者脚本怎么写,在哪写? 最佳答案 在该画面的打开事件中,组态C动作:Set_Focus(lpszPi…

    SIMATIC WinCC 2021年7月5日
  • 西门子触摸屏型号

    麻烦问一下,谁知道这款西门子的触摸屏是什么型号的? 问题补充:这个屏我没有看到实物,只是看到了一个照片,而且不是很清楚。那些要我看背面型号的,就不必说了,能看到,还用在这里问吗? …

    2021年7月5日
  • WINCC7.0客户机跨网段读取服务器

    现有1台客户机及1台WINCC服务器,客户机与服务器在不同网段,如何跨网段实现C/S功能。技术资料写可通过路由连接,但不知道应如何设置路由器,是通过VPN方式吗? 最佳答案 请参考…

    SIMATIC WinCC 2017年11月1日
  • wincc变量触发C脚本

    我想实现,当一个变量由0变成1时,执行一个事件,这个变量一直为1过程中不执行,由1变成0也不执行,其体方法怎么做?请大神指教。 最佳答案 wincc全局脚本,可以设置变量变化触发脚…

    SIMATIC WinCC 2017年6月3日